(57)【特許請求の範囲】
【請求項１】
２進コードで表されるデータをセル化して、２次元のマトリックス上にパターンとして配置した２次元コードを読み取るための２次元コード読取装置であって、
前記２次元コードの２次元画像を検出する２次元画像検出手段と、
前記２次元画像検出手段にて検出された２次元画像内において特定セルが存在する基準位置を、該特定セルのパターンの性質に基づいて決定する基準位置決定手段と、
前記特定セルのパターンからセルのサイズを決定するセルサイズ決定手段と、
前記基準位置決定手段にて決定された基準位置から、前記セルサイズ決定手段にて決定されたセルのサイズに基づく計算により、順次、セル位置を決定するセル位置決定手段と、
前記セル位置決定手段にて決定されたセル位置からセルの種類を読み取るセル読み取り手段と、
前記セル読み取り手段にて読み取られたセルの種類が、孤立セルであるか否かを検出する孤立セル検出手段と、
前記孤立セル検出手段にて孤立セルであると検出された場合、該孤立セルの画像に基づく実位置を決定する実位置決定手段と、
前記孤立セルにおける前記セル位置決定手段にて決定された計算上のセル位置と前記実位置決定手段にて決定された実位置とから、セル位置の補正値を求めるセル位置補正値算出手段と、
前記セル位置補正値算出手段にて得られたセル位置の補正値を用いて、前記セル位置決定手段にて決定されるセル位置を補正するセル位置補正手段と、
を備えたことを特徴とする２次元コード読取装置。
【請求項２】
前記孤立セルは、ｘ方向またはｙ方向にて異なる種類のセルに挟まれているセルであることを特徴とする請求項１記載の２次元コード読取装置。
【請求項３】
前記孤立セルは、ｘ方向およびｙ方向にて異なる種類のセルに挟まれているセルであることを特徴とする請求項１記載の２次元コード読取装置。
【請求項４】
前記特定セルは、前記２次元コードの少なくとも２箇所の所定位置に、各々中心をあらゆる角度で横切る走査線において同じ周波数成分比が得られるパターンからなる位置決め用シンボルを含むものであることを特徴とする請求項１〜３のいずれか記載の２次元コード読取装置。
【請求項５】
前記特定セルは、更に、前記位置決め用シンボル間に存在し、種類が異なるセルが交互に配列されたタイミングセルを含むことを特徴とする請求項４記載の２次元コード読取装置。
【請求項６】
前記位置決め用シンボルは、前記２次元コードのマトリックスの四隅内の３箇所に存在し、
前記セル位置決定手段は、
前記位置決め用シンボルの内で、両側が他の位置決め用シンボルにて挟まれている位置決め用シンボルの周辺のセルからセル位置を決定してゆくことを特徴とする請求項４または５記載の２次元コード読取装置。
【請求項７】
請求項１〜６のいずれか記載の２次元コード読取装置の各手段をコンピュータシステムにて実現するプログラムが記憶されたことを特徴とする機械読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２進コードで表されるデータをセル化して、２次元のマトリックス上にパターンとして配置した２次元コードを読み取るための２次元コード読取装置に関する。
【０００２】
【従来の技術】
２次元コードは、バーコードに比べ、大量の情報を記録でき、情報が２次元的な広がりを持っているため、画像データの読み取りに、より大きな時間を必要とする。このような２次元コードの読取装置の例としては、特開平８−１８０１２５号公報に記載されている装置が存在する。
【０００３】
２次元コードは、図１２に例示するごとく２次元コードを構成するセルの種類（白／黒）で情報を表している。２次元コード読取装置が、２次元コードを正しく解読するためには、各セルの白黒の判別が正確に行われなくてはならない。このためには、各セルの中心位置の決定が重要となる。
【０００４】
図１２に示すような２次元コードの読み取り処理においては、最初にパターンの特徴から３つの位置決め用シンボルＡ，Ｂ，Ｄを検出し、次いで、この位置決め用シンボルＡ，Ｂ，Ｄの間に存在する白黒を交互に配列したタイミングセルＥ，Ｆを検出することで、画像処理によって、位置決め用シンボルＡ，Ｂ，ＤおよびタイミングセルＥ，Ｆの各セルの中心位置を検出している。これらのセルの中心位置が決定されると、これらのセルの中心位置の座標を利用して、他のセルの中心位置が計算にて求めらる。
【０００５】
すなわち、位置決め用シンボルについては、走査した場合に特定の周波数成分比が得られることから、まず位置決め用シンボルＡ，Ｂ，Ｄの中心座標が決定し、更に、位置決め用シンボルＡ，Ｂ，Ｄの全体形状は予め定められているため、位置決め用シンボルＡ，Ｂ，Ｄを構成する各セルの中心位置も計算で求められる。そして、位置決め用シンボルＡ，Ｂ，Ｄ間の特定の位置に配置されているタイミングセルＥ，Ｆの位置も計算で得られ、タイミングセルＥ，Ｆを構成する各セルも、タイミングセルＥ，Ｆが１セル毎に白と黒とを交互に配列したものであることから、画像処理によりセルの境界を見つけてタイミングセルＥ，Ｆの各セルの中心位置も決定できる。
【０００６】
そして、位置決め用シンボルＡ，Ｂ，ＤやタイミングセルＥ，Ｆ以外のセル、いわゆるデータセルの位置は、前述のごとく決定された位置決め用シンボルＡ，Ｂ，ＤおよびタイミングセルＥ，Ｆを構成する各セルを基準セルとして、その基準セルの座標値から、セルの幅や高さに基づき計算して得ることができる。
【０００７】
このように、全てのデータセルの位置が決定できるので、その位置からデータセルの種類を読み取ることにより、２次元データが表すコードが検出できる。
【０００８】
【発明が解決しようとする課題】
しかし、２次元コードは、図１２のごとく歪みなく検出されるとは限らず、例えば、図１３に示すごとく、２次元コードが斜めに読み取られ、画像に歪みが生じる場合がある。
【０００９】
このような場合には、位置決め用シンボルＡ，Ｂ，ＤやタイミングセルＥ，Ｆに近いところのデータセルについては、計算して求めた読み取り位置と実際のセル位置との間の位置ずれは小さいので、セルの種類の読み取りは正確に行われるが、位置決め用シンボルＡ，Ｂ，ＤやタイミングセルＥ，Ｆから離れるにしたがって、読み取り位置と実際のセル位置との位置ずれが大きくなり、セルの種類を正確に判定できなくなった。
【００１０】
本発明は、検出した２次元画像に歪みが存在していても、セルの種類を読み取るための位置を適切に設定することができる２次元コード読取装置の提供を目的とするものである。
【００１１】
【課題を解決するための手段及び発明の効果】
ここには、前記課題を解決するための発明が記載され、以下に述べるような構成および効果を有する。
本発明の２次元コード読取装置は、２進コードで表されるデータをセル化して、２次元のマトリックス上にパターンとして配置した２次元コードを読み取るに際して、２次元画像検出手段にて検出された２次元画像内において特定セルが存在する基準位置を、該特定セルのパターンの性質に基づいて基準位置決定手段が決定する。そして、これらの特定セルのパターンからセルサイズ決定手段がセルのサイズを決定する。次に、セル位置決定手段が、基準位置決定手段にて決定された基準位置から、セルサイズ決定手段にて決定されたセルのサイズに基づく計算により、順次、セル位置を決定する。
【００１２】
次に、セル位置決定手段にて決定されたセル位置からセル読み取り手段が、セルの種類を読み取る。こうして、読み取られて種類が決定しているセルが、孤立セル検出手段により孤立セルであるか否かが検出される。
孤立セル検出手段にて孤立セルであると検出された場合、実位置決定手段が孤立セルの画像に基づく実位置を決定する。すなわち、孤立セルについては、計算上のセル位置とは別個に、実際のセル位置を画像から直接求める。
【００１３】
そして、計算上のセル位置と実位置とから、セル位置補正値算出手段がセル位置の補正値を求める。そしてこの補正値が、セル位置補正手段にて、セル位置決定手段の処理に反映されて、セル位置決定手段にて求められているセル位置が補正される。
【００１４】
この孤立セルが出現したことで行われる補正値の計算により、以後のセル位置については、計算上のセル位置をそのまま用いて読み取るのではなく、計算上のセル位置が補正されて正確な読み取り位置が求められ、その読み取り位置からセルの種類が読み取られる。したがって、特定セルから離れるにしたがって位置ずれが大きくなっても、セル位置が孤立セルが現れる毎に補正されるので、常に正確なセル位置からそのセルの種類が読み取られる。このため、検出した２次元画像に歪みが存在していても、セルの種類を読み取るための位置を適切に設定でき、正確に２次元コードの内容を読み取ることができる。
【００１５】
前記孤立セルとしては、ｘ方向またはｙ方向にて異なる種類のセルに挟まれているものが挙げられる。
例えば、孤立セルが、ｘ方向に異なる種類のセルに挟まれているものである場合には、明確な境界が画像に現れているので、画像処理上、その孤立セルのｘ方向での隣接セルとの境界を探すのは容易である。画像処理にて得られた境界は、画像上での実際の孤立セルの境界のｘ座標を示しているので、孤立セルの中心位置の実際のｘ座標も容易に求められる。したがって、孤立セルの計算上のｘ座標と実際のｘ座標との比較により、この孤立セルの位置では実際のｘ座標と計算上のｘ座標がどの程度ずれているかが判明する。このため、以後のセルの計算上のｘ座標を、そのずれの程度から求められた補正値にて補正して用いれば、容易にｘ座標のずれを補正できる。
【００１６】
同様にして、ｙ方向にて異なる種類のセルに挟まれた孤立セルが存在すれば、正確なｙ座標が得られるので、容易にｙ座標のずれを補正できる。
したがって、この補正値を以後に処理される孤立セル以外のセルの位置補正に用いれば、２次元コード全体においても、セルの位置ずれが補正されて、セルの正確な位置を特定でき、正確にコードを読み取ることができる。
【００１７】
なお、孤立セルは、ｘ方向およびｙ方向にて異なる種類のセルに挟まれているものであっても良い。このように、１つの孤立セルがｘ方向およびｙ方向にて異なる種類のセルに挟まれている場合には、１つの孤立セルにて、計算上のｘ座標のずれおよび計算上のｙ座標のずれを補正する補正値を同時に得ることができるので、以後のセルの位置決定において、一層正確に行うことができるようになる。
【００１８】
前記特定セルは、２次元コードの少なくとも２箇所の所定位置に、各々中心をあらゆる角度で横切る走査線において同じ周波数成分比が得られるパターンからなる位置決め用シンボルを含むものであることとしても良い。
このような位置決め用シンボルを形成すると、周波数成分比を検出する回路にてハード的に容易かつ迅速に位置決め用シンボルを検出できる。周波数成分比とは、例えば、実施の形態で後述する明暗成分比が挙げられる。
【００１９】
また、特定セルとして、更に、位置決め用シンボル間に存在し、種類が異なるセルが交互に配列されたタイミングセルを含むこととしても良い。このようにすると、２次元コード内の全てのセルについて計算上の位置決めが、位置決め用シンボルおよびタイミングセルの各セルの座標から容易に求められるようになり、一層、正確な位置決めと読み取り作業が可能となる。
【００２０】
更に、具体的には、位置決め用シンボルは、２次元コードのマトリックスの四隅内の３箇所に存在し、セル位置決定手段は、位置決め用シンボルの内で、両側が他の位置決め用シンボルにて挟まれている位置決め用シンボルの周辺のセルからセル位置を決定してゆくこととしても良い。
【００２１】
このようにすることにより、位置の正確さを最初から維持したまま、２次元セル全体のセルの正確な位置決めと読み取りが可能となる。
なお、このような２次元コード読取装置の各手段をコンピュータシステムにて実現するを実行する機能は、例えば、コンピュータシステム側で起動するプログラムとして備えられる。このようなプログラムの場合、例えば、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記憶媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ＲＯＭやバックアップＲＡＭを記憶媒体として前記プログラムを記憶しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータシステムに組み込んで用いても良い。
【００２２】
【発明の実施の形態】
図１のブロック図に、上述した発明が適用された２次元コード読取装置２の概略構成を示す。
２次元コード読取装置２は、ＣＣＤ４、２値化回路６、画像メモリ８、クロック信号出力回路１４、アドレス発生回路１６、変化点検出回路１８、比検出回路２０、アドレス記憶メモリ２２および制御回路２８から構成されている。
【００２３】
制御回路２８は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を備えたコンピュータシステムとして構成され、ＲＯＭに記憶されているプログラムに従って、後述する２次元コード読み取り処理等を実行し、２次元コード読取装置２の各構成を制御している。
【００２４】
ここで、２次元コード読取装置２にて検出される２次元コードの一例の概略図を図２に示す。この２次元コード５２は、白色の台紙５３の上に印刷されており、３個の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄ、データ領域５６、タイミングセル５８Ａ，５８Ｂ、原点セルＣｓｔから構成されている。これら全体はセル数が縦横同数（２９セル×２９セル）の正方形状に配置されている。各セルは、光学的に異なった２種類のセルから選ばれており、図および説明上では白（明）・黒（暗）で区別して表す。なお、図２では便宜上、データ領域５６のデータセルのパターンは省略している。
【００２５】
位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄは、２次元コード５２の４つの頂点の内、３つに配置されている。そのセルの明暗配置は、黒部からなる枠状正方形５４ａ内の中心に白部からなる縮小した枠状正方形５４ｂが形成され、その内側の中心に黒部からなる更に縮小した正方形５４ｃが形成されているパターンである。
【００２６】
制御回路２８は、以下に述べるごとくの読み取り制御を行う。
まず制御回路２８が指示することにより、２次元画像検出手段としてのＣＣＤ４が２次元コード５２が通過する場所の２次元画像を検出する。ＣＣＤ４は、２次元画像を検出すると、図４（ａ）に示すごとくの多段階のレベルからなる信号にて２次元画像データを出力する。この２次元画像データを、２値化回路６が制御回路２８から指示された閾値にて２値化して、図４（ｂ）に示すごとくの１（ハイ）／０（ロー）の２つのレベルからなる信号に変換する。
【００２７】
一方、ＣＣＤ４から出力される同期パルスに応じて、クロック信号出力回路１４がＣＣＤ４から出力される２次元画像データのパルスより十分に細かいクロックパルスを出力する。アドレス発生回路１６はこのクロックパルスをカウントして、画像メモリ８に対するアドレスを発生させる。２値化された２次元画像データは、このアドレス毎に８ビット単位で書き込まれる。
【００２８】
一方、２値化回路６からの信号における「１」から「０」への変化あるいは「０」から「１」への変化時に、変化点検出回路１８は、比検出回路２０にパルス信号を出力する。比検出回路２０は、変化点検出回路１８からのパルス信号入力から次のパルス信号入力までに、クロック信号出力回路１４から出力されたクロックパルスをカウントすることにより、２次元画像の中の明（１）の連続する長さおよび暗（０）の連続する長さを求める。この長さの比から、２次元コード５２の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄに該当するパターンを検出する。
【００２９】
図３（Ａ）に示すように、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄのほぼ中心を代表的な角度で横切るＣＣＤ４の走査線（ａ），（ｂ），（ｃ）での明暗パターンは、図３（Ｂ）に示すごとく、すべて同じ明暗成分比を持つ構造になっている。すなわち、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの中心を横切るそれぞれの走査線（ａ），（ｂ），（ｃ）の明暗成分比は暗：明：暗：明：暗＝１：１：３：１：１となっている。勿論、走査線（ａ），（ｂ），（ｃ）の中間の角度の走査線においても比率は１：１：３：１：１である。また、図３（Ａ）の図形が、ＣＣＤ４側から見て斜めの面に配置されていたとしても、前記走査線（ａ），（ｂ），（ｃ）の明暗成分比は暗：明：暗：明：暗＝１：１：３：１：１を維持する。なお、図３（Ｂ）は、２値化回路６からの２値化された信号に該当する。
【００３０】
このことにより、比検出回路２０は、この「１：１：３：１：１」なる明暗成分比を検出し、検出した場合は、そのタイミングにアドレス発生回路１６にて発生されている画像メモリ８のアドレスをアドレス記憶メモリ２２に記憶する。
したがって、ＣＣＤ４が１フレーム分の２次元画像データを検出すると、画像メモリ８に２値化された２次元画像データが記憶され、アドレス記憶メモリ２２には、検出された分の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄのアドレスが記憶されている。
【００３１】
なお、最初の２次元画像の１フレーム分の画像が得られると、制御回路２８は、画像メモリ８およびアドレス記憶メモリ２２のデータに基づいて後述する２次元コード読み取り処理を行い、この処理が終了すれば、制御回路２８は、続けて、ＣＣＤ４に次の１フレームの２次元画像の検出を指示する。したがって、ＣＣＤ４からは、再度、２次元画像が２値化回路６に出力され、上述したごとくの処理が繰り返される。
【００３２】
次に、１フレーム分の２次元コード５２の画像とその位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄのアドレスが、画像メモリ８とアドレス記憶メモリ２２とにそれぞれ記憶された後に、制御回路２８は、２次元コード読み取り処理を実行する。この２次元コード読み取り処理を図５のフローチャートに示す。なお、画像は図８のごとく歪んで検出されているものとする。なお、図８においては、見易くするために、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄおよびタイミングセル５８Ａ，５８Ｂ以外のセルについては、黒か白かの種類については表していない。
【００３３】
処理が開始されると、まず、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの検出処理が行われる（Ｓ１００）。
この処理では、画像メモリ８およびアドレス記憶メモリ２２に対してアクセスし、その記憶内容から位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄが適切な位置に、３つ存在しているか否かの判断と位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの画像上での正確な中心位置を決定する。
【００３４】
この処理は、まずアドレス記憶メモリ２２に多数検出された位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄのアドレスが、位置的に３つのグループに分けられるかを、そのアドレス値と画像メモリ８の画像とを参照しつつ判断する。更に、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの中心位置を、画像メモリ８の画像の１（白）／０（黒）のパターンから決定し、その３つが図２に示したごとく３つの頂点に存在する配置状態になっているかを判断する。
【００３５】
次に、ステップＳ１００にて適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄが検出されたか否かが判定され（Ｓ１１０）、検出されていなければ（Ｓ１１０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（Ｓ１８０）、処理を終了する。
【００３６】
適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄが検出されると（Ｓ１１０で「ＹＥＳ」）、次に新しい２次元コード５２か否かが判定される（Ｓ１２０）。この処理は、前回以前に検出された２次元コード５２がいまだＣＣＤ４により検出され続けている場合に、別の２次元コードとして解読するのを防止するためである。例えば、前回または所定回数前の本処理にて、適切な３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄが検出され、更にそのコード内容も適切に読み取られていた場合には、同一の２次元コード５２を検出しているものとして（Ｓ１２０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（Ｓ１８０）、処理を終了する。
【００３７】
新しい２次元コード５２であると判定すると（Ｓ１２０で「ＹＥＳ」）、次に各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの形状に応じてセルの形状が計算される（Ｓ１３０）。すなわち、まず、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄは、図９（ａ）に示すごとく、黒の枠状正方形５４ａの幅が１セル分、白の枠状正方形５４ｂの幅が１セル分、および黒の正方形５４ｃの幅が３セル分の形状であることから、画像メモリ８内の位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄ全体の高さＬｙと幅Ｌｘとを測定して、次式のごとく、その高さＬｙと幅Ｌｘとをそれぞれ７で割ることにより、各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの位置におけるセルの高さＷｙと幅Ｗｘの値を各３つ得る。
【００３８】
【数１】
0003627416.tif 000002
【００３９】
次に、このようにして求められた各位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄにおけるセルの高さＷｙと幅Ｗｘに基づいて、図８の２次元コード５２の画像説明図に示すごとく、他のセル位置を決定するために基準セルの中心位置を決定する（Ｓ１３５）。
【００４０】
すなわち、まず、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの外形とセルの高さＷｙと幅Ｗｘとが判明していることから、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの縁からセルの半分の高さおよび半分の幅分内側の位置を求めることにより、３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの黒の枠状正方形５４ａの各４つの各頂点セルａ１，ａ２，ａ３，ａ４，ｂ１，ｂ２，ｂ３，ｂ４，ｄ１，ｄ２，ｄ３，ｄ４の中心位置を決定する。
【００４１】
そして、位置決め用シンボル５４Ａについて、頂点セルａ２と頂点セルａ４との中心位置の距離を６等分することにより、頂点セルａ２から頂点セルａ４までの各セルの中心位置を決定する。更に、頂点セルａ３と頂点セルａ４との中心位置の距離を６等分することにより、頂点セルａ３から頂点セルａ４までの各セルの中心位置を決定する。他の位置決め用シンボル５４Ｂ，５４Ｄについても同様に、頂点セルｂ２と頂点セルｂ４の間の各セルの中心位置、頂点セルｂ３と頂点セルｂ４の間の各セルの中心位置、頂点セルｄ２と頂点セルｄ４の間の各セルの中心位置、および頂点セルｄ３と頂点セルｄ４の間の各セルの中心位置を検出する。
【００４２】
次に、３つの位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄ間に存在する白黒が交互に配置された２つのタイミングセル５８Ａ，５８Ｂを、位置決め用シンボル５４Ａ，５４Ｂ，５４Ｄの頂点セルａ４と頂点セルｂ４との間および頂点セルａ４と頂点セルｄ４との間から、白黒の画像の境界と白または黒の画像の大きさとを測定することにより、タイミングセル５８Ａ，５８Ｂの各セルの中心位置を決定する。
【００４３】
そして、次に、このタイミングセル５８Ａ，５８Ｂと位置決め用シンボル画像５４Ａ，５４Ｂ，５４Ｄとにおいて中心位置が決定されたセルを基準セルとして、この中心位置に基づいて、他のセル、すなわち、データ領域５６内の各セルの中心位置を決定し、かつその中心位置の画素からセルの種類を決定する（Ｓ１４０）。
【００４４】
ステップＳ１４０の詳細を図６のフローチャートに示す。
まず、セル位置補正量Δｘ，Δｙをクリアする（Ｓ２１０）。次に、処理するセルのライン番号ｎを１に設定する（Ｓ２２０）。このセルのラインは図１０に示すごとく、図で左上の位置決め用シンボル画像５４Ａの下側および右側に隣接する略Ｌ字状に並んだライン１から順に、右下へ向かって、ライン番号が設定されている。具体的には、ライン１〜ライン２１まで存在する。
【００４５】
次にラインｎにおけるセル番号ｍを１に設定する（Ｓ２３０）。このセル番号ｍは、各ライン毎に、図の左端から順に上端へ向かって設定されている。
次に、ラインｎのｍ番目のセル位置のｘ座標ｘｐとｙ座標ｙｐとが次式のごとく、計算される（Ｓ２４０）。
【００４６】
【数２】
0003627416.tif 000003
【００４７】
ここで、計算上のｘ座標ｘｔと計算上のｙ座標ｙｔとは次のようにして求められる。
ライン１を例にして説明すると、まず、ライン１のｘ方向のセル配列部分については、縦方向に並んだタイミングセル５８Ｂの最上部のセル５８ｂの中心位置のｙ座標から、ライン１のｘ方向のセル配列部分の傾きを考慮して、計算上のｙ座標ｙｔが求められる。また、位置決め用シンボル画像５４Ａの頂点セルａ３〜頂点セルａ４までの各セルの中心位置のｘ座標から、ライン１のｙ方向のセル配列部分の傾きを考慮して、計算上のｘ座標ｘｔが求められる。
【００４８】
ライン１のｙ方向のセル配列については、横方向に並んだタイミングセル５８Ａの最左部のセル５８ａの中心位置のｘ座標から、ライン１のｙ方向のセル配列部分の傾きを考慮して、計算上のｘ座標ｘｔが求められる。また、位置決め用シンボル画像５４Ａの頂点セルａ２〜頂点セルａ４までの各セルの中心位置のｙ座標から、ライン１のｘ方向のセル配列部分の傾きを考慮して、計算上のｙ座標ｙｔが求められる。
【００４９】
なお、各ラインのｘ方向のセル配列部分の傾きは、位置決め用シンボル画像５４Ａの頂点セルａ３と頂点セルａ４とを結ぶ直線の傾きとして得られ、ｙ方向のセル配列部分の傾きは、位置決め用シンボル画像５４Ａの頂点セルａ２と頂点セルａ４とを結ぶ直線の傾きとして得られる。
【００５０】
画像の傾きを考慮する方法としては、これ以外に、例えば、図９（ｂ）に示すごとく、位置決め用シンボル画像５４Ａの画像が得られているとすると、次式のごとく、各ラインのｘ方向のセル配列部分の傾きを表すパラメータＷｘｘ，Ｗｘｙ（Ｗｘｘ：セル位置がｘプラス方向に進んだ場合のｘ座標値の増加分、Ｗｘｙ：セル位置がｘプラス方向に進んだ場合のｙ座標値の増加分）および各ラインのｙ方向のセル配列部分の傾きを表すパラメータＷｙｘ，Ｗｙｙ（Ｗｙｘ：セル位置がｙプラス方向に進んだ場合のｘ座標値の増加分、Ｗｙｙ：セル位置がｙプラス方向に進んだ場合のｙ座標値の増加分）を計算して用いても良い。
【００５１】
【数３】
0003627416.tif 000004
【００５２】
他のラインについても、位置決め用シンボル画像５４Ｂ，５４Ｄの基準セルの中心位置、タイミングセル５８Ａと頂点セルｂ４との中間位置ｆ１、およびタイミングセル５８Ｂと頂点セルｄ４との中間位置ｆ２を用いて、計算上の計算上のｘ座標ｘｔと計算上のｙ座標ｙｔとを求めることができる。
【００５３】
このように計算上のｘ座標ｘｔと計算上のｙ座標ｙｔとを求め、このｘ座標ｘｔとｙ座標ｙｔとを、セル位置補正量Δｘ，Δｙにて、前記式のごとくそれぞれ補正することにより、実際に読み取りがなされるセル位置（ｘｐ，ｙｐ）が決定する。
【００５４】
次に、ステップＳ２４０にて計算された１つのセルの中心位置の画像を読み取って、そのセルが黒か白かの種類を決定する（Ｓ２５０）。例えば、セルの中心位置の所定数の画素の内で黒が過半数であればセルは黒と決定し、白が過半数であればセルは白と決定する。
【００５５】
次に、セル位置補正値決定処理が行われる（Ｓ２６０）。
この処理はステップＳ２１０にてクリアしたセル位置補正量Δｘ，Δｙに必要な補正値を設定する処理である。この処理の詳細を、図７のフローチャートに示す。
【００５６】
まず、今回のステップＳ２５０にて種類が決定したセルに隣接するセルの内で、ｘ方向の孤立セルが発生したか否かの判定（Ｓ４１０）と、この判定にてｘ方向の孤立セルが発生していないと判定されると（Ｓ４１０で「ＮＯ」）、ｙ方向の孤立セルが発生したか否かの判定（Ｓ４２０）が行われる。
【００５７】
ここで孤立セルとは、図１１に示すごとく、上下あるいは左右の両セルとは種類が異なるセルを意味している。図１１（ａ）では、セルｐ１１自身は白であるが左右の両セルが黒であることから、ｘ方向（横方向）での孤立セルである。図１１（ｂ）の場合は、セルｐ１２自身は黒であるが上下の両セルが白であることから、ｙ方向（縦方向）での孤立セルである。また、図１１（ｃ）の場合は、セルｐ１３自身は白であるが、上下および左右の４つのセルが黒であることから、ｘ方向（横方向）とｙ方向（縦方向）との両方向での孤立セルである。
【００５８】
孤立セルか否かの判断は、周囲のセルの種類、少なくとも上下または左右のセルの種類が判明した時点で可能となることから、直前のステップＳ２５０にてセルの種類が決定したセルそのものについての判断ではなく、前回以前にセルの種類が決定されているセルの内で、直前のステップＳ２５０にて新たなセルの種類が決定したことにより、上下または左右のセルの種類が判明したセルについて行われる。実際には、１回前に種類が決定された隣接セルあるいは１ライン前の隣接セルが、判定対象とされる。
【００５９】
このような隣接セルの一つを判定して、それが、ｘ方向の孤立セルでもなく、ｙ方向の孤立セルでもない場合には、ステップＳ４１０，Ｓ４２０にて共に「ＮＯ」と判定されて、ステップＳ４５５の処理に移る。
ｘ方向の孤立セルである場合には（Ｓ４１０で「ＹＥＳ」）、その孤立セルについて、ｘ方向に隣接するセルとの境界位置を画像から検出する（Ｓ４３０）。
この場合、ｘ方向の隣接するセルは、孤立セルとはセルの種類が異なることから、画像の白黒の境界をチェックすることにより、境界位置は容易に決定できる。
【００６０】
次に、このｘ方向に隣接するセルとの２つの境界位置の中間点のｘ座標ｘｒを計算する（Ｓ４４０）。このｘｒの値は、基準セルのセル形状に基づいた計算にて求められたものではなく、画像上の孤立セルの実際のｘ座標を示している。
次に、次式のごとく、実ｘ座標ｘｒと、ステップＳ２４０で求めた計算上のセル位置のｘ座標ｘｔとの差を計算し、その値をΔｘとする（Ｓ４５０）。
【００６１】
【数４】
0003627416.tif 000005
【００６２】
続いて、同セルについて、ｙ方向の孤立セルであるか否か判定される（Ｓ４２０）。これは、図１１（ｃ）に例示したごとく、ｘ方向とｙ方向の両方で孤立セルである場合を処理するためである。ｙ方向の孤立セルではない場合は（Ｓ４２０で「ＮＯ」）、ステップＳ４５５に移る。
【００６３】
ｙ方向の孤立セルでもある場合には（Ｓ４２０で「ＹＥＳ」）、その孤立セルについて、ｙ方向に隣接するセルとの境界位置を画像から検出する（Ｓ４６０）。この場合も、ｙ方向に隣接するセルは、孤立セルとはセルの種類が異なることから、画像の白黒をチェックすることにより、境界位置は容易に決定できる。
【００６４】
次に、このｙ方向に隣接するセルとの２つの境界位置の中間点のｙ座標ｙｒを計算する（Ｓ４７０）。このｙｒの値は、基準セルのセル形状に基づいた計算にて求められたものではなく、画像上の孤立セルの実際のｙ座標を示している。
次に、次式のごとく、実ｙ座標ｙｒと、ステップＳ２４０で求めた計算上のセル位置のｙ座標ｙｔとの差を計算し、その値をΔｙとする（Ｓ４８０）。
【００６５】
【数５】
0003627416.tif 000006
【００６６】
ステップＳ４８０の次には、隣接するセルの内で未だ本処理を行っていないセルがないか否かが判定され（Ｓ４５５）、未処理の隣接セルが存在していれば（Ｓ４５５で「ＮＯ」）、その未処理の隣接セルについて、再度、ステップＳ４１０の判定から処理が行われる。
【００６７】
このようにして、孤立セルが存在すれば、セル位置補正値Δｘ，Δｙが新たに設定され、ステップＳ２４０で示した式により、セル位置の補正に用いられる。
全ての隣接セルの処理が終了すると（Ｓ４５５で「ＹＥＳ」）、セル位置補正値決定処理（Ｓ２６０）が終了し、次にラインｎのセルについて処理が終了したか否かが判定される（Ｓ２７０）。いまだ未処理のセルがラインｎに残っていれば（Ｓ２７０で「ＮＯ」）、セル番号がインクリメントされて（Ｓ２８０）、次のセルが指示され、再度、ステップＳ２４０から処理が行われる。
【００６８】
ラインｎについて全てのセルの処理が終了すれば（Ｓ２７０で「ＹＥＳ」）、次にラインが全て終了したか否かが判定される（Ｓ２９０）。具体的には、ライン２１まで到達していない場合は、未処理のラインが存在するので（Ｓ２９０で「ＮＯ」）、ライン番号がインクリメントされて（Ｓ３００）、次のラインが指示され、再度、ステップＳ２３０から処理が行われる。
【００６９】
こうして、全てのラインについて処理が終了すれば（Ｓ２９０で「ＹＥＳ」）、２次元コード５２についての各セルの位置と種類とが決定され、２次元コード５２が表しているコード内容が得られる。
次にこのコード内容が正常なものか否かが判定される（Ｓ１６０）。例えば、白と黒とのセル数が特定の数になっているか否か、あるいは表されているデータが８ビットデータであるとした場合に合計が特定の数になっているか否か等により、正常にコードが読み取られているか否かが判定される。
【００７０】
正常なコードでなければ（Ｓ１６０で「ＮＯ」）、次の画像の検出をＣＣＤ４に指示して（Ｓ１８０）、処理を終了する。
正常なコードであれば（Ｓ１６０で「ＹＥＳ」）、そのコード内容をホストコンピュータ等の他の装置へ出力したり、そのコード内容を特定のメモリに記憶したり、そのコード内容に対応した処理を実行したり、あるいはそのコード内容に対応した指示を出力したりする処理が行われる（Ｓ１７０）。
【００７１】
そして、次の新たな２次元コードの読み取りのために、画像の検出をＣＣＤ４に指示して（Ｓ１８０）、処理を終了する。
上述したごとく、本２次元コード読取装置２は、セルの種類を読み取るのに、ステップＳ２４０にて説明したごとく、単なる計算上のセル位置（ｘ座標：ｘｔ、ｙ座標：ｙｔ）でなく、補正値Δｘ，Δｙにて補正した位置を用いている。この補正値Δｘ，Δｙは、孤立セルが出現する毎に、孤立セルの実際の位置と計算上のセル位置（ｘ座標：ｘｔ、ｙ座標：ｙｔ）との差を反映させて得られた値である。
【００７２】
この補正値Δｘ，Δｙは、孤立セルの出現から次の孤立セルの出現までの間において、その値が維持されている。その結果、計算上のセル位置と実際のセル位置とのずれを常に補正して、正確なセル位置からセルの種類を読み取ることができる。
【００７３】
しかも、セル位置の決定とセルの種類の読み取り処理とは、両側が他の位置決め用シンボル画像５４Ｂ，５４Ｄに挟まれている位置決め用シンボル画像５４Ａの近接した部分から開始しているので、最初は、ほとんど位置ずれは存在しない。更に、かつその位置決め用シンボル画像５４Ａから離れていく過程においても孤立セルが出現する毎にその位置ずれを補正値Δｘ，Δｙに蓄積し、次の孤立セルが出現するまでセルの読み取り位置を補正しているので、位置決め用シンボル画像５４Ａ，５４Ｂ，５４Ｄやタイミングセル５８Ａ，５８Ｂから離れたセル位置も、常に正確さが維持され、２次元コード５２全体のセルの種類を正確に読み取ることができる。
【００７４】
なお、図１１に示した孤立セルは、実際には、２次元コード５２中に極めて多数存在し、また、孤立セルが多数存在するようにマスキング処理をかけることもできるので、孤立セルの出現間隔は非常に短く、前述したセル位置の決定処理により極めて精度の高いセル位置を決定することができる。
【００７５】
本実施の形態において、ステップＳ１００が基準位置決定手段としての処理に該当し、ステップＳ１３０がセルサイズ決定手段としての処理に該当し、ステップＳ２４０がセル位置決定手段およびセル位置補正手段としての処理に該当し、ステップＳ２５０がセル読み取り手段としての処理に該当し、ステップＳ４１０，Ｓ４２０が孤立セル検出手段としての処理に該当し、ステップＳ４３０，Ｓ４４０，Ｓ４６０，Ｓ４７０が実位置決定手段としての処理に該当し、ステップＳ４５０，Ｓ４８０がセル位置補正値算出手段としての処理に該当する。
【００７６】
［その他］
前述した実施の形態では、各セルの位置と種類との読み取りの順番は、図１０に示したごとく、Ｌ字状に行われたが、ｘ方向に並んだセルの各ラインを、一番上のラインから一番下のラインに至るまで、順次、左から右へと処理しても良い。また、ｙ方向に並んだセルの各ラインを、一番左のラインから一番右のラインに至るまで、順次、上から下へと処理しても良い。
【００７７】
また、前述した実施の形態では、セルの中心位置の補正のみであったが、孤立セルが出現する毎に、その孤立セルの高さあるいは幅と、基準セルの高さまたは幅との差を、別の第２の補正値として、格納しておき、以後の計算上の座標を得る場合にこの補正値を加味すれば、セルの中心位置のずれを小さく抑えることができ、補正値Δｘ，Δｙが徒に大きくなることがないので、画像処理による孤立セルの位置検出も一層正確なものとなる。なお、第２の補正値を計算するのではなく、孤立セルが出現した場合には、基準セルの高さまたは幅の代りに、孤立セルの高さまたは幅をセル位置計算に用いるようにしても良い。
【図面の簡単な説明】
【図１】一実施の形態としての２次元コード読取装置の概略構成を表すブロック図である。
【図２】２次元コードの概略構成説明図である。
【図３】位置決め用シンボルを走査した場合の明暗検出の説明図である。
【図４】ＣＣＤと２値化回路との出力信号の説明図である。
【図５】２次元コード読取装置にて行われる２次元コード読み取り処理のフローチャートである。
【図６】２次元コード読取装置にて行われる各セルの位置決定と種類の決定処理のフローチャートである。
【図７】２次元コード読取装置にて行われるセル位置補正値決定処理のフローチャートである。
【図８】２次元コードの画像説明図である。
【図９】位置決め用シンボルからセルのサイズおよび画像の歪みを決定する場合の説明図である。
【図１０】処理されるセルの順番説明図である。
【図１１】孤立セルの種類の説明図である。
【図１２】２次元コードの構成説明図である。
【図１３】２次元コードの画像における歪みの説明図である。
【符号の説明】
２…２次元コード読取装置      ４…ＣＣＤ      ６…２値化回路
８…画像メモリ    １４…クロック信号出力回路
１６…アドレス発生回路    １８…変化点検出回路    ２０…比検出回路
２２…アドレス記憶メモリ    ２８…制御回路    ５２…２次元コード
５４Ａ，５４Ｂ，５４Ｄ…位置決め用シンボル
５４ａ…黒の枠状正方形    ５４ｂ…白の枠状正方形
５４ｃ…黒の正方形    ５６…データ領域
５８Ａ，５８Ｂ…タイミングセル
ａ１，ａ２，ａ３，ａ４，ｂ１，ｂ２，ｂ３，ｂ４，ｄ１，ｄ２，ｄ３，ｄ４…頂点セル
ｐ１１，ｐ１２，ｐ１３…孤立セル
【図１】
0003627416.tif 000007
【図２】
0003627416.tif 000008
【図３】
0003627416.tif 000009
【図４】
0003627416.tif 000010
【図５】
0003627416.tif 000011
【図６】
0003627416.tif 000012
【図７】
0003627416.tif 000013
【図８】
0003627416.tif 000014
【図９】
0003627416.tif 000015
【図１０】
0003627416.tif 000016
【図１１】
0003627416.tif 000017
【図１２】
0003627416.tif 000018
【図１３】
0003627416.tif 000019