(57)【要約】      （修正有）【課題】位置検出パターンの誤認識による二次元コードの誤検出を防止して、二次元コードを含む画像から二次元コードを正確に検出することができる、二次元コードの検出方法、検出装置、及び検出プログラムを提供する。【解決手段】３つの位置検出要素パターンの中心点により直角二等辺三角形の頂点が構成されるという条件に加え、３つの位置検出要素パターンを含む二次元コード領域及びその周辺領域から二次元コードとしての特徴が抽出されることを条件として、二次元コード領域に１つの二次元コードが存在すると判定する。【選択図】図２
2007094584.tif 000002
【特許請求の範囲】
【請求項１】
直角二等辺三角形の各頂点に対応する位置に３つの位置検出要素パターンが設けられ、且つ該位置検出要素パターンにより定まる領域にデータ領域が設けられた二次元コードを検出する二次元コードの検出方法であって、
前記二次元コードを含む画像を読み取り、
読み取られた画像を二値化し、
二値化された画像に含まれる複数の位置検出要素パターンを検出し、
検出された位置検出要素パターンの中心点の位置を特定し、
位置が特定された中心点の中から、直角二等辺三角形の頂点を構成する３つの中心点を選択し、
選択された中心点に対応する位置検出要素パターンにより定まる二次元コード領域又はその周辺領域から二次元コードとしての特徴を抽出し、
二次元コードとしての特徴が抽出された場合には、該二次元コード領域に１つの二次元コードが存在すると判定し、
二次元コードを検出する二次元コードの検出方法。
【請求項２】
前記周辺領域に存在する予め規格化された空白領域を前記特徴として抽出する請求項１に記載の二次元コードの検出方法。
【請求項３】
前記空白領域は、少なくとも前記二次元コード領域の前記直角二等辺三角形の短辺側に隣接して存在する請求項２に記載の二次元コードの検出方法。
【請求項４】
前記二次元コード領域の前記直角二等辺三角形の短辺側に、前記二次元コード領域の外周から所定距離離間した仮想線を設定し、該仮想線上の総画素数に対する白画素数の割合がしきい値を超えた場合に、空白領域が存在すると判断する請求項３に記載の二次元コードの検出方法。
【請求項５】
前記二次元コード領域の前記直角二等辺三角形の短辺側に、前記二次元コード領域の外周から所定距離内の仮想領域を設定し、該仮想領域の総画素数に対する白画素数の割合がしきい値を超えた場合に、空白領域が存在すると判断する請求項３に記載の二次元コードの検出方法。
【請求項６】
前記空白領域は、前記二次元コード領域の周囲四方に存在する請求項２に記載の二次元コードの検出方法。
【請求項７】
前記二次元コード領域の周囲四方に、前記二次元コード領域の外周から所定距離離間した仮想線を設定し、該仮想線上の総画素数に対する白画素数の割合がしきい値を超えた場合に、空白領域が存在すると判断する請求項６に記載の二次元コードの検出方法。
【請求項８】
前記二次元コード領域の周囲四方に、前記二次元コード領域の外周から所定距離内の仮想領域を設定し、該仮想領域の総画素数に対する白画素数の割合がしきい値を超えた場合に、空白領域が存在すると判断する請求項６に記載の二次元コードの検出方法。
【請求項９】
前記しきい値を、前記二次元コードのシンボルサイズに応じて定める請求項４、５、７、及び８のいずれか１項に記載の二次元コードの検出方法。
【請求項１０】
前記二次元コード領域の白画素数と黒画素数との比又は差を前記特徴として抽出する請求項１に記載の二次元コードの検出方法。
【請求項１１】
前記二次元コード領域では前記白画素数と黒画素数とが略等しくなる請求項９に記載の二次元コードの検出方法。
【請求項１２】
前記二次元コード領域を所定方向に走査した場合の白黒反転回数が所定範囲内にあるという特徴を抽出する請求項１に記載の二次元コードの検出方法。
【請求項１３】
前記二値化された画像が複数の二次元コードを含む場合に、
更に、位置が特定された中心点の中から、直角二等辺三角形の頂点を構成し且つ前記３つの中心点とは組み合わせが異なる３つの中心点を選択し、
選択された中心点に対応する位置検出要素パターンにより定まる二次元コード領域及びその周辺領域から二次元コードとしての特徴を抽出し、
二次元コードとしての特徴が抽出された場合には、該二次元コード領域に１つの二次元コードが存在すると判定し、
複数の二次元コードを順次検出する請求項１乃至１２のいずれか１項に記載の二次元コードの検出方法。
【請求項１４】
直角二等辺三角形の各頂点に対応する位置に３つの位置検出要素パターンが設けられ、且つ該位置検出要素パターンにより定まる領域にデータ領域が設けられた二次元コードを検出する二次元コードの検出装置であって、
前記二次元コードを含む画像を読み取る画像読取手段と、
前記画像読取手段で読み取られた画像を二値化する二値化手段と、
前記二値化手段で二値化された画像に含まれる二次元コードの位置検出要素パターンを検出し、検出された位置検出要素パターンの中心点の位置を特定する基準位置特定手段と、
前記基準位置特定手段により位置が特定された中心点の中から、直角二等辺三角形の頂点を構成する３つの中心点を選択し、選択された中心点に対応する位置検出要素パターンにより定まる二次元コード領域及びその周辺領域から二次元コードとしての特徴を抽出する特徴抽出手段と、
前記特徴抽出手段により二次元コードとしての特徴が抽出された場合には、該二次元コード領域に１つの二次元コードが存在すると判定する判定手段と、
を備える二次元コードの検出装置。
【請求項１５】
請求項１４に記載された検出装置により検出された二次元コードを復号する復号手段を更に備えた二次元コードの読取装置。
【請求項１６】
前記復号手段による二次元コードの復号前に、前記二次元コードの画素配列方向が走査方向と平行になる又は直交するように、前記二次元コードの回転位置を補正する位置補正手段を更に備えた請求項１５に記載の二次元コードの読取装置。
【請求項１７】
コンピュータにより、直角二等辺三角形の各頂点に対応する位置に３つの位置検出要素パターンが設けられ、且つ該位置検出要素パターンにより定まる領域にデータ領域が設けられた二次元コードを検出する二次元コードの検出プログラムであって、
二値化された画像に含まれる複数の位置検出要素パターンを検出し、
検出された位置検出要素パターンの中心点の位置を特定し、
位置が特定された中心点の中から、直角二等辺三角形の頂点を構成する３つの中心点を選択し、
選択された中心点に対応する位置検出要素パターンにより定まる二次元コード領域又はその周辺領域から二次元コードとしての特徴を抽出し、
二次元コードとしての特徴が抽出された場合には、該二次元コード領域に１つの二次元コードが存在すると判定し、
二次元コードを検出する二次元コードの検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コードの検出方法、検出装置、及び検出プログラムに係り、特に、二次元コードを含む画像から二次元コードを検出する二次元コードの検出方法、検出装置、及び検出プログラムに関する。
【背景技術】
【０００２】
異なる太さや間隔の縦線の組み合わせによってデータを表現するバーコードは、商品の情報管理など広く世の中で活用されている。バーコードは、縦線が一方向に配列された一次元のコードである。近時、表現できる情報量の多さから、二次元コードの利用が広まっている。二次元コードとは、二進コードで表されるデータをセル化して、二次元のマトリックス上にパターンとして配置したコードである（特許文献１）。この二次元コードの代表例であるＱＲコードに関しては、その基本仕様がＪＩＳ（JIS-X-0510）で規格化されている。
【０００３】
例えば、紙文書の記載内容を二次元コードに変換し、その紙文書の余白に二次元コードを付加しておくことで、紙文書をスキャンしたときに、付加された二次元コードを認識して復号すれば、光学式文字読取装置（ＯＣＲ）などを用いることなく、その文書の記載内容を電子データとして取得することが可能である。
【０００４】
ＱＲコードのシンボルは、図３に示すように、正方形に配置されたモジュールからなり、データの符号化に使用される符号化領域と、位置検出パターン等の機能パターンとを含んで構成されている。位置検出パターンは、シンボルの３隅に配置される３個の位置検出要素パターンから構成される機能パターンである。３個の位置検出要素パターンの中心点は、各中心点を頂点とする直角二等辺三角形を構成する。また、シンボルの四辺の周囲には、クワイエットゾーンと呼ばれる余白領域が設けられている。
【０００５】
ＱＲコードを復号する場合には、専用のＱＲコードリーダで走査してシンボルを光学的に読み取り、読み取った画像からＱＲコードを検出し、検出されたＱＲコードを復号する（特許文献２）。ＱＲコードを検出するために、３個の位置検出要素パターンを検出し、その位置検出要素パターンの中心点の座標を全て算出する。中心点の座標の算出は、ＪＩＳ規格（JIS-X-0510）のp65-66に記載された方法に従って行なう。位置検出要素パターンの中心点の座標が特定されることで、位置検出パターンの位置が求められ、ＱＲコードが検出される。
【０００６】
また、上述した二次元コードは、一次元コードよりも表現できる情報量が多いが、それでもその情報量には限界がある。このため、上記ＪＩＳ規格のp22 5.3.2.7の「連結モード」の項に記載されているように、大量の情報をＱＲコードで表現する場合には、その情報を複数のＱＲコードに分割して表現している。従来、この連結モードでＱＲコードを復号する場合には、シンボルを１つずつ読み取って、複数のＱＲコードを順に復号していた。
【特許文献１】特許第２９３８３３８号公報
【特許文献２】特開平０６−０１２５１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の検出方法では、読み取った画像中にノイズが含まれる場合に、ノイズを位置検出要素パターンと誤認識する等して、位置検出パターンが誤検出され、ＱＲコードを正確に検出することができない、という問題があった。例えば「回」という漢字が位置検出要素パターンと誤認識されるような場合である。
【０００８】
また、シンボルの光学的読み取りに、フラットベッドスキャナ等の汎用スキャナを用いることができれば、ＱＲコードの利便性は著しく向上する。しかしながら、情報が複数のＱＲコードで表現されている場合には、汎用スキャナで走査して得られた画像には複数のシンボルが含まれ、個々のＱＲコードを正確且つ迅速に検出することが難しい、という問題があった。
【０００９】
即ち、複数のシンボルを含む画像からは、多数の位置検出要素パターンが検出される。例えばＱＲコードが１つであれば、位置検出要素パターンは３個であるが、ＱＲコードが４個あれば、位置検出要素パターンはその４倍の１２個となる。このため、図４に示すように、異なるシンボルに含まれる位置検出要素パターンが組み合わされて、位置検出パターンと誤認識され、ＱＲコードを正確に検出することが難しくなる。
【００１０】
また、位置検出要素パターンの全部の組み合わせを考慮することで、誤認識を回避することは可能であるが、この場合には最適な組み合わせになるまで、演算を延々と繰り返すことになる。その結果、演算量が増えて処理速度が遅くなり、ＱＲコードを迅速に検出することが難しくなる。
【００１１】
本発明は、上記問題を解決すべく成されたものであり、本発明の目的は、位置検出パターンの誤認識による二次元コードの誤検出を防止して、二次元コードを含む画像から二次元コードを正確に検出することができる、二次元コードの検出方法、検出装置、及び検出プログラムを提供することにある。
【００１２】
また、本発明の他の目的は、複数の二次元コードを含む画像から個々の二次元コードを正確且つ迅速に検出することができる、二次元コードの検出方法、検出装置、及び検出プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明の二次元コードの検出方法は、
直角二等辺三角形の各頂点に対応する位置に３つの位置検出要素パターンが設けられ、且つ該位置検出要素パターンにより定まる領域にデータ領域が設けられた二次元コードを検出する二次元コードの検出方法であって、
前記二次元コードを含む画像を読み取り、
読み取られた画像を二値化し、
二値化された画像に含まれる複数の位置検出要素パターンを検出し、
検出された位置検出要素パターンの中心点の位置を特定し、
位置が特定された中心点の中から、直角二等辺三角形の頂点を構成する３つの中心点を選択し、
選択された中心点に対応する位置検出要素パターンにより定まる二次元コード領域又はその周辺領域から二次元コードとしての特徴を抽出し、
二次元コードとしての特徴が抽出された場合には、該二次元コード領域に１つの二次元コードが存在すると判定し、
二次元コードを検出することを特徴としている。
【発明の効果】
【００１４】
本発明によれば、３つの位置検出要素パターンの中心点により直角二等辺三角形の頂点が構成されるという条件に加え、３つの位置検出要素パターンを含む二次元コード領域及びその周辺領域から二次元コードとしての特徴が抽出されることを条件として、二次元コード領域に１つの二次元コードが存在すると判定するので、位置検出パターンの誤認識による二次元コードの誤検出を防止して、二次元コードを含む画像から二次元コードを正確に検出することができる。また、複数の二次元コードを含む画像の場合であっても、かかる画像から個々の二次元コードを正確且つ迅速に検出することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。ここでは、二次元コードとして「ＱＲコード」を用いる例について説明する。
【００１６】
（第１の実施の形態）
図１は、本実施の形態に係るＱＲコードの処理装置の概略構成を示すブロック図である。この装置は、画像データからのＱＲコードの検出に、本発明を適用したものである。図１に示すように、この処理装置は、原稿画像からラスター画像データを取得する画像入力装置１０を備えている。画像入力装置１０は、紙原稿から原稿画像を読み取るスキャナやデジタルカメラ等で構成されている。紙原稿に複数のＱＲコードが付されている場合には、画像入力装置１０は、複数のＱＲコードを含むラスター画像データを取得する。
【００１７】
また、処理装置は、画像入力装置１０により取得されたラスター画像データを保持すると共にワーキングエリアとして機能するメモリ１２と、プログラムを読み込み各種処理を実行するＣＰＵ１４と、ＱＲコードの検出処理及び復号処理を実行するプログラム等を記憶したＲＯＭ１６と、ネットワーク経由で他のコンピュータに接続するための外部インタフェース１８と、プリンタ等の画像出力装置２０と、ＱＲコードを復号して得られたデータに関連する文書データを蓄積したデータベース２２と、を備えている。
【００１８】
これら画像入力装置１０、メモリ１２、ＣＰＵ１４、ＲＯＭ１６、外部インタフェース１８、画像出力装置２０、及びデータベース２２は、データバス２４で相互に接続されている。
【００１９】
次に、上記の処理装置で、複数のＱＲコードを含むラスター画像データを取得し、複数のＱＲコードの各々を復号する手順について説明する。図２は、ＣＰＵ１４により実行される処理ルーチンを示すフローチャートである。
【００２０】
まず、ステップ１００で、画像入力装置１０からラスター画像データを取得し、メモリ１２に保持する。次のステップ１０２で、メモリ１２上でその画像データを二値化する。二値化方式はしきい値を用いた単純二値化でも良いし、その他の二値化方式でもよい。次のステップ１０４で、二値化されたラスター画像データから、ＱＲコードの位置検出要素パターンの中心点の座標（以下、「中心座標」という場合がある。）を全部検出し、検出した中心点の座標をリスト化して、メモリ１２に保持する。検出方法としては、例えばＪＩＳ規格（JIS-X-0510）に記載された既存の方法を用いることができる。
【００２１】
次に、ステップ１０６で、同じシンボルに含まれる３個の位置検出要素パターンの組み合わせを検出する「組み合わせ検出処理」を実行する。ステップ１０４で、位置検出要素パターンの中心点の座標が検出され、リスト化されている。リスト化の段階では、どの３個の組み合わせが同じシンボルに含まれるか不明である。このリスト中から、同じシンボルに含まれる３個の位置検出要素パターンの組み合わせを検出することにより、各シンボルの位置検出パターンの位置が求められ、ＱＲコードが検出される。
【００２２】
ここで、「組み合わせ検出処理」の概要を簡単に説明する。図１０は、ＱＲコードのシンボルの構造を示す図である。図１０に示すように、ＱＲコードのシンボル３０は、３個の位置検出要素パターン３２Ａ、３２Ｂ、３２Ｃを有している。これら位置検出要素パターン３２Ａ、３２Ｂ、３２Ｃの中心点ａ、ｂ、ｃは、図示するように、各中心点を頂点とする直角二等辺三角形３６を構成する。また、シンボル３０の四辺の周囲には、何も表示しない余白領域（以下、「クワイエットゾーン」という。）３４が設けられている。クワイエットゾーン３４の外周３４Ａを点線で図示する。ＪＩＳ規格によれば、クワイエットゾーン３４の幅は、４モジュールと規定されている。なお、モジュールとは、ＱＲコードにおいて１ビットの情報を表示する単位正方形である。
【００２３】
本実施の形態では、上述したシンボルの特徴を利用して組み合わせを検出する。具体的には、直角二等辺三角形を構成する３個の位置検出要素パターンの中心点の座標の組み合わせを検出し、その３個の座標の周辺にクワイエットゾーンが有るか否かを判定する。そして、クワイエットゾーンがある場合には、同じシンボルに含まれる３個の位置検出要素パターンの組み合わせであると判定することができる。なお、組み合わせ検出処理の詳細については後述する。
【００２４】
ステップ１０６で、位置検出要素パターンの組み合わせが全部検出されると、次に、その中から１組の組み合わせを選択し、その組み合わせに係るＱＲコードを復号する。即ち、まず、ステップ１０８で、１組の組み合わせを選択し、位置検出要素パターンの中心点の座標から、シンボルの回転角度を演算し、演算した回転角度に基づいてシンボルの向きを補正し、基準座標に対しＱＲコードが正立した状態にする。次のステップ１１０で、向きが補正されたシンボルを切り出し（トリミング）、メモリ１２に保持する。次のステップ１１２で、シンボルの符号化領域を復号する。復号方法としては、例えば上記のＪＩＳ規格に記載された既存の方法を用いることができる。
【００２５】
次に、ステップ１１４で、検出された全部の組み合わせについてＱＲコードを復号したか否かを判断する。ここで、肯定判断の場合はルーチンを終了し、否定判断の場合はステップ１０８に戻って、他の１組の組み合わせを選択し、ステップ１０８〜ステップ１１２の処理を繰り返す。即ち、組み合わせ検出の結果、複数の組み合わせが検出された場合は、全部の組み合わせについて回転補正、トリミング、復号の処理を行う。
【００２６】
また、上記の処理装置では、復号されたデータに基づいて、様々な処理を行うことができる。例えば、復号されたデータが、データベース２２に蓄積された文書を識別するＩＤ番号（以下、「文書ＩＤ」という。）である場合には、この文書ＩＤを検索キーとしてデータベース２２を検索し、データベース２２から文書データ本体を取得する。そして、取得した文書データを、画像出力装置２２を用いてプリントする。また、得られた文書データを、外部インタフェース１８を経由して他のコンピュータに転送することもできる。
【００２７】
ここで、図２のステップ１０６で実行される「組み合わせ検出処理」について詳細に説明する。上述した通り、この処理は、位置検出要素パターンの中心点の座標が全て検出され、リスト化された後に実行される。１個のＱＲコードのシンボルには３個の位置検出要素パターンが含まれるので、Ｎ個のＱＲコードが有る場合には、３Ｎ個の座標がリスト化されている。
【００２８】
図５は、組み合わせ検出処理のサブルーチンを示すフローチャートである。まず、ステップ２００で、メモリ１２に保持された中心点の座標リストを参照する。位置検出パターンを構成する３個の位置検出要素パターンの中心点をＡ、Ｂ、Ｃとし、ステップ２０２〜ステップ２０６で、中心点Ａ、Ｂ、Ｃに対応させて、座標リストから３個の座標を選択する。
【００２９】
３Ｎ個から３個を総当たりになるように組み合わせる。組み合わせ数は、下記式に示すように、３Ｎから３を取り出す組み合わせ（＝コンビネーション）の計算で求まる。
【００３０】
【数１】
2007094584.tif 000003
【００３１】
例えば、ＱＲコードが２個ならば、位置検出要素パターンの数は２Ｎ＝６個になり、６個から３個と選択する組み合わせは２０通りとなる。ＱＲコードが１０個ならば、組み合わせは４０６０通りとなる。
【００３２】
次に、ステップ２０８で「直角二等辺三角形の判定処理」を実行する。かかる判定処理では、選択された３個の座標で特定される中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成するか否かを判定する。肯定判定（Ｔｒｕｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成し、３個の位置検出要素パターンが同じシンボルに含まれる可能性があるため、次のステップ２１０の「クワイエットゾーンの有無の判定処理」に進む。
【００３３】
ステップ２１０では、選択された３個の座標から、ＱＲコードのシンボルが存在する可能性のある領域（候補領域）を想定し、候補領域の周囲にクワイエットゾーンが存在するか否かを判定する。肯定判定（Ｔｒｕｅ）の場合には、候補領域の周囲にクワイエットゾーンが存在し、候補領域にシンボルが存在する可能性が非常に高いため、ステップ２１２で、選択された３個の座標を、位置検出パターンの位置を表す座標群としてリスト化し、メモリ１２に格納する。即ち、選択された３個の座標に対応した位置検出要素パターンが、同じシンボルに含まれ、位置検出パターンを構成すると判断して、当該座標の組み合わせをメモリ１２に格納するのである。
【００３４】
種々の要因により位置検出パターンの誤認識が発生する。例えば、ラスター画像データに含まれるノイズが、位置検出要素パターンと認識される場合もある。また、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成していても、異なるシンボルに含まれる位置検出要素パターンが組み合わされている場合もある。しかしながら、ＱＲコードのシンボルは、その四辺の周囲にクワイエットゾーンが設けられるという特徴を有しているので、本実施の形態のように、候補領域の周囲にクワイエットゾーンが存在するか否かを判定することで、異なるシンボルに含まれる位置検出要素パターンが組み合わされて、位置検出パターンと誤認識されるのを防止することができる。
【００３５】
また、同じシンボルに含まれる位置検出要素パターンの組み合わせ（３個の座標の組み合わせ）が順次特定されるので、演算を延々と繰り返す必要が無く、ＱＲコードの検出処理が簡単になり、全部の組み合わせが特定されるまでの時間が短縮される。
【００３６】
一方、ステップ２０８又はステップ２１０で否定判定（Ｆａｌｓｅ）の場合には、ステップ２１４〜ステップ２１８で、全部の組み合わせが選択されたか否かを検証し、全部の組み合わせが選択されていればルーチンを終了する。一方、ここで、選択されていない組み合わせがある場合には、ステップ２０２〜ステップ２０６に戻って、中心点Ａ、Ｂ、Ｃに対応させて、座標リストから３個の座標の異なる組み合わせを選択する。そして、新たな組み合わせについて、ステップ２０８〜ステップ２１２の処理を繰り返す。
【００３７】
ここで、図５のステップ２０８で実行される「直角二等辺三角形の判定処理」について詳細に説明する。図７は、直角二等辺三角形の判定処理のルーチンを示すフローチャートである。
【００３８】
まず、ステップ３００で、選択された３個の座標を取得し、ステップ３０２で、中心点Ａが直角二等辺三角形の直角頂となり得るか否かを判定する。ステップ３０２で肯定判定（Ｔｒｕｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成する（Ｔｒｕｅ）と判定する。一方、ステップ３０２で否定判定（Ｆａｌｓｅ）の場合には、次のステップ３０４に進み、中心点Ｂが直角二等辺三角形の直角頂となり得るか否かを判定する。
【００３９】
ステップ３０４で肯定判定（Ｔｒｕｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成する（Ｔｒｕｅ）と判定する。一方、ステップ３０４で否定判定（Ｆａｌｓｅ）の場合には、次のステップ３０６に進み、中心点Ｃが直角二等辺三角形の直角頂となり得るか否かを判定する。ステップ３０６で肯定判定（Ｔｒｕｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成する（Ｔｒｕｅ）と判定する。一方、ステップ３０６で否定判定（Ｆａｌｓｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成しない（Ｆａｌｓｅ）と判定する。
【００４０】
ここで、図７のステップ３０２〜３０６で実行される「直角頂の判定処理」について詳細に説明する。図６は、直角二等辺三角形の幾何学的な成立条件を説明するための図である。また、図８は、図７のステップ３０２で実行される直角頂の判定処理のルーチンを示すフローチャートである。
【００４１】
図６に示すように、点Ａ、Ｂ、Ｃを各頂点とする三角形が、点Ａを直角頂とする直角二等辺三角形であるというためには、線分ＡＢと線分ＡＣとがなす角度θが９０°であり、且つ線分ＡＢと線分ＡＣの長さが等しくなければならない。
【００４２】
従って、まず、図８のステップ４００で、選択された３個の座標を取得し、ステップ４０２で、取得した座標から線分ＡＢと線分ＡＣとがなす角度θを演算し、ステップ４０４で、演算結果に基づいて角度θが９０°か否かを判断する。即ち、点Ａから点Ｂに向かうベクトルと点Ａから点Ｃに向かうベクトルとの内積がゼロになるか否かを判断する。ここで、否定判断（Ｆａｌｓｅ）の場合には、中心点Ａを直角頂とする直角二等辺三角形ではない（Ｆａｌｓｅ）と判定することができる。一方、ステップ４０４で肯定判断（Ｔｒｕｅ）の場合には、次のステップ４０６に進む。
【００４３】
ステップ４０６で、取得した座標から線分ＡＢと線分ＡＣの長さを各々演算し、ステップ４０８で、演算結果に基づいて線分ＡＢと線分ＡＣの長さが等しいか否かを判断する。ここで、否定判断（Ｆａｌｓｅ）の場合には、中心点Ａを直角頂とする直角二等辺三角形ではない（Ｆａｌｓｅ）と判定することができる。一方、ステップ４０８で肯定判断（Ｔｒｕｅ）の場合には、中心点Ａを直角頂とする直角二等辺三角形である（Ｔｒｕｅ）と判定することができる。
【００４４】
次に、図５のステップ２１０で実行される「余白領域（クワイエットゾーン）有無の判定処理」について詳細に説明する。図１１及び図１８は、クワイエットゾーンの有無の判定方法を説明するための図である。
【００４５】
図１１に示すように、ＱＲコードが存在する場合、シンボル３０のクワイエットゾーン３４に引かれた仮想線（スキャンライン）３８上をスキャンすると、このスキャンライン３８は、全て、画素値が「白」である画素（以下、「白画素」という。）で構成される。なお、画素値が「黒」である画素は「黒画素」という。また、スキャンライン３８を図示した以外は、図１０に示すＱＲコードと同じ構成を備えているため、同じ構成部分には同じ符号を付して説明を省略する。
【００４６】
本実施の形態では、図１８に示すように、３個の位置検出要素パターン４２Ａ、４２Ｂ、４２Ｃの中心点をＡ、Ｂ、Ｃとし、ＱＲコードのシンボルが存在する可能性のある領域（候補領域）４０を想定する。また、候補領域４０の周囲にクワイエットゾーンが存在すると仮定し、クワイエットゾーンの外周４４Ａを想定する。更に、候補領域４０の外周４０Ａとクワイエットゾーンの外周４４Ａとの間にスキャンライン４８を設定する。
【００４７】
このスキャンライン４８上をスキャンする。即ち、メモリ上に展開された画像データの画素値を順番に取得する。スキャンライン４８が白画素で構成されていれば、候補領域４０の周囲にクワイエットゾーンが存在すると判定することができる。即ち、シンボルの周囲にクワイエットゾーンが存在するというＱＲコードの特徴を備えており、候補領域４０にシンボルが存在する可能性が非常に高い。
【００４８】
スキャンライン４８は、例えば、クワイエットゾーンの中心線に沿って設定することができる。即ち、外周４０Ａと外周４４Ａとの中間位置にスキャンライン４８を設定することができる。スキャンライン４８を、上記した中心線に沿って候補領域４０の四辺の周囲に設定した場合、スキャンライン４８で囲まれた領域の形状は、候補領域４０と同じ正方形となる。スキャンライン４８の基準となるのは、候補領域４０の中心点Ｅから中心点Ａ、Ｂ、Ｃの方向に延びた延長線上の点ＡS、ＢS、ＣSと、点ＡS、ＢS、ＣSと共に正方形の頂点を構成する点ＤSである。点ＤSの座標は点ＡS、ＢS、ＣSの座標から算出される。
【００４９】
図１２は、クワイエットゾーンが存在すると判定される例を示す図である。この場合は、中心点Ａ、Ｂ、Ｃが直角二等辺三角形４６の各頂点を構成すると判定され、中心点Ａ、Ｂ、Ｃの座標から想定された候補領域の周囲にスキャンライン４８が設定されるが、スキャンライン４８が白画素で構成されているので、候補領域の周囲にクワイエットゾーンが存在すると判定される。
【００５０】
一方、図１３は、中心点Ａ、Ｂ、Ｃが直角二等辺三角形４６の各頂点を構成すると判定されたにも拘わらず、クワイエットゾーンが存在しないと判定される例を示す図である。このように、中心点Ａ、Ｂ、Ｃの全部が同じシンボルに属していなくても、中心点Ａ、Ｂ、Ｃが直角二等辺三角形４６の各頂点を構成する場合がある。この場合、中心点Ａ、Ｂ、Ｃの座標から想定された候補領域の周囲にスキャンライン４８が設定されると、スキャンライン４８は白画素と黒画素とで構成されることになり、候補領域の周囲にクワイエットゾーンは存在しないと判定される。
【００５１】
図１４は、余白領域（クワイエットゾーン）有無の判定処理のルーチンを示すフローチャートである。上述した通り、クワイエットゾーンの有無を判定するポイントは、スキャンラインの位置の決定方法にある。スキャンラインの基準点の座標は、中心点Ａ、Ｂ、Ｃの座標から算出される。
【００５２】
まず、ステップ５００で、点Ｂと点Ｃとを結ぶ線分ＢＣの中点Ｅの座標を演算する（図１８参照）。点Ｅは、点Ａを直角頂とした場合の直角二等辺三角形の長辺の中点である。また、点Ｅは、候補領域４０の中心点であり、候補領域４０にシンボルが存在する場合にはＱＲコードの中心点でもある。点Ｂの座標を（ｘb、ｙb）とし、点Ｃの座標を（ｘc、ｙc）とすると、点Ｅの座標（ｘe、ｙe）は下記式で表される。
【００５３】
【数２】
2007094584.tif 000004
【００５４】
次に、ステップ５０２〜ステップ５０６で、スキャンラインの基準点ＡS、ＢS、ＣSの座標を演算する。まず、ステップ５０２で、点Ａの座標から基準点ＡSの座標を演算し、ステップ５０４で、点Ｂの座標から基準点ＢSの座標を演算し、ステップ５０６で、点Ｃの座標から基準点ＣSの座標を演算する。なお、演算方法の詳細については後述する。そして、ステップ５０８で、点Ｅを中心として基準点ＡSと点対称な位置にある基準点ＤSの座標を演算する。下記のベクトル演算により点ＤSの座標を求めることができる。これにより、基準点ＡS、ＢS、ＣS、ＤSを結ぶスキャンラインが設定される。
【００５５】
【数３】
2007094584.tif 000005
【００５６】
次に、ステップ５１０で、スキャンライン上をスキャンする。例えば、基準点ＡS→基準点ＢS→基準点ＤS→基準点ＣS→基準点ＡSの順にスキャンする。次のステップ５１２で、スキャンライン上の総画素数Ｎ、白画素数Ｗ、及び総画素数に対する白画素数の割合Ｗ／Ｎを各々演算する。続くステップ５１４で、ＣＰＵ１４のメモリ内に予め設定された「しきい値ＴＨ」を参照し、演算された総画素数に対する白画素数の割合Ｗ／Ｎが「しきい値ＴＨ」よりも大きいか否かを判断する。
【００５７】
ステップ５１４で肯定判断（ＯＫ）の場合は、候補領域の周囲にクワイエットゾーンが存在する（Ｔｒｕｅ）と判定して、ルーチンを終了する。一方、否定判断（ＮＧ）の場合は、候補領域の周囲にクワイエットゾーンは存在しない（Ｆａｌｓｅ）と判定して、ルーチンを終了する。
【００５８】
図１５は、位置検出要素パターンの中心点Ａとスキャンラインの基準点ＡSの位置関係を示す図である。図１５に示すように、ＱＲコードの中心点Ｅと位置検出要素パターン４２Ａの中心点Ａとを結ぶ線分ＥＡを、ＱＲコードの外側にクワイエットゾーンの外周４４Ａまで延長する。この延長線は、位置検出要素パターン４２Ａの頂点Ａpを通過して、基準点ＡSでスキャンライン４８と交差する。延長線上の画素値を見ていくと、中心点Ａでは黒であるが、次に白に反転し、更に黒に反転する。そして、位置検出要素パターン４２Ａの頂点Ａpで、再度白に反転する。
【００５９】
図１６は、位置検出要素パターンの構造を示す図である。位置検出要素パターンの構造はＪＩＳ規格で規定されており、図示した通り、３個の同心正方形が重なった形状であり、黒の７×７モジュール５０、白の５×５モジュール５２、及び黒の３×３モジュール５４から構成されている。各モジュール幅の比率は１：１：３：１：１である。
【００６０】
ここでモジュールサイズを１とすると、図１５に示すように、線分ＡＡpの長さは３．５と表現される。なお、モジュールサイズとは、ＱＲコードを描画する際の白黒要素の最小幅である。クワイエットゾーンの幅Ｗqは、４モジュールサイズとＪＩＳ規格で規定されている。スキャンライン４８を、クワイエットゾーンの中心線に沿って設定すると、線分ＡSＡpの長さは２と表現される。換言すれば、基準点ＡSの位置は長さ３．５の線分ＡＡpを長さ２だけ延長した位置となる。ベクトル表記すると図１７のようになる。従って、下記のベクトル演算により、基準点ＡSの座標を求めることができる。また、基準点ＢS、基準点ＣSの座標も同様にして求めることができる。
【００６１】
【数４】
2007094584.tif 000006
【００６２】
以上説明した通り、本実施の形態では、選択した３個の位置検出要素パターンの中心点が直角二等辺三角形の各頂点を構成するという条件に加えて、３個の中心点の座標から想定される候補領域の周囲にクワイエットゾーンが存在するという条件を満たす場合に、選択した３個の座標に対応した位置検出要素パターンが、同じシンボルに含まれ、位置検出パターンを構成すると判断するので、異なるシンボルに含まれる位置検出要素パターンが組み合わされて、ＱＲコードの位置検出パターンと誤認識されるのを防止することができる。これにより、複数のＱＲコードを含む画像から個々のＱＲコードを正確に検出することができる。
【００６３】
また、本実施の形態では、候補領域の周囲にクワイエットゾーンが存在するという条件を加えることで、同じシンボルに含まれる位置検出要素パターンの組み合わせ（３個の座標の組み合わせ）が順次特定されるので、演算を延々と繰り返す必要が無く、ＱＲコードの検出処理が簡単になり、全部の組み合わせが特定されるまでの時間が短縮される。これにより、複数のＱＲコードを含む画像から個々のＱＲコードを正確且つ迅速に検出することができる。
【００６４】
なお、上記第１の実施の形態では、クワイエットゾーンの有無を判定する場合に、演算された総画素数に対する白画素数の割合Ｗ／Ｎを評価する「しきい値ＴＨ」として、予め設定した値を用いる例について説明したが、原稿画像から読み取ったＱＲコードのシンボルサイズに応じて、しきい値を動的に設定することもできる。
【００６５】
ＪＩＳ規格ではＱＲコードの型番が大きくなると、ＱＲコードの面積が大きくなるので、クワイエットゾーンの有無を判定するためのスキャンラインもこれに応じて長くなる。スキャンラインが長くなると、スキャンライン上にノイズが存在する可能性も多くなる。この場合に「しきい値ＴＨ」を小さく設定することで、多少のノイズがあってもクワイエットゾーンの有無を正確に判定することが可能になる。
【００６６】
例えば、ＱＲコードの中心点Ｅの座標から位置検出要素パターンの中心点Ａの座標までの距離をモジュール数で換算した値Ｒに基づいて「しきい値ＴＨ」の値を決定する。図１９は、換算値Ｒの算出方法を説明するための概念図である。ＱＲコードの中心点Ｅの座標から位置検出要素パターン４２Ａの中心点Ａの座標までの距離Ｌ１と、位置検出要素パターン４２Ａの中心点Ａから位置検出要素パターン４２Ａの頂点Ａpまでの距離Ｌ２とを各々算出する。なお、距離Ｌ１及び距離Ｌ２の値はモジュール数（＝画素数）で換算された値である。距離Ｌ２の値は３．５モジュールに相当する。従って、距離Ｌ１に相当するモジュール数Ｒは下記式から求めることができる。
【００６７】
【数５】
2007094584.tif 000007
【００６８】
しきい値ＴＨは、上記の換算値Ｒに基づいて下記計算式から求めることができる。Ａ、Ｂは定数である。この計算式に従ってしきい値ＴＨを求めることで、ＱＲコードの型番に応じて最適なしきい値ＴＨを設定することが可能となる。
【００６９】
【数６】
2007094584.tif 000008
【００７０】
また、上記第１の実施の形態では、スキャンラインを候補領域の四辺の周囲に設定する例について説明したが、図２０に示すように、基準点Ｃｓ、基準点Ａｓ、基準点Ｂｓを結ぶスキャンライン４８を、候補領域４０に対し少なくとも直角二等辺三角形の短辺側に設定することで、クワイエットゾーンの有無を判定することが可能になる。この場合には、図１８に示す基準点ＤSの座標を演算する必要がなくなり、スキャンラインの設定が容易になる。また、スキャンラインが短くなることで、ノイズの影響を受け難くなる。
【００７１】
また、上記第１の実施の形態では、スキャンラインを用いてクワイエットゾーンの有無を判定する例について説明したが、図２１に示すように、候補領域４０の周囲に所定範囲のスキャン領域７８（斜線部）を設定し、スキャン領域７８上をスキャンすることで、クワイエットゾーンの有無を判定することも可能である。
【００７２】
また、上記第１の実施の形態では、直角二等辺三角形の判定処理の後に、クワイエットゾーンの有無の判定処理を行う例について説明したが、処理の順序を入れ替えて、クワイエットゾーンの有無の判定処理の後に、直角二等辺三角形の判定処理を行うこともできる。
【００７３】
更に、上記第１の実施の形態では、位置検出パターンを構成すると判断された３個の位置検出要素パターンの組み合わせ（３個の座標の組み合わせ）をメモリに格納する例について説明したが、図２２に示すように、３個の座標の組み合わせをメモリに格納する（図５のステップ２１２）代わりに、ステップ２１１で、３個の座標の組み合わせを別途メモリに格納する等して管理し、ステップ２１３で、メモリに格納した３個の座標を最初のリストから削除するように、ルーチンを変更してもよい。このような処理手順とすることで、判定回数を削減し、処理量を減らして、処理時間を短縮することが可能となる。なお、ステップ２１１及びステップ２１３以外は図５に示す処理手順と同一であるため、同一の手順には同じ符号を付して説明を省略する。
【００７４】
（第２の実施の形態）
第２の実施の形態では、位置検出要素パターンの中心点の座標を検出し、リスト化して管理する第１の実施の形態とは異なる方法で、中心点の座標を管理する。図２３は、組み合わせ検出処理のサブルーチンを示すフローチャートである。このサブルーチンは、図２に示すルーチンのステップ１０６で実行される。これ以外の点は、第１の実施の形態に係る処理手順と同様である。
【００７５】
図２３に示す組み合わせ検出処理は、位置検出要素パターンの中心点の座標が全て検出され、リスト化された後に実行される。１個のＱＲコードのシンボルには３個の位置検出要素パターンが含まれるので、Ｎ個のＱＲコードが有る場合には、３Ｎ個の位置検出要素パターンの中心点の座標がリスト化されている。このリスト化の際に、全部の座標の値は有効であると設定する。
【００７６】
まず、ステップ６００で、メモリ１２に保持された中心点の座標リストを参照する。次に、位置検出パターンを構成する３個の位置検出要素パターンの中心点をＡ、Ｂ、Ｃとし、ステップ６０２〜ステップ６１２で、中心点Ａ、Ｂ、Ｃに対応させて、座標リストから３個の座標を組み合わせて選択する。
【００７７】
ステップ６０２で、座標リストから中心点Ａに対応する座標を選択し、ステップ６０４で、選択された座標が有効か否かを判断する。否定判断（Ｆａｌｓｅ）の場合、即ち、選択された座標が無効である場合には、ステップ６２２に進んで、座標リストから有効な座標を選択して、中心点Ａに対応する座標データを入れ替える。肯定判断（Ｔｒｕｅ）の場合、即ち、選択された座標が有効である場合には、次のステップ６０６に進む。
【００７８】
次に、ステップ６０６で、座標リストから中心点Ｂに対応する座標を選択し、ステップ６０８で、選択された座標が有効か否かを判断する。否定判断（Ｆａｌｓｅ）の場合、即ち、選択された座標が無効である場合には、ステップ６２４に進んで、座標リストから有効な座標を選択して、中心点Ｂに対応する座標データを入れ替える。肯定判断（Ｔｒｕｅ）の場合、即ち、選択された座標が有効である場合には、次のステップ６１０に進む。
【００７９】
次に、ステップ６１０で、座標リストから中心点Ｃに対応する座標を選択し、ステップ６１２で、選択された座標が有効か否かを判断する。否定判断（Ｆａｌｓｅ）の場合、即ち、選択された座標が無効である場合には、ステップ６２６に進んで、座標リストから有効な座標を選択して、中心点Ｃに対応する座標データを入れ替える。肯定判断（Ｔｒｕｅ）の場合、即ち、選択された座標が有効である場合には、次のステップ６１４に進む。
【００８０】
次に、ステップ６１４で、直角二等辺三角形の判定処理を実行する。直角二等辺三角形の判定処理は、図７に示すルーチンに従い実行される。ここで肯定判定（Ｔｒｕｅ）の場合には、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成し、３個の位置検出要素パターンが同じシンボルに含まれる可能性があるため、次のステップ６１６に進み、クワイエットゾーンの有無の判定処理を実行する。クワイエットゾーンの有無の判定処理は、図１４に示すルーチンに従い実行される。
【００８１】
ステップ６１６で肯定判定（Ｔｒｕｅ）の場合には、ステップ６１８で、選択された３個の座標の組み合わせを、位置検出パターンの位置を表す座標群としてリスト化し、メモリ１２に格納する。即ち、選択した３個の座標に対応した位置検出要素パターンが、同じシンボルに含まれ、位置検出パターンを構成すると判断して、選択された３個の座標の組み合わせをメモリ１２に格納する。
【００８２】
次に、ステップ６２０で、座標リストにおいて格納した座標の値は無効であると設定する。選択された３個の座標に対応した位置検出要素パターンは、既に位置検出パターンを構成すると判断されているので、別のＱＲコードの位置検出パターンの中心点の座標を構成することはあり得ない。このため、選択された３個の座標の値は無効であると設定することができる。
【００８３】
次に、ステップ６２２で、全部の組み合わせが選択されたか否かを検証し、全部の組み合わせが選択されていればルーチンを終了する。一方、ここで、選択されていない組み合わせがある場合には、ステップ６０２に戻って、中心点Ａ、Ｂ、Ｃに対応させて、座標リストから３個の座標の異なる組み合わせを選択し、ステップ６０２〜ステップ６２０の処理を繰り返す。
【００８４】
以上説明した通り、本実施の形態では、選択した３個の位置検出要素パターンの中心点が直角二等辺三角形の各頂点を構成するという条件に加えて、３個の中心点の座標から想定される候補領域の周囲にクワイエットゾーンが存在するという条件を満たす場合に、選択した３個の座標に対応した位置検出要素パターンが、同じシンボルに含まれ、位置検出パターンを構成すると判断するので、第１の実施の形態と同様に、複数のＱＲコードを含む画像から個々のＱＲコードを正確且つ迅速に検出することができる。
【００８５】
また、位置検出パターンを構成すると判断された中心点の座標の値は無効であると設定し、それ以降の判定に用いないようにすることで、判定回数を削減し、処理量を減らして、処理時間を短縮することが可能である。
【００８６】
第１の実施の形態の処理は単純であるため、ハードウエア（ＨＷ）での実装や、ＤＳＰ等のファームウエアへの実装に適している。これに対し、第２の実施の形態の処理は複雑であるが、処理量が減るためソフトウエア（ＳＷ）への実装に適している。
【００８７】
（第３の実施の形態）
【００８８】
第３の実施の形態では、ＱＲコードのシンボルが存在する領域では白黒画素の比率が略等しくなるという特徴（以下、「ＱＲコードらしさ」という。）を利用して、位置検出要素パターンの組み合わせを検出する。図２４は、組み合わせ検出処理のサブルーチンを示すフローチャートである。このサブルーチンは、図２に示すルーチンのステップ１０６で実行される。これ以外の点は、第１の実施の形態に係る処理手順と同様である。
【００８９】
このサブルーチンでは、図２４に示すように、クワイエットゾーンの有無の判定処理（図５のステップ２１０）の代わりに、ステップ２０９で、ＱＲコードらしさを判定する。なお、ステップ２０９以外は図５に示す処理手順と同一であるため、同一の手順には同じ符号を付して説明を省略する。
【００９０】
ここで、図２４のステップ２０９で実行される「ＱＲコードらしさの判定処理」について詳細に説明する。図２５及び図２６は、ＱＲコードらしさの判定方法を説明するための図である。
【００９１】
図２５に示すように、ＱＲコードのシンボル３０が存在する場合に、３個の位置検出要素パターン３２Ａ、３２Ｂ、３２Ｃの中心点をａ、ｂ、ｃとすると、点ａ、ｂ、ｃを各々頂点とする正方形３３で囲まれた領域３５は、シンボル３０の内部に存在する。図２６は、この領域３５を切り出した図である。図２５及び図２６から分かるように、正方形３３で囲まれた領域３５では、白画素数と黒画素数とが略等しくなる。即ち、白画素数と黒画素数との比は略１であり、白画素数と黒画素数との差は略０である。また、白黒反転回数は比較的多くなる。
【００９２】
本実施の形態では、図２７に示すように、３個の位置検出要素パターン４２Ａ、４２Ｂ、４２Ｃの中心点をＡ、Ｂ、Ｃとし、点Ａ、Ｂ、Ｃを各々頂点とする正方形４３で囲まれた領域（候補領域）４０を想定する。この候補領域４０上をスキャンし、白画素数と黒画素数とを計算した結果、白画素数と黒画素数の比率が予め設定された範囲内に収まる場合には、候補領域４０がＱＲコードらしさを有していると判定することができる。即ち、シンボルが存在する領域では白黒画素の比率が略等しくなるというＱＲコードの特徴を備えており、候補領域４０はシンボル内に存在する可能性が非常に高い。
【００９３】
具体的には、下記式に示すように、白画素数と黒画素数との差が「しきい値Ｍ」より小さくなった場合に、ＱＲコードらしさを有していると判定する。式中、「しきい値Ｍ」はマージンを表す定数であり、ＱＲコードのシンボルサイズに応じて設定される。
【００９４】
【数７】
2007094584.tif 000009
【００９５】
一方、図２８は、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成すると判定されたにも拘わらず、ＱＲコードらしさを有していないと判定される例を示す図である。このように、中心点Ａ、Ｂ、Ｃの全部が同じシンボルに属していなくても、中心点Ａ、Ｂ、Ｃが直角二等辺三角形の各頂点を構成する場合がある。この場合、中心点Ａ、Ｂ、Ｃの座標から想定された候補領域４０では、白画素数の割合が圧倒的に大きくなり、ＱＲコードらしさを有していないと判定される。
【００９６】
図２９は、ＱＲコードらしさの判定処理のルーチンを示すフローチャートである。このルーチンは、図２４のステップ２０９で実行される。まず、ステップ７００で、候補領域４０上の白画素数をカウントし、次のステップ７０２で、候補領域４０上の黒画素数をカウントする。続くステップ７０４で、白画素数と黒画素数との差を求め、その差が「しきい値Ｍ」より小さいか否かを判断する。肯定判断（ＹＥＳ）の場合には、候補領域４０はＱＲコードらしさを有している（Ｔｒｕｅ）と判定して、ルーチンを終了する。一方、否定判断（ＮＯ）の場合には、候補領域４０はＱＲコードらしさを有していない（Ｆａｌｓｅ）と判定して、ルーチンを終了する。
【００９７】
以上説明した通り、本実施の形態では、選択した３個の位置検出要素パターンの中心点が直角二等辺三角形の各頂点を構成するという条件に加えて、３個の中心点の座標から想定される判定領域がＱＲコードらしさを有しているという条件を満たす場合に、選択した３個の座標に対応した位置検出要素パターンが、同じシンボルに含まれ、位置検出パターンを構成すると判断するので、第１の実施の形態と同様に、複数のＱＲコードを含む画像から個々のＱＲコードを正確且つ迅速に検出することができる。
【００９８】
なお、上記第３の実施の形態では、「ＱＲコードらしさ」を表す数値的指標として「白黒画素の比率」を用いる例について説明したが、図９に示すように、候補領域４０を水平方向（矢印Ａで示す）又は垂直方向（矢印Ｂで示す）にスキャンした場合の「白黒反転回数」を、「ＱＲコードらしさ」を表す数値的指標として用いることもできる。また、「白黒画素の比率」と「白黒反転回数」の両方を用いることもできる。
【００９９】
図３０は、ＱＲコードらしさの判定処理の他のルーチンを示すフローチャートである。このルーチンは、図２４のステップ２０９で実行される。まず、ステップ８００で、候補領域４０を水平方向にスキャンした場合の白黒反転回数（白から黒へ画素値が変化する回数）をカウントし、次のステップ８０２で、候補領域４０を水平方向にスキャンした場合の黒白反転回数（黒から白へ画素値が変化する回数）をカウントする。更に、ステップ８０４で、候補領域４０を垂直方向にスキャンした場合の白黒反転回数をカウントし、次のステップ８０６で、候補領域４０を垂直方向にスキャンした場合の黒白反転回数をカウントする。
【０１００】
図３１は、水平方向にスキャンした場合の白黒反転回数のカウント例を示す図である。この例では、白黒反転回数は３回であり、黒白反転回数は３回である。
【０１０１】
次に、ステップ８０８で、ステップ８００〜ステップ８０６で求めた４つの反転回数の合計値（和）を求め、その和が予め設定された「しきい値ＴＨ」より大きいか否かを判断する。肯定判断（ＹＥＳ）の場合には、候補領域４０はＱＲコードらしさを有している（Ｔｒｕｅ）と判定して、ルーチンを終了する。一方、否定判断（ＮＯ）の場合には、候補領域４０はＱＲコードらしさを有していない（Ｆａｌｓｅ）と判定して、ルーチンを終了する。
【０１０２】
また、上記第３の実施の形態では、直角二等辺三角形の判定処理の後に、ＱＲコードらしさの判定処理を行う例について説明したが、処理の順序を入れ替えて、ＱＲコードらしさの判定処理の後に、直角二等辺三角形の判定処理を行うこともできる。
【０１０３】
また、上記第３の実施の形態では、「組み合わせ検出処理」においてＱＲコードらしさの判定処理を行う例について説明したが、ＱＲコードらしさの判定処理と共にクワイエットゾーンの有無の判定処理を行うこともできる。複数の条件を組み合わせることで、ＱＲコードの検出精度が向上する。
【図面の簡単な説明】
【０１０４】
【図１】本発明の第１の実施の形態に係るＱＲコードの処理装置の概略構成を示すブロック図である。
【図２】ＣＰＵにより実行される処理ルーチンを示すフローチャートである。
【図３】ＱＲコードの構造を示す概略図である。
【図４】異なるシンボルに含まれる位置検出要素パターンが組み合わされた図である。
【図５】組み合わせ検出処理のサブルーチンを示すフローチャートである。
【図６】直角二等辺三角形の幾何学的な成立条件を説明するための図である。
【図７】直角二等辺三角形の判定処理のルーチンを示すフローチャートである。
【図８】直角頂の判定処理のルーチンを示すフローチャートである。
【図９】ＱＲコードらしさの判定方法を説明するための図である。
【図１０】ＱＲコードのシンボルの構造を示す図である。
【図１１】クワイエットゾーンの有無の判定方法を説明するための図である。
【図１２】クワイエットゾーンが存在すると判定される例を示す図である。
【図１３】クワイエットゾーンが存在しないと判定される例を示す図である。
【図１４】クワイエットゾーン有無の判定処理のルーチンを示すフローチャートである。
【図１５】位置検出要素パターンの中心点Ａとスキャンラインの基準点ＡSの位置関係を示す図である。
【図１６】位置検出要素パターンの構造を示す図である。
【図１７】基準点ＡSの座標を求めるためのベクトル図である。
【図１８】クワイエットゾーンの有無の判定方法を説明するための図である。
【図１９】換算値Ｒの算出方法を説明するための概念図である。
【図２０】スキャンラインの他の設定例を示す図である。
【図２１】スキャン領域の設定例を示す図である。
【図２２】組み合わせ検出処理の他のルーチンを示すフローチャートである。
【図２３】本発明の第２の実施の形態に係る組み合わせ検出処理のサブルーチンを示すフローチャートである。
【図２４】本発明の第３の実施の形態に係る組み合わせ検出処理のサブルーチンを示すフローチャートである。
【図２５】ＱＲコードらしさの判定方法を説明するための図である。
【図２６】ＱＲコードらしさの判定方法を説明するための図である。
【図２７】ＱＲコードらしさの判定領域を示す図である。
【図２８】ＱＲコードらしさを有していないと判定される例を示す図である。
【図２９】ＱＲコードらしさの判定処理のルーチンを示すフローチャートである。
【図３０】ＱＲコードらしさの判定処理の他のルーチンを示すフローチャートである。
【図３１】白黒反転回数のカウント例を示す図である。
【符号の説明】
【０１０５】
１０   画像入力装置
１２   メモリ
１４   ＣＰＵ
１６   ＲＯＭ
１８   外部インタフェース
２０   画像出力装置
２２   データベース
２２   画像出力装置
２４   データバス
３０   シンボル
３２Ａ，３２Ｂ，３２Ｃ      位置検出要素パターン
３３   正方形
３４   クワイエットゾーン
３４Ａ 外周
３５   領域
３６   直角二等辺三角形
３８   スキャンライン
４０   候補領域
４０Ａ 外周
４２Ａ，４２Ｂ，４２Ｃ      位置検出要素パターン
４３   正方形
４４Ａ 外周
４６   直角二等辺三角形
４８   スキャンライン
５０   モジュール
５２   モジュール
５４   モジュール
７８   スキャン領域
【図１】
2007094584.tif 000010
【図２】
2007094584.tif 000011
【図３】
2007094584.tif 000012
【図４】
2007094584.tif 000013
【図５】
2007094584.tif 000014
【図６】
2007094584.tif 000015
【図７】
2007094584.tif 000016
【図８】
2007094584.tif 000017
【図９】
2007094584.tif 000018
【図１０】
2007094584.tif 000019
【図１１】
2007094584.tif 000020
【図１２】
2007094584.tif 000021
【図１３】
2007094584.tif 000022
【図１４】
2007094584.tif 000023
【図１５】
2007094584.tif 000024
【図１６】
2007094584.tif 000025
【図１７】
2007094584.tif 000026
【図１８】
2007094584.tif 000027
【図１９】
2007094584.tif 000028
【図２０】
2007094584.tif 000029
【図２１】
2007094584.tif 000030
【図２２】
2007094584.tif 000031
【図２３】
2007094584.tif 000032
【図２４】
2007094584.tif 000033
【図２５】
2007094584.tif 000034
【図２６】
2007094584.tif 000035
【図２７】
2007094584.tif 000036
【図２８】
2007094584.tif 000037
【図２９】
2007094584.tif 000038
【図３０】
2007094584.tif 000039
【図３１】
2007094584.tif 000040