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