(57)【要約】【課題】バーコードの高さ方向についての上端及び下端の位置を、低コストで検出する。【解決手段】バーコード１１０を含む矩形領域１１５の左上隅の点ａから右方向にラスタ走査を行ってスタートコードを検出し、スタートコードの検出位置に基づき、バーコード１１０の左上隅の点を特定する。また、矩形領域１１５の右下隅の点ｂから左方向にラスタ走査を行ってストップコードを検出し、ストップコードの検出位置に基づき、バーコード１１０の右下隅の点を特定する。特定された左上隅及び左下隅の点で規定される矩形の領域を、バーコード１１０の領域として特定する。【選択図】図３
2008020947.tif 000002
【特許請求の範囲】
【請求項１】
バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得する取得部と、
前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求める上端位置判定部と、
前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める下端位置判定部と、
を含むバーコード領域判定装置。
【請求項２】
前記下端位置判定部が用いる開始点は、前記上端位置判定部が用いる開始点に対して前記矩形領域の対角線上の位置にある頂点であり、
前記上端位置判定部が前記スタートコード又はストップコードを検出したときに調べていた画素の前記幅方向についての位置と、前記下端位置判定部が前記スタートコード又はストップコードを検出したときに調べていた画素の前記幅方向についての位置と、に基づき、前記バーコード領域の幅方向についての両端位置を求める手段、
を更に備える請求項１記載のバーコード領域判定装置。
【請求項３】
バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得し、
前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求め、
前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める、
バーコード領域判定方法。
【請求項４】
バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得し、
前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求め、
前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像中から１次元バーコードの領域を判定するための装置に関する。
【背景技術】
【０００２】
１次元バーコード（以下、単にバーコードと呼ぶ）の読み取り方式の一つとしては、バーコードが印刷されたページ全体をスキャナで読み取り、読み取られた画像に対して画像処理を施すことによりバーコードをデコードする方式がある。この場合、１ページの画像の中からバーコード領域を抽出する必要がある。例えば、バーが配列する方向に沿って走査ラインを設定し、その走査ラインが黒バー及び白バー（スペース）を横切る長さに基づきそれら各バーの太さを判定し、バーコードをデコードする方式の場合、走査ラインがバーコードの高さの範囲（バーの長手方向に沿ったバーの長さの範囲にほぼ等しい）の中に設定されないと、デコードができなくなる可能性がある。このため、バーコードの高さ範囲をできるだけ正確に求めることが求められる。
【０００３】
画像中からデコードすべきバーコード領域を抽出する方法として、特許文献１に示されるものがある。この方法では、画像内の各画素について太め処理を行い、連結する各黒画素領域の面積を求め、そのうち最大面積のものをバーコードシンボル領域として認識する。
【０００４】
また、特許文献２には、バーコードを含む文書画像に対しラベリングを行い、ラベル領域ごとの特徴量と重心位置を検出し、これらに基づき所定の距離で隣り合うラベル領域をバーコード候補領域として検出する方法が提案されている。
【０００５】
また、特許文献３に示される方法では、画像を横方向に投影し、この投影値における極大値に隣り合う極小値または最小値に基づく位置間の幅をバーコードの高さ範囲と判断する。続いて、この高さ範囲内における画像濃度データを縦方向に投影し、この投影値において隣り合う極大値の間隔が一定の比率範囲にある所定数以上の連続した極大値の部分をバーコード領域の幅方向範囲と判断する。
【０００６】
また、特許文献４に示される方法では、画像データの全領域を順次走査して黒パターンと白パターンが予め設定された閾値以内の間隔で交互に出現する領域を仮バーコード領域として抽出し、この領域に対しバーコード特有の情報が存在するか否かを判定して、真のバーコード領域のみを抽出する。また、この方法では、仮バーコード領域の黒バーの中央から両端方向にそれぞれ走査していき、黒画素の途切れたところをバーコード領域の上端、下端と判定する。
【０００７】
【特許文献１】特開平０５−３２４８９６号公報
【特許文献２】特開平１０−１７１９１６号公報
【特許文献３】特開平１１−１８４９５９号公報
【特許文献４】特開平０９−０１６７０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１の方法では、バーコードシンボル以上の面積となる画像部分が画像中に存在した場合、正しくバーコード領域を認識することができない。
【０００９】
また、特許文献２の方法は、ラベリングという非常に高負荷な処理を行うため、処理に時間がかかるか又は計算機能力を必要とする。また、特許文献２の方法は、これだけではバーコードと同様のピッチ間隔を有する縞状模様等の模様もバーコードとして検出されてしまう恐れがある。それらとバーコードを明確に区別するためにはスタートコード又はストップコードを検出する必要がある。そのため、正確にバーコード領域を抽出するためには１走査ラインずつスタートコードを検出し、検出できた範囲を正しいバーコード領域とする必要があり、スタートコードの検出にコストがかかっていた。
【００１０】
また、特許文献３の方法は、例えば図２に示すようにバーコードの上辺又は下辺の近傍に黒い画像部分が存在すると、その黒い画像部分までバーコード領域と認識してしまい、バーコードの高さ範囲が正しく検出できない可能性がある。
【００１１】
また、特許文献４の方法は、多くの処理が必要なため処理にコストがかかるという問題がある。
【００１２】
本発明は、バーコードの高さ方向（バーの長手方向）についての上端及び下端の位置を、より低コストで検出することを目的とする。
【課題を解決するための手段】
【００１３】
（１）本発明の１つの側面では、バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得する取得部と、前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求める上端位置判定部と、前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める下端位置判定部と、を含むバーコード領域判定装置を提供する。
【００１４】
（２）１つの態様では、上記構成（１）において、前記下端位置判定部が用いる開始点は、前記上端位置判定部が用いる開始点に対して前記矩形領域の対角線上の位置にある頂点であり、前記上端位置判定部が前記スタートコード又はストップコードを検出したときに調べていた画素の前記幅方向についての位置と、前記下端位置判定部が前記スタートコード又はストップコードを検出したときに調べていた画素の前記幅方向についての位置と、に基づき、前記バーコード領域の幅方向についての両端位置を求める手段、を更に備える。
【００１５】
（３）本発明の別の側面では、バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得し、前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求め、前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める、バーコード領域判定方法を提供する。
【００１６】
（４）本発明の別の側面では、バーの長手方向を高さ方向としバーの配列方向を幅方向とする矩形領域であって、バーコード領域を含む矩形領域を取得し、前記矩形領域の四隅の頂点のうち前記高さ方向についての上端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の下端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の上端位置として求め、前記矩形領域の四隅の頂点のうち前記高さ方向についての下端側の１頂点を開始点として、前記幅方向を主走査方向とし前記高さ方向の上端に向かう方向を副走査方向とするラスタ走査により前記矩形領域の各画素の値を調べることで前記バーコード中のスタートコード又はストップコードを検出し、スタートコード又はストップコードが検出されたときの主走査ラインの前記高さ方向についての位置を、前記バーコード領域の下端位置として求める、処理をコンピュータに実行させるためのプログラムを提供する。
【発明の効果】
【００１７】
上記構成（１）、（３）及び（４）によれば、バーコードの高さ方向についての上端及び下端の位置を、本構成を有しない場合に比べて、より低い計算コストで検出することができる。
【００１８】
上記構成（２）によれば、バーコードの幅方向の両端の位置も併せて求めることができる。
【発明を実施するための最良の形態】
【００１９】
以下、バーコード認識のための本実施形態の処理手順を、図１を参照して説明する。以下では、具体例として、図２に示すようなバーコード１１０を含む入力画像１００が入力された場合を例にとって説明する。
【００２０】
本実施形態のバーコード認識装置には、例えばスキャナで読み取られた画像が入力画像１００として入力される。バーコード認識装置は、まず、入力画像１００から、バーコード１１０を含む矩形領域１１５（図３参照）を抽出する（Ｓ１）。矩形領域１１５は、バーコード１１０をその内部に完全に含むサイズの領域である。矩形領域１１５の高さ方向（図では縦方向）はバーコード１１０を構成するバーの長手方向と等しく、矩形領域１１５の幅方向（図では横方向）はバーコード１１０におけるバーの配列方向に等しい。ただし、現実には、バーコードが印刷された紙をスキャンする際の紙の傾きや、バーコードの可能性のある画像領域を画像処理で求める場合の処理誤差などの誤差があるので、高さ方向、幅方向は、バーの長手方向、バー配列方向に厳密に等しくなるとは限らず、その誤差の分だけ異なった方向になることもある。
【００２１】
矩形領域１１５は、例えば、ユーザがあらかじめバーコード認識装置に対し、入力画像１００中でのバーコード１１０の存在領域として設定しておけばよい。同じ種類の帳票をスキャナで多数読み取ってそのそれぞれに対しコード認識を行うような場合には、最初にユーザが矩形領域１１５を設定することが考えられる。この場合、スキャナでの読み取り誤差などを考慮してバーコード１１０より大きめの領域が矩形領域１１５として設定される。また、上述の従来技術を用いて画像処理により矩形領域１１５を求めることもできる。例えば、上記従来技術によりバーコード１１０の可能性のある画像領域を入力画像１００中から検出し、その画像領域よりも上下、左右に所定高さ、所定幅だけ広い範囲を矩形領域１１５として抽出する、などである。
【００２２】
以上のようにして、図１に示す入力画像１００から、図３に示すような矩形領域１１５が抽出されると、次にバーコード認識装置は、矩形領域１１５の左上隅の頂点ａを開始点とし、その開始点から幅方向に延びる走査ラインに沿って右方向に向かって、バーコードの規格に定められるスタートコードの検出を試みる（Ｓ２）。スタートコードの検出は、従来周知の方法で行うことができる。バーコード認識装置は、走査ラインを右方向に向かってスタートコードを探し、矩形領域１１５の右端に到達してもスタートコードが検出できなければ（Ｓ３の判定結果がＮｏ）、走査ラインを１画素だけ下方にずらし、再度走査ラインを左端から右端に向かって調べ、スタートコードの検出を試みる（Ｓ２）。このように、矩形領域１１０の左上隅からラスタ走査の順序でスタートコードの検出が行われる。スタートコードが検出されれば、バーコード認識装置はそのスタートコードの位置(x1, y1)を、バーコード１１０の左上隅の位置の候補として記憶する（Ｓ３）。スタートコードが検出されるまで、Ｓ２及びＳ３が繰り返される。
【００２３】
例えば図３の例では、位置ｃにバーコードに似た縦縞模様（破線）が存在するが、この模様はスタートコードのパターンと一致しないため、スタートコードとして検出されることはない。走査を続けていくと、位置ｄに走査が達したときに、スタートコードが検出される。この位置ｄからスタートコードの幅（スタートコードを検出しているのだから、この幅は求めることができる）だけ左方向に戻った位置が、矩形領域１１０の左上隅の点(x1, y1)となる。
【００２４】
次に、バーコード認識装置は、矩形領域１１０の右下隅の頂点ｂを開始点として、その開始点から幅方向に延びる走査ラインに沿って左方向に向かって、バーコードの規格に定められるストップコードの検出を試みる（Ｓ４）。走査ラインに沿って矩形領域１１５の左端に到達してもストップコードが検出できなければ（Ｓ５の判定結果がＮｏ）、走査ラインを１画素だけ上にずらし、再度走査ラインを右端から左端に向かって調べ、ストップコードの検出を試みる（Ｓ４）。ストップコードが検出されるまで、Ｓ４及びＳ５が繰り返される。ストップコードが検出されれば、バーコード認識装置はそのストップコードの位置(x2, y2)を、バーコード１１０の右下隅の位置の候補として記憶する（Ｓ５）。
【００２５】
図３の例では、走査が位置ｅに達したときにストップコードが検出される。この位置ｅからストップコードの幅だけ右方向に戻った位置が、矩形領域１１０の右下隅の点(x2, y2)となる。
【００２６】
なお、Ｓ２及びＳ３の処理と、Ｓ４及びＳ５の処理とは、いずれを先に実行してもよく、また並列実行することもできる。
【００２７】
以上のようにして、矩形領域１１０の左上隅の点(x1, y1)と右下隅の点(x2, y2)が求められると、次にバーコード認識装置は、左上隅の点(x1, y1)と右下隅の点(x2, y2)の座標を比較することで、スタートコードとストップコードとして同じコード部分を検出している可能性の有無を判定する（Ｓ６）。x1とx2とスタートコード・ストップコードの幅から、Ｓ６の判定を行うことができる。スタートコード及びストップコードとして同じコードを検出した場合は、それら両者の間に他のキャラクタが存在しないことになるので、バーコード領域の抽出は失敗とする。Ｓ６でスタートコードとストップコードが同じでないと判定された場合、バーコード認識装置は、点(x1, y1)を左上隅、点(x2, y2)を右上隅とする矩形の領域をバーコード１１０の領域と判定し、バーコード領域抽出処理を終了する。
【００２８】
その後、バーコード認識装置は、入力画像１００からその領域の画像を切り出し、この画像に対して、デコードのための処理を実行する。デコード処理はどのようなものでもよい。
【００２９】
上記実施形態の方法によれば、図４に示すように、バーコード１１０のバー配列方向の側（図では右側、または左側）に、ノイズとなる画像部分１２０や１２２が存在していても、そのようなノイズを含まないバーコード１１０のみの領域が検出される。すなわち、上記方法では、スタートコードとストップコードを探索しているが、画像部分１２０や１２２を含んだ範囲の画像は、スタートコード又はストップコードの画像パターンに合致しないからである。
【００３０】
以上の例では、矩形領域１１５の左上隅と右下隅の点をそれぞれ開始点としてラスタ走査を行ったが、この代わりに左下隅と右上隅の点をそれぞれ開始点としてラスタ走査を行ってもよい。また、バーコード１１０の高さ（すなわち上端と下端の位置）を求めるだけでよければ、矩形領域１１５の左上隅から走査ラインを下に進めていくラスタ走査と、左下隅から走査ラインを上に進めていくラスタ走査とで、それぞれスタートコードを検出すればよい。左上隅と左下隅の組合せの代わりに、右上隅と右下隅の組合せを用いてももちろんよい。
【００３１】
以上に説明したバーコード領域判定の処理は、典型的には、コンピュータにて上述の各ステップの処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、ＣＰＵ（中央演算装置）、メモリ（一次記憶）、各種Ｉ／Ｏ（入出力）インタフェース等がバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ハードディスクドライブや、ＣＤやＤＶＤ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブが接続される。このようなドライブは、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク経由で、ハードディスクドライブ又は他の方式の不揮発性記憶装置などの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されＣＰＵにより実行されることにより、上記実施形態の処理が実現される。
【００３２】
本実施形態のバーコード認識装置は、例えば、そのようなプログラムがインストールされたコンピュータとして実現することができる。この装置は、スキャナから例えば二値で読み取られた画像を受け取り、この画像に対して図１に示したような処理を行えばよい。また、デジタル複写機又はデジタル複合機等のように、スキャナ機能とプリンタ機能とを兼ね備えた装置に対し、上述のようなプログラムをインストールして実行させてもよい。
【００３３】
実施形態のバーコード認識装置の機能ブロック図は、例えば、図５に示すようなものとなる。このバーコード認識装置２０は、スキャナ１０が読み取った画像を入力画像１００として受け取る。すると、矩形領域抽出部２１が、上述のＳ１の処理を実行して、入力画像１００からバーコード１１０を含む矩形領域１１５を抽出する。バーコード領域抽出部２２は、その矩形領域１１５に対して、Ｓ２〜Ｓ６に示すような処理を施すことで、バーコード１１０の領域を抽出する。デコード部２３は、抽出されたバーコード１１０の領域の画像を用いて、バーコード１１０をデコードする。バーコード認識装置２０の各部は、プログラムにより実現することができる。
【図面の簡単な説明】
【００３４】
【図１】実施形態のバーコード領域抽出処理の手順の一例を示すフローチャートである。
【図２】入力画像の一例を示す図である。
【図３】入力画像から切り出された矩形領域の画像の一例を示す図である。
【図４】バーコードの左側にノイズを含んだ矩形領域の画像の別の例を示す図である。
【図５】バーコード認識装置の機能ブロック図である。
【符号の説明】
【００３５】
１０  スキャナ、２０  バーコード認識装置、２１  矩形領域抽出部、２２  バーコード領域抽出部、２３  デコード部。
【図１】
2008020947.tif 000003
【図２】
2008020947.tif 000004
【図３】
2008020947.tif 000005
【図４】
2008020947.tif 000006
【図５】
2008020947.tif 000007