(57)【要約】【課題】高速かつ精度の高い２次元コードのバーコード読取装置を提供する。【解決手段】四角形の枠を有するバーコードを撮影することにより、前記バーコードが射影された射影画像を取得し、前記バーコードが表す情報を読み取るバーコード読み取り装置において、前記射影画像に撮影されたバーコードであるバーコード画像の枠の頂点候補を検出する頂点候補検出手段と、前記頂点候補に基づき、前記バーコード画像の枠を検出するとともに、前記バーコード画像の頂点を確定させるコード枠検出手段と、前記バーコードの枠の頂点と、前記バーコード画像の枠の頂点に基づき、射影変換係数を算出する射影変換係数算出手段と、前記射影変換係数を用いて、前記バーコード画像から前記バーコードが表す情報を取得するデータサンプリング手段とを有する。【選択図】  図８
2004341616.tif 000002
【特許請求の範囲】
【請求項１】
四角形の枠を有するバーコードを撮影することにより、前記バーコードが射影された射影画像を取得し、前記バーコードが表す情報を読み取るバーコード読み取り装置において、
前記射影画像に撮影されたバーコードであるバーコード画像の枠の頂点候補を検出する頂点候補検出手段と、
前記頂点候補に基づき、前記バーコード画像の枠を検出するとともに、前記バーコード画像の頂点を確定させるコード枠検出手段と、
前記バーコードの枠の頂点と、前記バーコード画像の枠の頂点に基づき、射影変換係数を算出する射影変換係数算出手段と、
前記射影変換係数を用いて、前記バーコード画像から前記バーコードが表す情報を取得するデータサンプリング手段と
を有することを特徴とするバーコード読取装置。
【請求項２】
前記射影画像は、前記バーコード画像と該バーコードの周辺含む四角形の画像であり、
前記頂点候補検出手段は、前記射影画像の隣り合う２辺のうち、一方の辺上の点と、他方の辺上の点とを結ぶ線分に沿って前記射影画像の画素を走査し、
走査中にバーコードの画素と判定した画素であるバーコード画素に基づき、前記頂点候補を検出することを特徴とする請求項１に記載のバーコード読取装置。
【請求項３】
前記バーコード画像の枠の各辺の幅は、所定の長さを有し、
前記頂点候補検出手段は、前記バーコード画素から、所定の方向に前記バーコード画像の枠の各辺の幅の長さに応じた画素数の画素を追跡し、
追跡した画素のうち、所定数の画素が前記バーコードの画素であれば前記バーコード画素を前記頂点候補として検出することを特徴とする請求項２に記載のバーコード読取装置。
【請求項４】
前記コード枠検出手段は、各頂点候補に基づいて各頂点候補ごとに定まる画素同士を結ぶ線分上の画素のうち、前記バーコードの画素の占める割合が、所定の割合以上の場合、前記バーコード画像に撮影されたバーコードの枠を検出したと判定することを特徴とする請求項１から３のいずれか１項に記載のバーコード読取装置。
【請求項５】
前記バーコードの枠の内部は、前記データサンプリング手段が情報を取得するために、２種類の色のうちのいずれか一方の色で情報を表す情報領域を複数含み、
前記データサンプリング手段は、前記情報領域内で複数の画素の色を取得し、取得した色のうち、一方の色が占める割合に応じて該情報領域が表す情報を取得することを特徴とする請求項１から４のいずれか１項に記載のバーコード読取装置。
【請求項６】
前記データサンプリング手段は、前記バーコードでの前記情報領域の位置と、前記射影画像に撮影された情報領域の位置とを、前記射影変換係数を用いて対応付けることを特徴とする請求項５に記載のバーコード読取装置。
【請求項７】
前記バーコードに設けられ、予め定められた位置に配置された前記情報領域が表すパターン情報を検出するファインダ検出部をさらに有することを特徴とする請求項５または６に記載のバーコード読取装置。
【請求項８】
前記データサンプリング手段が取得した情報が、訂正可能な誤りを有する場合、該誤りを訂正する誤り訂正手段をさらに有することを特徴とする請求項１から７のいずれか１項に記載のバーコード読取装置。
【請求項９】
前記データサンプリング手段が取得した情報を数値に変換するフォーマット変換部をさらに有することを特徴とする請求項１から８に記載のバーコード読取装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像の読み取りに関し、特にバーコードを読み取るバーコード読取装置に関する。
【０００２】
【従来の技術】
業務の電子化が進展しており、流通する電子文書が増大している一方、ＣＲＴ、ＬＣＤなどのディスプレイの文書表示品質はいまだ紙への印刷品質に劣る点も多いために、電子的に作成された文書を紙文書として紙に印刷する機会が増大している。これらの紙文書に対して行われた手書き作業を有効に利用するために、加筆情報を電子化する手段が必要とされているが、現在使われている手書き入力装置は機能が低いため使い勝手が悪いものである。
【０００３】
手書き入力装置として、例えば、タブレット、デジタイザとよばれ、板状のセンサーとペン型の装置を用いてコンピュータへ手書き入力を行う装置が存在しているが、これらの装置は単純に加筆座標情報を取得するだけであり、紙文書への手書き作業を電子文書に反映するためには不具合が生ずる。
【０００４】
その不具合は、例えば電子文書を印刷した紙の上への加筆する場合に、元の電子文書に加筆を挿入することが望ましいにもかかわらず、電子文書に加筆を挿入することが不可能なことが挙げられる。
【０００５】
またスキャナ装置を用いても紙文書を電子文書とすることが可能であるが、この場合にも紙文書への手書き作業を電子文書に反映するためには不具合が生ずる。例えば電子文書を印刷した紙文書をスキャナで再び電子化した場合、ワープロソフトなどで作成した元の電子文書が存在するにもかかわらず、別の電子文書として画像文書が作成されるだけであり、また、その画像文書も、元の電子文書と加筆情報が混在して画像化されており、もとの電子文書に加筆情報を挿入することが不可能である。
【０００６】
これらの従来の装置では、加筆座標を取得する機能や、画像を取得する機能しかなく、紙に印刷された元の電子文書がどのようなものであるかを識別不可能であり、取得した加筆座標を挿入すべき電子文書が不明なために上記のような不具合が生じている。
【０００７】
こうした問題を解決するために、特許文献１や特許文献３においては次のような方法で解決している。まず電子的に作成された文書を印刷する際に、バーコードなどの機械が識別しやすい模様によって元の電子文書を特定する文書識別情報を同時に印刷する。ここで、文書識別情報とは紙文書に印刷された元となる電子ファイルの保存場所、ファイル名、ページ番号などを表す情報、あるいはそれらを管理する情報であり、たとえば『／／Ｃ：￥ＭｙＤｏｃｕｍｅｎｔ￥ｔｍｐ．ｄｏｃ、ｐｐ１』などの情報である。
【０００８】
次に印刷された紙文書への手書き入力時には、加筆された座標情報と共に文書識別情報を取得する。さらに加筆情報を電子文書に挿入するとき、文書識別情報に従って、筆記の加えられた紙文書がどのような電子文書を印刷したものかを識別し、加筆情報を適切な電子文書へ挿入することを可能としている。
【０００９】
特に特許文献２においては、手書き入力装置上に複数の紙文書を積載して設置し、めくりながら自動的に識別することが可能になっており、大量の紙へ施された加筆操作を適切に電子文書に反映し、電子文書と紙文書とを相互に用いて業務をより効率よく実施することが可能になっている。
【００１０】
図２２に従来例の手書き情報入力装置の概略図を示す。この手書き情報入力装置は、複数の紙文書に行われる手書き情報を取得する装置である。また、手書き情報入力装置は、手書き情報を入力可能な手書き入力部と、複数の紙文書にそれぞれ固有の番号として割り振られた文書識別情報を読み取り可能な文書識別情報読取装置とを有する。
【００１１】
利用時には積載設置された複数の紙文書をめくりながら文書識別情報を読み取り、取得した手書き情報を適切な電子文書に挿入する。
【００１２】
このとき、紙文書をめくりながら利用するために２次元コードリーダ、バーコードリーダなどによって構成される文書識別情報読取装置は、紙文書の横に設置され、バーコードなどによって紙文書上に表される文書識別情報を斜めから読むことが必要になる。
【００１３】
また、このとき、コードリーダの撮像面は、光学系の収差の影響によって画像が暗くなることなどを避けるために光軸と直交するように設置されるので、コードの印刷面とは斜めに対峙することとなる。このとき、十分な光量を得ることができ、深い被写界深度をもつ光学系であれば、広い範囲で鮮明な画像を得ることが可能であるが、斜めから撮像した場合、いわゆる遠近法で描かれた絵画と同様に、通常長方形ないしは正方形の２次元コードを斜めの光学系で読み取ると台形に変形して写る。この現象と逆の現象は、たとえば、プロジェクターによる画像を斜めに壁面に投影した場合、もともとは長方形の図形が台形に変形する現象に見られる。
【００１４】
つまり、斜めの光学系では、手前側が大きく、模様の密度が粗く写り、奥側が小さく、模様の密度が密に写ることになる。一方、撮像システムで用いられる２次元撮像素子としては、ＣＣＤ、Ｃ−ＭＯＳセンサーが一般的だが、いずれも細かな撮像素子がマトリックス状に一様に分布している。このような一様に分布している撮像素子を用いて、模様の密度の異なる２次元コードを斜めから読み取る場合、最も密度の高く撮像される部分が読み取れるような大きさで撮像する。つまり、奥側の小さく移っている画像は２次元コード内のひとつのブロックをひとつの素子が読み取るようになっているのに対し、手前側の大きく写っている画像ではひとつのパターン（ブロック）を複数の素子が読み取っている。このように手前側の密度の低い部分では、複数の素子が同一のブロック、同一の情報を表現しているため、情報を効率よく表現することが困難である。
【００１５】
一方、電子文書が増加するにつれて印刷される紙文書も増加するため、文書識別に必要とされるコードは、より大きな容量を持つコードが必要となっている。文書識別情報読取装置００３の大きさやコードを印刷する面積の制約上、たとえば１次元コードとして６桁のＣｏｄｅ３９形式を用いて、文書識別に利用した場合には、表現できる情報量は３６＾６＝２１億である。しかし、前述のように印刷される紙文書の量は増加しており、これは通常の業務において印刷されるすべての紙文書を識別するためには不十分なものである。一方２次元コードにおいては、たとえば、１２×６のセル（白黒の最小単位）を持つ２次元コードの場合、誤り訂正符号が３２ビットであるならば、表現できる情報量は２＾４０＝１兆であり、誤り訂正符号が１６ビットであるならば、２＾５６＝７．２京である。これは上記のＣｏｄｅ３９の場合と比較してはるかに大きく、通常の紙文書を識別するのに十分な情報量である。
【００１６】
以上述べたように従来の手書き文字入力装置では、紙文書の識別に用いられる機械読み取り可能な模様（コード）としてはバーコードが用いられており、その容量に限りがあるために大量の電子文書と紙文書とを連携して利用することが困難であった。こうした現状から、手書き入力装置における識別可能文書の量を増加させるために、斜めから読む光学系でも容易に読み取り可能な２次元コードの開発が求められている。
【００１７】
ところで、そのコードの実際の使用に際しては、筆記が開始される前に素早く高精度に読み取る必要があるため、できる限り画像データを処理する量を減らし、かつ画像の品質が悪くとも精度のよいアルゴリズムが必要となってくる。
【００１８】
特許文献２では、異なる２種類のセルサイズを有する２次元コードについての記述があるが、その目的は、手持ちのハンディバーコードリーダと、ベルトコンベアを流れる物品に貼られた２次元コードを読み取る固定式バーコードリーダと両者で読み取りが可能になるように発明されたもので、本発明のように斜めから読み取ることを想定していない。
【００１９】
【特許文献１】
特開平９−９１０８３号公報
【００２０】
【特許文献２】
特開平１１−３２８３０１号公報
【００２１】
【特許文献３】
特開２０００−１１２６４６号公報
【００２２】
【発明が解決しようとする課題】
本発明は、このような問題点に鑑み、高速かつ精度の高い２次元コードのバーコード読取装置を提供することを目的とする。
【００２３】
【課題を解決するための手段】
上記課題を解決するために、本発明は、四角形の枠を有するバーコードを撮影することにより、前記バーコードが射影された射影画像を取得し、前記バーコードが表す情報を読み取るバーコード読み取り装置において、前記射影画像に撮影されたバーコードであるバーコード画像の枠の頂点候補を検出する頂点候補検出手段と、前記頂点候補に基づき、前記バーコード画像の枠を検出するとともに、前記バーコード画像の頂点を確定させるコード枠検出手段と、前記バーコードの枠の頂点と、前記バーコード画像の枠の頂点に基づき、射影変換係数を算出する射影変換係数算出手段と、前記射影変換係数を用いて、前記バーコード画像から前記バーコードが表す情報を取得するデータサンプリング手段とを有することを特徴とする。
【００２４】
また、上記課題を解決するために、本発明は、前前記射影画像は、前記バーコード画像と該バーコードの周辺含む四角形の画像であり、前記頂点候補検出手段は、前記射影画像の隣り合う２辺のうち、一方の辺上の点と、他方の辺上の点とを結ぶ線分に沿って前記射影画像の画素を走査し、走査中にバーコードの画素と判定した画素であるバーコード画素に基づき、前記頂点候補を検出することを特徴とする。
【００２５】
また、上記課題を解決するために、本発明は、前記バーコード画像の枠の各辺の幅は、所定の長さを有し、前記頂点候補検出手段は、前記バーコード画素から、所定の方向に前記バーコード画像の枠の各辺の幅の長さに応じた画素数の画素を追跡し、追跡した画素のうち、所定数の画素が前記バーコードの画素であれば前記バーコード画素を前記頂点候補として検出することを特徴とする。
【００２６】
また、上記課題を解決するために、本発明は、前記コード枠検出手段は、各頂点候補に基づいて各頂点候補ごとに定まる画素同士を結ぶ線分上の画素のうち、前記バーコードの画素の占める割合が、所定の割合以上の場合、前記バーコード画像に撮影されたバーコードの枠を検出したと判定することを特徴とする。
【００２７】
また、上記課題を解決するために、本発明は、前記バーコードの枠の内部は、前記データサンプリング手段が情報を取得するために、２種類の色のうちのいずれか一方の色で情報を表す情報領域を複数含み、前記データサンプリング手段は、前記情報領域内で複数の画素の色を取得し、取得した色のうち、一方の色が占める割合に応じて該情報領域が表す情報を取得することを特徴とする。
【００２８】
また、上記課題を解決するために、本発明は、前記データサンプリング手段は、前記バーコードでの前記情報領域の位置と、前記射影画像に撮影された情報領域の位置とを、前記射影変換係数を用いて対応付けることを特徴とする。
【００２９】
また、上記課題を解決するために、本発明は、前記バーコードに設けられ、予め定められた位置に配置された前記情報領域が表すパターン情報を検出するファインダ検出部をさらに有することを特徴とする。
【００３０】
また、上記課題を解決するために、本発明は、前記データサンプリング手段が取得した情報が、訂正可能な誤りを有する場合、該誤りを訂正する誤り訂正手段をさらに有することを特徴とする。
【００３１】
また、上記課題を解決するために、本発明は、前記データサンプリング手段が取得した情報を数値に変換するフォーマット変換部をさらに有することを特徴とする。
【００３２】
以上のように、本発明によれば、高速かつ精度の高い２次元コードのバーコード読取装置を提供することができる。
【００３３】
【発明の実施の形態】
以下、図面を参照し、本発明の実施形態について説明する。なお、本実施の形態におけるバーコード読取装置は、例えば、図２２の文書識別情報読取装置の部分に設けられるものであっても良いし、単体であっても良い。
【００３４】
最初に、バーコード読取装置が読み取る画像について説明する。まず、図１に示される２次元コードについて説明する。２次元コードは、図に示されるように、周囲が黒枠で囲まれ、内部に白または黒で１ビットの情報をあらわす最小単位であり情報領域であるセルが、図２に示されるように７２個配置されている。従って、この２次元コードは、７２ビットの情報を表現することができる。
【００３５】
この２次元コードを斜め上から読み取ると、バーコード読取装置が得られるコード画像はセルが大きい下側の部分が縮小されて、台形の形状となる。２次元コード全体のコード画像はこのようにゆがむが、バーコード読取装置で撮影されたコード画像内の各セルは撮像素子の複数画素を占め、その面積はセルの位置に関係なく概略等しくなる。
【００３６】
このように上側のセルの大きさは小さく、下側のセルの大きさが大きい２次元コードにより、斜め上からコード画像を読み取るように設けられたバーコード読取装置の撮像素子は、セルの白黒情報の安定した撮影が可能になる。
【００３７】
また、２次元コードの他の例として、図３に示される台形コード（平面図）がある。この台形コードは、バーコード読取装置が斜め上から読み取る場合、撮像素子と各セルの距離に応じてセルの大きさが大きくなるようにした２次元コードである。
【００３８】
この台形コードの場合、セルは各行に１２個配置され、６行あるので、セルの総数は７２個ある。このセルの総数は図１の２次元コードのセルの総数と等しいので、この台形コードで表現できるビット数は図１の２次元コードで表現できるビット数と等しい。ちなみに、７２ビットのデータは、データの配置を表した図４に示されるように配置される。
【００３９】
また、２次元コードの他の例として、図５のように矩形の２次元コード５０を射影変換し、台形の２次元コード５１に変形した２次元コードを使用することもできる．この場合に、斜め上から撮影した場合に得られるコードの画像は、２次元コード５０に近いものが得られる。なお、２次元コード５１が表現できる情報量は、７２ビットである。
【００４０】
上述した３つの２次元コードにおいて共通していることの１つは、コード全体の大きさは横長となっていることである。その理由は、縦長にすると、セルの縦方向の長さが大きくなり、コード全体のサイズが非常に大きくなり、小さい大きさで大容量のデータを表現できるという２次元コードのメリットがなくなるためである。
【００４１】
また、バーコード読取装置からみた場合、コードとの距離は縦方向の変化に比べ横方向の変化の方が大きくなるため、バーコード読取装置から遠いところにあるセルは縦横比が大きい長方形にするのが適当である。したがって、図３、５の例ではセルの横の長さの変化より縦の長さの変化のほうを大きくすることにより、バーコード読取装置で撮影したコード画像ではコードの各セルは正方形に近い形状となる。
【００４２】
以上説明した２次元コードが、本実施の形態において、バーコード読取装置が読み取る画像である。次に、上述した２次元コードを作成する２次元コード作成装置について図６を用いて説明する。
【００４３】
２次元コード作成装置は、フォーマット変換部２０と、誤り訂正部２１と、コード画像作成部２３とを有する。
【００４４】
フォーマット変換部２０は、入力された数字文字列をコンピュータ内で通常扱われる整数型５６ビットデータに変換する。
【００４５】
誤り訂正部２１は、整数型５６ビットデータに変換されたデータに、誤り訂正符号１６ビットを付加する。
【００４６】
この誤り訂正符号として、リードソロモン符号が用いられる。このリードソロモン符号は、バイト単位の誤りを訂正できる強力な誤り訂正方式であり、誤り訂正符号長の半分以下の誤りを訂正することができる。なお、リードソロモン誤り訂正符号の詳細については、昭晃堂「符号理論（コンピュータ基礎講座１８）」宮川、岩垂、今井共著など、多数の書籍に記されている。
【００４７】
本実施の形態の場合には、誤り訂正符号長が２バイトなので１バイトの誤り訂正が可能である。
【００４８】
コード画像作成部２３は、データおよび誤り訂正符号データを図２に示したように２次元コードの各セルに割り当てて、２次元コードの画像を作成する。
【００４９】
データおよび誤り訂正符号データのセルへの割り当ては、整数型５６ビットデータが１〜５６までのセルに、誤り訂正符号のデータ１６ビットが５７〜７２のセルとなっている。なお、コード画像作成時には、規定された頂点座標、セル中心座標が用いられる。この規定座標はコード読み取り時にも使用される。
【００５０】
コードの作成はソフトウェアで行ってもよく、図７にその方法のフローチャートを示す。
【００５１】
まず、ステップＳ１０１で、数字文字列が入力される。ステップＳ１０２では、数字文字列がコンピュータ内で通常扱われる整数型５６ビットデータに変換される。整数型データに変換されたデータは、ステップＳ１０３で、誤り訂正符号１６ビットが付加される。この誤り訂正符号は、先ほどと同様にリードソロモン符号が用いられる。このようにして作成されたデータおよび誤り訂正符号データは、ステップＳ１０４で、図２や図４に示すように２次元コードの各セルに割り当てられ、２次元コードの画像ができあがる。データのセルへの割り当ても、先ほどと同様に整数型５６ビットデータが１〜５６までのセルに、誤り訂正符号のデータ１６ビットが５７〜７２のセルとなっている。また、コード画像作成時には、規定された頂点座標、セル中心座標が用いられる．この規定座標はコード読み取り時にも使用される。
【００５２】
次に、上述した２次元コードを読み取るバーコード読取装置について説明する。バーコード読取装置は、図８に示されるように、頂点候補検出部１１と、コード枠検出部１２と、射影変換係数算出部１３と、データサンプリング部１４と、誤り訂正部１５と、フォーマット変換部１６とを有する。
【００５３】
頂点候補検出部１１は、２次元コードの頂点候補を検出する。コード枠検出部１２は、頂点候補に基づき、後述するコード枠を検出する。コード枠が検出されることで、頂点候補は真の頂点と確定される。
【００５４】
射影変換係数算出部１３は、コード枠検出部１２で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数を求める。
【００５５】
データサンプリング部１４は、射影変換係数算出部１３で求めた射影変換係数を用いて、２次元コードのデータのサンプリングを行う。誤り訂正部１５は、データサンプリング部１４が読み取ったデータが誤りかどうか判定し、誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型５６ビットのデータをフォーマット変換部１６へ出力する。フォーマット変換部１６ではデータを数字文字列に変換して出力する。
【００５６】
次に、頂点候補検出部１１の処理の詳細について説明する。まず、図９に示すように画像の四隅から斜め走査を行い、黒画素を検出する。検出された黒画素をＡ、Ｂ、Ｃ、Ｄとする。
【００５７】
次に、頂点候補検出部１１は、図１０に示されるように、Ａ、Ｂ、Ｃ、Ｄから矢印の方向、例えばＡなら右下４５度、Ｂなら左下４５度というように、セルの一辺の画素数の１／√２の画素数だけ画素を追跡してそれらがすべて黒画素かどうかを判定する。それらがすべて黒画素であれば、頂点候補検出部１１は、Ａ、Ｂ、Ｃ、Ｄを頂点候補として検出し、コード枠検出部１２に処理を移す。
【００５８】
コード枠検出部１２について説明する。コード枠検出部１２では、図１１のように、頂点候補Ａ、Ｂ、Ｃ、Ｄから１／√２の画素数だけ追跡した終端どうしを結ぶ黒枠判定ライン５２、５３、５４、５５を通過する画素の黒画素の割合が全ての直線において直線毎に８割以上存在すればそれをコード枠であると判定し、頂点候補Ａ、Ｂ、Ｃ、Ｄを２次元コードの頂点Ａ、Ｂ、Ｃ、Ｄとして確定する。このとき、同時に頂点Ａ、Ｂ、Ｃ、Ｄの座標も検出される。
【００５９】
次に射影変換係数算出部１３について説明する。射影変換係数算出部１３では、コード枠検出部１２で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数を求める。この射影変換係数の求め方は後に説明する。
【００６０】
次にデータサンプリング部１４について説明する。データサンプリング部１４には、コード画像、コードを作成した時点の各セルの規定中心座標、射影変換係数が入力される。データサンプリング部１４は、射影変換係数算出部１３で求めた射影変換係数を用いて、作成したコード画像の各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求める。
【００６１】
データサンプリング部１４は、求めた中心座標を画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ‘０’としてデータを読み出す。読み出された７２ビットのデータは誤り訂正部１５に入力、配列され、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正部１５は、誤り訂正符号以外の整数型５６ビットのデータをフォーマット変換部１６へ出力する。フォーマット変換部１６ではデータを数字文字列に変換して出力し、数字文字列が復元される。
【００６２】
上述した２次元コードの読取もソフトウェアでおこなってもよく、図１２にその方法のフローチャートを示す。ステップＳ２０１で斜め上から２次元コードを撮像したコード画像が入力される。ステップＳ２０２では、２次元コードの頂点候補が検出される。
【００６３】
このステップＳ２０２では、図９に示すように画像の四隅から斜め走査が行われ、黒画素が検出される。検出された黒画素をＡ、Ｂ、Ｃ、Ｄとする。さらにステップＳ２０２では、図１０に示されるように、Ａ、Ｂ、Ｃ、Ｄから矢印の方向、例えばＡなら右下４５度、Ｂなら左下４５度というように、セルの一辺の画素数の１／√２の画素数だけ画素が追跡され、それらがすべて黒画素かどうかが判定される。それらがすべて黒画素であればＡ、Ｂ、Ｃ、Ｄが頂点候補として検出され、ステップＳ２０３に処理が移る。
【００６４】
ステップＳ２０３では、図１１に示されるように、頂点候補Ａ、Ｂ、Ｃ、Ｄから追跡した終端どうしを結ぶ黒枠判定ライン５２、５３、５４、５５を通過する画素の黒画素の割合が、全ての直線において直線毎に８割以上存在すればそれをコード枠であると判定され、頂点候補Ａ、Ｂ、Ｃ、Ｄが２次元コードの頂点Ａ、Ｂ、Ｃ、Ｄとして確定される。このとき、同時に頂点Ａ、Ｂ、Ｃ、Ｄの座標も検出される。
【００６５】
このステップＳ２０３で、コードが検出できなければ、ステップＳ２０４の分岐処理でエンドに分岐し、読み取りは終了する。コードが検出された場合は、次のステップＳ２０５へ処理は進む。
【００６６】
ステップＳ２０５では、ステップＳ２０３で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数が求められる。
【００６７】
次のステップＳ２０６では、コード画像、射影変換係数、作成したコード画像の各セルの規定中心座標が入力され、ステップＳ２０５で求まった射影変換係数を用いて、作成したコード画像の各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求める。
【００６８】
さらに、ステップＳ２０６では、求めた中心座標を画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ  ‘０’としてデータが読み出される。読み出された７２ビットのデータは、ステップＳ２０７で、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型５６ビットのデータは、ステップＳ２０８で、データを数字文字列に変換され、ステップＳ２０９で、数字文字列が復元される。
【００６９】
次に、射影変換係数の求め方について説明する。射影変換とは３次元空間内の図形・物体を２次元平面・スクリーンへと表示したときの変換である。３次元空間内の物体の座標を２次元平面上の座標へと変換するものであり、３次元画像処理の手法として広く知られたものである。
【００７０】
このような射影変換を正確に行うためには、撮像系の位置、光学的特性などが明らかになる必要がある。しかし、さまざまな装置へ対応することを考えると、さまざまな装置すべての撮像系の位置などを特定し、正確に定めることは困難である。
【００７１】
その一方で、斜めから撮像する光学系で読み取りやすくなるという効果を発揮するためには、必ずしも正確な射影変換を施す必要はない。例えば、従来の矩形、一様密度のセルで表現される２次元コードではなく、台形や多様な密度のコードであれば、斜めからの光学系で読取が容易になるという効果を発揮することができる。
【００７２】
こうした台形コードや多様なセルサイズを実現する簡単な例を図１３で説明する。図１３に示すような光学系において、読み取った画像は、射影変換によって、もともと長方形であった図形が台形に変形する。
【００７３】
このとき、台形の長辺と短辺との比率（Ｘ１／Ｘ３）は撮像素子からコードのそれぞれの領域への距離の比率の逆数（Ｌ３／Ｌ１）と等しくなる。本実施の形態においては、通常は矩形で各セルの大きさが均一である２次元コードの代わりに、上記の射影変換をキャンセルできるようなセルの形状や大きさを持つ２次元コードを作成する。
【００７４】
セルの大きさの決定は、２次元コードの１行ごとに一定の倍率で行う．この変形の倍率は２次元コードの１行の間においても、撮像面からの距離が異なっているが、たとえば１行の中間の位置における倍率で、１行の上部から下部まで等しい倍率で変換する。この操作によって、階段状のセル境界を持つ形状の２次元コードが得られる（図１、３の２次元コード）。あるいは、厳密に射影変換演算を行って図５のような２次元コードを作成してもよい。
【００７５】
次に、厳密な射影変換を、図１４を用いて説明する。図１４には、読み取られたコード画像を模式的に示したコード画像６０と、電子的に生成されたコードを模式的に示したコード６１とが示されている。また、コード画像６０のＡｓ〜Ｄｓと、コード６１のＡｒ〜Ｄｒは各頂点であり、括弧内のｘｓ１やｙｒ２は、座標を表している。また、ＰｓｋとＰｒｋは、あるセルの中心座標を表す。
【００７６】
コード画像６０のＡｓ〜Ｄｓと、コード６１のＡｒ〜Ｄｒの頂点は、図１５に示される数式を満たす。これらの数式▲１▼▲２▼は、コード６１などコードの座標を定めるためのコード座標から、コード画像６０などコード画像の座標を定める座標への変換式を表しており、Ａｒ〜ＤｒからＡｓ〜Ｄｓへの座標変換を規定する。
【００７７】
式▲１▼は、頂点のＸ座標に関する数式であり、式▲２▼は、頂点のＹ座標に関する数式であり、式▲１▼▲２▼の添え字ｉは、１から４まで動く。これらの数式で、ｂ１〜ｂ８は変換パラメータで、未知数である。これら変換パラメータは、Ａｒ〜Ｄｒ、Ａｓ〜Ｄｓの各座標値を式に代入して八元一次連立方程式を生成し、解くことにより求められる。ｂ１〜ｂ８が求められると、電子的に生成されたコードの各セルの中心座標Ｐｒｋを変換してコード画像のサンプリング中心座標Ｐｓｋを求めることができる。
【００７８】
次に、コードを高速かつ高精度で認識するための第２の実施の形態について説明する。この実施の形態は、バーコード読取装置だけではなく、スキャナ等の読み取りデバイスを使用した場合にも有効なものである。
【００７９】
具体的に第２の実施の形態は、黒枠で囲まれた図形がコードであるか否かどうか、あるいはコードはどの方向を向いているか、というような判定を容易にし、高速かつ高精度とするものである。
【００８０】
第２の実施の形態で使用する２次元コードは、図５に示したコードを用いるが、図１６に示すようにコードの中心に一意にそのコードの向きが定まる所定のパターン（以下、ファインダパターン６２と記す）を保持する。
【００８１】
このファインダパターン６２は、図１６に示されるように、コードの中心に４ｘ２セルを準備し、黒６セル、白２セルから構成され、パターンには方向性が存在する．
このファインダパターン６２と、黒の矩形で囲まれた図形とを比較することにより、黒の矩形で囲まれた図形がコードであるか否かを素早く判定することができるし、コードの向きもすぐに判定することができる。その理由は、ファインダパターン６２がなければ、誤り訂正を行わなければコードであるか否かが判定できないためである。
【００８２】
次に、図１７を用いて２次元コード作成装置について説明する。
【００８３】
２次元コード作成装置は、フォーマット変換部７０と、誤り訂正部７１と、コード画像作成部７２とを有する。
【００８４】
フォーマット変換部２０は、入力された数字文字列をコンピュータ内で通常扱われる整数型４８ビットデータに変換する。
【００８５】
誤り訂正部２１は、整数型４８ビットデータに変換されたデータと、ファインダパターンを著わす８ビットデータに、誤り訂正符号１６ビットを付加する。この誤り訂正符号として、リードソロモン符号が用いられる。
【００８６】
コード画像作成部２３は、データおよび誤り訂正符号データを図１８に示すように２次元コードの各セルに割り当てて、２次元コードの画像を作成する。
【００８７】
データ、ファインダパターンおよび誤り訂正符号データのセルへの割り当ては、図１８に示すようにファインダパターンを表すデータは１〜８、整数型４８ビットデータが９〜５６までのセルに、誤り訂正符号のデータ１６ビットが５７〜７２のセルとなっている。なお、コード画像作成時には、規定された頂点座標、セル中心座標が用いられる．この規定座標はコード読み取り時にも使用される．
コードの作成はソフトウェアで行ってもよく、図１９にその方法のフローチャートを示す。
【００８８】
まず、ステップＳ３０１で、数字文字列が入力される。ステップＳ３０２では、数字文字列がコンピュータ内で通常扱われる整数型４８ビットデータに変換される。次のステップＳ３０３では、ファインダパターン８ビットが入力される。また、整数型データに変換されたデータは、ステップＳ３０４で、生成された誤り訂正符号１６ビットが付加される。この誤り訂正符号は、リードソロモン符号が用いられる。このようにして作成されたデータ、ファインダパターンおよび誤り訂正符号データは、ステップＳ３０５で、２次元コードの各セルに割り当てられ、２次元コードの画像ができあがる。
【００８９】
データのセルへの割り当ては、ファインダパターンを表すデータは図１８の１〜８、整数型４８ビットデータが９〜５６までのセルに、誤り訂正符号のデータ１６ビットが５７〜７２のセルとなっている。なお、コード画像作成時には、規定された頂点座標、セル中心座標が用いられる。この規定座標はコード読み取り時にも使用される。
【００９０】
次に、上述した２次元コードを読み取るバーコード読取装置について説明する。バーコード読取装置は、図２０に示されるように、頂点候補検出部８１と、コード枠検出部８２と、射影変換係数算出部８３と、ファインダ検出部８４と、データサンプリング部８５と、誤り訂正部８６と、フォーマット変換部８７とを有する。
【００９１】
頂点候補検出部８１は、２次元コードの頂点候補を検出する。コード枠検出部８２は、頂点候補に基づき、コード枠を検出する。コード枠が検出されることで、頂点候補は真の頂点と確定される。
【００９２】
射影変換係数算出部８３は、コード枠検出部１２で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数を求める。
【００９３】
ファインダ検出部８４は、ファインダの検出など、ファインダに関する処理を行う。データサンプリング部８５は、射影変換係数算出部８３で求めた射影変換係数を用いて、２次元コードのデータのサンプリングを行う。誤り訂正部８６は、データサンプリング部８５が読み取ったデータが誤りかどうか判定し、誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型５６ビットのデータをフォーマット変換部８７へ出力する。フォーマット変換部８７ではデータを数字文字列に変換して出力する。
【００９４】
次に、頂点候補検出部８１の処理の詳細について説明する。頂点候補検出部８１は、頂点候補検出部１１（図８参照）と同様に、図９に示すように画像の四隅から斜め走査を行い、黒画素を検出する。検出された黒画素をＡ、Ｂ、Ｃ、Ｄとする。
【００９５】
次に、頂点候補検出部８１は、図１０に示されるように、Ａ、Ｂ、Ｃ、Ｄから矢印の方向、例えばＡなら右下４５度、Ｂなら左下４５度というように、セルの一辺の画素数の１／√２の画素数だけ画素を追跡してそれらがすべて黒画素かどうかを判定する。それらがすべて黒画素であれば、頂点候補検出部１１は、Ａ、Ｂ、Ｃ、Ｄを頂点候補として検出し、コード枠検出部８２に処理を移す。
【００９６】
コード枠検出部８２について説明する。コード枠検出部８２もコード枠検出部１２と同様に、図１１のように、頂点候補Ａ、Ｂ、Ｃ、Ｄから１／√２の画素数だけ追跡した終端どうしを結ぶ黒枠判定ライン５２、５３、５４、５５を通過する画素の黒画素の割合が全ての直線において直線毎に８割以上存在すればそれをコード枠であると判定し、頂点候補Ａ、Ｂ、Ｃ、Ｄを２次元コードの頂点Ａ、Ｂ、Ｃ、Ｄとして確定する。このとき、同時に頂点Ａ、Ｂ、Ｃ、Ｄの座標も検出される。
【００９７】
次に射影変換係数算出部８３について説明する。射影変換係数算出部８３も、射影変換係数算出部１３と同様に、コード枠検出部８２で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数を求める。
【００９８】
次に、ファインダ検出部８４について説明する。ファインダ検出部８４は、ファインダパターンの検出を試みる。ファインダ検出部８４には、コード画像、射影変換係数、作成したコードのファインダパターンを構成する各セルの規定中心座標が入力される。
【００９９】
ファインダ検出部８４は、作成したコード画像のファインダパターンを構成する各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求める。
【０１００】
ファインダ検出部８４は、求めた中心座標を画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ‘０’としてデータを読み出し、読み出したデータとファインダパターンの真のデータを比較し、誤りが１つ以下であれば、現在扱っている図形がコードであると判定する。もし、誤りが２つ以上である場合は、コードの向きが合っていない可能性があるので、コードを９０度ずつ回転させてファインダパターンの検出を行う。４つの向きでファインダパターンの検出を行っても、ファインダが検出されなかった場合に初めて現在処理している画像はコードではないと判定する。
【０１０１】
次にデータサンプリング部８５について説明する。データサンプリング部８５もデータサンプリング部と同様に、コード画像、コードを作成した時点の各セルの規定中心座標、射影変換係数が入力される。データサンプリング部８５は、射影変換係数算出部８３で求めた射影変換係数を用いて、作成したコード画像の各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求める。
【０１０２】
データサンプリング部８５は、求めた中心座標を画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ‘０’としてデータを読み出す。読み出された７２ビットのデータは誤り訂正部８６に入力、配列され、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号とファインダパターンデータ以外のデータ整数型４８ビットのデータをフォーマット変換部８７へ出力する。フォーマット変換部８７ではデータを数字文字列に変換して出力する。
【０１０３】
上述した２次元コードの読取もソフトウェアでおこなってもよく、図２１にその方法のフローチャートを示す。ステップＳ４０１で斜め上から２次元コードを撮像したコード画像が入力される。ステップＳ４０２では、２次元コードの頂点候補が検出される。
【０１０４】
このステップＳ４０２では、図９に示すように画像の四隅から斜め走査が行われ、黒画素が検出される。検出された黒画素をＡ、Ｂ、Ｃ、Ｄとする。さらにステップＳ４０２では、図１０に示されるように、Ａ、Ｂ、Ｃ、Ｄから矢印の方向、例えばＡなら右下４５度、Ｂなら左下４５度というように、セルの一辺の画素数の１／√２の画素数だけ画素が追跡され、それらがすべて黒画素かどうかが判定される。それらがすべて黒画素であればＡ、Ｂ、Ｃ、Ｄが頂点候補として検出され、ステップＳ４０３に処理が移る。
【０１０５】
ステップＳ４０３では、図１１に示されるように、頂点候補Ａ、Ｂ、Ｃ、Ｄから追跡した終端どうしを結ぶ黒枠判定ライン５２、５３、５４、５５を通過する画素の黒画素の割合が、全ての直線において直線毎に８割以上存在すればそれをコード枠であると判定され、頂点候補Ａ、Ｂ、Ｃ、Ｄが２次元コードの頂点Ａ、Ｂ、Ｃ、Ｄとして確定される。このとき、同時に頂点Ａ、Ｂ、Ｃ、Ｄの座標も検出される。
【０１０６】
このステップＳ４０３で、コードが検出できなければ、ステップＳ４０４の分岐処理でエンドに分岐し、読み取りは終了する。コードが検出された場合は、次のステップＳ４０５へ処理は進む。
【０１０７】
ステップＳ４０５では、ステップＳ４０３で検出されたコード枠の各頂点の座標と、コード画像を作成した時のコード枠の各頂点の規定座標とから、作成したコードの各セルの規定中心座標と読み取ったコード画像の各セルの中心とをマッピングする係数である射影変換係数が求められる。
【０１０８】
次のステップＳ４０６では、ファインダの検出が試みられる。このステップＳ４０６では、コード画像、射影変換係数、作成したコードのファインダパターンを構成する各セルの規定中心座標が入力される。また、ステップＳ４０６では、作成したコード画像のファインダパターンを構成する各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求め、それを画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ‘０’としてデータを読み出し、読み出したデータとファインダパターンの真のデータを比較し、誤りが１つ以下であれば、現在扱っている図形がコードであると判定される。もし、誤りが２つ以上である場合は、コードの向きが合っていない可能性があるので、コードを９０度ずつ回転させてファインダパターンの検出を行う。４つの向きでファインダパターンの検出を行っても、ファインダが検出されなかった場合に初めて現在処理している画像はコードではないと判定する。
【０１０９】
ファインダ検出が成功した場合は次のステップＳ４０８へ進み、失敗した場合は処理を終了する。
【０１１０】
次のステップＳ４０８では、コード画像、射影変換係数、作成したコード画像の各セルの規定中心座標が入力され、ステップＳ４０５で求まった射影変換係数を用いて、作成したコード画像の各セルの規定中心座標を射影変換することにより、読み取ったコード画像の各セルの中心座標を求める。
【０１１１】
さらに、ステップＳ４０８では、求めた中心座標を画像データのサンプリング中心座標とし、その座標を中心とする３ｘ３画素の黒画素数が白画素数を上回れば‘１’、そうでなければ  ‘０’としてデータが読み出される。読み出された７２ビットのデータは、ステップＳ４０９で、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型４８ビットのデータは、ステップＳ４１０で、データを数字文字列に変換され、ステップＳ４１１で、数字文字列が復元される。
【０１１２】
上記の例では、使用できるデータは５６ビットから４８ビットに減少したが、コードのセル数を増やしてより多くのデータを保持することも可能である．セル数を１４ｘ８とすれば１１２ビット（１４バイト）のデータを格納することができ、例えばデータに７２ビット、ファインダに８ビット、誤り訂正３２ビットに割り当てることができる．いくつのセルが必要かは用途によって決まる．
この実施例では、ファインダパターンを使用してコードであるか否かの判定、コードの方向の判定も高速にできるので図２２の手書き入力装置だけでなく、スキャナ、デジタルカメラ等の様々なデバイスを利用してコードを読み取ることが可能になる。
【０１１３】
【発明の効果】
以上のように、本発明によれば、高速かつ精度の高い２次元コードのバーコード読取装置を提供することができる。
【図面の簡単な説明】
【図１】２次元コードを示す図である。
【図２】データの配置位置を示す図である。
【図３】２次元コードを示す図である。
【図４】データの配置位置を示す図である。
【図５】射影変換を示す図である。
【図６】２次元コード作成装置を構成する各部を示す図である。
【図７】２次元コード作成処理を示すフローチャートである。
【図８】バーコード読取装置を構成する各部を示す図である。
【図９】頂点画素検出を示す図である。
【図１０】頂点候補検出を示す図である。
【図１１】コード枠検出を示す図である。
【図１２】２次元コード読み取り処理を示すフローチャートである。
【図１３】斜め方向からの読み取る様子を示す図である。
【図１４】コード画像とコードを示す図である。
【図１５】変換パラメータを求める数式を示す図である。
【図１６】ファインダパターンを示す２次元コードを示す図である。
【図１７】２次元コード作成装置を構成する各部を示す図である。
【図１８】データの配置位置を示す図である。
【図１９】２次元コード作成処理を示すフローチャートである。
【図２０】バーコード読取装置を構成する各部を示す図である。
【図２１】２次元コード読み取り処理を示すフローチャートである。
【図２２】手書き入力装置を示す図である。
【符号の説明】
１１、８１…頂点候補検出部
１２、８２…コード検出部
１３、８３…射影変換係数算出部
１４、８５…データサンプリング部
１５、８６…誤り訂正部
１６、２０、７０、８７…フォーマット変換部
２１、７１…誤り訂正部
２３、７２…コード画像作成部
５０、５１…２次元コード
５２、５３、５４、５５…黒枠判定ライン
６０…コード画像
６１…コード
６２…ファインダパターン
８４…ファインダ検出部
【図１】
2004341616.tif 000003
【図２】
2004341616.tif 000004
【図３】
2004341616.tif 000005
【図４】
2004341616.tif 000006
【図５】
2004341616.tif 000007
【図６】
2004341616.tif 000008
【図７】
2004341616.tif 000009
【図８】
2004341616.tif 000010
【図９】
2004341616.tif 000011
【図１０】
2004341616.tif 000012
【図１１】
2004341616.tif 000013
【図１２】
2004341616.tif 000014
【図１３】
2004341616.tif 000015
【図１４】
2004341616.tif 000016
【図１５】
2004341616.tif 000017
【図１６】
2004341616.tif 000018
【図１７】
2004341616.tif 000019
【図１８】
2004341616.tif 000020
【図１９】
2004341616.tif 000021
【図２０】
2004341616.tif 000022
【図２１】
2004341616.tif 000023
【図２２】
2004341616.tif 000024