(58)【調査した分野】(Int.Cl.,DB名)
シンボル情報が記録された媒体を撮像素子により撮像した前記媒体の画像データを取り込んで、前記シンボル情報が媒体に記録された位置を検出する位置検出処理を含むシンボル情報読取処理をコンピュータに実行させるプログラムであって、
前記位置検出処理は、
前記画像データを所定の領域で前記シンボル情報の走査線の走査方向に沿って輝度値の変動量を計算して、前記シンボル情報に該当する可能性のある仮領域を判定する仮領域判定処理と、
前記仮領域について、前記走査線の走査方向に対して直交する方向に隣接する隣接領域との相関を求めて、相関値の高い領域を示す相関マップを作成する相関マップ作成処理と、
前記相関マップについて、基本バーコードの有無を検索し、前記基本バーコードが存在すると判断した領域をラベリングするラベリング処理と、
ラベリングされた領域に基づき、前記シンボル情報が媒体に記録された位置を検出する位置決定処理と、を含み、
前記ラベリング処理において、
前記相関マップ作成処理で得られた相関マップの中に所定の基本パターンがあるかどうかを検索してラベリングを行う際、基本パターンの有無を、判定対象領域内に占める高相関領域の割合または基本パターン内における高相関領域の位置に応じて判定し、
基本パターン内の全要素の要素値の合計が、全て高相関である場合の要素値の合計より小さい、あらかじめ設定した値以上である場合は基本バーコードとしてみなす
シンボル情報読取処理をコンピュータに実行させるプログラム。
シンボル情報が記録された媒体を撮像素子により撮像した前記媒体の画像データを取り込んで、前記シンボル情報が媒体に記録された位置を検出する位置検出処理を含むシンボル情報読取処理をコンピュータに実行させるプログラムであって、
前記位置検出処理は、
前記画像データを所定の領域で前記シンボル情報の走査線の走査方向に沿って輝度値の変動量を計算して、前記シンボル情報に該当する可能性のある仮領域を判定する仮領域判定処理と、
前記仮領域について、前記走査線の走査方向に対して直交する方向に隣接する隣接領域との相関を求めて、相関値の高い領域を示す相関マップを作成する相関マップ作成処理と、
前記相関マップについて、基本バーコードの有無を検索し、前記基本バーコードが存在すると判断した領域をラベリングするラベリング処理と、
ラベリングされた領域に基づき、前記シンボル情報が媒体に記録された位置を検出する位置決定処理と、を含み、
前記ラベリング処理において、
前記相関マップ作成処理で得られた相関マップの中に所定の基本パターンがあるかどうかを検索してラベリングを行う際、基本パターンの有無を、判定対象領域内に占める高相関領域の割合または基本パターン内における高相関領域の位置に応じて判定し、
基本パターン検索処理において、相関マップ上で1要素ずつシフトしながら、基本パターン領域を形成し、その基本パターン領域ごとに、基本パターンの有無を、判定対象領域内に占める高相関領域の割合または基本パターン内における高相関領域の位置に応じて判定し、当該基本バーコードであるとみなされなかった場合には当該基本パターンを不定とみなし、さらにシフトした先の基本パターンが基本バーコードであるとみされると、不定とみなした基本パターンを基本バーコードとしてみなす
シンボル情報読取処理をコンピュータに実行させるプログラム。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態を図面に関連付けて説明する。
【0017】
図1は、本発明の実施形態に係るシンボル情報読取装置の構成例を示す図である。
【0018】
本実施形態に係るシンボル情報読取装置10は、紙やプラスチック等の媒体上に固有の情報として付与されたシンボル情報(本実施形態では1次元バーコードシンボルあるいは2次元バーコードシンボル等)を撮像して得られた画像データを処理することによって、画像データからシンボル情報全体を正確に読み取ることが可能に構成されている。
【0019】
本シンボル情報読取装置10は、
図1に示すように、撮像装置11、記憶部としての画像メモリ12、およびデータ処理装置13を主構成要素として有している。
【0020】
撮像装置11は、密着型の一次元撮像素子111、およびカード等の記録担体20を搬送する搬送機構(搬送ガイドを含む)112を含んで構成されている。
撮像装置11の撮像素子111で撮像されるカード等の記録担体20には、
図1ではシンボル情報の一例として、一次元バーコードのバーコードシンボル21が印刷されている。
なお、
図1において、符号Dは記録担体20の搬送方向を示し、符号Lは、一次元バーコードのバーコードシンボル21の走査線を示す。
【0021】
ここでは、撮像素子111として密着型1次元撮像素子を採用して装置の小型化等を図っているが、撮像素子111としては、読み取り対象の記録担体20の文字列を読み取り対象とする2次元のエリアセンサ等を採用することも可能である。
撮像素子111は、たとえばCCDやCMOSセンサにより形成される。
【0022】
画像メモリ12は、撮像素子111で撮像された1次元バーコードのバーコードシンボル21を含む記録担体20の画像データを記憶(格納)する。
なお、この画像メモリ12は、RAM,SDRAM,DDRSDRAM,RDRAMなど、画像データを記憶しうるものであれば如何なるものであってもよい。
【0023】
データ処理装置13は、位置検出処理部14および復号処理部15を主構成要素として有している。
そして、本実施形態の位置検出処理部14は、仮領域判定部141、相関マップ作成部142、ラベリング部143、および位置決定部144を有する。
なお、位置検出処理部14を構成する各要素は、CPUやROM,RAMといったハードウェアにより実現することができる。
また、本実施形態では、位置検出処理部14と復号処理部15は別要素として図示しているが、復号処理部15が位置検出処理部14内に組み込まれていてもよい。
【0024】
仮領域判定部141は、画像メモリ12から読み出した画像データを所定の領域でシンボル情報(本例では一次元バーコードのバーコードシンボル21)の1次元の走査線Lの走査方向に沿って輝度値の変動量を計算して、シンボル情報に該当する可能性のある仮領域を判定する。
仮領域判定部141は、輝度値の変動量としては、たとえば分散や標準偏差などが適用される。本実施形態の仮領域判定部141は、一例として分散マップを計算し、その結果により仮領域であるか否かを判定する。すなわち、本実施形態の仮領域判定部141は、分散マップ計算機能を含んで構成される。
【0025】
相関マップ作成部142は、仮領域判定部141で判定された仮領域について、走査線Lの走査方向に対して直交する方向に隣接する隣接領域との相関を求めて、相関値の高い領域を示す相関マップを作成する。
本実施形態の相関マップ作成部142は、シンボル情報であるバーコードシンボルとそうでない部分とを分離するため、いわゆる上下走査線相関処理を行う。
すなわち、相関マップ作成部142は、格子マップ上の「1」の各要素について、該当する区画のすぐ上とすぐ下に隣接する区画のライン相互の輝度の相関を計算する。それらの区画がバーコードシンボルを含んでいればこの相関値は大きな値を示すはずである。
具体的には、相関マップ作成部142は、格子座標上にライン相関マップを作成する。
後で説明するように、相関マップ作成部142は、たとえば注目ラインと上または下の各ラインとの相関値が高ければその要素にポイント(値)「1」を加算し、上下いずれとも相関が高かった場合はポイント(値)「2」を加算する。
【0026】
ラベリング部143は、相関マップ作成部142で作成された相関マップについて、マップ上で1要素ずつシフト(本実施形態では、走査方向、水平方向(横方向)にシフト)しながら基本パターンである基本バーコードシンボルの有無を検索し、基本バーコードシンボルが存在すると判断した領域をラベリングする。
ラベリング部143おける基本パターン検索処理では相関マップにおいて、原始バーコードパターンの存在を調べる。たとえば、検出したい最小のバーコードサイズが、相関マップ上で[2 2 2]のパターンに対応する場合、相関マップをサーチしてこのマスクパターンが検出されたらそのパターンによって占有されるマップ要素に「1」を立て、それ以外のマップ要素は「0」とする。
【0027】
本実施形態のラベリング部143は、相関マップ作成部142で得られた相関マップの中に所定の基本パターンがあるかどうかを検索してラベリングを行う際、基本パターンの有無を、判定対象領域内に占める高相関領域の割合あるいは基本パターン内における高相関領域(高相関値)の位置に応じて判定する。
ここで、高相関領域の割合とは、高相関である要素値、たとえば「2」の数の基本パターン内の要素数に対する割合があらかじめ設定した割合またはそれ以上である等を含む。
また、基本パターン内の全要素の要素値の合計が全て高相関である場合の要素値の合計より小さい、あらかじめ設定した値以上である場合も、たとえば高相関である要素値、たとえば「2」の数が基本パターン内の要素数に対する割合があらかじめ設定した割合またはそれ以上であるとすることができる。
また、高相関領域の基本パターン内における位置とは、複数の要素により形成される基本パターンにおいて、高相関である要素値、たとえば「2」が基本パターンの両端に位置している場合、高相関要素値「2」が規定値(たとえば、2、3や4等)以上に連続している場合、一または複数の値「1」や「0」を挟んで、値「2」が連続している位置(領域)が複数ある場合等を含む概念である。
【0028】
本実施形態において、ラベリング部143は、たとえば、相関マップ上で[2 1 2]のパターンであっても、これがバーコードシンボルとして認識されるようにする。
具体的には、ラベリング部143は、マスクパターン[2 2 2]との厳密な一致性を求めるのではなく、マスクパターン検索の対象領域に占める「2」の比率に注目する。
たとえば、3個のマップ要素のうち、従来は「2」が3個あることを条件としていたが、本実施形態のラベリング部143においては、「2」が2個以上あれば、バーコードシンボルパターンが有るものと見なしてそのマスクパターンによって占有されるマップ要素に「1」を立て、それ以外のマップ要素は「0」とする。
あるいは、相関マップ作成部142は、マスクパターンの要素値の合計があらかじめ設定した値2×5=10以上あればバーコードシンボルパターンが有るものと見なすようにしてもよい。この例では、基本パターンの要素数は6あるいはそれ以上である。
あるいは、相関マップ作成部142は、マスクパターンの要素値の合計があらかじめ設定した値2×5=10より低い値で不定であっても、たとえばシフトした後続する基本パターンの要素値の合計があらかじめ設定した値2×5=10以上あれば、不定であったマスクパターンをバーコードシンボルパターンが有るものとみなすようにしてもよい。
あるいは、相関マップ作成部142は、基本パターン内において、基本パターンの両端のマップ要素に「2」が立ててあればバーコードシンボルパターンが有るものとみなすようにしてもよい。
すなわち、ラベリング部143は、複数の要素により形成される基本パターンにおいて、高相関である要素値「2」が所定の形態で所定の位置にある場合は基本バーコードシンボルとしてみなすように構成してもよい。
【0029】
位置決定部144は、ラベリング部143によりラベリングされた領域に基づき、シンボル情報が媒体に記録された位置を検出する。
位置決定部144のシンボル位置判定処理においては、バーコードマップの重心(yxog,xcog)を求めることから開始される。重心は定義に基づいて計算される。
次に、位置決定部144は、バーコードシンボルの左端・右端・上端・下端位置を求める。位置決定部144は、左右位置はバーコードマップ上を、重心座標xcogを起点として左右に要素和(加算範囲はycog±2)がゼロとなる座標xstartおよびxstopを検出し、そこで打ち切る。上下位置はycogを起点として上下に要素和(加算範囲[xstart,xstop])がゼロとなる座標yupperおよびylowerを検出したら打ち切る。
このようにして、格子座標上にバーコードシンボルの4辺位置が特定される。
位置決定部144は、この4辺の座標から画像空間上の座標を求める。
【0030】
このような構成を有するシンボル情報読取装置10において、バーコードシンボル21が印刷(記録)された記録担体20は、搬送機構112の搬送ガイドに沿って搬送され、1次元撮像素子111を通過することによってそのカードイメージが光電変換され、その画像データが画像メモリ12に取り込まれ記憶される。
データ処理装置13においては、バーコードシンボル21を含む画像データが画像メモリ12から取り込まれ、取り込んだ画像データに基づいて様々な処理が施される。
本実施形態では、データ処理装置13における位置検出処理部14によって、バーコードシンボル21が記録担体20に記録された位置が検出される。
【0031】
本実施形態のシンボル情報読取装置10において、バーコードシンボルのデコーダ処理は概略
図2のフローチャートに従って実行される。
以下、本発明の実施形態に係るシンボル情報読取処理を図面に関連付けて詳細に説明する。
【0032】
[シンボル情報読取処理の概要]
図2は、本発明の実施形態に係るシンボル情報読取処理の流れを示すフローチャートである。
ここで、本発明の実施形態に係るシンボル情報読取処理流れを
図2に関連付けて概説する。
【0033】
まず、処理プランの指定が行われる(ステップST1)。
具体的には、処理プランの指定において、記録担体20に記録されているバーコードシンボルの種類、あるいは読み取るべきバーコードシンボルの種類に応じて使用するバーコード検出器(検出フィルタ)の種類と適用順番の設定を行う。
デフォルトでは、第一の検出フィルタ(後述する基本バーコードシンボルパターンの一つ)が指定されるが(ステップST2)、たとえば、バーコードの出現頻度に応じて順番を変えてもよい。
【0034】
次に、シンボル検出(ステップST3)が行われる。
具体的には、シンボル検出において、シンボル情報読取装置10の撮像素子111は、搬送機構(搬送ガイド)112に沿って所定位置まで移動したバーコードシンボル21を含む記録担体20を、光電変換によって撮像する。そして、撮像されたバーコードシンボル21含む画像データは、画像メモリ12において記憶される。
【0035】
その後、データ処理装置13における位置検出処理部14は、画像メモリ12に記憶された画像データを読み込み、仮領域判定部141の分散マップ計算処理等→相関マップ作成部142の上下ライン間の相関計算処理等→ラベリング部143の基本パターン検索処理等→位置決定部144のシンボル位置判定処理等を経由して、上述した第一の検出フィルタが担当するバーコードシンボル21の有無が決定され、有りと判定された場合には、その位置が決定される。
【0036】
そして、データ処理装置13の復号処理部15において、復号の処理が行われる(ステップST4)。
より具体的には、データ処理装置13の復号処理部15は、ステップST3において解析されたバーコードシンボル21の位置等に基づき、バーコードシンボル21の復号処理(走査線Lに沿ったデータ復号)を行う。
【0037】
ここで、仮に検出すべきバーコードが残っている場合、すなわち未適用の検出フィルタがある場合には(ステップST5:YES)、次の検出フィルタが適用され(ステップST6)、処理はステップST3に移され、新たなシンボル検出およびシンボル復号が行われる(ステップST3およびステップST4)。
一方で、未適用の検出フィルタがない場合には(ステップST5:NO)、一連のシンボル情報の読取処理は終了する。
なお、検出フィルタの切り替え処理は、たとえば、位置検出処理部14のラベリング部143が行ってもよいし、復号処理部15が行ってもよい。また、検出フィルタを切り替える順番は、たとえば出現頻度に基づいて決めてもよい。これにより、シンボル情報読取処理の効率化を図ることができる。
さらに、本実施形態では、1つの媒体に複数種類のバーコードが用いられている可能性を考慮して、処理プランの指定(ステップST1)や検出フィルタの更新(ステップST6)などを行うこととしたが、これらを省くことも可能である。すなわち、ステップST3およびステップST4のみで処理を行うことも可能である。
【0038】
[シンボル検出の具体的な処理]
図3は、
図2におけるステップST3のシンボル検出に関する情報処理の流れを示すフローチャートである。
【0039】
図3において、最初に、記録担体20の上下左右のエッジ位置が検出される(ステップST11)。
より具体的には、エッジ検出処理において、仮領域判定部141は、分散マップを計算するための前処理として、画像メモリ12に記憶された記録担体20の画像データより、上下左右のエッジ位置を検出する。
【0040】
図4は、画像メモリ12に記憶された記録担体20の画像データの一例を示す図である。
図4における周囲の実線SLは、エッジ検出処理によって得られた記録担体20のエッジ位置を表している。
【0041】
次に、仮領域判定部141において分散マップの計算が行われる(ステップST12)。
より具体的には、仮領域判定部141は、エッジラインを基準として、画像空間全体を
図4に示すような格子状の小区画に分割し、区画ごとに区画内の一つのラインに沿って輝度値の変動量(たとえば分散や標準偏差など)を計算する。
この区画内の一つのラインとは、
図1に示すバーコードシンボル21の走査線Lの走査方向と同じ方向に形成されており、たとえば、
図4に示す符号A0(B0)で示すラインである。
【0042】
なお、従来技術では、小区画内で複数ラインを指定して、まず微分演算した上で対応点ごとの積和演算を行う方法をとっている一方、本実施形態に係るシンボル情報読取処理では、単一ラインかつ分散(又は標準偏差等)の演算が行われる。
そのため、本実施形態に係るシンボル情報読取処理は、従来技術と比べて演算量の少ない処理となっている。
【0043】
全格子区画について同様の演算を行うと、格子座標に基づく変動量マップを得ることができる。
図5は、マップ数値を画像で表現した図である。
図5において、白い部分は変動が大きい部分を表し、黒い部分は変動が小さい部分を表している。そして、この変動量が大きい部分については、
図4に示すバーコードシンボル21の位置に対応している。
【0044】
次に、
図5に示すマップを2値化すると、
図6に示すようになる。2値化の閾値は、変動量の分布状態から適したものを設定することができる。
図6は、
図5に示すマップを2値化した図である。
【0045】
図6について詳述する。
たとえば、
図6のマップにおいて、右から4列目は、上から[0,0,0,0,0,0,1,1,1,0,0]という順で数値が並んでいるが(点線枠Xで示す部分)、これは、
図4におけるA1〜A11という各単一ラインの分散を所定の閾値で2値化したものに相当する。
図6に示すように、
図4におけるバーコードシンボル21の位置には、「1」の値が12箇所、正方形状(太枠Zで示す領域部分)に並んでいることが分かる(そのうちの1辺が、
図4に示すA6,A7,A8およびA9である)。
【0046】
このように、上下左右のエッジ位置を検出し(
図3のステップST11)、分散マップ(
図5,
図6)の計算(
図3のステップST12)を行う分散マップ計算機能を有す仮領域判定部141は、画像データを所定の領域で走査線に沿って輝度値の変動量を計算して、シンボル情報に該当する可能性のある仮領域を判定する。
なお、ここでいう「仮領域」は、上述した「1」が12箇所並んでいる領域Zである。
【0047】
ここで、
図6に示すマップにおいて、2値化したマップにおいて、「1」に該当するイメージ部分は、バーコード領域に合致している見込みが高い一方、必ずしもバーコード領域になるとは限らない。
すなわち、バーコードシンボル21が位置する領域ではないが「1」となる領域Yが存在しており、その領域が「仮領域」として判定されることも考えられる。
具体的には、
図6において、点線枠Y内に存在する4個の1は、
図4に示すように記録担体20の表面に印字された文字が位置する領域に合致しているのであって、バーコードシンボル21が位置する領域に合致しているわけではない。
【0048】
そこで、次に、
図3のステップST13におてい次に上下走査線相関処理が行われる。
これは、上下ライン間の相関マップ作成部142によって、バーコードシンボル21とそうでない部分とを分離するための処理である。
具体的には、格子マップ上の「1」の各要素について、該当する区画のすぐ上とすぐ下に隣接する区画のライン相互の輝度の相関を計算する。
それらの区画がバーコードシンボル21を含んでいれば、この相関値は大きな値を示すはずである。
具体的には、相関マップ作成部142は、格子座標上にライン相関マップを作成する。
【0049】
図7は、上下ライン相関の処理結果である相関マップを示す図である。
具体的には、バーコードシンボル21の走査線の走査方向に沿って形成されたラインにおいて、注目ラインと上または下のいずれかのラインとの相関値が高ければ、その要素に1ポイントが加算され、注目ラインと上および下の両方のラインとの相関値が高ければ、その要素に2ポイントが加算される。
ここで注意すべき点は、
図6に示す値(0と1の2値)が処理対象ではない点である。
図4に示す実際の画像データが処理対象になる。
【0050】
たとえば、
図6における点線枠Y内の4箇所のポイントを生成するため使われたラインは、
図4でいえば、B2,B6,B3,B7の4ラインとなる。よって、これらが注目ラインとなる。
B2のラインについての上下ライン相関の処理は、B2とB1の相関値と、B2とB3の相関値とが計算される。そして、いずれかが高ければ1ポイントが付与され、両方ともが高ければ2ポイントが付与される。
一般的に、文字の領域では、バーコードシンボル21の領域と比べて、これらの相関値は高くならない(そのため、相関値が高いか低いかを決める閾値は、バーコードシンボル21の領域を特定できるような値に設定しておく)。
同様に、
図4に示すB6のラインについての上下ライン相関の処理は、B6とB5の相関値と、B6とB7の相関値とが計算され、B3のラインについての上下ライン相関の処理は、B3とB2の相関値と、B3とB4の相関値とが計算され、B7のラインについての上下ライン相関の処理は、B7とB6の相関値と、B7とB8の相関値とが計算されるが、いずれも高い値とはならない。
その結果、
図7の点線枠Y2に示すように、
図6の点線枠Yに相当する箇所のポイント値は、全て「0」となる。
【0051】
同様にして、
図6に示す点線枠Z内の12箇所のポイントを生成するために使われたラインは、
図4でいえば、バーコードシンボル21を包含する12ラインとなる。
たとえば、
図7に示す枠Z2内の左列の各ポイント(上から[1,2,2,1]の部分)を生成するために使われた4ラインに着目すると、
図4でいえば、A6〜A9のラインとなる。A7を注目ラインとした場合、上下ライン相関の処理は、A7とA6の相関値と、A7とA8の相関値とが計算されるところ、バーコードシンボル21の性質上、A7とA8の相関値は極めて大きく(限りなく1に)なる。
その結果、ポイントは1が加算される。また、A9を注目ラインとした場合も同様に、ポイントは1が加算される。そして、A8を注目ラインとした場合には、A8とA7の相関値も、A8とA9の相関値も、極めて大きくなることから、ポイントは2が加算される。
このようにして、点線枠Z内の左列の各ポイント[1,2,2,1]が決まる。点線枠Z内の中央列の各ポイント[1,2,2,1]も、右列の各ポイント[1,2,2,1]も、同様に決まる。
【0052】
図7に示すように、値「2」をもつ要素は、特に上下の相関が強いことを表している。そして、このような要素は、同一ラインパターンが上下に積層しているバーコードの特徴を反映していると考えられ、バーコード領域である可能性が高いことが分かる。
このように、上下ライン相関の処理(
図3のステップST13)を行う上下ライン間の相関計算処理を行う相関マップ作成部142は、上述した仮領域について、バーコードシンボル21の走査線(
図1に示す符号L参照)の走査方向に対して直交する方向(
図4や
図6でいえば上下)に隣接する隣接領域との相関を求めて、相関値の高い領域を示すマップを作成する。
また、本実施形態では、
図7の枠Z2を用いて説明したように、上下方向に隣接する2つの隣接領域(隣接するライン)との相関を求めた後、これら2つの相関値の双方が所定の閾値よりも高い相関値を示した場合(ポイント2が加算された場合)と、これら2つの相関値のいずれか一方が所定の閾値よりも高い相関値を示した場合(ポイント1が加算された場合)とを区別して、相関マップを作成するようにしている。
これにより、バーコードシンボル21が存在する位置を的確に認識できる相関マップを作成することができる(
図7参照)。
【0053】
次に、ラベリング部143において基本パターン検索が行われる(
図3のステップS14)。
具体的には、ラベリング部143は、相関マップを用いて、原始バーコードパターンの存在を調べる。たとえば、検出した最小のバーコードサイズが、相関マップ上で走査方向に[2,2,2]のマスクパターン(ポイント列)に対応する場合において、
図7の相関マップをサーチして、このマスクパターン[2,2,2]が検出されたら、そのマスクパターンによって占有されるマップ要素に「1」を立て、それ以外のマップ要素は「0」とする。
図7に示す相関マップに対して、このような処理を実行すると、
図8の枠Z3に示すようなバーコードマップを得ることができる。
【0054】
図8は、
図7に示す相関マップから得られたバーコードマップを示す図である。
このように、基本パターン検索の処理(
図3のステップST14)を行うラベリング部143は、相関マップについて、基本パターンである基本バーコード(たとえば上述したマスクパターン[2,2,2])の有無を検索し、その基本バーコードが存在すると判断した領域をラベリングする(本実施形態ではマップ要素に「1」を立てる)。
なお、後で詳述するように、本実施形態のラベリング部143は、相関マップ作成部142で得られた相関マップの中に所定の基本パターンがあるかどうかを検索してラベリングを行う際、基本パターンの有無を、判定対象領域内に占める高相関領域(本実施形態では値「2」である要素)の割合や基本パターン内におけるその位置に応じて判定する。
【0055】
なお、本実施形態では、3要素からなるマスクパターンを考えたが、一列4要素、5要素、6要素、あるいはそれ以上の要素からなるマスクパターンや、上下各3要素の計6要素からなるマスクパターンなど、「基本バーコード」(基本バーコードパターン)の態様としては種々変更可能である。
また、本実施形態では、注目ラインについて、走査線の走査方向に対して直交する方向に隣接する隣接領域(隣接するライン)との相関を求め、これら2つの相関値の双方が所定の閾値よりも高い相関値を示す領域が、基本バーコードが存在すると判断した領域としてラベリングされるようにしている。
これにより、文字部分を適切に排除し、より確度の高い部分(バーコードシンボル21が存在する部分のみ)を検索対象とすることができる。
【0056】
また、位置検出処理部14のラベリング部143には、一または複数の基本バーコードパターン(検出フィルタ)が記憶されている。
そして、
図2のフローチャートに関連付けて説明したように、一連のシンボル情報の読取処理の中で、基本バーコードパターンが順次切り替わるので(
図2のステップST5,ステップST6)、結果的に、ラベリング部143は、複数の基本バーコードシンボルパターンを用いて基本パターン検索を行うことになる。
【0057】
次に、位置決定部144において、シンボル位置判定が行われる(
図3のステップST15)。
具体的には、位置決定部144により、バーコードマップの重心(ycog,xcog)を求めることから開始される(重心は、一般的な定義に基づいて計算)。
次に、バーコードマップの左端・右端・上端・下端位置を求める。左右位置は、バーコードマップ上でxcogを起点として、左右に要素和(加算範囲はycog±2)がゼロとなる座標xstartおよびxstopを検出し、そこで打ち切る。
上下位置は、バーコードマップ上でycogを起点として、上下に要素和(加算範囲[xstart, xstop])がゼロとなる座標yupperおよびylowerを検出したら打ち切る。
このようにして、格子座標上において、バーコードシンボル21の4辺位置が特定される。そして、4辺の座標から画像空間上の座標を求める。
【0058】
格子区画ごとに画像空間との対応関係をもっているので、バーコードシンボルの左端BCDLは、区画(ycog, xstart)における区画開始点である。バーコードシンボルの右端BCDRは、区画(ycog, xstop)における区画終了点である。したがって、バーコードシンボルの左右範囲は、BCDL〜BCDRとなる。
なお、この左右範囲については、マージンをみて、左右それぞれ一定画素数拡張することも可能である。バーコードシンボルの上下端の画像空間上の位置は、区画(yupper, xcog)のy座標と、区画(ylower, xcog)のy座標とで挟まれた領域の平均輝度のプロファイルから求められる。
具体例を
図9に示す(なお、
図8のバーコードマップを用いることなく、全ての領域についてプロファイルを計算するとなると、ある程度の演算量・計算時間が必要になる)。
【0059】
図9は、バーコードシンボル21付近における平均輝度のプロファイルを示す図である。
図9に示すように、上下エッジのサーチ開始点は、重心区画のy座標であり、その輝度に基づいてエッジ判定閾値(
図9参照)を決める。
そして、上下にサーチして、エッジ判定閾値を超えたところをエッジと判定し、それらをBimgtopおよびBimgbottomとする。
【0060】
このように、位置決定部144は、
図8に示すようにラベリングされた領域Z3に基づき、バーコードシンボル21が記録担体20に記録された位置を検出する。
また、たとえば、この位置決定部144のシンボル位置判定機能として、ラベリングされた領域に基づいてバーコードシンボル21が記録担体20に記録された上下左右の概略位置を決定し、その概略位置で形成される矩形領域内のラベルリング総数をカウントし、これを予めカウントされた前記相関マップ全体でのラベリング総数と一致するか否かを判定した後、バーコードシンボル21が記録担体20に記録された位置を検出するようにしてもよい。これにより、上下左右の概略位置の精度を高めることが可能である。
【0061】
基本的にシンボル情報読取装置においては。エッジをBimgtopおよびBimgbottomとすることで、バーコードシンボルの画像空間上の位置が確定できたので、バーコードシンボル位置検出の全処理を終わることも可能である。
【0062】
しかし、現実問題として、バーコードシンボルの印刷状態または媒体基材の汚れ等によっては、実際にバーコードシンボルパターンが存在しているにもかかわらず、相関マップ上で[2 2 2]に合致するパターンが形成されない場合がある。
【0063】
図10は、照合するラインの一方の位置が白スジ線と重なった例を示す図である。
図11は、照合するラインの一方の位置が
図10中の白スジ線と重なった場合に作成される相関マップの一例を示す図である。
図12は、
図11の相関マップに対して基本パターン検索処理を施した結果を示す図である。
【0064】
合致するパターンが形成されない場合は、たとえば
図10に示すように、照合するラインのどちらか一方または双方にバーコードシンボルとしての完全性が損なわれた場合に起こりうる。
照合するラインの一方の位置が
図10中の白スジ線WLと重なった場合、相関マップ作成部142における上下走査線相関処理における相関値が低くなるため、
図11に示すような相関マップとなる。
理想的な相関マップは、
図7の枠Z2内に4行で示されるように、上側から[1 1 1]、[2 2 2]、[2 2 2]、[1 1 1]となるはずであるが、
図11では[1 1 1]、[2 1 2]、[2 2 2]、[1 1 1]となっている。
これに基本パターン検索処理を施すと、
図12のようになり、バーコードシンボルパターンが検出されない結果となる。
すなわち、基本パターン検索処理を施すと、理想的に
図8の枠Z3内に4行で示されるように、上側から[0 0 0]、[1 1 1]、[1 1 1]、[0 0 0]となるはずであるが、
図12では[0 0 0]、[0 0 0]、[1 1 1]、[0 0 0]となっている。
この例では、枠Z内において、2行目の[2 1 2]が[0 0 0]とラベリングされ、バーコードシンボルとして認識されていないラインがある。
【0065】
そこで、本実施形態のシンボル情報読取装置10においては、これを防止するため、相関マップ上で[2 1 2]のパターンであっても、これがバーコードシンボルとして認識されるようにする。
【0066】
具体的には、基本パターンであるマスクパターン[2 2 2]との厳密な一致性を求めるのではなく、マスクパターン検索の対象領域に占める値「2」の比率に注目する。
たとえば、基本パターンが3個のマップ要素で形成されている場合、3個のマップ要素のうち、従来は高相関領域である値「2」の要素が3個あることを条件としていた。
本実施形態では、高相関領域である値「2」が2個以上あれば、バーコードシンボルパターンが有るものとみなしてそのマスクパターンによって占有されるマップ要素に値「1」を立て、それ以外のマップ要素は「0」とする。
このように構成することにより、
図11に示すような相関マップであっても、
図8と同じバーコードマップが得られ、バーコードシンボルの見逃しを回避できる。
【0067】
[シンボル情報読取装置におけるより具体的な位置検出処理]
次に、本実施形態に係るシンボル情報読取装置におけるより具体的な位置検出処理について、
図13、
図14、および
図5に関連付けて説明する。
【0068】
図13は、13行30列のマトリクス状に形成された相関マップの一例を示す図である。
図14は、既存のシンボル情報読取装置のように、基本パターン検索処理において、あらかじめ設定したマスクパターンとの厳密な一致性を求めた場合のラベリング後のバーコードマップを示す図である。
図15は、本実施形態に係るシンボル情報読取装置の基本パターン検索処理において、基本パターンの有無を、基本パターン内の全要素の要素値の合計があらかじめ設定した値以上であるとした場合のラベリング後のバーコードマップを示す図である。
図14および
図15において、(B)としてバーコードシンボル21付近における平均輝度のプロファイルを示し、(C)としてバーコードシンボル領域として検索されたマップにおけるラベリング値「1」の分布状態を示している。
【0069】
この例では、基本パターンは連続する6個の要素からなる。
図14の例では、6個のマップ要素がすべて値「2」でその合計が12である場合のみにバーコードシンボルパターンがあるものとみなす処理を行っている。
図15の例では、6個のマップ要素の値がすべて「2」ではなく「1」や「0」を含み、その要素値の合計が総計の「12」でなく、あらかじめ設定した値「10」(あるいはそれ以下の9等であってもよい)である場合にはバーコードシンボルパターンがあるものとみなす処理を行っている。
この場合、6個の要素中、高相関領域の値「2」の数が所定の割合、すなわち5個以上であればバーコードシンボルパターンとみなし、それより値が小さい、あるいは値「2」の数が5より少ない場合には、バーコードパターンとなみさず、たとえば不定として、後続のパターンの状態や高相関値の基本パターン内の位置等に応じて、不定でなくバーコードシンボルパターンとしてみなすように構成してもよい。
【0070】
この場合も、基本パターン検索処理において、基本的に、マップ上で水平方向(図中の右横方向)に1要素ずつシフトしながら、基本パターン領域を形成し、その基本パターン領域ごとに、要素の合計値が「12」である、あるいは「10」以上であるとの判定が行われる。
【0071】
図13の相関マップに対して基本パターンを[2 2 2 2 2 2]として、既存方法でバーコードマップを求めると、
図14のマップが得られる。
位置決定部144のシンボル位置検索の結果、xstart=4およびxstop=23が得られる。
このxstop=23は実際のバーコードの右端位置(xstop=30)よりも左寄りに位置するため、バーコードシンボルの全体を切り出すことができない。
【0072】
これに対し、本実施形態によれば、マスクパターンの要素値の合計が2×5=10以上あればバーコードシンボルパターンが有るものと見なすことから、
図15のバーコードマップが得られる。
この場合、位置決定部144のシンボル位置検索の結果、xstart=4およびxstop=30となり、正しくバーコードシンボル全体を切り出すことができる。
【0073】
本実施形態に係る処理においては、
図13中にパターンPT1で示す6個の要素パターンは[2 2 2 2 1 2]でその合計値が「11」であることから、バーコードシンボルパターンがあるものとみなされる。この場合、6個の要素中、高相関領域の値「2」の数が5個であり、所定の割合を以上であるというこもできる。
1要素シフトしたパターンPT2で示す6個の要素パターンは[2 2 2 1 2 2]でその合計値が「11」であることから、バーコードシンボルパターンがあるものとみなされる。
さらに1要素シフトしたパターンPT3で示す6個の要素パターンは[2 2 1 2 2 0]でその合計値が「9」であることから、バーコードシンボルパターンがあるか否かは不定である。
さらに1要素シフトしたパターンPT4で示す6個の要素パターンは[2 1 2 2 0 2]でその合計値が「9」であることから、バーコードシンボルパターンがあるか否かは不定である。
さらに1要素シフトしたパターンPT5で示す6個の要素パターンは[1 2 2 0 2 2]でその合計値が「9」であることから、バーコードシンボルパターンがあるか否かは不定である。
さらに1要素シフトしたパターンPT6で示す6個の要素パターンは[2 2 0 2 2 2]でその合計値が「10」であることから、バーコードシンボルパターンがあるものとみなされる。
さらに1要素シフトしたパターンPT7で示す6個の要素パターンは[2 0 2 2 2 2]でその合計値が「10」であることから、バーコードシンボルパターンがあるものとみなされる。
さらに1要素シフトしたパターンPT8で示す6個の要素パターンは[0 2 2 2 2 2]でその合計値が「10」であることから、バーコードシンボルパターンがあるものとみなされる。
【0074】
ここで、不定とみなされたパターンPT3、PT4、PT5は、さらにシフトしていった結果、パターンPT6〜PT8のように、バーコードパターンがあるものとみなされるパターンがあることから、本実施形態では、結果的に不定ではなく、バーコードシンボルパターンがあるものとみなすことができる。
【0075】
また、不定とみなされたパターンPT4は[2 1 2 2 0 2]でその合計値が「9」であっても、高相関領域の値「2」がそのパターンの両端にあることから、結果的に不定ではなく、バーコードシンボルパターンがあるものともみなすことができる。
【0076】
以上のように、本実施形態では、相関マップ作成部142は、マスクパターンの要素値の合計が、全て高相関である場合の要素値の合計「12」より小さい、あらかじめ設定した値2×5=10以上あればバーコードシンボルパターンが有るものとみなすように判定される。
あるいは、相関マップ作成部142は、マスクパターンの要素値の合計があらかじめ設定した値2×5=10より低い値で不定であっても、たとえばシフトした後続する基本パターンの要素値の合計があらかじめ設定した値2×5=10以上あれば、不定であったマスクパターンをバーコードシンボルパターンが有るものとみなすように判定される。
あるいは、相関マップ作成部142は、基本パターン内において、基本パターンの両端のマップ要素に「2」が立ててあればバーコードシンボルパターンが有るものとみなすように判定される。
【0077】
[実施形態の主な効果]
以上説明したように、本実施形態に係るシンボル情報読取装置によれば、ラベリング部143は、相関マップ作成部142で得られた相関マップの中に所定の基本パターンがあるかどうかを検索してラベリングを行う際、基本パターンの有無を、判定対象領域内に占める高相関領域の割合や基本パターン内におけるその位置に応じて判定する。
ここで、高相関領域の割合とは、高相関である要素値、たとえば「2」の数の基本パターン内の要素数に対する割合があらかじめ設定した割合またはそれ以上である等を含む。
また、基本パターン内の全要素の要素値の合計が全て高相関である場合の要素値の合計より小さい、あらかじめ設定した値以上である場合も、たとえば高相関である要素値、たとえば「2」の数が基本パターン内の要素数に対する割合があらかじめ設定した割合またはそれ以上であるとすることができる。
また、高相関領域の基本パターン内における位置とは、複数の要素により形成される基本パターンにおいて、高相関である要素値、たとえば「2」が基本パターンの両端に位置している場合、高相関要素値「2」が規定値(たとえば、2、3や4等)以上に連続している場合、一または複数の値「1」を挟んで連続している位置(領域)が複数ある場合等を含む。
【0078】
したがって、本実施形態によれば、以下の効果を得ることができる。
これまで、バーコードシンボルパターンを見つける際、相関マップ上で所定のマスクパターン(たとえば[ 2 2 2 ])との厳密な一致性を要求していたため、バーコードシンボルの印刷状態または媒体基材の汚れ等によって、実際にバーコードシンボルが存在しているにもかかわらず、相関マップ上で[2 2 2]に合致するパターンが形成されない場合があり、バーコードシンボルの検出ミスにつながることがあった。
そこで、マスクパターン検索の対象領域に占める高相関指標(ここでは「2」)の比率に注目し、たとえば、3個のマップ要素のうち、「2」が2個以上あれば、バーコードシンボルパターンが有るものと見なすようにすることで、バーコードの見逃しを回避できる。
あるいは、実施形態では、マスクパターンの要素値の合計があらかじめ設定した値2×5=10以上あればバーコードシンボルパターンが有るものとみなすことができる。
あるいは、相関マップ作成部142は、マスクパターンの要素値の合計があらかじめ設定した値2×5=10より低い値で不定であっても、たとえばシフトした後続する基本パターンの要素値の合計があらかじめ設定した値2×5=10以上あれば、不定であったマスクパターンをバーコードシンボルパターンが有るものとみさすことができる。
あるいは、相関マップ作成部142は、基本パターン内において、基本パターンの両端のマップ要素に「2」が立ててあればバーコードシンボルパターンが有るものとみなすことができる。
すなわち、本実施形態によれば、バーコードシンボル等のシンボル情報を読み取る際の誤判定を防止でき、シンボル情報全体を正確に読み取ることが可能となる利点がある。
【0079】
また、本実施形態よれば、微分演算を行うことなく、バーコードシンボル21の上下左右位置を決定することができ、ひいては演算量を削減することができる。
また、演算量が削減されれば、処理時間の短縮化に貢献することができる。さらに、安価な撮像素子を用いても十分な速度を出すことができれば、高価な撮像素子を控えることで、製造コスト削減に寄与することができる。
【0080】
[応用例]
本発明では、代表的な2次元バーコードシンボルであるPDF417の位置検出にも利用可能である。
図16は、2次元バーコードシンボル31が印刷された媒体画像例を示す図である。
図16に示す画像に対して、上述した位置検出の各処理ステップを適用すれば、各ラインの相関マップは
図17に示すようになる。
1次元バーコードシンボルの場合には、シンボル全体に亘って値(ポイント)「2」が出現していたが(
図8参照)、
図17では、左端と右端の部分に対応する要素にのみ値「2」が現れ、中間部分は「0」となっている。
この場合、上述のマスクパターンを検索する処理によって、2次元バーコードシンボルを検出することができないため、一旦1次元バーコードシンボルとしての検索は打ち切り、相関マップを起点として2次元バーコードシンボルを想定した検索を行う。
すなわち、相関マップにおいて左端・右端の類似パターン対の検索を行い、検出されたらこの部分に挟まれた矩形領域を画像空間座標にマッピングし、2次元バーコードシンボルの特徴に基づいて位置決定を行うようにすればよい。
【0081】
また、
図18は、1つの媒体に複数種類のバーコードシンボルが用いられている例を示す図である。
図18に示すように、1つの媒体上に、1次元バーコードシンボルであるCODE128(符号32で示す)と2次元バーコードシンボルであるPDF417(符号33で示す)とが存在する場合を考える。あらかじめそれぞれのシンボル検出器を用意しておき、入力画像に対し、まずCODE128に対応した第一のシンボル検出器を適用する。
図18に関し、上で述べた
図7に相当する相関マップは、
図19に示すようになる。
図19は、
図18に基づき得られた相関マップを示す図である。
図19の相関マップに対してマスクパターン[2,2,2]を作用させるあるいは本実施形態の基本パターンの有無を、判定対象領域内に占める高相関領域の割合または基本パターン内における高相関領域の位置に応じて判定する処理を行うと、CODE128に反応して、上で述べた
図8と同様なバーコードマップが得られ、CODE128の存在が検出される。
それ以後は、バーコードマップに基づいてCODE128シンボルの画像空間上の位置を決定し、復号処理を行えばよい。
【0082】
次に、同一の入力画像に対し、PDF417に対応した第二のシンボル検出器を適用する。
検出器のパラメータとしては、格子区画の寸法をPDF417の形状に最適なものに設定しておくとよい。ここでは、CODE128と同じ格子区画を用いることとする。すると、相関マップは、上述したように
図19に示すようになる。
1次元バーコードシンボルの場合は、シンボル全体にわたって値2が出現したが、PDF417では、左端と右端の部分に対応する要素にのみ値2が現れ、中間部分は0となっている。
この場合は、2次元バーコードシンボルを想定したマスクパターン検索を行う。すなわち、相関マップにおいて、左端・右端の類似パターン対の検索を行い、これが検出されたら、この部分に挟まれた矩形領域を画像空間座標にマッピングし、2次元バーコードシンボルの特徴に基づいた画像空間上の位置決定を行った上で、復号処理に移行すればよい。
【0083】
また、本実施形態では、一次元撮像素子やリニア搬送機構の組合せに対して本発明を適用することとしたが、本発明はこれに限られることなく、たとえば、二次元CCDやCMOSイメージャなどのエリアセンサと被写体支持機構との組合せや、また1次元撮像素子と手動による媒体駆動を組合せ等に対して本発明を適用することとしてもよい。
【0084】
さらに、上述の変形例では、バーコードシンボルラベルにPDF417フォーマットを用いることとしたが、本発明はこれに限られることなく、たとえば、バーコードシンボルラベルにCode49その他のスタック型バーコードシンボルを用いてもよい。
【0085】
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。