【課題】同一種類のシンボルが同じ媒体上に2個以上存在する場合であっても、重心位置を安定して算出することができ、複数のシンボルを相互に区別することが可能なシンボル情報読取装置およびシンボル情報読取方法を提供する。
【解決手段】位置検出処理部14は、仮領域について、走査線の走査方向に対して直交する方向に隣接する隣接領域との相関を求めて、相関値の高い領域を示すマップを作成する相関マップ作成部142と、相関マップについて、シンボルの有無を検索し、シンボルが存在すると判断した領域をラベリングするラベリング部143と、ラベリングされた領域に基づき、複数のシンボルのそれぞれについて領域を設定し分割する領域分割部144と、領域分割部で分割された複数のシンボルの各シンボルについてラベリングされた領域に基づき、シンボルが記録媒体に記録された位置を検出する位置決定部145と、を含む。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態を図面に関連付けて説明する。
【0022】
図1は、本発明の実施形態に係るシンボル情報読取装置の構成例を示す図である。
【0023】
本実施形態に係るシンボル情報読取装置10は、カード等の記録媒体20上に固有の情報が付与されたバーコード21、22を撮像して得られた画像データを処理するバーコード読取装置である。
【0024】
バーコード読取装置10は、
図1に示すように、撮像装置11、記憶部としての画像メモリ12、およびデータ処理装置13を主構成要素として有している。
【0025】
撮像装置11は、密着型の一次元撮像素子111、および記録媒体20を搬送する搬送機構(搬送ガイドを含む)112を含んで構成されている。記録媒体20には、
図1に示すように、同じフォーマットで作成された同じ種類の一次元バーコード21,22が複数(本例では2個)の印刷(記録)されている。
【0026】
図1において、符号Dは記録媒体20の搬送方向を示している。また、
図1に示すように、符号L1は、一次元バーコード21の走査線を示し、符号L2は一次元バーコード22の走査線を示す。すなわち、走査線L1、L2が走査する方向は、複数のバーとスペースを交互に配置している方向となっている。なお、説明を簡単にするために、本実施形態では、搬送方向D、走査線L1、L2の走査方向はX軸方向としている。また、搬送方向Dに直交する方向および走査線L1、L2の走査方向に直交する方向をY軸方向としている。
【0027】
ここでは、撮像素子111として密着型一次元撮像素子を採用して装置の小型化等を図っているが、撮像素子111としては、読み取り対象の記録媒体20の文字列を読み取り対象とする二次元のエリアセンサ等を採用することも可能である。また、搬送機構として定速の搬送機構を採用しているが、手動によるものも採用可能である。撮像素子111は、たとえばCCDやCMOSセンサにより形成される。
【0028】
画像メモリ12は、撮像素子111で撮像された一次元バーコード21,22を含む記録媒体20のデジタル化された読み取り多値画像(濃淡画像)データを記憶(格納)する。画像メモリ12に格納される原画像は、複数の画素がマトリクス状に配列されて形成され、具体的には、図示していないが、X軸方向にm行、Y軸方向にn列の画素が配置されている。各画素はそれぞれ画素値(輝度値)を有する。本実施形態では、各画素値は、たとえば8ビットで表現すると0〜255の間のいずれかの値をとり、画素値は黒に近いほど小さく、白に近いほど大きな値をとる。なお、この画像メモリ12は、RAM,SDRAM,DDRSDRAM,RDRAMなど、画像データを記憶しうるものであれば如何なるものであってもよい。
【0029】
データ処理装置13は、位置検出処理部14および復号処理部15を主構成要素として有している。そして、本実施形態の位置検出処理部14は、仮領域判定部141、相関マップ作成部142、ラベリング部143、領域分割部44、および位置決定部145を有する。
【0030】
なお、位置検出処理部14を構成する各要素は、CPUやROM,RAMといったハードウェアにより実現することができる。また、本実施形態では、位置検出処理部14と復号処理部15は別要素として図示しているが、復号処理部15が位置検出処理部14内に組み込まれていてもよい。
【0031】
仮領域判定部141は、画像メモリ12から読み出した多値画像(濃淡画像)データを所定の領域で一次元バーコード21,22の一次元の走査線L1,L2の走査方向(X軸方向)に沿って輝度値の変動量を計算して、一次元バーコードに該当する可能性のある仮領域を判定する。
【0032】
仮領域判定部141は、輝度値の変動量としては、たとえば分散や標準偏差などが適用される。本実施形態の仮領域判定部141は、一例として分散マップを計算し、その結果により仮領域であるか否かを判定する。すなわち、本実施形態の仮領域判定部141は、分散マップ計算機能を含んで構成される。この仮領域のマップである、周期的に並んだ同じ大きさの矩形をなす複数の区画(区切り、仕切り)を持つ格子状の分散マップの具体例については後述する。なお、各区画はいわゆる単位区画であり、一次元バーコード等の画像空間上の座標等を求める場合の単位的な大きさを持つ。
各区画の大きさはX軸方向、Y軸方向において基準の大きさとなり、各区画はX軸方向の長さがY軸方向の長さより長い長方形状となっている。
たとえば一元バーコード22では、X軸方向に3区画、Y軸方向に3区画の計9個の区画に跨ることになる。
たとえば一元バーコード21では、X軸方向に5区画、Y軸方向に4区画の計20個の区画に跨ることになる。
【0033】
相関マップ作成部142は、仮領域判定部141で判定された仮領域について、走査線L1,L2の走査方向に対して直交する方向(Y軸方向)に隣接する隣接領域との相関を求めて、相関値の高い領域を示す相関マップを作成する。
【0034】
本実施形態の相関マップ作成部142は、一次元バーコードとそうでない部分とを分離するため、いわゆる上下走査線相関処理を行う。すなわち、相関マップ作成部142は、格子状の分散マップ上の「1」の各要素について、該当する区画のすぐ上とすぐ下に隣接する区画のライン相互の輝度の相関を計算する。それらの区画が一次元バーコードを含んでいればこの相関値は大きな値を示す。
【0035】
具体的には、相関マップ作成部142は、格子座標上に相関マップを作成する。後で説明するように、相関マップ作成部142は、たとえば注目ラインと上または下の各ラインとの相関値が高ければその要素にポイント(値)「1」を加算し、上下いずれとも相関が高かった場合はポイント(値)「2」を加算する。
【0036】
ラベリング部143は、相関マップ作成部142で作成された相関マップについて、相関マップ上で1要素ずつシフト(本実施形態では、走査方向(X軸方向)にシフト)しながら一次元バーコードにおけるたとえば3つの要素を含む基本パターンおよびそれ以上の要素を含むパターンの有無を検索し、一次元バーコードに基本パターンおよびそれ以上の要素を含むパターンが存在すると判断した領域をラベリングする。
【0037】
ラベリング部143における基本パターン検索処理では相関マップにおいて、一次元バーコードにおける基本パターンの存在を調べる。たとえば、検出したい最小の一次元バーコードのサイズが、相関マップ上で基本パターン[2 2 2]に対応する場合、相関マップをサーチしてこの基本パターンが検出されたらそのパターンによって占有されるマップ要素に「1」を立て、それ以外のマップ要素は「0」とする。
【0038】
このように、ラベリング部143でラベリングされたシンボルラベリングマップ(バーコードマップ)には、たとえば前述したように、複数(本例では2個)の一次元バーコード21,22が印刷(記録)されている記録媒体20の読み取りが行われた場合、上記した基本パターンおよびそれ以上の要素を含むパターンを有する一次元バーコードが存在するとしてラベリングされた領域が複数箇所ある蓋然性が高い。このようにラベリング部143でラベリングされたシンボルラベリングマップは、領域分割部144に供給される。
【0039】
領域分割部144は、ラベリング部143から供給されたシンボルラベリングマップ(バーコードマップに相当する)においてラベリングされた領域に基づき、複数の一次元バーコードのそれぞれについて領域を設定し、シンボルラベリングマップを用いて領域を分割する。
【0040】
本実施形態の領域分割部144は、シンボルラベリングマップにおける一次元バーコードの数をゼロ個か1個か2個以上であるか否かの判定を行い、一次元バーコードが2個以上と判定した場合に、シンボルラベリングマップを用いて領域分割を行う。
【0041】
図2は、本実施形態に係る領域分割部の構成例を示すブロック図である。
【0042】
この領域分割部144は、
図2に示すように、個数判定部1441および分割処理部1442を有している。
【0043】
個数判定部1441は、ラベリング部143によるシンボルラベリングマップにおけるシンボル数を判定する。個数判定部1441は、シンボルラベリングマップにおける一次元バーコードの数をゼロ個か1個か2個以上であるか否かの判定を行う。
【0044】
個数判定部1441は、個数判定をたとえば次のようにして行う。
シンボルラベリングマップ(バーコードマップ)上で値1をもつ要素数をカウントしこれをC0とする。一方、シンボルラベリングマップ(バーコードマップ)上で重心COGを起点として求めた一次元バーコードの4辺によって囲まれる領域内の値1をもつ要素数をカウントしこれをC1とする。
【0045】
個数判定部1441は、このとき、
もし、C0=0であれば一次元バーコードは存在しない、
C0>0 かつ C0=C1であれば、一次元バーコードは1個である、
C0>0 かつ C0≠C1であれば、一次元バーコードは2個以上存在する、
と判定する。
【0046】
分割処理部1442は、個数判定部1441により一次元バーコード数が2個以上であると判定されたシンボルラベリングマップにおける複数の一次元バーコードのそれぞれについて領域を設定し分割する処理を行う。
【0047】
本実施形態の分割処理部1442は、領域分割に際してシンボルラベリングマップ(バーコードマップ)全域において、
図1等の中に設定した直交座標系のX軸に投影した射影projXおよびY軸に投影した射影projYを取得し、取得した射影のプロファイルにおいて谷部分と認識できる位置を探索し、この谷部分の位置を領域分割の境界位置(境界線)として取得し、取得した境界位置を基準として複数(本例では2個)の一次元バーコード21、22の各領域R1,R2・・を設定し、分割する。
【0048】
たとえば本例のように一次元バーコード21、22が2個の場合は、双方の一次元バーコードが結合状態にない限り、X軸の射影projXおよびY軸の射影projYのいずれか一方もしくは両者が2つの山と1つの谷からなるプロファイルをもつ。よって、分割処理部1442は、X軸の射影projXおよびY軸の射影projY上でこの谷の位置を決定することにより、2つの一次元バーコードのX軸方向、Y軸方向の境界位置(分離位置の座標)を求めることができる。
【0049】
分割処理部1442は、境界位置の座標によってX軸方向、Y軸方向に分離された2つの領域をたとえばR1およびR2とする。以降の処理は、領域R1とR2のそれぞれについて、一次元バーコードが1個の場合と同様の処理を適用することで、各々の一次元バーコードの位置を決定することができる。
【0050】
図3は、
図2の射影を利用した分割処理部の構成例を示すブロック図である。
【0051】
この分割処理部1442は、射影取得部14421、境界位置取得部14422、および領域設定部14423を有している。
【0052】
射影取得部14421は、領域分割に際してシンボルラベリングマップ(バーコードマップ)全域において直交座標系のX軸に投影した射影projXおよびY軸に投影した射影projYを取得する。
【0053】
境界位置取得部14422は、射影取得部14421で取得した射影の概要等を図等で表現したプロファイルにおいて谷部分と認識できる位置を探索し、谷部分の位置を領域分割の境界位置(分離位置のy座標、またはx座標)ydiv,xdivとして取得する。
【0054】
領域設定部14423は、境界位置取得部14422で取得した境界位置を基準として複数(本例では2個)の一次元バーコードの各領域R1,R2・・を設定する。
【0055】
また、領域設定部14423は、設定した各領域におけるバーコードの個数を再確認する機能を有している。
この機能を有することにより、分割領域に存在するバーコードの個数を確認することが可能となり、分割処理の結果を再確認しながら、領域分割を行うことが可能となり、たとえば個数が先に判定した個数と異なっている場合には、何らかの異常が生じている等の判断を行うことが可能となる。
【0056】
このような構成を有する分割処理部1442は、射影取得部14421で、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYを取得し、境界位置取得部14422でX軸およびY軸のうちの一方の軸の射影において探索の結果、谷部分と認識できる位置を取得できない場合に、他方の軸の射影において谷部分と認識できる位置の探索を行うように構成可能である。
【0057】
また、分割処理部1442は、射影取得部14421で、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYのうちの一方の軸の射影を取得した結果、境界位置取得部14422で谷部分と認識できる位置を取得できない場合に、射影取得部14421で、シンボルラベリングマップ全域において、X軸およびY軸のうちの他方の軸の射影を取得し、境界位置取得部14422で谷部分と認識できる位置の探索を行うように構成してもよい。
【0058】
位置決定部145は、領域分割部144で分割された複数の一次元バーコードの各シンボルについてラベリングされた領域に基づき、一次元バーコードが記録媒体20に記録された位置を検出する。
【0059】
位置決定部145は、分割された個別の領域について一次元バーコードのX軸、Y軸(図では上下左右)の概略位置である重心を決定し、概略位置情報より画像空間座標上のバーコードのX軸、Y軸(図では上下左右)位置を最終決定する。
【0060】
位置決定部145のシンボル位置判定処理においては、シンボルラベリングマップ(バーコードマップ)の重心(yxog,xcog)を求めることから開始される。重心は定義に基づいて計算される。
【0061】
複数の一次元バーコードがあり、領域分割部144で一次元バーコードごとに分割されている場合には、分割領域の一次元バーコードごとに上記したような、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYを取得して一次元バーコードごとの重心が求められる。
【0062】
次に、位置決定部145は、一次元バーコードの左端・右端・上端・下端位置を求める。位置決定部145は、左右位置はシンボルラベリングマップ(バーコードマップ)上を、重心座標xcogを起点としてX軸方向に要素和(加算範囲はycog±2)がゼロとなる座標xstartおよびxstopを検出し、そこで打ち切る。上下位置はycogを起点としてY軸方向に要素和(加算範囲[xstart,xstop])がゼロとなる座標yupperおよびylowerを検出したら打ち切る。
【0063】
このようにして、座標上における一次元バーコードの4辺位置が特定される。
位置決定部145は、この4辺の座標から画像空間上の座標を求める。
【0064】
位置決定部145は、記録媒体20上のシンボル数が1つで、領域分割部144で領域分割が行われない場合、シンボルラベリングマップ全域において一次元バーコードが記録媒体20に記録された位置を検出する。
【0065】
このような構成を有するシンボル情報読取装置10において、一次元バーコード21,22が印刷(記録)された記録媒体20は、搬送機構112の搬送ガイドに沿って搬送され、一次元撮像素子111を通過することによってその記録媒体20のイメージ(像)が光電変換され、その多値画像(濃淡画像)データが画像メモリ12に取り込まれ記憶される。
【0066】
データ処理装置13においては、一次元バーコード21,22を含む多値画像(濃淡画像)データが画像メモリ12から取り込まれ、取り込んだ画像データに基づいて様々な処理が施される。本実施形態では、データ処理装置13における位置検出処理部14によって、一次元バーコード21,22が記録媒体20に記録された位置が検出される。
【0067】
本実施形態のシンボル情報読取装置10において、一次元バーコードのデコード処理は概略
図4のフローチャートに従って実行される。
以下、本発明の実施形態に係るシンボル情報読取処理を図面に関連付けて詳細に説明する。
【0068】
[シンボル情報読取処理の概要]
図4は、本発明の実施形態に係るシンボル情報読取処理の流れを示すフローチャートである。
ここで、本発明の実施形態に係るシンボル情報読取処理の流れを
図4に関連付けて概説する。
【0069】
まず、処理プランの指定が行われる(ステップST1)。
具体的には、処理プランの指定において、記録媒体20に記録されているバーコードの種類、あるいは読み取るべきバーコードの種類に応じて使用するバーコード検出器(検出フィルタ)の種類と適用順番の設定を行う。
デフォルトでは、第一の検出フィルタ(バーコードの一つ)が指定されるが(ステップST2)、たとえば、バーコードの出現頻度に応じて順番を変えてもよい。
【0070】
次に、バーコード検出(ステップST3)が行われる。
具体的には、バーコード検出において、シンボル情報読取装置10の撮像素子111は、搬送機構(搬送ガイド)112に沿って所定位置まで移動した一次元バーコード21,22を含む記録媒体20を、光電変換によって撮像する。そして、撮像された一次元バーコード21,22含む多値画像(濃淡画像)データは、画像メモリ12において記憶される。
【0071】
その後、データ処理装置13における位置検出処理部14では、復号処理部15において、バーコードの復号処理を行う前に、バーコード検出のための一連の処理が行われる。その詳細は後述するとして、一連の処理を要約すると、次のような処理が行われる。
すなわち、位置検出処理部14では、画像メモリ12に記憶された多値画像(濃淡画像)データを読み込み、仮領域判定部141において分散マップ計算処理等を行い、次いで相関マップ作成部142において上下ライン間の相関計算処理等を行う。素子、ラベリング部143において基本パターン検索処理等を行い、領域分割部144においてバーコードごとの領域分割処理等を行い、位置決定部145においてシンボル位置判定処理等を行うことにより、上述した第一の検出フィルタが担当するバーコードの有無が決定され、有りと判定された場合には、その位置が決定される。
【0072】
そして、データ処理装置13の復号処理部15において、バーコードの復号処理が行われる(ステップST4)。
より具体的には、データ処理装置13の復号処理部15は、ステップST3において解析された一次元バーコード21,22の位置等に基づき、一次元バーコード21,22の復号処理(走査線L1,L2に沿ったデータ復号)を行う。
【0073】
ここで、仮に検出すべき一次元バーコードが残っている場合、すなわち未適用の検出フィルタがある場合には(ステップST5:YES)、次の検出フィルタが適用され(ステップST6)、処理はステップST3に移され、新たなシンボル検出およびシンボル復号が行われる(ステップST3およびステップST4)。
一方で、未適用の検出フィルタがない場合には(ステップST5:NO)、一連のシンボルの読取処理は終了する。
【0074】
なお、検出フィルタの切り替え処理は、たとえば、位置検出処理部14のラベリング部143が行ってもよいし、復号処理部15が行ってもよい。また、検出フィルタを切り替える順番は、たとえば出現頻度に基づいて決めてもよい。これにより、シンボル情報読取処理の効率化を図ることができる。
さらに、本実施形態では、1つの媒体に同種類(同一のフォーマット)の複数の一次元バーコード、複数種類の一次元バーコードが用いられている可能性を考慮して、処理プランの指定(ステップST1)や検出フィルタの更新(ステップST6)などを行うこととしたが、これらを省くことも可能である。すなわち、ステップST3およびステップST4のみで処理を行うことも可能である。
【0075】
[シンボル検出の具体的な処理]
図5は、
図4におけるステップST3のバーコード検出に関する情報処理の流れを示すフローチャートである。
【0076】
図5において、最初に、記録媒体20の上下左右のエッジ位置が検出される(ステップST11)。
より具体的には、エッジ検出処理において、仮領域判定部141は、分散マップを計算するための前処理として、画像メモリ12に記憶された記録媒体20の画像データより、上下左右のエッジ位置を検出する。
【0077】
図6は、画像メモリ12に記憶された一次元バーコードが2個の記録媒体20の画像データの一例を示す図である。
図6は2個の一次元バーコード21,22が印刷された記録媒体20の画像データの一例を示している。
図6における周囲の実線SLは、エッジ検出処理によって得られた記録媒体20のエッジ位置を表している。また、
図6における縦、横の破線はエッジラインを基準として、画像空間全体を格子状の小区画に分割するラインを示している。
【0078】
(分散マップの作成)
次に、仮領域判定部141において分散マップの計算が行われる(ステップST12)。
より具体的には、仮領域判定部141は、エッジラインを基準として、画像空間全体を
図6に示すような格子状の小区画に分割し、分割した区画ごとに区画内の一つのラインに沿って輝度値の変動量たとえば分散を計算する。
この区画内の一つのラインとは、
図1に示す一次元バーコード21,22の走査線L1,L2の走査方向と同じ方向に形成されており、たとえば、
図6に示す符号A0(B0)で示す1区画内の1ラインである。
【0079】
全格子区画について同様の演算を行うと、格子状の分散マップの座標上に基づく変動量マップを得ることができる。
図7は、一例として
図6の2個の一次元バーコード21,22が印刷された記録媒体20のマップ数値を画像で表現した図である。
図7において、白い部分は変動が大きい部分を表し、黒い部分は変動が小さい部分を表している。そして、この変動量が大きい部分については、
図6に示す一次元バーコード21,22の位置に対応している。
【0080】
次に、画像化した
図7に示すようなマップを2値化すると、
図8に示すようになる。2値化の閾値は、変動量の分布状態から適したものを設定することができる。
図8は、
図6の2個の一次元バーコード21,22が印刷された記録媒体20を画像化したマップを2値化した図である。
【0081】
以下に、
図8について詳述する。
たとえば、
図8のマップにおいて、左から1列目は、上から[0,1,1,1,1,0,0,0,0,0,0]という順で数値が並んでいるが(点線枠X1で示す部分)、これは、
図6におけるA1〜A11という各単一ラインの分散を所定の閾値で2値化したものに相当する。
図8に示すように、
図6における一次元バーコード21の位置には、「1」の値が20箇所、長方形状(太枠Z11で示す領域部分)に並んでいることが分かる(そのうちの1辺が、
図6に示すA2,A3,A4およびA5である)。
【0082】
また、たとえば、
図8のマップにおいて、右から3列目は、上から[0,0,0,0,0,0,1,1,1,0,0]という順で数値が並んでいるが(点線枠X2で示す部分)、これは、
図6におけるA1〜A11という各単一ラインの分散を所定の閾値で2値化したものに相当する。
図8に示すように、
図6における一次元バーコード22の位置には、「1」の値が9箇所、長方形状(太枠Z21で示す領域部分)に並んでいることが分かる(そのうちの1辺が、
図6に示すA7,A8およびA9である)。
【0083】
また、たとえば、
図8のマップにおいて、右から4列目は、上から[0,1,1,1,1,0,1,1,1,0,0]という順で数値が並んでいるが(点線枠X3で示す部分)、これは、
図6におけるA1〜A11という各単一ラインの分散を所定の閾値で2値化したものに相当する。
これは、符号Z11で示す一次元バーコード21の領域の右端部と符号Z21で示す一次元バーコード22の領域の左端部が、上下方向に重なる領域があることを示している。
【0084】
このように、上下左右のエッジ位置を検出し(
図5のステップST11)、分散マップ(
図8)の計算(
図5のステップST12)を行う分散マップ計算機能を有す仮領域判定部141は、画像データを所定の領域で走査線に沿って輝度値の変動量を計算して、一次元バーコードに該当する可能性のある仮領域を判定する。
なお、ここでいう「仮領域」は、上述した「1」が20箇所並んでいる領域Z11および9箇所並んでいる領域Z21である。
【0085】
ここで、
図8に示すマップにおいて、「1」に該当するイメージ部分は、一次元バーコード領域に合致している見込みが高い一方、必ずしも一次元バーコード領域になるとは限らない。
すなわち、一次元バーコード21,22が位置する領域ではないが「1」となる領域が存在する場合があり、その領域が「仮領域」として判定されることも考えられる。
【0086】
(相関マップの作成)
そこで、次に、
図5のステップST13において次に上下走査線相関処理が行われる。
これは、上下ライン間の相関マップ作成部142によって、一次元バーコード21,22とそうでない部分とを分離するための処理である。
具体的には、格子マップ上の「1」の各要素について、該当する区画のすぐ上とすぐ下に隣接する区画のライン相互の輝度の相関を計算する。
それらの区画が一次元バーコード21,22を含んでいれば、この相関値は大きな値を示すはずである。
具体的には、相関マップ作成部142は、格子座標上にライン相関マップを作成する。
【0087】
図9は、一次元バーコードが2個の場合の上下ライン相関の処理結果である相関マップを示す図である。
具体的には、一次元バーコード21,22の走査線の走査方向に沿って形成されたラインにおいて、注目ラインとY軸方向に形成された上または下のいずれかのラインとの相関値が高ければ、その要素に1ポイントが加算され、注目ラインと上および下の両方のラインとの相関値が高ければ、その要素に2ポイントが加算される。
ここで注意すべき点は、
図8に示す値(0と1の2値)が処理対象ではない点である。
図6に示す実際の画像データが処理対象になる。
【0088】
図8に示す領域Z11内の20箇所のポイントを生成するために使われたラインは、
図6でいえば、一次元バーコード21を包含する20ラインとなる。
たとえば、
図9に示す領域Z12内の左列の各ポイント(上から[1,2,2,1]の部分)を生成するために使われた4ラインに着目すると、
図6でいえば、A1〜A4のラインとなる。A2を注目ラインとした場合、上下ライン相関の処理は、A2とA1の相関値と、A2とA3の相関値とが計算されるところ、一次元バーコード21の性質上、A2とA3の相関値は極めて大きく(限りなく1に)なる。
その結果、ポイントは1が加算される。また、A4を注目ラインとした場合も同様に、ポイントは1が加算される。そして、A3を注目ラインとした場合には、A3とA2の相関値も、A3とA4の相関値も、極めて大きくなることから、ポイントは2が加算される。
このようにして、領域Z12内の左列の各ポイント[1,2,2,1]が決まる。領域Z12内の左から2〜5列の各ポイント[1,2,2,1]も、右列の各ポイント[1,2,1]も、同様に決まる。
【0089】
同様にして、
図8に示す領域Z21内の9箇所のポイントを生成するために使われたラインは、
図6でいえば、一次元バーコード22を包含する9ラインとなる。
たとえば、
図9に示す領域Z22内の左列の各ポイント(上から[1,2,1]の部分)を生成するために使われた3ラインに着目すると、
図6でいえば、A7〜A9のラインとなる。A7を注目ラインとした場合、上下ライン相関の処理は、A7とA6の相関値と、A7とA8の相関値とが計算されるところ、一次元バーコード22の性質上、A7とA8の相関値は極めて大きく(限りなく1に)なる。
その結果、ポイントは1が加算される。また、A9を注目ラインとした場合も同様に、ポイントは1が加算される。そして、A8を注目ラインとした場合には、A8とA7の相関値も、A8とA9の相関値も、極めて大きくなることから、ポイントは2が加算される。
このようにして、点線枠Z内の左列の各ポイント[1,2,1]が決まる。点線枠Z2内の中央列の各ポイント[1,2,1]も、右列の各ポイント[1,2,1]も、同様に決まる。
【0090】
図8に示すように、値「2」をもつ要素は、特に上下の相関が強いことを表している。そして、このような要素は、同一ラインパターンが上下に積層しているバーコードの特徴を反映していると考えられ、バーコード領域である可能性が高いことが分かる。
このように、上下ライン相関の処理(
図5のステップST13)を行う上下ライン間の相関計算処理を行う相関マップ作成部142は、上述した仮領域について、バーコード21,22の走査線(
図1に示す符号L1,L2参照)の走査方向に対して直交する方向(
図6や
図8でいえばY軸方向)に隣接する隣接領域との相関を求めて、相関値の高い領域を示すマップを作成する。
また、本実施形態では、
図9の領域Z12,Z22を用いて説明したように、上下方向に隣接する2つの隣接領域(隣接するライン)との相関を求めた後、これら2つの相関値の双方が所定の閾値よりも高い相関値を示した場合(ポイント2が加算された場合)と、これら2つの相関値のいずれか一方が所定の閾値よりも高い相関値を示した場合(ポイント1が加算された場合)とを区別して、相関マップを作成するようにしている。
これにより、バーコード21,22が存在する位置を的確に認識できる相関マップを作成することができる(
図9参照)。
【0091】
(基本パターンの検索)
次に、ラベリング部143において基本パターンの検索が行われる(
図5のステップS14)。
具体的には、ラベリング部143は、相関マップを用いて、一次元バーコードにおける基本パターンの存在を調べる。たとえば、検出した最小の一次元バーコードサイズが、相関マップ上で走査方向(X軸方向)に2が3つ並んだ[2,2,2]の基本パターン(ポイント列)に対応する場合において、
図9の相関マップをサーチして、この基本パターン[2,2,2]が検出されたら、その基本パターンによって占有されるマップ要素に「1」を立て、それ以外のマップ要素は「0」とする。
この3つの要素の基本パターン[2,2,2]以上の4要素[2,2,2,2]、5要素[2,2,2,2,2]のパターンを一次元バーコードとして検出することができる。
図9に示す相関マップに対して、このような処理を実行すると、
図10の領域Z13,Z23に示すようなシンボルラベリングマップ(バーコードマップ)SLM1を得ることができる。
なお、本実施形態では、2つの一次元バーコード21,22に対応して基本パターン[2,2,2]に加えて[2,2,2,2,2]が必要となっている。
【0092】
図10は、
図9に示す相関マップから得られたシンボルラベリングマップ(バーコードマップ)を示す図である。
このように、基本パターン検索の処理(
図5のステップST14)を行うラベリング部143は、相関マップについて、バーコードの基本パターン[2,2,2]およびパターン[2,2,2,2,2]の有無を検索し、その基本パターンが存在すると判断した領域をラベリングする(本実施形態ではマップ要素に「1」を立てる)。
【0093】
以上、
図6の2個の一次元バーコード21,22が印刷された記録媒体20を画像化したマップを2値化した
図8について詳述した。
なお、1個の一次元バーコードが印刷された記録媒体を画像化したマップを2値化した場合、1個の一次元バーコードが存在するが、基本的な処理は上述した一次元バーコード21に対する処理を除いて
図8に関連付けて説明した処理と同様である。
【0094】
なお、本実施形態では、2つの一次元バーコード22,21に対応して基本パターン[2,2,2]に加えてパターン[2,2,2,2,2]、が必要となる。3要素の基本パターン[2,2,2]や5要素のパターン[2,2,2,2,2]からなるパターンを考えたが、一列4要素、6要素、あるいはそれ以上の要素からなるパターンや、上下各3要素の計6要素からなるパターンなど、読取対象のバーコードの態様としては種々変更可能である。
また、本実施形態では、注目ラインについて、走査線の走査方向に対して直交する方向に隣接する隣接領域(隣接するライン)との相関を求め、これら2つの相関値の双方が所定の閾値よりも高い相関値を示す領域が、一次元バーコードが存在すると判断した領域としてラベリングされるようにしている。
これにより、文字部分を適切に排除し、より確度の高い部分(一次元バーコード21,22が存在する部分のみ)を検索対象とすることができる。
【0095】
また、位置検出処理部14のラベリング部143には、一または複数のバーコードの基本パターンおよびそれ以上の要素を持つパターン(検出フィルタ)が記憶されている。
そして、
図2のフローチャートに関連付けて説明したように、一連のバーコードの読取処理の中で、バーコードの基本パターンおよびそれ以上の要素のおパターンが順次切り替わるので(
図2のステップST5,ステップST6)、結果的に、ラベリング部143は、複数のバーコードの基本パターンおよび所定のパターンを用いて基本パターン等の検索を行うことになる。
【0096】
本実施形態においては、位置決定部145においてシンボル位置判定を行う前に、領域分割部144においてバーコードの個数判定(
図5のステップST15)および領域分割処理(
図5のステップST16)を行う。
【0097】
領域分割部144の個数判定部1441では、ラベリング部143によるシンボルラベリングマップSLM1におけるシンボル数を判定する。個数判定部1441では、シンボルラベリングマップ(バーコードマップ)における一次元バーコードの数をゼロ個から1個か2個以上であるか否かの判定が行われる。
【0098】
図11は、本実施形態に係るシンボルラベリングマップ(バーコードマップ)における一次元バーコードの個数を判定する処理の一例を説明するためのフローチャートである。
【0099】
個数判定部1441は、個数判定をたとえば次のようにして行う。
シンボルラベリングマップ(バーコードマップ)SLM上でゼロでない値1をもつ要素数をカウントしこれをC0とする(ステップST21)。
ここで、ステップST22においてC0がゼロ(0)であるか否かを判定する。ステップST22においてC0がゼロ(0)であると判定した場合には、一次元バーコードは0個であると判定する(ステップST28)。
【0100】
ステップST22において、C0がゼロ(0)ではないと判定すると、ラベリング部143で取得されたシンボルラベリングマップ(バーコードマップ)SLMの重心COG(CenterOfGravity)を求める。
シンボルラベリングマップ(バーコードマップ)SLMの重心COG(ycog,xcog)は、たとえばシンボルラベリングマップSLMの全域においてX軸の射影projXおよびY軸の射影projYを取得(計算)し、そのプロファイルのレベル特性から求めることができる。
【0101】
求めたシンボルラベリングマップの重心COG(ycog,xcog)を起点として、シンボルラベリングマップSLMの左端・右端・上端・下端位置を求める。左右位置は、バーコードマップ上でxcogを起点としてX軸方向に要素和(加算範囲はycog±2)がゼロとなる座標xstartおよびxstopを検出し(ステップST24)、そこで打ち切る。
上下位置は、バーコードマップ上でycogを起点としてY軸方向に要素和(加算範囲[xstart, xstop])がゼロとなる座標yupperおよびylowerを検出し(ステップST25)、そこで打ち切る。
このようにして、格子座標上において、一次元バーコード21の4辺位置が特定される。
【0102】
また、シンボルラベリングマップ(バーコードマップ)内の4辺で囲まれる部分領域内の非ゼロ要素の数をC1とする。
【0103】
図12は、2個の一次元バーコードを検出したときのシンボルラベリングマップ(バーコードマップ)SLM1とそのX軸およびY軸の射影projX,projYのプロファイルPRFX、PRFY、並びにシンボルラベリングマップSLM1の重心、左端・右端・上端・下端位置の各座標を示す図である。
【0104】
図12のシンボルラベリングマップSLM1の重心COG1の格子上の座標(ycog,xcog)は(4.5,3.7)となる。
【0105】
座標ycog=4.5はY軸の射影projYに基づき次式で求めることができる。
ycog={(3×5)+(4×5)+(8×3)}/{5+5+3}
={15+20+24}/{13}=59/13=4.5
【0106】
座標xcog=3.7はX軸の射影projXに基づき次式で求めることができる。
xcog={(1×2)+(2×2)+(3×2)+(4×2)+(5×3)+
(6×1)+(7×1)}/{2+2+2+2+3+1+1}
={2+4+6+8+15+6+7}/{13}=48/13≒3.7
【0107】
なお、バーコードが2個存在する場合、対応するシンボルラベリングマップ(バーコードマップ)は、
図12に示すように、このマップ上で重心COG1を求めると、一次元バーコードに含まれないバーコードから外れた外部の位置に来てしまう場合が多い。
【0108】
なお、一次元バーコードが1個しか存在しない場合、対応するシンボルラベリングマップ(バーコードマップ)は、このマップ上で重心COG2を求めると、一次元バーコード内の適正な位置となる。
【0109】
次に、そして、ステップST26において、シンボルラベリングマップ(バーコードマップ)上で重心COGを起点として求めた一次元バーコードの4辺によって囲まれる領域内の値1をもつ要素数をカウントしこれをC1とする。本例では、シンボルラベリングマップSLM1の場合、C1=2となる。
【0110】
そして、ステップST27において、C0がC1であるか否かを判定する。ステップST27においてC0がC1であると判定した場合には、一次元バーコードは1個であると判定する(ステップST29)。
【0111】
ステップST22において、C0がC1ではないと判定すると、一次元バーコードは2個以上であると判定する(ステップST30)。
【0112】
個数判定部1441の判定結果は分割処理部1442に供給され、領域分割処理(
図5のステップST16)が行われる。
【0113】
分割処理部1442では、一次元バーコードが2個以上と判定された場合に、対応するシンボルラベリングマップ(バーコードマップ)を用いて領域分割を行う。
領域分割は以下の理由により行う。
【0114】
一次元バーコードが同一画像空間上に2個以上(複数個)存在する場合は、正しく位置検出を行うことができない。
たとえば
図6に示すような一次元バーコードが2個存在する場合、対応するシンボルラベリングマップ(バーコードマップ)は
図10に示すようになるが、前述したように、このマップ上で重心COGを求めると、重心COGは一次元バーコードに含まれないバーコードから外れた外部の位置に来てしまう場合が多い。一次元バーコードの位置関係によっては重心が一次元バーコードの内側に来る場合もあるが、その場合でも存在するバーコードすべてをただしく復号することは難しい。
そこで、一次元バーコードごとに領域分割して分割した領域ごとに重心を求めることができるように領域分割を行う。
【0115】
領域分割は、たとえばシンボルラベリングマップSLM1全域のX軸の射影projXおよびY軸の射影projYを取得し、取得した射影のプロファイルPRFX,PRFYにおいて谷部分と認識できる位置を探索し、この谷部分の位置を領域分割の境界位置(境界線)として取得し、取得した境界位置を基準として複数(本例では2個)の一次元バーコードの各領域R1,R2・・を設定する。
【0116】
図13は、一次元バーコードが2個存在する場合に、そのシンボルラベリングマップの領域分割処理を説明するための図である。
図14は、一次元バーコードが2個存在する場合に、そのシンボルラベリングマップの領域分割の一処理を説明するためのフローチャートである。
【0117】
分割処理部1442は、シンボルラベリングマップ(バーコードマップ)SLM1の全域におけるX軸の射影projXおよびY軸の射影projY、あるいは射影projXおよびY軸の射影projYの一方を取得(計算)する。
【0118】
一次元バーコードが2個の場合は、双方のバーコードが結合状態にない限り、射影projXおよびprojYのいずれか一方もしくは両者が2つの山と1つの谷からなるプロファイルPRF(X、Y)をもつ。
図13ではY軸の射影projYにその特性が現れている。射影projYの谷に相当する部分が、2つの一次元バーコードに挟まれた空間に対応する。よって、射影projY上でこの谷の位置を決定することにより、2つの一次元バーコードの上下方向の境界位置(分離位置のy座標)ydivを求めることができる。
境界位置ydivによって上下に分離された2つの領域をR1およびR2とする。以降の処理は、領域R1とR2のそれぞれについて、一次元バーコードが1個の場合と同様の処理を適用することで、各々の一次元バーコードの位置を決定することができる。
【0119】
図14の処理では、まずステップST41において、シンボルラベリングマップ(バーコードマップ)SLM1の全域におけるX軸の射影projXおよびY軸の射影projYを取得(計算)する。なお、X軸の射影projXおよびY軸の射影projYは、前述した個数判定処理で計算して取得した射影情報を用いてもよい。
【0120】
次に、X軸の射影projXを解析し(ステップST42)、曲線を2山に分ける値ゼロの区間が存在するか調べる(ステップST43)。
図13の例では射影projX上にそのような区間は存在しない。これは2つの一次元バーコードが、横方向に見た場合にオーバーラップしていることによる。
【0121】
したがって次に、Y軸への射影projYを解析し(ステップST44)、曲線を2山に分ける値ゼロの区間が存在するか調べる(ステップST45)。
図13の例では射影projY上にそのような区間が存在する。この射影曲線上で値ゼロの谷を形成する区間の中央の値をydivとして、シンボルラベリングマップ(バーコードマップ)を上下に2つの部分領域R1およびR2に分割する(ステップST46)。
【0122】
なお、X軸への射影projXを解析し(ステップST43)、曲線を2山に分ける値ゼロの区間が存在する場合には、この射影曲線上で値ゼロの谷を形成する区間の中央の値をxdivとして、シンボルラベリングマップ(バーコードマップ)を上下に2つの部分領域R1およびR2に分割する(ステップST47)。
【0123】
次に、シンボルラベリングマップ(バーコードマップ)SLM1の部分領域R1について一次元バーコードの個数の判定を行う(ステップST48)。ここでの処理は、前述の
図11に示した処理手順に従って行うことができる。問題がなければ領域R1における一次元バーコードの個数が1個であることが確認できる(ステップST49)。
【0124】
続いて、部分領域R2について同様に一次元バーコードの個数の判定を行う(ステップST50)。問題がなければ領域R2における一次元バーコードの個数が1個であることが確認できる(ステップST51)。
ここまでの処理によって、各分割領域R1,R2に1個ずつ復号可能な一次元バーコードが存在し、一次元バーコードの位置が確定できる(ステップST52)。
【0125】
なお、ステップST45で射影projY上に谷の存在が確認できない場合、ステップST49,ST51で領域R1,R2における一次元バーコードの個数が1個であることが確認できない場合には、何らかの異常が生じているものと判定される(ステップST53)。
【0126】
次に、位置決定部145において、バーコード位置決定(位置判定)が行われる(
図5のステップST17)。
一次元バーコードが2個存在し、シンボルラベリングマップSLM1の領域分割が行われた場合には、分割された複数の一次元バーコードの各シンボルについてラベリングされた領域に基づき、一次元バーコードが記録媒体20に記録された位置を検出する。
【0127】
位置決定部145は、分割された個別の領域について一次元バーコードの上下左右の概略位置である重心を決定し、概略位置情報より上記画像空間座標上のバーコードの上下左右位置を最終決定する。
【0128】
位置決定部145のシンボル位置判定処理においては、シンボルラベリングマップの重心(yxog,xcog)を求めることから開始される。重心は定義に基づいて計算される。
【0129】
2個(複数)の一次元バーコードがあり、領域分割部144で一次元バーコードごとに分割されている場合には、分割領域の一次元バーコードごとに上記したような、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYを取得して一次元バーコードごとの重心が求められる。
【0130】
図15は、2個の一次元バーコードを検出したときのシンボルラベリングマップ(バーコードマップ)SLM1の第1分割領域R1とそのX軸およびY軸の射影projX,projYのプロファイルPRFX、PRFY、並びに分割領域の重心、左端・右端・上端・下端位置の各座標を示す図である。
【0131】
図15のシンボルラベリングマップSLM11の重心COG11の座標(ycog,xcog)は(3.5,3.4)となる。
【0132】
座標ycog=3.5はY軸の射影projYに基づき次式で求めることができる。
ycog={(3×5)+(4×5)}/{5+5}
={15+20}/{10}=35/10=3.5
【0133】
座標xcog=3.4はX軸の射影projXに基づき次式で求めることができる。
xcog={(1×2)+(2×2)+(3×2)+(4×2)+(5×2)+
(5.5×2)}/{2+2+2+2+2+2}
={2+4+6+8+10+11}/{12}=41/12≒3.4
【0134】
このように、分割領域R1には一次元バーコードが1個しか存在しないことから、対応するシンボルラベリングマップ(バーコードマップ)は、このマップ上で重心COG11を求めると、一次元バーコード21内の適正な位置となる。
【0135】
図16は、2個の一次元バーコードを検出したときのシンボルラベリングマップ(バーコードマップ)SLM1の第2分割領域R2とそのX軸およびY軸の射影projX,projYのプロファイルPRFX、PRFY、並びに分割領域の重心、左端・右端・上端・下端位置の各座標を示す図である。
【0136】
図16のシンボルラベリングマップSLM12の重心COG12の格子上の座標(ycog,xcog)は(8,6)となる。
【0137】
座標ycog=8はY軸の射影projYに基づき次式で求めることができる。
ycog={8×3}/{3}
={24}/{3}=8
【0138】
座標xcog=6はX軸の射影projXに基づき次式で求めることができる。
xcog={(4.5×1)+(5×1)+(6×1)+(7×1)+(7.5×1)
={4.5+5+6+7+7.5}/{1+1+1+1+1}
=30/5=6
【0139】
このように、分割領域R2には一次元バーコードが1個しか存在しないことから、対応するシンボルラベリングマップ(バーコードマップ)は、このマップ上で重心COG12を求めると、一次元バーコード22内の適正な位置となる。
【0140】
なお、記録媒体20に1個のバーコードが存在する場合には、領域分割部144の個数判定部1441でバーコード数が1個と判定され、領域分割処理が行われることなく、位置決定部145において、シンボルラベリングマップ(バーコードマップ)の全域の重心が求められる。
【0141】
このように重心を求めた後、次に、シンボルラベリングマップ(バーコードマップ)の左端・右端・上端・下端位置を求める。左右位置は、シンボルラベリングマップ(バーコードマップ)上でxcogを起点としてX軸方向に要素和(加算範囲はycog±2)がゼロとなる座標xstartおよびxstopを検出し、そこで打ち切る。
上下位置は、シンボルラベリングマップ(バーコードマップ)上でycogを起点としてY軸方向に要素和(加算範囲[xstart, xstop])がゼロとなる座標yupperおよびylowerを検出したら打ち切る。
このようにして、座標上において、一次元バーコード21,22の4辺位置が特定される。そして、4辺の座標から画像空間上の座標を求める。
【0142】
分割された区画ごとに画像空間との1対1の対応関係をもっているので、一次元バーコードの左端は、区画(ycog, xstart)における区画開始点である。一次元バーコードの右端は、区画(ycog, xstop)における区画終了点である。したがって、一次元バーコードの左右範囲は、左端〜右端となる。
なお、この左右範囲については、マージンをみて、左右それぞれ一定画素数拡張することも可能である。一次元バーコードの上下端の画像空間上の位置は、区画(yupper, xcog)のy座標と、区画(ylower, xcog)のy座標とで挟まれた領域の平均輝度のプロファイルから求められる。
具体例を
図17に示す。
【0143】
図17は、一次元バーコード22付近における平均輝度のプロファイルを示す図である。
図17に示すように、上下エッジのサーチ開始点は、重心区画のy座標であり、その輝度に基づいてエッジ判定閾値(
図17参照)を決める。
そして、上下にサーチして、エッジ判定閾値を超えたところをエッジと判定し、それらをBimgtopおよびBimgbottomとする。
【0144】
このように、位置決定部145は、ラベリングされた領域に基づき、一次元バーコード21,22が記録媒体20に記録された位置を検出する。なお、本実施形態では、画像メモリを構成するm行n列に配置した画素の位置を検出している。また、たとえば、この位置決定部145のシンボル位置判定機能として、ラベリングされた領域に基づいて一次元バーコード21が記録媒体20に記録された上下左右の概略位置を決定し、その概略位置で形成される矩形領域内のラベルリング総数をカウントし、これを予めカウントされた前記相関マップ全体でのラベリング総数と一致するか否かを判定した後、一次元バーコード21,22が記録媒体20に記録された位置を検出するようにしてもよい。これにより、上下左右の概略位置の精度を高めることが可能である。
【0145】
基本的にシンボル情報読取装置においては、エッジをBimgtopおよびBimgbottomとすることで、バーコードの画像空間上の位置(画素位置)が確定できたので、バーコード位置検出の全処理を終わることも可能である。
【0146】
そして、
図5のステップST18において、データ復号のための走査線が決定される。
【0147】
[実施形態の主な効果]
以上説明したように、本実施形態に係るバーコード読取装置10によれば、位置検出処理部14において、相関マップ作成部142は、仮領域について、走査線の走査方向に対して直交する方向に隣接する隣接領域との相関を求めて、相関値の高い領域を示すマップを作成する。ラベリング部143は、相関マップについて、一次元バーコード21,22の有無を検索し、一次元バーコード21,22が存在すると判断した領域をラベリングする。次いで、領域分割部144が、ラベリングされた領域に基づき、複数の一次元バーコード21,22のそれぞれについて領域を設定し分割する。そして、位置決定部145が、領域分割部144で分割された複数のシンボルの各シンボルについてラベリングされた領域に基づき、一次元バーコード21,22が記録媒体20に記録された位置を検出する。
【0148】
したがって、本実施形態によれば、以下の効果を得ることができる。
本実施形態においては、領域分割部144でラベリングされた領域に基づき、一次元バーコード21,22のそれぞれについて領域を設定し分割することから、バーコード等の同一種類のシンボルが同じ記録媒体20上に2個以上(複数)存在する場合であっても、分割された領域ごとに一次元バーコード21,22が記録媒体20に記録された位置検出処理を行うことができるようになる。その結果、各一次元バーコード21,22の重心位置を安定して算出することができるようになり、複数の一次元バーコード21,22を相互に区別することが可能であり、一次元バーコード21,22個別にデコードすることが可能となる。
。
【0149】
本実施形態においては、領域分割部144は、ラベリング部143によるシンボルラベリングマップにおける一次元バーコード21,22の数を判定する個数判定部1441と、個数判定部1441により一次元バーコード21,22の数が2個以上であると判定されたシンボルラベリングマップSLMにおける複数の一次元バーコード21,22のそれぞれについて領域を設定し分割する分割処理部1442と、を含む。
本実施形態によれば、分割処理を行う前に、シンボルラベリングマップSLM上の一次元バーコード21,22の個数を判定することから、たとえばシンボルラベリングマップ上に、一次元バーコードは存在しない、あるいは、一次元バーコードは1個である場合には、分割処理自体を行わなくて良くなり(処理を省略でき)、その結果、一次元バーコード21,22が2個以上存在する場合にのみ行うことが可能となり、ひいては位置検出処理の効率化を図ることが可能となる。
【0150】
本実施形態においては、分割処理部1442は、射影取得部14421においてシンボルラベリングマップSLM全域において、X軸およびY軸のうちの少なくとも一方の軸の射影を取得する。次に、境界位置取得部14422において、射影取得部14421で取得した射影のプロファイルにおいて谷部分と認識できる位置を探索し、この谷部分の位置を領域分割の境界位置として取得する。そして、領域設定部14423において、境界位置取得部14422で取得した境界位置を基準として複数の一次元バーコード21,22の各領域を設定する。位置決定部145は、領域設定部14423で設定した各領域において一次元バーコード21,22が記録媒体20に記録された位置を検出する。
このように、本実施形態によれば、分割処理を行う場合、シンボルラベリングマップ全域において、X軸およびY軸のうちの少なくとも一方の軸の座標軸への射影を取得し、取得した射影のプロファイルにおいて谷部分と認識できる位置を探索し、谷部分の位置を領域分割の境界位置として取得し、取得した境界位置を基準として複数の一次元バーコード21,22の各領域を設定することから、分割すべき領域を高い確度で特定し設定できるようになる。
また、射影を用いて複数の一次元バーコード21,22の領域の境界を取得することから、計算量を大幅に削減することが可能となる。
また、演算量が削減されれば、処理時間の短縮化に貢献することができる。さらに、安価な撮像素子を用いても十分な速度を出すことができれば、高価な撮像素子を控えることで、製造コスト削減に寄与することができる。
【0151】
また、本実施形態においては、分割処理部1442は、射影取得部14421で、シンボルラベリングマップSLM全域において、X軸およびY軸の射影を取得し、境界位置取得部14422でX軸およびY軸のうちの一方の軸の射影において谷部分と認識できる位置を取得できない場合に、他方の軸の射影において谷部分と認識できる位置の探索を行う。
これにより、本実施形態によれば、シンボルラベリングマップSLM全域において、X軸およびY軸の射影の両方を取得しておき、X軸およびY軸のうちの一方の軸の射影において谷部分と認識できる位置の探索の結果、谷部分の位置を取得できた場合は、他方の軸の射影の探索を省略することが可能となり、分割処理の効率化を図ることが可能となる。
【0152】
また、本実施形態においては、分割処理部1442は、射影取得部14421で、シンボルラベリングマップSLM全域において、X軸およびY軸のうちの一方の軸の射影を取得した結果、境界位置取得部14422で谷部分と認識できる位置を取得できない場合に、射影取得部14421で、シンボルラベリングマップSLM全域において、X軸およびY軸のうちの他方の軸の射影を取得し、境界位置取得部14422で谷部分と認識できる位置の探索を行う。
これにより、本実施形態によれば、シンボルラベリングマップ全域において、X軸およびY軸の射影の一方を取得しておき、その軸の射影において谷部分と認識できる位置の探索の結果、谷部分の位置を取得できた場合は、他方の軸の射影の取得並びに探索を省略することが可能となり、分割処理のさらなる効率化を図ることが可能となる。
【0153】
また、本実施形態において、領域設定部14423は、設定した各領域における一次元バーコードの個数を確認するように構成される。
これにより、本実施形態によれば、分割領域に存在する一次元バーコードの個数を確認することが可能となり、分割処理の結果を再確認しながら、領域分割を行うことが可能となり、たとえば個数が先に判定した個数と異なっている場合には、何らかの異常が生じている等の判断を行うことが可能となる。
【0154】
また、本実施形態においては、位置決定部145は、分割された個別の領域について一次元バーコード21,22の上下左右(X軸方向、Y軸方向)の概略位置である重心を決定し、概略位置情報より画像空間座標上の一次元バーコード21,22の上下左右位置を最終決定する。
これにより、本実施形態によれば、位置決定部145は、一次元バーコード21,22等の同一種類のシンボルが同じ記録媒体20上に2個以上(複数)存在する場合であっても、分割された領域ごとに各一次元バーコード21,22の重心位置を安定して算出することができるようになり、一次元バーコード21,22が記録媒体20に記録された位置検出処理を高い精度で行うことができるようになる。
【0155】
また、本実施形態においては、位置決定部145は、記録媒体20上の一次元バーコードの数が1つで、前記領域分割部で領域分割が行われない場合、シンボルラベリングマップSLM全域において一次元バーコードが記録媒体20に記録された位置を検出する。
これにより、本実施形態によれば、一次元バーコードは1個あるいはゼロである場合には、分割処理の有無やその内容を判断する必要がなくなり(処理を省略でき)、位置検出処理の効率化を図ることが可能となる。
【0156】
[他の実施形態]
本実施形態では、一次元バーコードが2個存在する場合に、そのシンボルラベリングマップの領域分割の処理を
図14に関連付けて説明したが、この一次元バーコードが2個存在する場合のシンボルラベリングマップの領域分割の処理はたとえば
図18に示すような処理も可能である。
【0157】
図18は、一次元バーコード21,22が2個存在する場合に、そのシンボルラベリングマップの領域分割の他処理を説明するためのフローチャートである。
【0158】
図18の分割処理が上述した
図14の分割処理と異なる点は以下の通りである。
図14の分割処理では、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYの両方を取得しておき、X軸およびY軸のうちの一方の軸の射影において探索の結果、谷部分と認識できる位置を取得できない場合に、他方の軸の射影において谷部分と認識できる位置の探索を行う。
これに対して、
図18の分割処理では、シンボルラベリングマップ全域において、X軸の射影projXおよびY軸の射影projYのうちの一方のX軸の射影を取得した結果(ステップST41X)、谷部分と認識できる位置を取得できない場合に(ステップST42,ST43)、シンボルラベリングマップ全域において、Y軸の射影を取得し(ステップST41Y)、谷部分と認識できる位置の探索を行う(ステップST44,ST45)。
図18のその他の処理は
図14の処理と同様である。
【0159】
なお、
図14および
図18は一次元バーコード21,22が2個の場合の処理フローとなっているが、一次元バーコードが3個の場合においても、第1ステップとしてバーコードマップにおいて、一次元バーコードを1個と2個に分割する境界線を求め、第2ステップとして一次元バーコードが2個の領域について、これを2つに分割する境界線を求めるようにすればよい。
【0160】
なお、本実施形態に係るシンボル情報読取処理では、小区画内で複数ラインを指定して、まず微分演算した上で対応点ごとの積和演算を行うのではなく、単一ラインかつ分散の演算が行われるように構成したが、たとえば、輝度値の変動量は分散に代えて標準偏差を計算することで得ることも可能であり、分散に代えて単一ラインかつ標準偏差の演算が行われるように構成しても良い。
この場合も、本実施形態に係るシンボル情報読取処理は、従来技術と比べて演算量の少ない処理となる。
【0161】
[応用例]
上述した実施形態では、一次元バーコードが2個の場合の処理フローについて説明したが、一次元バーコードが3個の場合においても、第1ステップとしてバーコードマップにおいて、一次元バーコードを1個と2個に分割する境界線を求め、第2ステップとして一次元バーコードが2個の領域について、これを2つに分割する境界線を求めるようにすればよい。
【0162】
本発明において、バーコードとしては、一次元バーコードだけでなく、代表的な二次元バーコードであるPDF417やCODE128シンボル、Code49その他のスタック型バーコード等の位置検出にも利用可能である。さらに、バーコード以外のシンボル情報であってもよい。
【0163】
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。