(57)【要約】【課題】処理能力が不十分な携帯端末でも読み取り可能な２次元コード読み取り方法を提供する。【解決手段】２次元状データからなるデータセル（ＤＣと記す）と位置決め用のファインダーパターン（ＦＰと記す）と傾き度判定用のアライメントパターン（ＡＰと記す）とを持つ２次元コードの入力時、水平・垂直・斜めの３方向のパターンから近似度を評価してＦＰの位置を検出し（Ｓ００１）、傾きを考慮して特定した探索範囲の２値化処理前の部分画像を回転補正した後テンプレートマッチングをしてＡＰの位置を検出し（Ｓ００２）、セル数をＦＰの幅と位置とから算出してバージョンを決定し（Ｓ００３）、ＦＰとＡＰの位置とバージョンとからＤＣの位置を座標位置に変換する座標変換式を求めて、各ＤＣの位置を変換した座標位置付近の画素濃度を線形補間してＤＣを切り出し（Ｓ０００５）、切り出したＤＣの並びをデコードして２次元コードを読み取る（Ｓ００６）。【選択図】　　　　図２
2004054530.tif 000002
【特許請求の範囲】
【請求項１】
２値データが記録されているデータセルを縦方向及び横方向の２次元状に配列することにより各種情報を表現する２次元コードを入力画像中から読み取る２次元コード読み取り装置であって、前記２次元コードが、前記入力画像中における当該２次元コードの位置を特定するために、該２次元コード内の所定の複数の位置に配置され、かつ、固有の第１のパターンからなるファインダーパターンと、前記入力画像において前記２次元コードが歪んだ状態で記録されている場合であっても、当該２次元コードのデータセル位置を正しく検出するために、当該２次元コード内の前記ファインダーパターンとは異なる所定の位置に配置され、かつ、前記ファインダーパターンに固有の前記第１のパターンとは異なる第２のパターンからなるアライメントパターンとを備え、前記２次元コードが記録された前記入力画像に対する複数方向からの走査結果に基づいて、前記入力画像の中から所定の複数の位置にそれぞれ配置されている複数個の前記ファインダーパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、前記アライメントパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、当該２次元コードを構成するセル数を決定するバージョンの判定処理を行ない、検出された前記ファインダーパターンの位置と前記アライメントパターンの位置と、前記バージョンの判定処理により判定された前記バージョンとに基づいて、当該２次元コードを構成する各データセルのデータ値を決定するデータセル切り出しの処理を行ない、該データセル切り出しの処理により決定された各データセルのデータ値をビット列に変換して、予め定められた規則に従って、当該２次元コードの情報を特定するデコード処理を行なうことを特徴とする２次元コード読み取り装置。
【請求項２】
請求項１に記載の２次元コード読み取り装置において、前記ファインダーパターンの位置を検出する際に、白と黒との固有の前記第１のパターンからなる前記ファインダーパターンと近似したパターンを有するファインダーパターンの候補を候補ファインダーパターンとして前記入力画像の中から複数抽出し、かつ、抽出された複数の前記候補ファインダーパターンそれぞれに対して、水平方向、垂直方向、及び、斜め方向の３方向から、各候補ファインダーパターンを横切る走査線上における白と黒とからなるパターンの構成比をそれぞれ検出し、それぞれの方向において検出された白と黒とからなる各パターンの構成比を、前記ファインダーパターンとして予め定められた白と黒とからなる固有の前記第１のパターンの構成比と比較することにより、前記第１のパターンとの近似度を示す評価値を算出し、抽出された複数の前記候補ファインダーパターンのうち、前記評価値が示す近似度が大きい候補ファインダーパターンの順に、前記ファインダーパターンとして所定の個数分選択し、所定の個数分選択された前記ファインダーパターンそれぞれの位置を検出することを特徴とする２次元コード読み取り装置。
【請求項３】
請求項２に記載の２次元コード読み取り装置において、抽出された複数の前記候補ファインダーパターンそれぞれの水平方向、垂直方向、及び、斜め方向のいずれかの方向において、前記ファインダーパターンに固有の前記第１のパターンとの近似度を示す前記評価値が、予め設定されている閾値を超えて、近似していないことを示す値として算出された場合、該候補ファインダーパターンを前記ファインダーパターンの候補から除外することを特徴とする２次元コード読み取り装置。
【請求項４】
請求項３に記載の２次元コード読み取り装置において、前記閾値が、２次元コードの種類及び用途更には入力画像の画質に応じて、使用者が所望する任意の値に予め設定することができることを特徴とする２次元コード読み取り装置。
【請求項５】
請求項２乃至４のいずれかに記載の２次元コード読み取り装置において、複数抽出された前記候補ファインダーパターンのうち、互いのパターンが近接して重なり合う位置にある前記候補ファインダーパターンが抽出されている場合、互いに重なり合う位置にある前記候補ファインダーパターン同士を一つの候補ファインダーパターンとして統合し、統合される前のそれぞれの前記候補ファインダーパターンの前記評価値を合算して、統合された候補ファインダーパターンの評価値として改めて設定することを特徴とする２次元コード読み取り装置。
【請求項６】
請求項２乃至５のいずれかに記載の２次元コード読み取り装置において、複数抽出された前記候補ファインダーパターンそれぞれの水平方向、垂直方向、及び、斜め方向のいずれかの方向において、前記候補ファインダーパターンの大きさを示す幅と、前記ファインダーパターンの大きさを示すものとして予め定められた固有の幅との差が、予め定められた許容値を超えている場合には、該候補ファインダーパターンを前記ファインダーパターンの候補から除外することを特徴とする２次元コード読み取り装置。
【請求項７】
請求項６に記載の２次元コード読み取り装置において、前記許容値が、２次元コードの種類及び用途更には入力画像の画質に応じて、使用者が所望する任意の値に予め設定することができることを特徴とする２次元コード読み取り装置。
【請求項８】
請求項２乃至７のいずれかに記載の２次元コード読み取り装置において、検出された前記ファインダーパターンの大きさを示す幅として、水平方向の幅と垂直方向の幅と斜め方向の幅との３つの方向の幅の平均値を用いることを特徴とする２次元コード読み取り装置。
【請求項９】
請求項１乃至８のいずれかに記載の２次元コード読み取り装置において、検出された前記ファインダーパターンの大きさを示す幅に基づいて、当該２次元コードを構成するセルの大きさを示すセルサイズを決定することを特徴とする２次元コード読み取り装置。
【請求項１０】
請求項１乃至９のいずれかに記載の２次元コード読み取り装置において、前記バージョンを判定する際に、検出された複数の前記ファインダーパターン間の間隔と、前記ファインダーパターンの大きさを示す幅に基づいて導出されたセルの大きさを示すセルサイズとに基づいて、当該２次元コードを構成するセル数を算出することにより、当該２次元コードのバージョンを判定することを特徴とする２次元コード読み取り装置。
【請求項１１】
請求項１０に記載の２次元コード読み取り装置において、２次元コードのバージョンと該バージョンにより決定される２次元コードを構成する登録セル数との対応を示すバージョン登録テーブルを備え、算出された前記セル数に基づいて、前記バージョン登録テーブルを索引し、一致又は最も近接した値を有する前記登録セル数と該登録セル数に対応するバージョンとを、当該２次元コードを構成するセル数とバージョンとして判定することを特徴とする２次元コード読み取り装置。
【請求項１２】
請求項１乃至１１のいずれかに記載の２次元コード読み取り装置において、検出された複数の前記ファインダーパターンそれぞれの座標位置に基づいて、入力画像中において当該２次元コードの向きが回転している状態にあるか否かを判定すると共に、回転していると判定される場合には、当該２次元コードの回転角度を算出することを特徴とする２次元コード読み取り装置。
【請求項１３】
請求項１乃至１２のいずれかに記載の２次元コード読み取り装置において、前記アライメントパターンの位置を検出する際に、前記入力画像中における前記ファインダーパターンの傾きの有無を検出することにより、前記入力画像中における当該２次元コードの各辺の傾きの有無を検出し、各辺の傾きと、前記ファインダーパターンの中心点の座標位置とから、前記入力画像中における前記アライメントパターンを探索する探索範囲が指定される基準位置となる探索基準点を決定し、決定された該探索基準点から予め定められた位置にある探索範囲の部分画像を前記入力画像から切り出して、該部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出することを特徴とする２次元コード読み取り装置。
【請求項１４】
請求項１３に記載の２次元コード読み取り装置において、前記入力画像中における前記ファインダーパターンの傾きの有無を検出する際に、前記ファインダーパターンが位置する当該２次元コードの辺の一部を形成し、かつ、当該ファインダーパターンの外輪郭を構成している各画素の座標位置のうち、少なくとも２つの画素の座標位置を、当該ファインダーパターンの画素を走査して検出することにより、当該ファインダーパターンの傾きの有無を検出することを特徴とする２次元コード読み取り装置。
【請求項１５】
請求項１３又は１４に記載の２次元コード読み取り装置において、前記探索基準点を決定する際に、当該２次元コードの辺の一部を形成する前記ファインダーパターンの中心点の座標位置を通り、当該２次元コードの前記辺と平行な直線と、該ファインダーパターンと当該２次元コード内の対角に位置して、当該２次元コードの他の辺の一部を形成する他の前記ファインダーパターンの中心点の座標位置を通り、前記他の辺と平行な直線との交点を、前記アライメントパターンを探索する前記探索範囲が指定される基準位置となる前記探索基準点として決定することを特徴とする２次元コード読み取り装置。
【請求項１６】
請求項１３乃至１５のいずれかに記載の２次元コード読み取り装置において、前記探索範囲が、前記探索基準点から前記アライメントパターンの中心点が配置されているものと予測される予め定められた距離だけ離れた位置を、予測中心座標として、該予測中心座標から少なくとも２セルサイズ分の余裕を持って、前記アライメントパターンに固有の前記第２のパターンを含むに充分な領域とすることを特徴とする２次元コード読み取り装置。
【請求項１７】
請求項１３乃至１６のいずれかに記載の２次元コード読み取り装置において、前記部分画像内から前記アライメントパターンを抽出する際に、前記アライメントパターンに固有の前記第２のパターンが有する各画素の特徴に合致したテンプレートを備えて、該テンプレートと前記部分画像を１画素単位にずらしながらテンプレートマッチングを行なうことにより、前記部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することを特徴とする２次元コード読み取り装置。
【請求項１８】
請求項１７に記載の２次元コード読み取り装置において、前記入力画像中において当該２次元コードの向きが回転している状態にある場合、回転している回転角度に基づいて、前記探索基準点の座標位置に対して回転補正を施すことにより指定される前記探索範囲の部分画像を前記入力画像から切り出し、切り出された該部分画像を、前記回転角度に基づいて回転補正を施した後に、回転補正された前記部分画像を１画素単位にずらしながら前記テンプレートマッチングを行ない、前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出することを特徴とする２次元コード読み取り装置。
【請求項１９】
請求項１７又は１８に記載の２次元コード読み取り装置において、前記テンプレートマッチングの処理を行なう対象とする前記部分画像が、２値化処理がなされる前の状態における前記入力画像から切り出された部分画像であることを特徴とする２次元コード読み取り装置。
【請求項２０】
請求項１９に記載の２次元コード読み取り装置において、前記テンプレートマッチングの処理を行なう際に、前記部分画像内を１画素単位で順次ずらしながら、前記テンプレートと前記部分画像とのそれぞれ対応する各画素毎の画素値の差分の絶対値総和を算出し、該絶対値総和が最小になる前記部分画像内の位置を、前記アライメントパターンの座標位置として決定することを特徴とする２次元コード読み取り装置。
【請求項２１】
請求項１乃至２０のいずれかに記載の２次元コード読み取り装置において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記データセルの位置を特定する位置特定処理として、検出された前記ファインダーパターンの中心点のセル位置と前記アライメントパターンの中心点のセル位置と、判定された前記バージョンにより決定される当該２次元コードのセル数とに基づいて、当該２次元コードの各データセルのセル中心位置を前記入力画像中の座標位置に変換する座標変換式の変換係数を算出し、算出された該変換係数を適用した前記座標変換式を用いて、各データセルのセル中心位置を、前記入力画像中の座標位置に変換して、各データセルのセル中心位置に対応する座標位置を特定し、前記位置特定処理により特定された各データセルのセル中心位置に対応する前記入力画像中の座標位置の濃度に基づいて、各データセルのデータ値を決定して、各データセルの切り出しを行なうことを特徴とする２次元コード読み取り装置。
【請求項２２】
請求項２１に記載の２次元コード読み取り装置において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記位置特定処理により特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置の濃度が、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在している場合には、該座標位置に存在している該画素の画素値から得られる濃度であり、一方、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在していない場合には、該座標位置に隣接する周辺の各画素の画素値から線形補間されて得られる濃度であり、かつ、各データセルのデータ値が、各データセルのセル中心位置に対応する前記入力画像中の座標位置の前記濃度と、各データセルのデータ値を識別するための明暗閾値と、を比較することにより決定されることを特徴とする２次元コード読み取り装置。
【請求項２３】
請求項２２に記載の２次元コード読み取り装置において、各データセルのデータ値を識別するための前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の画素の画素値に基づいて設定されていることを特徴とする２次元コード読み取り装置。
【請求項２４】
請求項２３に記載の２次元コード読み取り装置において、前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の全画素の画素値のうち、最大値と最小値との中間値に設定されていることを特徴とする２次元コード読み取り装置。
【請求項２５】
請求項１乃至２４のいずれかに記載の２次元コード読み取り装置において、前記データセル切り出しの処理を正しく行なうことができず、当該２次元コードの読み取りに失敗した場合、前記バージョンの判定処理において判定されたバージョンを１段階ずらして、再度、前記データセル切り出しの処理を繰り返すことを特徴とする２次元コード読み取り装置。
【請求項２６】
２値データが記録されているデータセルを縦方向及び横方向の２次元状に配列することにより各種情報を表現する２次元コードを入力画像中から読み取る２次元コード読み取り方法であって、前記２次元コードが、前記入力画像中における当該２次元コードの位置を特定するために、該２次元コード内の所定の複数の位置に配置され、かつ、固有の第１のパターンからなるファインダーパターンと、前記入力画像において前記２次元コードが歪んだ状態で記録されている場合であっても、当該２次元コードのデータセル位置を正しく検出するために、当該２次元コード内の前記ファインダーパターンとは異なる所定の位置に配置され、かつ、前記ファインダーパターンに固有の前記第１のパターンとは異なる第２のパターンからなるアライメントパターンとを備え、前記２次元コードが記録された前記入力画像に対する複数方向からの走査結果に基づいて、前記入力画像の中から所定の複数の位置にそれぞれ配置されている複数個の前記ファインダーパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、前記アライメントパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、当該２次元コードを構成するセル数を決定するバージョンの判定処理を行ない、検出された前記ファインダーパターンの位置と前記アライメントパターンの位置と、前記バージョンの判定処理により判定された前記バージョンとに基づいて、当該２次元コードを構成する各データセルのデータ値を決定するデータセル切り出しの処理を行ない、該データセル切り出しの処理により決定された各データセルのデータ値をビット列に変換して、予め定められた規則に従って、当該２次元コードの情報を特定するデコード処理を行なうことを特徴とする２次元コード読み取り方法。
【請求項２７】
請求項２６に記載の２次元コード読み取り方法において、前記ファインダーパターンの位置を検出する際に、白と黒との固有の前記第１のパターンからなる前記ファインダーパターンと近似したパターンを有するファインダーパターンの候補を候補ファインダーパターンとして前記入力画像の中から複数抽出し、かつ、抽出された複数の前記候補ファインダーパターンそれぞれに対して、水平方向、垂直方向、及び、斜め方向の３方向から、各候補ファインダーパターンを横切る走査線上における白と黒とからなるパターンの構成比をそれぞれ検出し、それぞれの方向において検出された白と黒とからなる各パターンの構成比を、前記ファインダーパターンとして予め定められた白と黒とからなる固有の前記第１のパターンの構成比と比較することにより、前記第１のパターンとの近似度を示す評価値を算出し、抽出された複数の前記候補ファインダーパターンのうち、前記評価値が示す近似度が大きい候補ファインダーパターンの順に、前記ファインダーパターンとして所定の個数分選択し、所定の個数分選択された前記ファインダーパターンそれぞれの位置を検出することを特徴とする２次元コード読み取り方法。
【請求項２８】
請求項２６又は２７に記載の２次元コード読み取り方法において、前記バージョンを判定する際に、検出された複数の前記ファインダーパターン間の間隔と、前記ファインダーパターンの大きさを示す幅に基づいて導出されたセルの大きさを示すセルサイズとに基づいて、当該２次元コードを構成するセル数を算出することにより、当該２次元コードのバージョンを判定することを特徴とする２次元コード読み取り方法。
【請求項２９】
請求項２６乃至２８のいずれかに記載の２次元コード読み取り方法において、前記アライメントパターンの位置を検出する際に、前記入力画像中における前記ファインダーパターンの傾きの有無を検出することにより、前記入力画像中における当該２次元コードの各辺の傾きの有無を検出し、各辺の傾きと、前記ファインダーパターンの中心点の座標位置とから、前記入力画像中における前記アライメントパターンを探索する探索範囲が指定される基準位置となる探索基準点を決定し、決定された該探索基準点から予め定められた位置にある探索範囲の部分画像を前記入力画像から切り出して、該部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出することを特徴とする２次元コード読み取り方法。
【請求項３０】
請求項２９に記載の２次元コード読み取り方法において、前記部分画像内から前記アライメントパターンを抽出する際に、前記アライメントパターンに固有の前記第２のパターンが有する各画素の特徴に合致したテンプレートを備えて、該テンプレートと前記部分画像を１画素単位にずらしながらテンプレートマッチングを行なうことにより、前記部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することを特徴とする２次元コード読み取り方法。
【請求項３１】
請求項３０に記載の２次元コード読み取り方法において、前記入力画像中において当該２次元コードの向きが回転している状態にある場合、回転している回転角度に基づいて、前記探索基準点の座標位置に対して回転補正を施すことにより指定される前記探索範囲の部分画像を前記入力画像から切り出し、切り出された該部分画像を、前記回転角度に基づいて回転補正を施した後に、回転補正された前記部分画像を１画素単位にずらしながら前記テンプレートマッチングを行ない、前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出することを特徴とする２次元コード読み取り方法。
【請求項３２】
請求項３０又は３１に記載の２次元コード読み取り方法において、前記テンプレートマッチングの処理を行なう対象とする前記部分画像が、２値化処理がなされる前の状態における前記入力画像から切り出された部分画像であることを特徴とする２次元コード読み取り方法。
【請求項３３】
請求項２６乃至３２のいずれかに記載の２次元コード読み取り方法において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記データセルの位置を特定する位置特定処理として、検出された前記ファインダーパターンの中心点のセル位置と前記アライメントパターンの中心点のセル位置と、判定された前記バージョンにより決定される当該２次元コードのセル数とに基づいて、当該２次元コードの各データセルのセル中心位置を前記入力画像中の座標位置に変換する座標変換式の変換係数を算出し、算出された該変換係数を適用した前記座標変換式を用いて、各データセルのセル中心位置を、前記入力画像中の座標位置に変換して、各データセルのセル中心位置に対応する座標位置を特定し、前記位置特定処理により特定された各データセルのセル中心位置に対応する前記入力画像中の座標位置の濃度に基づいて、各データセルのデータ値を決定して、各データセルの切り出しを行なうことを特徴とする２次元コード読み取り方法。
【請求項３４】
請求項３３に記載の２次元コード読み取り方法において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記位置特定処理により特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置の濃度が、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在している場合には、該座標位置に存在している該画素の画素値から得られる濃度であり、一方、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在していない場合には、該座標位置に隣接する周辺の各画素の画素値から線形補間されて得られる濃度であり、かつ、各データセルのデータ値が、各データセルのセル中心位置に対応する前記入力画像中の座標位置の前記濃度と、各データセルのデータ値を識別するための明暗閾値と、を比較することにより決定されることを特徴とする２次元コード読み取り方法。
【請求項３５】
請求項３４に記載の２次元コード読み取り方法において、各データセルのデータ値を識別するための前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の画素の画素値に基づいて設定されていることを特徴とする２次元コード読み取り方法。
【請求項３６】
請求項２６乃至３５のいずれかに記載の２次元コード読み取り方法を、コンピュータにより実行させることが可能なプログラムコードにより記述されていることを特徴とする２次元コード読み取りプログラム。
【請求項３７】
請求項３６に記載の２次元コード読み取りプログラムを記録させていることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２次元コード読み取り装置，２次元コード読み取り方法，２次元コード読み取りプログラム及び該プログラムの記録媒体に関し、例えば、カメラを内蔵した携帯端末等において、２次元コードを容易に読み取ることを可能にする２次元コード読み取り装置，２次元コード読み取り方法，２次元コード読み取りプログラム及び該プログラムの記録媒体に関する。
【０００２】
【従来の技術】
近年、カメラを内蔵した携帯電話機が普及している。かかるカメラ付き携帯電話機等において、２次元コードをカメラで撮影して、該２次元コードに記録されている情報を読み取ろうとした場合、処理能力が低い通常の携帯電話機等にあっては、処理能力の面から、比較的処理量の少ない方法により、２次元コードを読み取ることを可能とすることが必要となる。
【０００３】
２次元コードの例としては、ＪＩＳＸ５１０（更には、ＩＳＯ／ＩＥＣ１８００４）で規定されているような２次元コード即ちＱＲコード（Ｑｕｉｃｋ　Ｒｅｓｐｏｎｓｅ　Ｃｏｄｅ）がある。図１は、ＱＲコードの構成例を示す模式図である。図１に示すように、正方形状からなる２次元のＱＲコードの構成としては、当該ＱＲコードの位置を検出することができるように、特定寸法比率の正方形を組み合わせた固有の第１のパターン（ファインダーパターンＦ）を２次元コードの３隅に有し、これら３つのファインダーパターンＦの間には、横方向と縦方向とに白と黒とが交互に組み合わせられて、２次元コードの各データセルのセル位置の指標となる基準パターン（タイミングパターンＴ）を有し、更に、たとえ、斜め方向から歪んだ状態で撮影された場合であっても、２次元コードのデータセルの位置を合わせることを可能とするために配置されている固有の第２のパターン（アライメントパターンＰ）を有している。
【０００４】
また、ＱＲコードの内部は、ｍ×ｍの正方形の升目（以下、セルと呼ぶ）に区切られていて、各セルに明（白），暗（黒）の２値データを記録することができる。ファインダーパターンＦは、１辺の長さが７セルに相当する黒い正方形と１辺の長さが５セルに相当する白い正方形と１辺の長さが３セルに相当する黒い正方形とを同心状に順次重ね合わせて生成される図形とされている。
かかる構成からなるＱＲコードの画像をイメージセンサにより読み取り、２次元コード読み取り装置に入力し、２次元コード読み取り装置に入力された入力画像は、明（白）、暗（黒）の２値のいずれかの値を持つ２値化画像へと変換される。該２値化画像に対して、２次元コードの読み取りが行なわれている。
【０００５】
前述のごときサイズからなるファインダーパターンＦの中心付近で直線的に横方向又は縦方向に２値化画像を走査した場合、ファインダーパターンＦにおける黒：白：黒：白：黒のパターンの出現頻度は、１：１：３：１：１の比率になるようにされている。かかる比率のパターンの出現頻度を用いて、イメージセンサから入力されて２値化された２値化画像の中から、ファインダーパターンＦの位置を検出することができる。
また、タイミングパターンＴの両端に位置するファインダーパターンＦが検出された場合、ファインダーパターンＦの端から黒，白のパターンが１：１の比率で交互に出現する位置を検出することにより、タイミングパターンＴを検出することができる。
【０００６】
ここで、ＱＲコードを斜め方向から撮影した場合には、正対して撮影した場合の元々の正方形状に比べ、撮影角度に応じた歪が生ずる。かかる歪んだ画像に対しても、正しくＱＲコードのセル位置を特定することができるように、固有の第２のパターンからなるアライメントパターンＰがファインダーパターンＦを基準にして、ファインダーパターンＦとは異なる２次元コード内の特定の位置に配置されている。
ここで、３つのファインダーパターンＦの中心座標から、アライメントパターンＰが配置されていると予想される座標を計算することができるようにされている。かかる計算結果を基準にして、２値化画像を逐次精査し、アライメントパターンＰに固有の第２のパターンの特徴に合致する形状を備えた部分パターンを抽出することにより、アライメントパターンＰの位置を検出することができる。
【０００７】
而して、ファインダーパターンＦ，タイミングパターンＴ，アライメントパターンＰそれぞれの位置が検出された各座標から、データが記録されている各データセルの中心位置座標を算出することができる。一例を、従来のデータセル切り出しの様子を示す図２２を参照しながら説明する。
ここに、図２２は、ＱＲコードのデータセルの中心座標を算出する従来技術の様子を説明するための模式図である。図２２において、ファインダーパターンＦの中心点をＦａ，Ｆｂ，Ｆｃ、アライメントパターンＰの中心点をＰｄとすると、まず、点Ｆａ，Ｆｂを結ぶ直線Ｓ１と、点Ｆａ，Ｆｃを結ぶ直線Ｓ４とを求める。
【０００８】
直線Ｓ１上において、点Ｆｂを水平方向（横方向）に３セル分、左方向に（即ち、点Ｆａ方向に）移動した点Ｆｂ’を求め、更に、直線Ｓ４上において、点Ｆｃを垂直方向（縦方向）に３セル分、上方向に（即ち、点Ａ方向に）移動した点Ｆｃ’を求める。
移動した点Ｆｂ’とアライメントパターンＰの中心点Ｐｄとを結ぶ直線Ｓ３と、点Ｆｃ’とアライメントパターンＰの中心点Ｐｄとを結ぶ直線Ｓ２とを求める。
水平方向（横方向）に配置されているファインダーパターンＦの中心点ＦａとファインダーパターンＦの中心点Ｆｂと、その間に位置しているタイミングパターンＴとから、図２２に示す符号Ｅの位置における各セルの中心座標が判明する。
また、直線Ｓ４と直線Ｓ３との傾きから、符号Ｅで示す前記各セルの中心点を通る水平基準となる直線（例えば、図２２に示す破線Ｈｓ）の傾きを計算することができ、符号Ｅで示す前記各セルの中心点を通る水平基準線Ｈｓを決定することができる。
【０００９】
同様にして、垂直基準線Ｖｓも決定することができる。而して、かくのごとく決定された水平基準線Ｈｓと垂直基準線Ｖｓとがそれぞれ交差する位置を各データセルの中心座標として算出することができる。
各データセルのデータ値は、前述のごとく算出されたデータセルの中心座標位置から、該データセル周辺方向に向って逐次黒及び白の出現頻度を調べ、セルの大きさを示すセルサイズ内にある黒画素の数と白画素の数とを比較し、数の多い方の画素を、当該データセルのデータ値として決定する。
【００１０】
【発明が解決しようとする課題】
２次元コードであるＱＲコードの位置を特定せんとする際に、ファインダーパターンＦを検出するために、黒：白：黒：白：黒のパターンの比率が１：１：３：１：１であるかどうかを判定する必要がある。しかしながら、２次元コード（ＱＲコード）が回転していた状態や、傾斜している状態の画像として撮影された場合、ファインダーパターンＦを検出するための前記比率は、水平或いは垂直の一方向のみから出現頻度を判定せんとしても、前記の比率１：１：３：１：１と正確には一致しない場合が存在する。また、実際のファインダーパターンＦが存在している場所以外の場所で、前記の比率１：１：３：１：１と一致してしまう場合もあり、ファインダーパターンＦの位置を誤って検出してしまうという問題があった。
【００１１】
更には、データセルの位置を決定するために，タイミングパターンＴを検出して使用する場合、２次元コード（ＱＲコード）の３隅に位置しているファインダーパターンＦ間に白と黒とが交互に出現するタイミングパターンＴの検出には多くの時間を要してしまうという問題があった。かかる問題は、２次元コード（ＱＲコード）が大きなバージョンになる（２次元コードを構成するセル数が多い）ほど、深刻になってくる。
【００１２】
アライメントパターンＰを検出するには、ファインダーパターンＦの座標から、アライメントパターンＰが存在すると予想される予想座標を計算し、その周辺を精査することにより検出することとなるが、撮影した画像の歪により、前記予想座標が実際のアライメントパターンＰが存在する座標と大きくずれてしまう場合が発生するために、実際のアライメントパターンＰが存在する正確な位置を検出する精査に多大の時間を要する場合が発生するという問題があった。
【００１３】
更には、２次元コード（ＱＲコード）のアライメントパターンＰの精査は、２値化処理が施された後の２値化画像に対して行なわれるが、２値化処理の際の誤差により、白画素のつぶれや、黒画素のかけが発生し、かかるつぶれやかけの影響により、アライメントパターンＰの検出を誤ってしまうという問題があった。なお、２次元コード（ＱＲコード）を構成するセル数がある程度多い場合であれば、アライメントパターンＰを複数個配置して、撮影画像が多少歪んでいても、いずれかのアライメントパターンＰを検出すれば、安定して、２次元データのデータセルが切り出す（即ち、データセル毎のデータ値を決定する）ことができるように、２次元コードを構成することができるが、かかる場合においては、アライメントパターンＰの位置を複数個に亘って検出することが必要であり、処理時間が大きくなってしまうという問題があった。
【００１４】
また、データセルのデータ値を決定する（即ち、データセルを切り出す）場合、セルの大きさ即ちセルサイズに基づいた特定の範囲内の黒画素と白画素との数を調べることにより、当該データセルの値を決定するため、決定するまでの処理時間を多く必要とするだけではなく、２値化処理の際における誤差により、白画素のつぶれや黒画素のかけが発生することに伴い、データセルのデータ値を誤り易いという問題があった。
更には、ファインダーパターンＦ間の距離からセル数を算出し、当該２次元コード（ＱＲコード）のバージョンを決定する際に、入力画像の歪により誤差が発生し、正しいバージョンを判定できず、２次元コードの読み取りに失敗するという問題があった。
【００１５】
本発明は、かかる事情に鑑みてなされたものであり、２次元コードが記録されている入力画像に対して、複数方向（例えば、水平方向、垂直方向、及び、斜め方向の３方向）から走査した結果に基づいて、所定の複数の位置に配置されているそれぞれのファインダーパターンの位置を検出する処理を行ない、更に、ファインダーパターンに固有の第１のパターンとの近似度を示す評価値やファインダーパターンとして予め定められた幅との差の許容値を用いて、ファインダーパターンの特徴に基づいた検出を行なうことにより、ファインダーパターンの位置を確実に検出せんとするものである。
【００１６】
而して、ファインダーパターンを検出する際に、ファインダーパターンに固有の第１のパターンの比率例えば黒：白：黒：白：黒が１：１：３：１：１の比率にどれだけ近いかの評価値を定義し、入力画像全体に関して該評価値を比較することにより、ファインダーパターンの検出精度を高めることを可能とし、もって、比較的解像度が低く、ノイズがあるような低画質の入力画像中からでも、精度良くファインダーパターンを検出することを可能にせんとするものである。
また、ファインダーパターンに固有の第１のパターンに近いか否かを判定するための走査を例えば水平方向、垂直方向、斜め方向と３回実施し、それぞれの方向毎のパターンの比率に関する評価値を用いることにより、たとえ、２次元コードが回転して画像中にある場合でも、ファインダーパターンの検出精度を高めんとするものである。
【００１７】
更に、本発明は、ファインダーパターンの外輪郭を走査して、入力画像中におけるファインダーパターンの外輪郭の傾きにより検出される２次元コードの各辺の傾きとファインダーパターンの中心点の座標とから、アライメントパターンを探索する探索範囲を指定する基準位置となる探索基準点を決定し、決定された該探索基準点から予め定められた位置にある探索範囲の部分画像を、２値化処理前の入力画像から切り出して、切り出された前記部分画像とアライメントパターンに固有の第２のパターンが有する特徴に合致したテンプレートとのテンプレートマッチングを行なうことにより、前記部分画像内から前記アライメントパターンを抽出して、アライメントパターンの位置を確実に検出し、更に、２次元データが回転している状態にある場合、回転角度に応じた回転補正を施すことにより、アライメントパターンの位置を確実に検出せんとするものである。
【００１８】
而して、ファインダーパターンの外輪郭を走査し、該外輪郭の傾きを検出することにより、該外輪郭が辺の一部を形成している２次元コードの該辺の傾きを求め、２次元コードの該辺に平行で、前記ファインダーパターンの中心を通る直線の交点を求めることにより、アライメントパターンの予想座標を求めることとし、かつ、２値化処理前の入力画像を用いて、アライメントパターンの特徴に合致したテンプレートとのテンプレートマッチングを行なうことによりアライメントパターンを精度良く検出せんとするものであり、もって、２次元コードが歪んだ状態で存在している場合であっても、正確にアライメントパターンが存在する探索範囲を求めることができ、従来技術のごとく、アライメントパターンを探索するために入力画像を精査することに要する処理を結果的に少なくし、アライメントパターンの位置を検出するための全体の処理量を節約することを可能にせんとするものである。
【００１９】
更には、本発明は、検出されたファインダーパターンの位置とアライメントパターンの位置と、判定されたバージョンにより決定される当該２次元コードのセル数とに基づいて、算出された変換係数を適用した座標変換式を用いて、各データセルのセル中心位置を入力画像中の座標位置に変換して、各データセルに対応する前記入力画像中の座標位置にある画素の画素値から得られる濃度或いは該座標位置に隣接する周辺の各画素の画素値から線形補間されて得られる濃度を、各データセルのデータ値を識別するために設定されている明暗閾値と比較することにより、各データセルのデータ値を決定して、各データセルの切り出しを行なわんとするものであり、データセル切り出しの処理を正しく行なうことができず、当該２次元コードの読み取りに失敗した場合、バージョンの判定処理において判定されたバージョンを１段階ずらして、再度、データセル切り出しの処理を繰り返すことによりバージョンの誤判定による２次元コード読み取り失敗を防止せんとするものである。
【００２０】
而して、従来技術のごとく、２次元コードにタイミングパターンを備えることが不要であり、該タイミングパターンの検出は行なうこともなく、３つのファインダーパターンの座標と１つのアライメントパターン座標との４点の座標から、座標変換式により、データセルのセル中心位置を決定し、更に、決定されたセル位置における入力画像の濃度により、当該データセルのデータ値を決定することを可能とし、もって、タイミングパターンの検出処理に要する処理時間を削減すると共に、データセルのデータ値を決定する処理時間を削減し、データセルの切り出し処理全体の処理量を大幅に節約することを可能にせんとするものである。
【００２１】
また、データセルのセル中心位置に対応する位置に入力画像中の画素が存在していない場合であっても、隣接する位置にある各画素の画素値を線形補間することによりセル中心位置における画素値を推定し、かかる画素値を、データセルが配置されている２次元コード内の特定位置に存在している複数画素の画素値に基づいて予め算出されている明暗閾値と比較することにより、データセルの値を決定すると共に、データセルの切り出しができず、２次元コードの読み取りが失敗した場合であっても、ファインダーパターンの幅とファインダーパターン間の間隔に基づいて判定されたバージョンを１段階ずらし（例えば、１段階大きいバージョンに増加させて）、２次元コードの読み取り、データセル切り出しの処理を再度繰り返すことにより、バージョン判定誤りの影響を減少させんとするものである。
【００２２】
【課題を解決するための手段】
第１の技術手段は、２値データが記録されているデータセルを縦方向及び横方向の２次元状に配列することにより各種情報を表現する２次元コードを入力画像中から読み取る２次元コード読み取り装置であって、前記２次元コードが、前記入力画像中における当該２次元コードの位置を特定するために、該２次元コード内の所定の複数の位置に配置され、かつ、固有の第１のパターンからなるファインダーパターンと、前記入力画像において前記２次元コードが歪んだ状態で記録されている場合であっても、当該２次元コードのデータセル位置を正しく検出するために、当該２次元コード内の前記ファインダーパターンとは異なる所定の位置に配置され、かつ、前記ファインダーパターンに固有の前記第１のパターンとは異なる第２のパターンからなるアライメントパターンとを備え、前記２次元コードが記録された前記入力画像に対する複数方向からの走査結果に基づいて、前記入力画像の中から所定の複数の位置にそれぞれ配置されている複数個の前記ファインダーパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、前記アライメントパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、当該２次元コードを構成するセル数を決定するバージョンの判定処理を行ない、検出された前記ファインダーパターンの位置と前記アライメントパターンの位置と、前記バージョンの判定処理により判定された前記バージョンとに基づいて、当該２次元コードを構成する各データセルのデータ値を決定するデータセル切り出しの処理を行ない、該データセル切り出しの処理により決定された各データセルのデータ値をビット列に変換して、予め定められた規則に従って、当該２次元コードの情報を特定するデコード処理を行なう２次元コード読み取り装置とすることを特徴とするものである。
【００２３】
第２の技術手段は、前記第１の技術手段に記載の２次元コード読み取り装置において、前記ファインダーパターンの位置を検出する際に、白と黒との固有の前記第１のパターンからなる前記ファインダーパターンと近似したパターンを有するファインダーパターンの候補を候補ファインダーパターンとして前記入力画像の中から複数抽出し、かつ、抽出された複数の前記候補ファインダーパターンそれぞれに対して、水平方向、垂直方向、及び、斜め方向の３方向から、各候補ファインダーパターンを横切る走査線上における白と黒とからなるパターンの構成比をそれぞれ検出し、それぞれの方向において検出された白と黒とからなる各パターンの構成比を、前記ファインダーパターンとして予め定められた白と黒とからなる固有の前記第１のパターンの構成比と比較することにより、前記第１のパターンとの近似度を示す評価値を算出し、抽出された複数の前記候補ファインダーパターンのうち、前記評価値が示す近似度が大きい候補ファインダーパターンの順に、前記ファインダーパターンとして所定の個数分選択し、所定の個数分選択された前記ファインダーパターンそれぞれの位置を検出する２次元コード読み取り装置とすることを特徴とするものである。
【００２４】
第３の技術手段は、前記第２の技術手段に記載の２次元コード読み取り装置において、抽出された複数の前記候補ファインダーパターンそれぞれの水平方向、垂直方向、及び、斜め方向のいずれかの方向において、前記ファインダーパターンに固有の前記第１のパターンとの近似度を示す前記評価値が、予め設定されている閾値を超えて、近似していないことを示す値として算出された場合、該候補ファインダーパターンを前記ファインダーパターンの候補から除外する２次元コード読み取り装置とすることを特徴とするものである。
【００２５】
第４の技術手段は、前記第３の技術手段に記載の２次元コード読み取り装置において、前記閾値が、２次元コードの種類及び用途更には入力画像の画質に応じて、使用者が所望する任意の値に予め設定することができる２次元コード読み取り装置とすることを特徴とするものである。
【００２６】
第５の技術手段は、前記第２乃至第４の技術手段のいずれかに記載の２次元コード読み取り装置において、複数抽出された前記候補ファインダーパターンのうち、互いのパターンが近接して重なり合う位置にある前記候補ファインダーパターンが抽出されている場合、互いに重なり合う位置にある前記候補ファインダーパターン同士を一つの候補ファインダーパターンとして統合し、統合される前のそれぞれの前記候補ファインダーパターンの前記評価値を合算して、統合された候補ファインダーパターンの評価値として改めて設定する２次元コード読み取り装置とすることを特徴とするものである。
【００２７】
第６の技術手段は、前記第２乃至第５の技術手段のいずれかに記載の２次元コード読み取り装置において、複数抽出された前記候補ファインダーパターンそれぞれの水平方向、垂直方向、及び、斜め方向のいずれかの方向において、前記候補ファインダーパターンの大きさを示す幅と、前記ファインダーパターンの大きさを示すものとして予め定められた固有の幅との差が、予め定められた許容値を超えている場合には、該候補ファインダーパターンを前記ファインダーパターンの候補から除外する２次元コード読み取り装置とすることを特徴とするものである。
【００２８】
第７の技術手段は、前記第６の技術手段に記載の２次元コード読み取り装置において、前記許容値が、２次元コードの種類及び用途更には入力画像の画質に応じて、使用者が所望する任意の値に予め設定することができる２次元コード読み取り装置とすることを特徴とするものである。
【００２９】
第８の技術手段は、前記第２乃至第７の技術手段のいずれかに記載の２次元コード読み取り装置において、検出された前記ファインダーパターンの大きさを示す幅として、水平方向の幅と垂直方向の幅と斜め方向の幅との３つの方向の幅の平均値を用いる２次元コード読み取り装置とすることを特徴とするものである。
【００３０】
第９の技術手段は、前記第１乃至第８の技術手段のいずれかに記載の２次元コード読み取り装置において、検出された前記ファインダーパターンの大きさを示す幅に基づいて、当該２次元コードを構成するセルの大きさを示すセルサイズを決定する２次元コード読み取り装置とすることを特徴とするものである。
【００３１】
第１０の技術手段は、前記第１乃至第９の技術手段のいずれかに記載の２次元コード読み取り装置において、前記バージョンを判定する際に、検出された複数の前記ファインダーパターン間の間隔と、前記ファインダーパターンの大きさを示す幅に基づいて導出されたセルの大きさを示すセルサイズとに基づいて、当該２次元コードを構成するセル数を算出することにより、当該２次元コードのバージョンを判定する２次元コード読み取り装置とすることを特徴とするものである。
【００３２】
第１１の技術手段は、前記第１０の技術手段に記載の２次元コード読み取り装置において、２次元コードのバージョンと該バージョンにより決定される２次元コードを構成する登録セル数との対応を示すバージョン登録テーブルを備え、算出された前記セル数に基づいて、前記バージョン登録テーブルを索引し、一致又は最も近接した値を有する前記登録セル数と該登録セル数に対応するバージョンとを、当該２次元コードを構成するセル数とバージョンとして判定する２次元コード読み取り装置とすることを特徴とするものである。
【００３３】
第１２の技術手段は、前記第１乃至第１１の技術手段のいずれかに記載の２次元コード読み取り装置において、検出された複数の前記ファインダーパターンそれぞれの座標位置に基づいて、入力画像中において当該２次元コードの向きが回転している状態にあるか否かを判定すると共に、回転していると判定される場合には、当該２次元コードの回転角度を算出する２次元コード読み取り装置とすることを特徴とするものである。
【００３４】
第１３の技術手段は、前記第１乃至第１２の技術手段のいずれかに記載の２次元コード読み取り装置において、前記アライメントパターンの位置を検出する際に、前記入力画像中における前記ファインダーパターンの傾きの有無を検出することにより、前記入力画像中における当該２次元コードの各辺の傾きの有無を検出し、各辺の傾きと、前記ファインダーパターンの中心点の座標位置とから、前記入力画像中における前記アライメントパターンを探索する探索範囲が指定される基準位置となる探索基準点を決定し、決定された該探索基準点から予め定められた位置にある探索範囲の部分画像を前記入力画像から切り出して、該部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出する２次元コード読み取り装置とすることを特徴とするものである。
【００３５】
第１４の技術手段は、前記第１３の技術手段に記載の２次元コード読み取り装置において、前記入力画像中における前記ファインダーパターンの傾きの有無を検出する際に、前記ファインダーパターンが位置する当該２次元コードの辺の一部を形成し、かつ、当該ファインダーパターンの外輪郭を構成している各画素の座標位置のうち、少なくとも２つの画素の座標位置を、当該ファインダーパターンの画素を走査して検出することにより、当該ファインダーパターンの傾きの有無を検出する２次元コード読み取り装置とすることを特徴とするものである。
【００３６】
第１５の技術手段は、前記第１３又は第１４の技術手段に記載の２次元コード読み取り装置において、前記探索基準点を決定する際に、当該２次元コードの辺の一部を形成する前記ファインダーパターンの中心点の座標位置を通り、当該２次元コードの前記辺と平行な直線と、該ファインダーパターンと当該２次元コード内の対角に位置して、当該２次元コードの他の辺の一部を形成する他の前記ファインダーパターンの中心点の座標位置を通り、前記他の辺と平行な直線との交点を、前記アライメントパターンを探索する前記探索範囲が指定される基準位置となる前記探索基準点として決定する２次元コード読み取り装置とすることを特徴とするものである。
【００３７】
第１６の技術手段は、前記第１３乃至第１５の技術手段のいずれかに記載の２次元コード読み取り装置において、前記探索範囲が、前記探索基準点から前記アライメントパターンの中心点が配置されているものと予測される予め定められた距離だけ離れた位置を、予測中心座標として、該予測中心座標から少なくとも２セルサイズ分の余裕を持って、前記アライメントパターンに固有の前記第２のパターンを含むに充分な領域とする２次元コード読み取り装置とすることを特徴とするものである。
【００３８】
第１７の技術手段は、前記第１３乃至第１６の技術手段のいずれかに記載の２次元コード読み取り装置において、前記部分画像内から前記アライメントパターンを抽出する際に、前記アライメントパターンに固有の前記第２のパターンが有する各画素の特徴に合致したテンプレートを備えて、該テンプレートと前記部分画像を１画素単位にずらしながらテンプレートマッチングを行なうことにより、前記部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出する２次元コード読み取り装置とすることを特徴とするものである。
【００３９】
第１８の技術手段は、前記第１７の技術手段のいずれかに記載の２次元コード読み取り装置において、前記入力画像中において当該２次元コードの向きが回転している状態にある場合、回転している回転角度に基づいて、前記探索基準点の座標位置に対して回転補正を施すことにより指定される前記探索範囲の部分画像を前記入力画像から切り出し、切り出された該部分画像を、前記回転角度に基づいて回転補正を施した後に、回転補正された前記部分画像を１画素単位にずらしながら前記テンプレートマッチングを行ない、前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出する２次元コード読み取り装置とすることを特徴とするものである。
【００４０】
第１９の技術手段は、前記第１７又は第１８の技術手段に記載の２次元コード読み取り装置において、前記テンプレートマッチングの処理を行なう対象とする前記部分画像が、２値化処理がなされる前の状態における前記入力画像から切り出された部分画像である２次元コード読み取り装置とすることを特徴とするものである。
【００４１】
第２０の技術手段は、前記第１９の技術手段に記載の２次元コード読み取り装置において、前記テンプレートマッチングの処理を行なう際に、前記部分画像内を１画素単位で順次ずらしながら、前記テンプレートと前記部分画像とのそれぞれ対応する各画素毎の画素値の差分の絶対値総和を算出し、該絶対値総和が最小になる前記部分画像内の位置を、前記アライメントパターンの座標位置として決定する２次元コード読み取り装置とすることを特徴とするものである。
【００４２】
第２１の技術手段は、前記第１乃至第２０の技術手段のいずれかに記載の２次元コード読み取り装置において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記データセルの位置を特定する位置特定処理として、検出された前記ファインダーパターンの中心点のセル位置と前記アライメントパターンの中心点のセル位置と、判定された前記バージョンにより決定される当該２次元コードのセル数とに基づいて、当該２次元コードの各データセルのセル中心位置を前記入力画像中の座標位置に変換する座標変換式の変換係数を算出し、算出された該変換係数を適用した前記座標変換式を用いて、各データセルのセル中心位置を、前記入力画像中の座標位置に変換して、各データセルのセル中心位置に対応する座標位置を特定し、前記位置特定処理により特定された各データセルのセル中心位置に対応する前記入力画像中の座標位置の濃度に基づいて、各データセルのデータ値を決定して、各データセルの切り出しを行なう２次元コード読み取り装置とすることを特徴とするものである。
【００４３】
第２２の技術手段は、前記第２１の技術手段に記載の２次元コード読み取り装置において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記位置特定処理により特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置の濃度が、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在している場合には、該座標位置に存在している該画素の画素値から得られる濃度であり、一方、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在していない場合には、該座標位置に隣接する周辺の各画素の画素値から線形補間されて得られる濃度であり、かつ、各データセルのデータ値が、各データセルのセル中心位置に対応する前記入力画像中の座標位置の前記濃度と、各データセルのデータ値を識別するための明暗閾値と、を比較することにより決定される２次元コード読み取り装置とすることを特徴とするものである。
【００４４】
第２３の技術手段は、前記第２２の技術手段に記載の２次元コード読み取り装置において、各データセルのデータ値を識別するための前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の画素の画素値に基づいて設定されている２次元コード読み取り装置とすることを特徴とするものである。
【００４５】
第２４の技術手段は、前記第２３の技術手段に記載の２次元コード読み取り装置において、前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の全画素の画素値のうち、最大値と最小値との中間値に設定されている２次元コード読み取り装置とすることを特徴とするものである。
【００４６】
第２５の技術手段は、前記第１乃至第２４の技術手段のいずれかに記載の２次元コード読み取り装置において、前記データセル切り出しの処理を正しく行なうことができず、当該２次元コードの読み取りに失敗した場合、前記バージョンの判定処理において判定されたバージョンを１段階ずらして、再度、前記データセル切り出しの処理を繰り返す２次元コード読み取り装置とすることを特徴とするものである。
【００４７】
第２６の技術手段は、２値データが記録されているデータセルを縦方向及び横方向の２次元状に配列することにより各種情報を表現する２次元コードを入力画像中から読み取る２次元コード読み取り方法であって、前記２次元コードが、前記入力画像中における当該２次元コードの位置を特定するために、該２次元コード内の所定の複数の位置に配置され、かつ、固有の第１のパターンからなるファインダーパターンと、前記入力画像において前記２次元コードが歪んだ状態で記録されている場合であっても、当該２次元コードのデータセル位置を正しく検出するために、当該２次元コード内の前記ファインダーパターンとは異なる所定の位置に配置され、かつ、前記ファインダーパターンに固有の前記第１のパターンとは異なる第２のパターンからなるアライメントパターンとを備え、前記２次元コードが記録された前記入力画像に対する複数方向からの走査結果に基づいて、前記入力画像の中から所定の複数の位置にそれぞれ配置されている複数個の前記ファインダーパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、前記アライメントパターンの位置を検出する処理を行ない、更に、検出された前記ファインダーパターンに基づいて、当該２次元コードを構成するセル数を決定するバージョンの判定処理を行ない、検出された前記ファインダーパターンの位置と前記アライメントパターンの位置と、前記バージョンの判定処理により判定された前記バージョンとに基づいて、当該２次元コードを構成する各データセルのデータ値を決定するデータセル切り出しの処理を行ない、該データセル切り出しの処理により決定された各データセルのデータ値をビット列に変換して、予め定められた規則に従って、当該２次元コードの情報を特定するデコード処理を行なう２次元コード読み取り方法とすることを特徴とするものである。
【００４８】
第２７の技術手段は、前記第２６の技術手段に記載の２次元コード読み取り方法において、前記ファインダーパターンの位置を検出する際に、白と黒との固有の前記第１のパターンからなる前記ファインダーパターンと近似したパターンを有するファインダーパターンの候補を候補ファインダーパターンとして前記入力画像の中から複数抽出し、かつ、抽出された複数の前記候補ファインダーパターンそれぞれに対して、水平方向、垂直方向、及び、斜め方向の３方向から、各候補ファインダーパターンを横切る走査線上における白と黒とからなるパターンの構成比をそれぞれ検出し、それぞれの方向において検出された白と黒とからなる各パターンの構成比を、前記ファインダーパターンとして予め定められた白と黒とからなる固有の前記第１のパターンの構成比と比較することにより、前記第１のパターンとの近似度を示す評価値を算出し、抽出された複数の前記候補ファインダーパターンのうち、前記評価値が示す近似度が大きい候補ファインダーパターンの順に、前記ファインダーパターンとして所定の個数分選択し、所定の個数分選択された前記ファインダーパターンそれぞれの位置を検出する２次元コード読み取り方法とすることを特徴とするものである。
【００４９】
第２８の技術手段は、前記第２６又は第２７の技術手段に記載の２次元コード読み取り方法において、前記バージョンを判定する際に、検出された複数の前記ファインダーパターン間の間隔と、前記ファインダーパターンの大きさを示す幅に基づいて導出されたセルの大きさを示すセルサイズとに基づいて、当該２次元コードを構成するセル数を算出することにより、当該２次元コードのバージョンを判定することを特徴とする２次元コード読み取り方法とすることを特徴とするものである。
【００５０】
第２９の技術手段は、前記第２６乃至第２８の技術手段のいずれかに記載の２次元コード読み取り方法において、前記アライメントパターンの位置を検出する際に、前記入力画像中における前記ファインダーパターンの傾きの有無を検出することにより、前記入力画像中における当該２次元コードの各辺の傾きの有無を検出し、各辺の傾きと、前記ファインダーパターンの中心点の座標位置とから、前記入力画像中における前記アライメントパターンを探索する探索範囲が指定される基準位置となる探索基準点を決定し、決定された該探索基準点から予め定められた位置にある探索範囲の部分画像を前記入力画像から切り出して、該部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出する２次元コード読み取り方法とすることを特徴とするものである。
【００５１】
第３０の技術手段は、前記第２９に記載の２次元コード読み取り方法において、前記部分画像内から前記アライメントパターンを抽出する際に、前記アライメントパターンに固有の前記第２のパターンが有する各画素の特徴に合致したテンプレートを備えて、該テンプレートと前記部分画像を１画素単位にずらしながらテンプレートマッチングを行なうことにより、前記部分画像内から前記第２のパターンからなる前記アライメントパターンを抽出する２次元コード読み取り方法とすることを特徴とするものである。
【００５２】
第３１の技術手段は、前記第３０の技術手段に記載の２次元コード読み取り方法において、前記入力画像中において当該２次元コードの向きが回転している状態にある場合、回転している回転角度に基づいて、前記探索基準点の座標位置に対して回転補正を施すことにより指定される前記探索範囲の部分画像を前記入力画像から切り出し、切り出された該部分画像を、前記回転角度に基づいて回転補正を施した後に、回転補正された前記部分画像を１画素単位にずらしながら前記テンプレートマッチングを行ない、前記アライメントパターンを抽出することにより、前記アライメントパターンの位置を検出する２次元コード読み取り方法とすることを特徴とするものである。
【００５３】
第３２の技術手段は、前記第３０又は第３１の技術手段に記載の２次元コード読み取り方法において、前記テンプレートマッチングの処理を行なう対象とする前記部分画像が、２値化処理がなされる前の状態における前記入力画像から切り出された部分画像である２次元コード読み取り方法とすることを特徴とするものである。
【００５４】
第３３の技術手段は、前記第２６乃至第３２の技術手段のいずれかに記載の２次元コード読み取り方法において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記データセルの位置を特定する位置特定処理として、検出された前記ファインダーパターンの中心点のセル位置と前記アライメントパターンの中心点のセル位置と、判定された前記バージョンにより決定される当該２次元コードのセル数とに基づいて、当該２次元コードの各データセルのセル中心位置を前記入力画像中の座標位置に変換する座標変換式の変換係数を算出し、算出された該変換係数を適用した前記座標変換式を用いて、各データセルのセル中心位置を、前記入力画像中の座標位置に変換して、各データセルのセル中心位置に対応する座標位置を特定し、前記位置特定処理により特定された各データセルのセル中心位置に対応する前記入力画像中の座標位置の濃度に基づいて、各データセルのデータ値を決定して、各データセルの切り出しを行なう２次元コード読み取り方法とすることを特徴とするものである。
【００５５】
第３４の技術手段は、前記第３３の技術手段に記載の２次元コード読み取り方法において、当該２次元コードを構成する各データセルのデータ値を決定する前記データセル切り出しの処理を行なう際に、前記位置特定処理により特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置の濃度が、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在している場合には、該座標位置に存在している該画素の画素値から得られる濃度であり、一方、特定されたデータセルのセル中心位置に対応する前記入力画像中の座標位置に画素が存在していない場合には、該座標位置に隣接する周辺の各画素の画素値から線形補間されて得られる濃度であり、かつ、各データセルのデータ値が、各データセルのセル中心位置に対応する前記入力画像中の座標位置の前記濃度と、各データセルのデータ値を識別するための明暗閾値と、を比較することにより決定される２次元コード読み取り方法とすることを特徴とするものである。
【００５６】
第３５の技術手段は、前記第３４の技術手段に記載の２次元コード読み取り方法において、各データセルのデータ値を識別するための前記明暗閾値が、当該２次元コードの対角線上に位置する前記入力画像中の画素の画素値に基づいて設定されている２次元コード読み取り方法とすることを特徴とするものである。
【００５７】
第３６の技術手段は、前記第２６乃至第３５の技術手段のいずれかに記載の２次元コード読み取り方法を、コンピュータにより実行させることが可能なプログラムコードにより記述されている２次元コード読み取りプログラムとすることを特徴とするものである。
【００５８】
第３７の技術手段は、前記第３６の技術手段に記載の２次元コード読み取りプログラムを記録させているコンピュータ読み取り可能な記録媒体とすることを特徴とするものである。
【００５９】
而して、ファインダーパターンを検出する際に、ファインダーパターンに固有の第１のパターンの比率例えば黒：白：黒：白：黒が１：１：３：１：１の比率にどれだけ近いかの評価値を定義し、入力画像全体に関して該評価値を比較することにより、ファインダーパターンの検出精度を高めることを可能とし、もって、比較的解像度が低く、ノイズがあるような低画質の入力画像中からでも、精度良くファインダーパターンを検出することを可能とすることができる。
また、ファインダーパターンに固有の第１のパターンに近いか否かを判定するための走査を例えば水平方向、垂直方向、斜め方向と３回実施し、それぞれの方向毎のパターンの比率に関する評価値を用いることにより、たとえ、２次元コードが回転して画像中にある場合でも、ファインダーパターンの検出精度を高めることが可能である。
【００６０】
また、ファインダーパターンの外輪郭を走査し、該外輪郭の傾きにより検出することにより、該外輪郭が辺の一部を形成している２次元コードの該辺の傾きを求め、２次元コードの該辺に平行で、前記ファインダーパターンの中心を通る直線の交点を求めることにより、アライメントパターンの予想座標を求めることとし、かつ、２値化処理前の入力画像を用いて、アライメントパターンの特徴に合致したテンプレートとのテンプレートマッチングを行なうことによりアライメントパターンを精度良く検出することが可能となり、もって、２次元コードが歪んだ状態で存在している場合であっても、正確にアライメントパターンが存在する探索範囲を求めることができ、従来技術のごとく、アライメントパターンを探索するために入力画像を精査するために要する処理を結果的に少なくし、アライメントパターンの位置を検出するための全体の処理量を節約することが可能である。
【００６１】
更に、従来技術のごとく、２次元コードにタイミングパターンを備えることが不要であり、該タイミングパターンの検出は行なうこともなく、３つのファインダーパターンの座標と１つのアライメントパターン座標との４点の座標から、座標変換式により、データセルのセル中心位置を決定し、更に、決定されたセル位置における入力画像の濃度により、当該データセルのデータ値を決定することを可能とし、もって、タイミングパターンの検出処理に要する処理時間を削減すると共に、データセルのデータ値を決定する処理時間を削減し、データセルの切り出し処理全体の処理量を大幅に節約することが可能である。
【００６２】
また、データセルのセル中心位置に対応する位置に入力画像中の画素が存在していない場合であっても、隣接する位置にある各画素の画素値を線形補間することによりセル中心位置における画素値を推定し、かかる画素値を、当該データセルが配置されている２次元コード内の特定位置に存在している複数画素の画素値に基づいて予め算出されている明暗閾値と比較することにより、各データセルの値を決定すると共に、データセルの切り出しができず、２次元コードの読み取りが失敗した場合であっても、ファインダーパターンの幅とファインダーパターン間の間隔に基づいて判定されたバージョンを１段階ずらし（例えば、１段階大きいバージョンに増加させて）、２次元コードの読み取り、データセル切り出しの処理を再度繰り返すことにより、バージョン判定誤りの影響を減少させることが可能である。
【００６３】
【発明の実施の形態】
本発明に係る２次元コード読み取り装置における実施形態の一例について、以下に図面を参照しながら説明する。
図２に、本発明に係る２次元コード読み取り装置における動作の流れの一例を、フローチャートを用いて示している。なお、以下の実施形態の説明においては、２次元コードとして、ＱＲコード（Ｑｕｉｃｋ　Ｒｅｓｐｏｎｓｅ　Ｃｏｄｅ）を用いている場合を例に採って説明しているが、本発明は、かかる場合のみに限らず、縦方向と横方向との２次元状に２値データが記録されるデータセルを配列することにより各種情報を表現する２次元コードであって、入力画像中の２次元コードの位置を決定するためのファインダーパターン，斜め方向から撮影されて歪んだ状態の入力画像である場合においても、２次元コードのデータセル位置を正しく検出することを可能とするアライメントパターンを備えている２次元コードであれば、如何なる場合にも適用することができる。
【００６４】
ＱＲコードの場合、前述したごとく、ファインダーパターンは、当該２次元コード（ＱＲコード）の３隅の所定の位置（複数の所定の位置）に配置されて、固有の第１のパターン（即ち、黒：白：黒：白：黒のパターンの比率が１：１：３：１：１からなる７×７セルの正方形状のパターン）からなり、アライメントパターンは、ファインダーパターンが配置されている３隅とは異なる所定の位置（ファインダーパターンが位置していない２次元コードの隅にあって、該隅より、７セル相当分内側に離れた位置）に配置されて、固有の第２のパターン（即ち、黒：白：黒：白：黒のパターンの比率が１：１：１：１：１からなる５×５セルの正方形状のパターン）からなっている。
かかる２種類の位置決め用の特定パターン（即ち、３個のファインダーパターンと１個のアライメントパターン）を備えた２次元コードは、予め定められている規則に従って、縦・横の２次元状にｍ×ｍ個配列されているデータセルそれぞれに、白，黒いずれかの２値データを記録して、各種の情報を２次元で表現することを可能としている。
【００６５】
２種類の位置決め用の特定パターン以外に、前述のごとく、通常のＱＲコードにおいては、各データセルの位置をガイドするタイミングパターンも備えているが、本発明においては、データセルの位置を決定する場合であっても、タイミングパターンを備える必要はなく、前述の２種類の特定パターンのみを備えていれば良い。
即ち、本発明においては、たとえ、２次元コードが、回転された状態や傾斜した状態にあったとしても、３個のファインダーパターンと１個のアライメントパターンとを用いて、各データセルのセル位置を正確に検出することが可能であり、検出されたセル位置にある各データセルに記録されているデータ値（２値のデータ）を読み取り、ビット列に変換して、予め定められた規則に従って、デコード処理を施して、２次元コードに記録されている情報（データ内容）を特定することを可能としている。
【００６６】
図２に示すフローチャートにおいて、まず、２次元コードを画像として記録されている記録紙を、２次元コード読み取り装置にセットして、イメージセンサにより読み取らせる。
イメージセンサにより読み取られた入力画像は、２値化処理により、白（明），黒（暗）の２値化画像からなる入力画像に変換される。変換された２値化画像を走査することにより、該２値化画像の中から、白と黒との各ランに関する黒：白：黒：白：黒のパターンの比率が１：１：３：１：１の固有の第１のパターンからなるファインダーパターンの位置を検出する（ステップＳ００１）。かかるファインダーパターンの位置検出により、入力画像中の当該２次元コードの位置が特定される。ファインダーパターンの位置検出動作の詳細については、後述する。
ファインダーパターンの検出に失敗した場合（ステップＳ００２のＮＯ）、２次元コードの読み取りに失敗して、２次元コードが認識できなかったとして処理を終了する（ステップＳ００７）。
【００６７】
一方、２次元コードの３隅に配置されている３つのファインダーパターンすべての検出に成功した場合（ステップＳ００２のＹＥＳ）、３つのファインダーパターンそれぞれの座標を決定し、また、ファインダーパターンのサイズを示すファインダーパターン幅から１セルの大きさを示すセルサイズを決定すると共に、３つのファインダーパターンの座標位置から、当該２次元コードの向きを決定する。
次に、アライメントパターンが存在すると予想される予想座標即ち探索基準点を計算し、該予想座標（探索基準点）から特定される探索範囲内を精査する（即ち、テンプレートマッチングを行なう）ことにより、アライメントパターンの位置検出を行なう（ステップＳ００３）。アライメントパターンの位置検出により、当該２次元コードが、矩形状（正方形状を含む）ではなく傾斜された状態にあるか否かを識別することができるアライメントパターンの座標位置が決定する。アライメントパターンの位置検出動作の詳細については、後述する。
次に、２次元コードのバージョンの判定を行なう（ステップＳ００４）。即ちファインダーパターンのサイズを示すファインダーパターン幅から２次元コードのセルの大きさを示すセルサイズを算出し、当該２次元コードのセル数を決定するバージョンを決定する判定を行なう。バージョン判定動作の詳細についても、後述する。
【００６８】
次に、データセルの切り出しを行なう（ステップＳ００５）。ここでは、ファインダーパターンの３つの座標位置及びアライメントパターンの座標位置からなる４つの基準となる座標位置と判定されたバージョンとにより、導き出される２次元コードの形状から、当該２次元コードの各データセルのセル位置に対応する入力画像中の座標位置に変換する変換係数を決定し、決定された該変換計数を適用した座標変換式により、各データセルのセル中心位置に対応する入力画像中の座標位置を特定し、更に、特定された座標位置の入力画像の濃度を求めることにより、各データセルのデータ値（２値のデータ）を決定して、各データセルを切り出す。即ち、各セル範囲に対応する位置にある複数の画素の白及び黒の個数を積算するような従来の技術を用いることなく、各データセルのデータ値即ち各ビットの値を決定する。データセルの切り出し動作の詳細については、後述する。
【００６９】
次に、２次元コードにおけるデータセルの並びに従うビット列（ビットの並び）を、予め定められた規則に従って、デコードする（ステップＳ００６）。ここでは、ビット列に対する誤り訂正を行ない、誤り訂正後のビット列の並び即ちデータの並びを、予め定められている規則に従ってデコードすることにより、文字列等に変換する。
かかる文字列等への変換即ちデコード処理が成功して、有意の文字列等が獲得されれば（ステップＳ００８のＹＥＳ）、２次元コードの読み取りが成功し、２次元コードの認識成功として処理を終了する（ステップＳ００９）。
【００７０】
一方、誤り訂正によりビット誤りが訂正できなかった場合や、データセルの並び即ちビット列を予め定められた規則に従って文字列等に変換することができなかった場合には（ステップＳ００８のＮＯ）、デコード失敗とし、今回の失敗が最初のデコード失敗であれば（ステップＳ０１０のＮＯ）、バージョンを１段階だけずらすことにより、当該２次元コードを構成するセルのセル数を変更させて、例えば、バージョンを１段階増加させることにより、当該２次元コードを構成するセルのセル数を増加させて（ステップＳ０１１）、ステップＳ００５に復帰させて、再度、データセルの切り出し、及び、デコード処理を繰り返す。
即ち、バージョンをずらすことにより、ステップＳ００４におけるバージョン判定誤りを補正し、作成された際の２次元コードのバージョンに一致したバージョンに補正することができる。
【００７１】
一方、２回目のデコード失敗が発生していると判定された場合には（ステップＳ０１０のＹＥＳ）、２次元コード読み取りに失敗して、２次元コードが認識できなかったものとして処理を終了する（ステップＳ０１２）。
【００７２】
次に、図２に示すステップＳ００１におけるファインダーパターンの位置検出に関する動作の詳細について説明する。図３に、ファインダーパターンの位置検出に関する動作の流れの一例を、フローチャートを用いて示している。
【００７３】
図３において、まず、ファインダーパターンの候補座標の検出と評価値の計算を行なう（ステップＳ１０１）。即ち、白画素，黒画素に２値化された入力画像を順次走査し、白画素と黒画素とのラン長を、水平方向，垂直方向，斜め方向の３方向からそれぞれ求め、前述したようなファインダーパターンの特徴（固有の第１のパターン）に沿って、求められた白画素と黒画素とのラン長を評価し、ファインダーパターンが存在すると見なされる複数個のファインダーパターンの候補即ち候補ファインダーパターンの中心座標位置即ち候補中心座標位置と、各候補中心座標位置毎の候補ファインダーパターンがどの程度ファインダーパターンの特徴に類似しているかを示す評価値とを、予め用意された一定の評価式によって計算し、記録する。
【００７４】
この時、各候補中心座標位置における候補ファインダーパターンの幅即ちサイズも記録しておく。ここで、記録される候補ファインダーパターンの幅即ちサイズは、水平方向，垂直方向，斜め方向の３方向のそれぞれの幅を平均したものとするが、本発明においては、かかる場合のみに限るものではなく、例えば、最も狭い幅を記録することとしても良いし、或いは、互いに最も近接する幅を示す２つの幅のみの平均を用いることとしても良い。かかる候補中心座標位置の検出と評価値の計算の詳細については後述する。
【００７５】
次に、求められた候補ファインダーパターンの候補中心座標位置と評価値、及び、候補ファインダーパターンの幅を分析し、最終的に、入力画像中における３つのファインダーパターンと該ファインダーパターンそれぞれの中心座標位置とを決定する（ステップＳ１０２）。
かかる分析に失敗し、３つのファインダーパターンの中心座標位置の決定ができなかった場合（ステップＳ１０３のＮＯ）、ファインダーパターンの検出失敗として処理を終了する（ステップＳ１０８）。
【００７６】
一方、かかる分析に成功し、３つのファインダーパターンの中心座標位置の決定に成功した場合（ステップＳ１０３のＹＥＳ）、決定した３つのファインダーパターンの幅の平均値を計算し、ファインダーパターンの幅の平均値から、データセルの大きさを示すセルサイズを算出する（ステップＳ１０４）。
【００７７】
次に、決定した３つのファインダーパターンの中心座標位置から、入力画像中の２次元コードの向きを決定する（ステップＳ１０５）。即ち、２次元コードの向きとは、図５に示すように、２次元コード例えばＱＲコードの上辺（即ち、ファインダーパターンＦ０とＦ１とが配置されている辺）が、入力画像中の上下左右のどこに存在しているかを示すものである。ここに、図５は、２次元コードの向きとファインダーパターンの位置関係とを示す模式図である。図５（Ａ）に示すごとく、３つのファインダーパターンＦ０，Ｆ１，Ｆ２が、例えば、基準ファインダーパターンＦ０の左側方向にＦ１が、下側方向にＦ２が位置していて、２次元コードの上辺が入力画像中の上側方向に存在している場合を「方向０」として決定し、「方向０」から時計回りの方向にそれぞれ９０°，１８０°，２７０°回転させた位置にある場合（即ち、２次元コードの上辺がそれぞれ入力画像中の右側方向，下側方向，左側方向に存在している場合）をそれぞれ「方向１」（図５（Ｂ）），「方向２」（図５（Ｃ）），「方向３」（図５（Ｄ））として決定する。
【００７８】
更に、３つのファインダーパターンの中心座標位置の位置関係が予め定められた基準を満たしているか否かチェックする（ステップＳ１０６）。予め定められた基準を満たしていない場合（ステップＳ１０６のＮＯ）、ファインダーパターンの検出が失敗したものとして処理を終了する（ステップＳ１０８）。即ち、図２に示すステップＳ００２において、ファインダーパターンの検出に失敗したものとして、ステップＳ００７に移行して、処理を終了する。
一方、予め定められた基準を満たしている場合（ステップＳ１０６のＹＥＳ）、ファインダーパターンの検出チェックに成功し、かつ、２次元コードの向きの決定も成功したものとして、処理を終了する（ステップＳ１０７）。
【００７９】
次に、図３に示すステップＳ１０１における各候補ファインダーパターンの候補中心座標位置の検出と評価値の記録の動作について更に詳しく説明する。図４に、候補ファインダーパターンの候補中心座標位置の検出と評価値の記録に関する動作の流れの一例を、フローチャートを用いて示している。
【００８０】
図４において、まず、イメージセンサにより読み取られた入力画像に対して、白画素と黒画素との２値化処理を行なう（ステップＳ２０１）。２値化の閾値は、例えば、入力画像全体を走査して得られた各画素値における最大値と最小値との中間の値とすることができる。かかる中間の値を閾値に用いる手法は、処理量が少なく高速化に適している。
次に、２値化画像の先頭から、順次水平走査を行ない、水平走査線における全ての白画素のラン長と黒画素のラン長とを記録する（ステップＳ２０２）。即ち、水平走査方向に対し、黒ランの開始点と白ランの開始点とをそれぞれ記録していく。ここで、黒ランの開始点から次の白ランの開始点までの距離が黒ラン長として算出され、白ラン長も同様に、白ランの開始点から次の黒ランの開始点までの距離として算出される。
【００８１】
ここで、ファインダーパターンの候補を検出するために、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比がファインダーパターン固有の第１のパターンである１：１：３：１：１の比率に近いか否かを予め設定されている閾値を用いて評価する（ステップＳ２０３）。１：１：３：１：１の比率に近いと評価された場合（Ｓ２０４のＹＥＳ）、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比と１：１：３：１：１の比率との誤差に対応する評価値を求める（ステップＳ２０５）。かかるラン毎の比の評価の方法と評価値の計算方法については、後述する。
また、検出された候補ファインダーパターンのランの中心点の座標位置を水平座標（即ちｘ座標）の原点として記録すると共に、候補ファインダーパターンのランの長さを水平幅ｗｈとして記録する。即ち、図６に示すように、水平走査方向に検出された候補ファインダーパターンにおける両端の黒画素間の幅を水平幅ｗｈとして記録すると共に、候補ファインダーパターンにおける両端の黒画素間の中心位置即ち候補中心座標位置を水平座標の原点として記録する。ここに、図６は、検出された候補ファインダーパターンの幅と候補中心座標位置とを説明するための模式図である。
【００８２】
次に、水平座標の原点即ち水平方向に検出された候補ファインダーパターンのランの中心点の座標位置から、垂直方向に走査して、候補ファインダーパターンの垂直方向のランを調べる（ステップＳ２０６）。
次いで、ステップＳ２０２，Ｓ２０３と同様に、垂直走査線における白画素のラン長と黒画素のラン長とを求めて、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比がファインダーパターン固有の第１のパターンである１：１：３：１：１の比率に近いか否かを予め設定されている閾値を用いて評価する（ステップＳ２０７）。１：１：３：１：１の比率に近いと評価された場合（Ｓ２０８のＹＥＳ）、ステップＳ２０５の場合と同様に、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比と１：１：３：１：１の比率との誤差に対応する評価値を求める（ステップＳ２０９）。
【００８３】
更に、図６に示すように、検出された候補ファインダーパターンのランの中心点の座標位置を垂直座標（即ちｙ座標）の原点として記録すると共に、候補ファインダーパターンのランの長さを垂直幅ｗｖとして記録する。
【００８４】
次に、水平座標の原点における垂直座標の原点即ち水平座標と垂直座標との交差する原点（水平方向と垂直方向にそれぞれ検出された候補ファインダーパターンのランの中心点）から、水平走査線に対して４５°傾斜させた斜め方向に走査して、候補ファインダーパターンのランを調べる（ステップＳ２１０）。
次いで、ステップＳ２０２，Ｓ２０３と同様に、斜め走査線における白画素のラン長と黒画素のラン長とを求めて、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比がファインダーパターン固有の第１のパターンである１：１：３：１：１の比率に近いか否かを予め設定されている閾値を用いて評価する（ステップＳ２１１）。１：１：３：１：１の比率に近いと評価された場合（Ｓ２１２のＹＥＳ）、ステップＳ２０５の場合と同様に、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比と１：１：３：１：１の比率との誤差に対応する評価値を求める（ステップＳ２１３）。
【００８５】
更に、図６に示すように、検出された候補ファインダーパターンのランの中心点の座標位置を斜め座標（即ちｘｙ座標）の原点として記録すると共に、候補ファインダーパターンのランの長さを斜め幅ｗｏとして記録する。
【００８６】
ここで、水平方向，垂直方向及び斜め方向の３つの条件のうち、いずれかが満たされていない場合、即ち、ステップＳ２０４，Ｓ２０８又はＳ２１２にいずれかにおいて、予め設定されている閾値を超えて、１：１：３：１：１の比率に近いと評価されなかった場合（ステップＳ２０４のＮＯ，Ｓ２０８のＮＯ又はＳ２１２のＮＯ）、ファインダーパターンが存在する中心座標位置ではないものと判定して、該当する候補ファインダーパターンをファインダーパターンの候補から除外して、次の水平方向の座標位置にある黒ラン及び白ランのファインダーパターンに関する評価を行なうために、ステップＳ２１６に移行する。
【００８７】
一方、水平方向，垂直方向及び斜め方向の３つの条件のいずれも満たしている場合においては、ステップＳ２１５まで処理を行なった後、水平方向，垂直方向及び斜め方向の３つの条件を満たしている候補ファインダーパターンの中心点の座標位置を候補ファインダーパターンの候補中心座標位置として記録する。この時、当該候補ファインダーパターンの水平幅ｗｈ、垂直幅ｗｖ、斜め幅ｗｏの値を平均した値を、当該候補ファインダーパターンの幅として記録しておく（ステップＳ２１４）。なお、本発明においては、当該候補ファインダーパターンの幅の設定は、前述のごとく、かかる場合のみに限られるものではない。
更に、水平方向のランの評価値，垂直方向のランの評価値，斜め方向のランの評価値（ファインダーパターン固有の第１のパターンとの誤差に対する評価即ちファインダーパターン固有の第１のパターンとの近似度を示す値）を合計したものを当該候補ファインダーパターンの座標における評価値として記録する（ステップＳ２１５）。
【００８８】
次いで、ステップＳ２０２で求めた水平方向に走査した走査線について全ての黒ラン及び白ランのファインダーパターンに関する評価が終了していない場合（ステップＳ２１６のＮＯ）、まだ評価していない残りの水平方向のランを評価するために、ステップＳ２０３に復帰して、前述と同様の評価を繰り返す。一方、当該走査線における全ての黒ラン及び白ランのファインダーパターンに関する評価が終了している場合（ステップＳ２１６のＹＥＳ）、まだ、全ての水平方向の走査線に対する走査が終了していない場合には（ステップＳ２１７のＮＯ）、次の水平走査線の走査を行なうためにステップＳ２０２に復帰して、次の水平走査線の走査を行ない、次の水平走査線における黒ラン及び白ランのファインダーパターンに関する前述のごとき評価を繰り返す。
また、全ての水平方向の走査線に対する走査が終了している場合には（ステップＳ２１７のＹＥＳ）、処理を終了する。
【００８９】
次に、図４のステップＳ２０４（及びＳ２０８及びＳ２１２），Ｓ２０５（及びＳ２０９及びＳ２１３）に示す、入力画像の走査結果に基づいて算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比率とファインダーパターン固有の第１のパターンである１：１：３：１：１の比率との比較評価方法と、両者の誤差に対応する（換言すれば、両者の近似度を示す）評価値の計算方法とについて説明する。
まず、ファインダーパターンの候補として算出された黒ラン：白ラン：黒ラン：白ラン：黒ランのそれぞれのランの長さをＲ０，Ｒ１，Ｒ２，Ｒ３，Ｒ４とする。即ち、ファインダーパターンの候補が目的とする真のファインダーパターンであれば、各ランの合計（ΣＲｉ）は、７セルとなるはずである。
従って、算出された各ランのうち、１セル分に対応するランの長さａ及びｂを、それぞれ下記の式（１），（２）のように、２種類の式を用いて算出する。
ａ＝（１／４）・（Ｒ０＋Ｒ１＋Ｒ３＋Ｒ４）　　　　　　　　　…（１）
ｂ＝（１／７）・（Ｒ０＋Ｒ１＋Ｒ２＋Ｒ３＋Ｒ４）　　　　　　　…（２）
【００９０】
次に、下記の式（３）により誤差ｄを算出する。即ち、該評価式は、ファインダーパターン固有の第１のパターンとの間の誤差ｄを示すものであり、逆に言えば、誤差ｄが小さいほど、ファインダーパターン固有の第１のパターンとの近似度が高いことを示している。
ｄ＝│ａ−ｂ│＋│Ｒ２−３ｂ│　　　　　　　　　　　　　　…（３）
式（３）により誤差ｄを計算した際に、下記の式（４）に示す評価式のように、
ｄ≦Ｔｈｒｅｓｈ　　　　　　　　　　　　　　　　　　　　　　　…（４）
が成立する場合、算出された黒ラン：白ラン：黒ラン：白ラン：黒ランの比率がファインダーパターン固有の第１のパターン１：１：３：１：１の比率に近いものとして、ファインダーパターンの候補としての評価をＯＫとする。
【００９１】
ここに、Ｔｈｒｅｓｈは、ファインダーパターン固有の第１のパターンと近似しているか否かを識別する閾値であり、誤差ｄがＴｈｒｅｓｈの値を超えている場合、ファインダーパターン固有の第１のパターンとはかけ離れているパターンであるとして、該当する候補ファインダーパターンをファインダーパターンの候補から除外するものである。また、Ｔｈｒｅｓｈの値は、２次元コードの種類及び用途更には入力画像の画質などに応じて、使用者が所望する任意の値に予め設定することができる定数である。
ファインダーパターンの候補としての評価がＯＫの場合には、誤差に対応する即ち近似度を示す評価値ｅを、下記の式（５）により算出して記録する。
ｅ＝Ｔｈｒｅｓｈ−ｄ　　　　　　　　　　　　　　　　　　　　　　…（５）
即ち、評価値ｅの値が大きいほど、ファインダーパターンに近似していることを示している。
【００９２】
なお、前記式（１）乃至（５）に示す評価式は、本発明の実施例の一例を示すものであり、本発明においては、かかる場合のみに限るものではなく、ファインダーパターン固有の第１のパターンとの間の誤差或いは近似度を評価し得る評価式であれば、２次元コードの種類や用途や入力画像の画質などに基づいて、予め所望する任意の評価式を予め設定して用いてもかまわない。
【００９３】
例えば、前記式（１）乃至（５）にあっては、ランの長さＲ０，Ｒ１，Ｒ３，Ｒ４それぞれの誤差の程度を評価することを省略しているが、更に、きめ細かな評価を必要とする使用環境であれば、ランの長さＲ０，Ｒ１，Ｒ３，Ｒ４それぞれの誤差の程度を評価する評価式を用いても良いし、更に、ファインダーパターンの候補の幅が、ファインダーパターンの幅として予め定められている幅との差が、予め設定されている許容値に収まっているか否かを評価し、該許容値を超えていると評価された場合は、ファインダーパターン固有の幅とはかけ離れているサイズのパターンであるとして、該当する候補ファインダーパターンをファインダーパターンの候補から除外することにしても良い。ここに、該許容値は、前記の閾値Ｔｈｒｅｓｈの場合と同様に、２次元コードの種類及び用途更には入力画像の画質などに応じて、使用者が所望する任意の値に予め設定することができる定数である。
【００９４】
次に、図３のステップＳ１０２に示しているファインダーパターンの座標を決定する手順を説明する。即ち、入力画像中における３つのファインダーパターンの中心座標位置を決定する手順について説明する。
入力された２値化画像においてファインダーパターンの候補として検出されている候補ファインダーパターンの中心座標位置と幅及び評価値の記録については、例えば、図７に示すような評価値テーブルに記録されている。ここに、図７は、図３のステップＳ１０１において検出されたファインダーパターンの候補即ち候補ファインダーパターンを記録している評価値テーブルの一例を示す構成図である。
【００９５】
図７に示すごとき評価値テーブルに記録されている各ファインダーパターンの候補のうち、同じ中心座標位置を有しているファインダーパターンの候補の情報を統合し、更に、中心座標位置が近接するものについても情報を統合する。
ここで、ファインダーパターンの候補同士の中心座標位置が近接していることを判定する近接判定条件の一例を示せば、次の通りである。
即ち、ファインダーパターンの候補ｉの座標を（ｘｉ，ｙｉ）、幅をｗｉ、候補ｊの座標を（ｘｊ，ｙｊ）、幅をｗｊとした場合、候補ｉと候補ｊとが近接していると判定される近接判定条件は、次の２つの条件を満たす場合である。
【００９６】
条件１：幅ｗｉと幅ｗｊとの差が、２つの幅ｗｉ，幅ｗｊの平均値の１／４よりも小さい。即ち、下記の式（６）が成立する。
│ｗｉ−ｗｊ│＜（ｗｉ＋ｗｊ）／８　　　　　　　　　　　　　　…（６）
条件２：幅ｗｉと幅ｗｊの大きい方をｗとした場合、下記の式（７），（８）を満たす。
│ｘｉ−ｘｊ│≦（３／１４）ｗ　　　　　　　　　　　　　　…（７）
│ｙｉ−ｙｊ│≦（３／１４）ｗ　　　　　　　　　　　　　　…（８）
ここに、幅ｗｉと，ｗｊは、前述のごとく、それぞれ候補ｉ，候補ｊの水平方向，垂直方向，斜め方向の３つの方向において算出されている幅の平均値を用いている。
【００９７】
該近接判定条件を、図９を参照して説明する。ここに、図９は、ファインダーパターンの候補同士の中心座標位置が近接する条件の例を示す模式図である。図９に示すように、前述の近接判定条件のうち、式（７），（８）は、２つのファインダーパターンの候補の中心座標が、互いに、相手方のファインダーパターンの中心部のパターンを示す（３×３）セルの黒正方形の内部にあることと同等であることを示している。更に、ファインダーパターンの候補の大きさ即ち幅を評価する式（６）は、式（７），（８）に示す近接判定条件を満たす候補ファインダーパターン同士が、ファインダーパターンの大きさについても、（９／８）倍即ち１２％よりも少ない隔たりしかないほど略近似した大きさであることを示すものであり、同一の候補ファインダーパターンが検出されているものとして、統合対象として許容するものであり、逆に言えば、たとえ、式（７），（８）に示す近接判定条件を満たす候補ファインダーパターン同士であったとしても、ファインダーパターンの大きさが大きく離反している場合には、互いに異なるパターンとして統合対象から除外することを意味している。
【００９８】
前記近接判定条件即ち式（６），（７），（８）を満たす関係にあるファインダーパターンの候補同士を統合して一つのファインダーパターンの候補に纏める。かかる統合を行なう場合、統合するファインダーパターンの候補の中心座標位置及び幅については、両者の平均値を用い、評価値については、両者の合算値を用いて、統合する。
【００９９】
例えば、図７に示すごとき評価値テーブルに記録されているファインダーパターンの候補に対して、前記近接判定条件即ち式（６），（７），（８）を満たす関係にあるファインダーパターンの候補を統合した結果は、図８のごとき統合結果となる。ここに、図８は、図７に示す評価値テーブルに記録されているファインダーパターンの候補に対する統合整理結果の評価値テーブルの一例を示す構成図である。
【０１００】
即ち、図８に示すように、候補番号０と１とが統合されて新たに候補番号０として記録され、中心座標位置と幅とはそれぞれの平均値が、評価値はそれぞれの合算値が設定され、候補番号２と３とが統合されて新たに候補番号２として記録され、中心座標位置と幅とはそれぞれの平均値が、評価値はそれぞれの合算値が設定され、候補番号５と６とが統合されて新たに候補番号５として記録され、中心座標位置と幅とはそれぞれの平均値が、評価値はそれぞれの合算値が設定され、候補番号７と８とが統合されて新たに候補番号７として記録され、中心座標位置と幅とはそれぞれの平均値が、評価値はそれぞれの合算値が設定される。
なお、候補番号４は、候補番号２及び３と同じ中心座標位置を有しているが、近接判定条件のうち、ファインダーパターンの候補の大きさを評価する条件１即ち式（６）を満たしていないので、候補番号２及び３のいずれとも統合されないまま、図８の評価値テーブルに残される。
【０１０１】
以上のようにして、統合整理された最終的な評価値テーブルを順次検索して、近似度の大きさを示す評価値が大きい値となっている上位３位の３つの候補（即ち、２次元コードのファインダーパターンに所要の個数分）のファインダーパターンを選択して、３つのファインダーパターンとして決定する。例えば、図８に示す評価値テーブルの場合であれば、評価値が大きい候補番号０と５と７とに記録されているファインダーパターンの候補が２次元コードの３つのファインダーパターンとして決定され、かかる３つの座標（５２，２１５），（１７２．５，８８），（１７５，２１２）がファインダーパターンの中心座標位置として決定される。
【０１０２】
もし、統合整理後の評価値テーブルにファインダーパターンの候補が３つ（即ち、２次元コードのファインダーパターンに所要の個数分）以上存在していなければ、ファインダーパターンの検出は失敗したことになる。
なお、前述の実施例においては、式（６）を用いて、ファインダーパターンの候補同士の大きさの近似度を評価する例を示しているが、本発明においては、かかる場合に限るものではなく、２次元コードの種類や用途や入力画像の画質などに応じて、近似度を更に厳密にしたり、逆に、緩和したり、使用者の所望する任意の条件に設定することが可能である。
【０１０３】
また、式（７），（８）を用いて、ファインダーパターンの候補同士の中心座標位置の近接度を評価する例を示しているが、本発明においては、かかる場合に限るものではなく、２次元コードの種類や用途や入力画像の画質などに応じて、使用者の所望する任意の条件に設定することが可能である。例えば、式（７），（８）の条件を緩和して、ファインダーパターンの候補同士が近接して互いのパターンが重なり合うような位置において検出されている場合、互いのファインダーパターンの候補を統合対象とみなすようにしても良い。
【０１０４】
次に、図３のステップＳ１０４におけるセルサイズの決定の手順について説明する。
即ち、前述のごとき手順により３つのファインダーパターンが決定されると、決定された３つのファインダーパターンの幅に基づいて、当該２次元コードを構成するセルの大きさを示すセルサイズを決定する。例えば、３つのファインダーパターンの幅を平均して、セルサイズを算出するファインダーパターンの幅として決定する。ファインダーパターンは、７セル分の幅によって構成されているので、各ファインダーパターンの幅の平均値を求めることにより決定されたファインダーパターンの幅をセル数７で除することにより、当該２次元コードを構成するセルのセルサイズを算出する。
【０１０５】
例えば、図８に示す評価値テーブルの場合であれば、ファインダーパターンの幅は、各ファインダーパターンの幅の平均値として
（３４＋３１．５＋３２）／３＝３２．５
であり、セルサイズは、３２．５／７＝４．６　と算出される。
なお、ここで、３つのファインダーパターンの幅の平均値に基づいて、セルサイズを算出する例を示しているが、本発明においては、かかる場合のみに限るものではなく、例えば、２次元コードの種類や利用形態などに応じて、歪んだ状態の２次元コードにも厳密に対応する場合には、３つのファインダーパターン毎にそれぞれ有意な異なる幅を検出している場合、各ファインダーパターン毎にそれぞれが存在している周辺のセル毎に異なるセルサイズを算出して適用することとしても良い。
【０１０６】
次に、図３のステップＳ１０５における２次元コードの向きの決定手順について、詳しく説明する。
まず、基準ファインダーパターンＦ０（即ち、矩形状（正方形状を含む）の２次元コードの３隅に配置されている３つのファインダーパターンの中心点を相互接続して形成される直角三角形の直角の位置にあるファインダーパターン：図５参照）を求める手順を説明する。
【０１０７】
前述の手順により決定された３つのファインダーパターンの中心座標位置を頂点とする三角形を考える。
次に、かくのごとき三角形における各辺の長さ或いは各辺の長さの自乗を求め、最大の値を有する辺を決定する。更に、最大の値となる辺に含まれていない頂点を基準ファインダーパターンＦ０の中心座標とする。かかる手順に基づいて基準ファインダーパターンＦ０を求めることにより、２次元コード即ちファインダーパターンが、歪んだ状態で入力されている入力画像のように、入力画像中で矩形状（正方形状を含む）として表示されていない場合であっても、基準ファインダーパターンＦ０の中心座標を求めることができる。
例えば、図８に示す評価値テーブルの場合であれば、基準ファインダーパターンは、候補番号７のファインダーパターンが該当することとなる。
【０１０８】
なお、一般的に、座標（ｘｉ，ｙｉ）と座標（ｘｊ，ｙｊ）とが判明している場合に、座標（ｘｉ，ｙｉ）と座標（ｘｊ，ｙｊ）とを結ぶ直線の長さをｌとした場合、以下の関係が成立するので、前記三角形における各辺の長さ或いは各辺の長さの自乗は、３つのファインダーパターンの中心座標それぞれの差の自乗を加算して求めれば良い。
ｌ２＝（ｘｉ−ｘｊ）２＋（ｙｉ−ｙｊ）２　　　　　　　　　　　　　　　…（９）
【０１０９】
次に、基準ファインダーパターンＦ０以外の他の２つのファインダーパターンの位置関係を求める手順について説明する。基準ファインダーパターンＦ０と他のファインダーパターンＦ１，Ｆ２の位置関係については、図５に示すように構成されている。
基準ファインダーパターンＦ０の中心点を中心にして、図１０に示すように４つの領域に分割した場合において、残り２つのファインダーパターンＦ１，Ｆ２の中心点がどの領域に属しているかを判定する手順について説明する。ここで、図１０は、基準ファインダーパターンＦ０の中心点を原点とするｘ座標及びｙ座標を時計回りの方向に４５°回転された位置における第１象限乃至第４象限をそれぞれ領域０乃至領域３とする一例を示す領域分割図である。
【０１１０】
例えば、基準ファインダーパターンＦ０の座標を（ｘＦ０，ｙＦ０）とし、検査対象のファインダーパターンＦ１，Ｆ２の座標を（ｘ，ｙ）とした場合、以下に示す条件により、検査対象のファインダーパターンＦ１，Ｆ２が属する領域を判定する。
【０１１１】
領域０に属する条件
（ｙ−ｙＦ０）≦（ｘ−ｘＦ０）かつ（ｙ−ｙＦ０）＞−（ｘ−ｘＦ０）…（１０）
領域１に属する条件
（ｙ−ｙＦ０）＞（ｘ−ｘＦ０）かつ（ｙ−ｙＦ０）＞−（ｘ−ｘＦ０）…（１１）
領域２に属する条件
（ｙ−ｙＦ０）＞（ｘ−ｘＦ０）かつ（ｙ−ｙＦ０）≦−（ｘ−ｘＦ０）…（１２）
領域３に属する条件
（ｙ−ｙＦ０）≦（ｘ−ｘＦ０）かつ（ｙ−ｙＦ０）≦−（ｘ−ｘＦ０）…（１３）
【０１１２】
式（１０）乃至（１３）のいずれを満たしているかにより、基準ファインダーパターンＦ０以外の２つのファインダーパターンＦ１，Ｆ２の中心座標が属する領域を決定することができる。即ち、前述のごとく、検出された３つのファインダーパターンＦ０，Ｆ１，Ｆ２の中心点の座標位置に基づいて、２次元コードの向き（即ち、２次元コードが回転された状態で入力されているか否かを示す２次元コードの向き）を決定することができる。
【０１１３】
図１１は、図５に示す２次元コードの方向（向き）と図１０に示す４つの領域との組み合わせの関係を表示する関連図である。即ち、図１１の関連図に示す表に従い、基準ファインダーパターンＦ０以外の２つのファインダーパターンＦ１，Ｆ２の中心点の座標位置が属する２つの領域の組み合わせにより、２次元コードの方向が決定されている。図１１の関連図に示す表において、方向が記述されていない欄（即ち、「−」を付して示している欄）に当て嵌まるような２つのファインダーパターンＦ１，Ｆ２の中心点の座標位置が属する領域の組み合わせは、不正な組み合わせと判定され、２次元コードの方向の決定は失敗となる。
【０１１４】
例えば、図５（Ａ）に示す２次元コードの方向０の場合には、基準ファインダーパターンＦ０に対し、右側方向にある（即ち、図１０の領域０に属する）ファインダーパターンがＦ１であり、下側方向にある（即ち、図１０の領域１に属する）ファインダーパターンがＦ２であり、図１１に示すごとく、領域０と１との組み合わせの領域に２つのファインダーパターンＦ１，Ｆ２が属している場合は、２次元コードの方向が、図５（Ａ）に示す方向０にあると決定することができる。しかし、例えば、図１１の「−」で示す欄の一例として領域０と領域２とに属しているようなファインダーパターンＦ１，Ｆ２の組み合わせが検出された場合は、２次元コードの方向を決定することができないものとして、２次元コードの読み取り動作を打ち切る。
【０１１５】
即ち、２次元コードの各方向とファインダーパターンＦ１，Ｆ２の中心座標が属する各領域との関係を整理して示すと、図１２のようになる。ここに、図１２は、図５に示す２次元コードの各方向とファインダーパターンＦ１，Ｆ２の中心点の座標位置が属する各領域との関係を表示する関連図である。図１２に示すように、２次元コードの方向０の場合には、ファインダーパターンＦ１の中心点の座標位置が領域０に属し、ファインダーパターンＦ２の中心点の座標位置が領域１に属している。
【０１１６】
なお、本実施例においては、２次元コードの各方向とファインダーパターンＦ１，Ｆ２の中心点の座標位置が属する各領域との対応関係が、２次元コードに傾きが生じていない場合における２次元コードの方向を決定している例を示しているが、本発明は、前述のごとく、かかる場合のみに限るものではなく、２次元コードに傾きを伴っている場合であっても、類似の方法を用いて、２次元コードの向きが回転しているか否かを、ファインダーパターンＦ０，Ｆ１，Ｆ２の各中心点の座標位置に基づいて判定することができる。
【０１１７】
次に、図２のステップＳ００３におけるアライメントパターンの位置検出を行なう手順について更に詳しく説明する。
図１３に、アライメントパターンの位置検出を行なう処理の流れの一例を、フローチャートを用いて示している。
まず、２次元コードの回転角度を検出する（ステップＳ３０１）。ここでは、これまでの説明のごとき手順により求められたファインダーパターンＦ０，Ｆ１，Ｆ２のそれぞれの中心点Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃの中心座標位置を用いて、２次元コードがどの程度回転しているかを検出する。
【０１１８】
回転角度は、図１４に示すように、２次元コードの基準ファインダーパターンＦ０を中心として、図１２に示すごとく、２次元コードの方向（向き）と領域との関係が決定された状態において、ファインダーパターンＦ１が水平方向又は垂直方向から時計回りの方向に回転している回転角度Ｒで与えられるものとする。例えば、図１４に一例を示すように、２次元コードのファインダーパターンＦ１の中心点の座標位置が領域０に属する図１２に示す方向０の場合において、回転角Ｒが０°の場合であれば、図５（Ａ）における方向０のように、基準ファインダーパターンＦ０とファインダーパターンＦ１とが水平な位置に位置している状態であり、２次元コードが回転していない状態にある。
【０１１９】
ここに、図１４は、２次元コードの水平又は垂直方向からの回転角度の一例を示す模式図であり、２次元コードのファインダーパターンＦ１の中心点の座標位置が領域０に属する図１２に示す方向０の場合の例を示すものであり、かかる場合においては、ファインダーパターンＦ１の中心点の座標位置がファインダーパターンＦ０の水平左方向から回転している回転角度Ｒを示すことになる。また、２次元コードのファインダーパターンＦ１の中心点の座標位置が、図１２に示す領域１，領域２或いは領域３に属する場合は、それぞれ、ファインダーパターンＦ１の中心点の座標位置がファインダーパターンＦ０の垂直下方向，水平右方向或いは垂直上方向から回転角度Ｒだけ回転していることになる。
【０１２０】
即ち、回転角度Ｒとしては、時計回りの回転を正、反時計回りの回転を負の値として表現し、±４５度（°）の範囲（即ち、２次元コードの各方向０，１，２，３に対応する図１０に示す領域０，１，２，３のいずれかの範囲内）において、例えば、単位を５度（°）単位として、２次元コードの回転角度Ｒの検出を行なう。
ここで、５度（°）単位とする回転角度Ｒｉラジアン（＝３６０°×（Ｒｉ／２π））に対するｔａｎ値、即ち、
ｔａｎＲｉ
なお、Ｒｉ＝（π／３６）×ｉ　（ｉ＝０，１，２，…，９）
について、１０個のｔａｎ値を有するテーブルを予め用意しておく。
【０１２１】
２次元コードの入力画像内において検出されたファインダーパターンＦ０，Ｆ１，Ｆ２それぞれの中心点Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃの中心座標位置をそれぞれ（ｘＦ０，ｙＦ０），（ｘＦ１，ｙＦ１），（ｘＦ２，ｙＦ２）とすると、２次元コードに傾きを伴っていない場合においては、２次元コードの回転角度Ｒのｔａｎ値は、それぞれ、
方向０の場合、ｔａｎ（Ｒ）＝（ｙＦ１−ｙＦ０）／（ｘＦ１−ｘＦ０）　…（１４）
方向１の場合、ｔａｎ（Ｒ）＝（ｙＦ０−ｙＦ２）／（ｘＦ０−ｘＦ２）　…（１５）
方向２の場合、ｔａｎ（Ｒ）＝（ｙＦ０−ｙＦ１）／（ｘＦ０−ｘＦ１）　…（１６）
方向３の場合、ｔａｎ（Ｒ）＝（ｙＦ２−ｙＦ０）／（ｘＦ２−ｘＦ０）　…（１７）
として与えられる。
【０１２２】
即ち、ファインダーパターンＦ０，Ｆ１，Ｆ２それぞれの中心点Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃの中心座標と２次元コードの方向とから、前記式（１４）乃至（１７）のいずれかの式を用いて、ｔａｎ（Ｒ）が求められる。求められたｔａｎ（Ｒ）の値を予め用意しているｔａｎＲｉのテーブル値と比較することにより、回転角度Ｒを求めることができる。
【０１２３】
次に、図１３のフローチャートに示すように、２次元コードの傾きに対応するアライメントパターンを抽出するために精査する探索範囲を決定する際の基準となる探索基準点を決定する（ステップＳ３０２）。
即ち、３つのファインダーパターンＦ０，Ｆ１，Ｆ２の中心点を、図１５に示すごとく、Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃとする。更に、２次元コードの頂点を、それぞれＡ，Ｂ，Ｃ，Ｄとし、頂点Ａ，Ｂ，Ｃの３つの隅の位置にそれぞれ３つのファインダーパターンＦ０，Ｆ１，Ｆ２が配置されている。ここに、図１５は、２次元コードにおけるアライメントパターンの探索基準点の位置の一例を示す模式図である。
【０１２４】
図１５において、アライメントパターンＰの探索基準点を、点Ｈで示している。ここに、探索基準点Ｈは、ファインダーパターンＦ１の中心点Ｆ１Ｃを通り、辺ＢＤに平行な直線Ｓ１と、ファインダーパターンＦ２の中心点Ｆ２Ｃを通り、辺ＣＤに平行な直線Ｓ２との交点である。
ここで、探索基準点Ｈを求めるには、辺ＢＤ即ち直線ＢＤ及び辺ＣＤ即ち直線ＣＤの傾きを求めることが必要である。直線ＢＤと直線ＣＤとの傾きは、図１６に示すように、直線ＢＤと直線ＣＤとに接して配置されているファインダーパターンのエッジを追跡することにより、算出することができる。図１６は、ファインダーパターンのエッジ追跡の一例を示す模式図である。
【０１２５】
まず、図１６に示すように、２次元コードの１辺である直線ＢＤと接し、直線ＢＤの一部を形成しているファインダーパターンＦ１の外輪郭の各画素の位置を検出するために、ファインダーパターンＦ１の中心点Ｆ１Ｃから垂直方向に走査し、ファインダーパターンＦ１の両端の点ａ，ｂを求める。点ａは、ファインダーパターンＦ１の中心点Ｆ１Ｃから出発し、垂直上方向に走査したとき、２回目の黒画素の連続するランの終わりの点であり、点ｂは、垂直下方向に走査したとき、２回目の黒画素の連続するランの終わりの点である。
【０１２６】
次に、垂直線である線分ａｂ上の各点から水平右方向に順次走査し、線分ａｂ上の各点において、ファインダーパターンＦ１の右端にある黒画素の連続するランが終了する上下両端の黒画素の点とファインダーパターンＦ１の右端にある黒画素の連続するランが終了する最右端の黒画素の点とを追跡していく。かかるエッジ追跡により、最終的には、点ａに対応する上端の黒画素の追跡終了点ｃ，点ｂに対応する下端の黒画素の追跡終了点ｅの各座標を検出して記録すると共に、線分ａｂ上の各点の走査においてファインダーパターンＦ１の右端にある黒画素の連続するランが終了する最右端の点即ちｘ座標（水平座標）の座標値が最大となる追跡最終点ｄの座標位置を記録しておく。
【０１２７】
ここで、２次元コードの回転が時計周り即ち正方向であれば、線分ｄｅの傾きを直線ＢＤの傾きとし、反時計周り即ち負方向であれば、線分ｃｄの傾きを直線ＢＤの傾きとする。
図１６（Ａ）は、回転が時計周り即ち正方向である場合の例であり、図１６（Ｂ）は、回転が反時計周り即ち負方向である場合の例を示すものである。即ち、回転が時計周り即ち正方向の場合は、図１６（Ａ）に示すように、追跡開始点ａと追跡終了点ｃとは同一となり、回転が反時計周り即ち負方向の場合は、図１６（Ｂ）に示すように、追跡開始点ｂと追跡終了点ｅとが同一となる。
【０１２８】
回転が時計周り即ち正方向の場合は、追跡最終点ｄと追跡終了点ｅとの各座標位置が示すファインダーパターンＦ１の外輪郭の傾きにより、ファインダーパターンＦ１の外輪郭が一部を構成している直線ＢＤの傾きを求めることができ、一方、回転が反時計周り即ち負方向の場合は、追跡終了点ｃと追跡最終点ｄとの各座標が示すファインダーパターンＦ１の外輪郭の傾きにより、ファインダーパターンＦ１の外輪郭が一部を構成している直線ＢＤの傾きを求めることができる。即ち、ファインダーパターンＦ１が位置する２次元コードの辺ＢＤの一部を形成するファインダーパターンＦ１の外輪郭を構成している各画素の座標位置のうち、少なくとも２つの画素の座標位置を検出することにより、辺ＢＤ即ち直線ＢＤの傾きを求めることができる。
全く同様にして、ファインダーパターンＦ２が位置する辺ＣＤ即ち直線ＣＤの傾きも求めることができる。
【０１２９】
２つの直線ＢＤの傾きと直線ＣＤの傾きとがそれぞれ算出されれば、図１５に示すように、ファインダーパターンＦ１の中心点Ｆ１を通り、直線ＢＤに平行な直線Ｓ１と、ファインダーパターンＦ２の中心点Ｆ２を通り、直線ＣＤに平行な直線Ｓ２との交点を計算により求めることができ、而して、直線Ｓ１と直線Ｓ２との交点を、アライメントパターンＰを探索する基準点となる探索基準点Ｈとして決定することができる。
【０１３０】
図１５に前述したアライメントパターンの探索基準点Ｈの算出方法の例は、ファインダーパターンＦ１が領域０に属し、ファインダーパターンＦ２が領域１に属する場合、即ち、２次元コードが方向０の状態にある場合を例に採って説明したが、２次元コードが方向０以外の方向にある場合についても、全く同様な処理により、２次元コードの辺の一部を構成するファインダーパターンについて、当該ファインダーパターンの端にある黒画素の連続するランの追跡終了点ｃ，ｅ及び追跡最終点ｄとを追跡して検出することにより、当該ファインダーパターンの外輪郭の傾きを求めて、２次元コードの辺の傾きを検出することができ、もって、方向０の場合と同様に、２次元コードがいずれの方向に回転している状態においても、アライメントパターンＰに関する探索基準点Ｈを求めることができる。
【０１３１】
次に、図１３のフローチャートに示すように、アライメントパターンＰの探索範囲の決定を行なう（ステップＳ３０３）。アライメントパターンＰの探索範囲の一例を示す図１７を用いて説明する。図１７は、アライメントパターンＰの探索範囲を決定する一例を説明するための模式図である。
図１７において、アライメントパターン探索のための基準となる探索基準点Ｈの座標を（ｘＨ，ｙＨ）とし、セルサイズをｃｓとする。
【０１３２】
２次元コードが回転していない場合には、アライメントパターンＰの中心点が存在していると予測される座標位置である予測中心座標位置ＰＰは、探索基準点Ｈより予め定められている距離だけ離れた位置、例えば、３セルサイズ分内側の位置に存在していることになり、（ｘＨ−３ｃｓ，ｙＨ−３ｃｓ）となる。而して、アライメントパターンＰの探索範囲ＰＲは、該予測中心座標位置ＰＰを中心として、該アライメントパターンＰ（５×５セルサイズ）を必要十分にカバーする範囲、例えば、水平・垂直の両方向に、それぞれ、少なくとも２セル分の余裕を有している幅（５＋２ｎ）×ｃｓ（ｎ：整数）からなる矩形形状の範囲内を探索範囲ＰＲとして設定する。
【０１３３】
即ち、探索範囲ＰＲとしては、探索基準点Ｈから予め定められた距離だけ離れた位置（例えば、３セルサイズ分離れた位置）をアライメントパターンＰの中心点が配置されていると予測される予測中心座標位置ＰＰとして、該予測中心座標位置ＰＰから少なくとも２セルサイズ分の余裕を持ってアライメントパターンＰのパターンを含むに十分な領域を設定することとしている。
【０１３４】
なお、２次元コードが、前述の図１４に示すように、回転角度Ｒだけ回転している場合には、探索基準点Ｈに対して、下記の式（１８）により、２次元コードの回転を補正した補正探索基準点Ｈ’を計算する。
【０１３５】
【数１】
2004054530.tif 000003
【０１３６】
ここで、（ｘＦ０，ｙＦ０）は、ファインダーパターンＦ０の中心点Ｆ０Ｃの中心座標である。
回転角度Ｒの回転が補正された後の補正探索基準点Ｈ’を用いた場合のアライメントパターンＰの補正予測中心座標ＰＰ’は、
（ｘＨ’−３ｃｓ，ｙＨ’−３ｃｓ）
となる。而して、回転が伴う場合のアライメントパターンＰの補正探索範囲ＰＲ’としては、該補正予測中心座標ＰＰ’を中心として、回転角度Ｒだけ探索範囲ＰＲを回転させた領域であり、当該アライメントパターンＰ（５×５セルサイズ）を必要十分にカバーする範囲、例えば、幅（５＋２ｎ）×ｃｓ（ｎ：整数）からなる矩形形状の範囲内を補正探索範囲ＰＲ’として設定する。
ここで、補正探索範囲ＰＲ’内の画素の回転補正後の座標を（ｘ’，ｙ’）とすると、該回転補正後の座標（ｘ’，ｙ’）に対応する回転補正前の入力画像の座標（ｘ、ｙ）は、下記の式（１９）により求められる。これにより、アライメントパターンＰの探索範囲ＰＲ内のみを回転補正した部分画像を作成する。
【０１３７】
【数２】
2004054530.tif 000004
【０１３８】
ここで、（ｘＦ０，ｙＦ０）は、ファインダーパターンＦ０の中心点Ｆ０Ｃの中心座標である。
回転が検出されなかった画像については、原画像における探索範囲ＰＲ内の部分画像を切り出して、一方、回転が検出された画像については、回転を補正した補正探索範囲ＰＲ’内の部分画像を切り出して、いずれかの対象とする部分画像内からアライメントパターンＰに固有の第２のパターン（ファインダーパターンに固有の第１のパターンとは異なるパターンとして予め定められている固有の第２のパターン）に合致するパターンを抽出することになる。
【０１３９】
本発明においては、アライメントパターンＰを抽出する処理を行なう際に、アライメントパターンＰに固有の第２のパターンが有する特徴に合致したテンプレートを用いたテンプレートマッチングを切り出された前記部分画像に対して行なう。ここで、テンプレートマッチングに用いる入力画像としては、２値化処理が施される前の入力画像（原画像信号）を用いる。もって、入力画像の画質があまり良くない場合のように、２値化処理により白画素のつぶれや黒画素のかけが伴うような場合であっても、２値化処理前の入力画像を用いることにより、アライメントパターンＰを正しく検出することを可能としている。
【０１４０】
テンプレートマッチングに用いるテンプレートは、探索対象のアライメントパターンの５×５セルの形状に一致した形状を有し、セルサイズに基づいて定倍された大きさのテンプレートを用いる。また、該テンプレート内の画素値としては、例えば、２値化前の入力画像（原画像信号）が、明（白）から暗（黒）への変化に従い、２５５から０の範囲の各種レベルの値を採り得るものとすれば、テンプレートの黒画素については０を、白画素については２５５を画素値として割り当てるようにする。
また、テンプレートマッチング処理を簡単に実施できるように、前述のごとく、２次元コードが回転されている状態にある場合には、回転補正を施した後の補正探索範囲ＰＲ’内の部分画像を用いている。
【０１４１】
而して、前記探索範囲ＰＲ又はＰＲ’から切り出された部分画像内を１画素単位で順次ずらしながら、テンプレートを構成している全画素の画素値とそれぞれの画素位置に対応している部分画像内の画素の画素値との画素毎の差分に関する絶対値総和を計算するテンプレートマッチングを行なう（図１３に示すステップＳ３０４）。
前記探索範囲ＰＲ又はＰＲ’から切り出された部分画像内の全画素に亘って、１画素単位でずらして得られた差分の絶対値総和のうち、該差分の絶対値総和が最小となるテンプレートの中心座標をアライメントパターンＰ又はＰ’の中心点ＰＣ又はＰＣ’（回転なしの場合、アライメントパターンＰの中心点Ｐ、回転を伴う場合、アライメントパターンＰ’の中心点ＰＣ’）の中心座標として決定する（ステップＳ３０５）。
【０１４２】
ここに、回転補正を行なっていた場合には、アライメントパターンＰ’の中心点ＰＣ’の中心座標として決定された回転画像を、式（１９）により更に回転させて、回転補正前の入力画像におけるアライメントパターンＰの中心点ＰＣの中心座標を算出する。而して、たとえ、入力画像の２次元コードに回転や傾斜がある場合であっても、或いは、画質が良くない場合であっても、検出されているファインダーパターンＦ０，Ｆ１，Ｆ２の座標位置に基づいて、アライメントパターンＰの中心点ＰＣの中心座標位置を確実に検出することができる。
【０１４３】
次に、図２のステップＳ００４において行なわれるバージョン判定について更に詳細に説明する。
まず、矩形状（正方形状を含む）からなる２次元コードの３隅に配置されている同じ形状からなるファインダーパターンＦ０，Ｆ１，Ｆ２について、２次元コードの１辺を形成するファインダーパターンＦ０，Ｆ１それぞれの中心点Ｆ０Ｃ，Ｆ１Ｃ間のファインダーパターン間距離と、２次元コードの他の１辺を形成する同Ｆ０，Ｆ２それぞれの中心点Ｆ０Ｃ，Ｆ２Ｃ間のファインダーパターン間距離とを、それぞれの座標位置に基づいて算出して、算出された２つのファインダーパターン間距離の平均値を求める。
【０１４４】
しかる後、ファインダーパターン間距離の平均値を前述した図３のステップＳ１０４に示す手順により算出されているセルサイズで除算をして、商を求めることにより、２次元コードのセル数を算出する。而して、当該２次元コードのセル数を決定する２次元コードのバージョンを判定することが可能であるが、本発明においては、バージョンの判定誤りに伴う２次元コードの読み取り失敗を防止するために、２次元コードのバージョンと該バージョンにより決定される登録セル数（バージョンに対応する２次元コード即ちファインダーパターン間のセル数）との対応を示すバージョン登録テーブルを備えている。
【０１４５】
即ち、算出された前記商の値（セル数）により、バージョン登録テーブルを検索することにより、バージョン登録テーブル予め設定登録されている登録セル数の中から、一致或いは最も近接した値（セル数）を有する登録セル数を選択し、該登録セル数に対応するバージョンを、対象とする入力画像における２次元コードのバージョン番号として判定する。なお、バージョン登録テーブルのバージョン番号は、２次元コードのセル数の順番に付与されており、バージョン番号が増加するほど、２次元コードのセル数が増加していくようにされている。
【０１４６】
次に、図２のステップＳ００５において行なわれるデータセルの切り出しについて説明する。図１８に、データセルの切り出し処理に関する流れの一例を、フローチャートを用いて示している。
【０１４７】
まず、各データセルのデータ値が、明（白）であるか、あるいは、暗（黒）であるかを識別するための閾値である明暗閾値を決定する（ステップＳ４０１）。データセルの明暗（即ち白黒）を識別するための明暗閾値の決定方法を説明する模式図である図１９を用いて更に説明すると、次の通りである。即ち、２次元コードの３隅に配置されているファインダーパターンＦ０，Ｆ１，Ｆ２のうち、対角の位置に配置されているファインダーパターンＦ１の中心点Ｆ１ＣとファインダーパターンＦ２の中心点Ｆ２Ｃとを結ぶ線分である対角線Ｊ上にある入力画像の各画素の画素値を全て走査し、対角線Ｊ上のすべての画素の画素値を比較して、該画素値の最大値と最小値とを求める。しかる後、対角線Ｊ上の画素値の最大値と最小値との中間の値（平均値）をデータセルの明暗（即ち白黒）の識別用の明暗閾値として決定する。なお、対角線Ｊ上にあるすべての画素の画素値を用いて、明暗閾値を設定する代わりに、対角線Ｊ上にあるすべてのデータセルのセル中心位置に対応する入力画像の座標位置における各濃度のうち、最大値と最小値との中間の値を明暗閾値として設定するようにしても良い。
【０１４８】
次に、各データセルのセル中心位置を入力画像中の座標位置に変換するための座標変換式の変換係数を計算する（ステップＳ４０２）。
即ち、２次元コードの各データセルのセル中心位置を示す座標位置を（ｕ，ｖ）とした時、該各データセルのセル中心位置（ｕ，ｖ）に対応する入力画像中の座標位置（ｘ，ｙ）に変換する座標変換式は、下記の式（２０）及び式（２１）のように与えられる。
ｘ＝（ｂ００ｕ＋ｂ０１ｖ＋ｂ０２）／（ｕ＋ｂ２１ｖ＋ｂ２２）　　　　…（２０）
ｙ＝（ｂ１０ｕ＋ｂ１１ｖ＋ｂ１２）／（ｕ＋ｂ２１ｖ＋ｂ２２）　　　　…（２１）
式（２０）及び（２１）において、これまでに決定した４つの基準点の座標位置即ちファインダーパターンＦ０，Ｆ１，Ｆ２とアライメントパターンＰとのそれぞれの中心点の位置を示すセル中心位置の座標位置を代入することにより、変換係数ｂｉｊ（ここに、ｉｊ＝００，０１，０２，１０，１１，１２，２１，２２）を計算する。
【０１４９】
前述のごとく、ステップＳ００４において決定されたバージョン番号により、２次元コードを構成するセル数ｍ×ｍが決定されている。入力画像において、２次元コードのセル数がｍ×ｍの個数で構成されているとすると、ファインダーパターンＦ０，Ｆ１，Ｆ２及びアライメントパターンＰの各中心点Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃ及びＰＣのセル中心位置を示す座標位置（ｕ，ｖ）は、図２０に示すように、２次元コードの左上隅をセル座標の原点として、それぞれ、（３，３），（ｍ−４，３），（３，ｍ−４），（ｍ−７，ｍ−７）のごとき座標位置を有するセル位置となる。ここに、図２０は、２次元コードの形状と、基準となる４つの基準点のセル位置との関係を示す模式図である。
【０１５０】
従って、ファインダーパターンＦ０，Ｆ１，Ｆ２それぞれの中心点の入力画像中の座標位置（ｘＦ０，ｙＦ０），（ｘＦ１，ｙＦ１）及び（ｘＦ２，ｙＦ２）とアライメントパターンＰの中心点ＰＣの入力画像中の座標位置（ｘｐ，ｙｐ）に対応する、それぞれのセル中心位置を示す座標位置（ｕ，ｖ）を、前記式（２０）及び（２１）の座標変換式に代入すれば、以下の関係が成立する。
【０１５１】
2004054530.tif 000005
【０１５２】
上記の式（２２）乃至（２９）に示す８つの連立方程式を解くことにより、各データセルのセル中心位置を入力画像中の座標位置に変換するための８個の変換係数ｂｉｊ（ｉｊ＝００，０１，０２，１０，１１，１２，２１，２２）を求めることができる。
【０１５３】
次に、図１８のフローチャートにおいて、変換件数ｂｉｊが算出された前記座標変換式即ち式（２０）及び（２１）を用いて、２次元コード内の各データセルのセル中心位置を入力画像中の座標位置に変換する（ステップＳ４０３）。
ここで、ステップＳ４０３において変換された各データセルのセル中心位置に対応する入力画像の座標位置が、入力画像中の画素位置に一致している場合であれば、一致している該画素の画素値をそのままデータセルのデータ値を決定するための濃度として用いることができるが、各データセルのセル中心位置に対応する入力画像の座標位置が、入力画像中の画素と画素との間に位置する場合があるので、かかる場合には、データセルのデータ値を決定するための濃度に関する濃度補正を施し（ステップＳ４０４）、セルの値を決定する（ステップＳ４０５）。
該濃度補正は、当該座標位置に隣接している４つの周辺画素の画素値を線形補間して行なうことができる。
【０１５４】
線形補間を行う方法を、４つの隣接画素の画素値を用いた線形補間の一例を示す図２１を用いて更に説明すると、次の通りである。
セル位置に対応する座標（ｉ＋α，ｊ＋β）における画素値Ｑ（ｉ＋α，ｊ＋β）は、下記の式（３０）で与えられる。但し、ｉ，ｊは、入力画像中の画素の位置に対応する整数であり、α，βは、画素値Ｑ（ｉ，ｊ）を有する画素（ｉ，ｊ），画素値Ｑ（ｉ＋１，ｊ）を有する画素（ｉ＋１，ｊ），画素値Ｑ（ｉ，ｊ＋１）を有する画素（ｉ，ｊ＋１），画素値Ｑ（ｉ＋ｌ，ｊ＋１）を有する画素（ｉ＋１，ｊ＋１）に囲まれた領域内において、データセルのセル中心位置が存在している位置を示すための相対値を与えるものとして、それぞれ、画素（ｉ，ｊ）からの横方向，縦方向の位置を示す値であり、０＜α＜１，０＜β＜１の範囲内にある。
【０１５５】
即ち、各データセルのセル中心位置に対応する入力画像の座標位置が、入力画像中の画素と画素との間に位置する場合、下記の式（３０）を用いて、線形補間を行なうことにより、データセルのデータ値を決定するための濃度を得ることができる。
2004054530.tif 000006
【０１５６】
データセルのセル中心位置に対応する入力画像中の画素が存在する場合には、前述のごとく、対応する画素の画素値を、データセルのデータ値を決定するための濃度とし、一方、セル中心位置に対応する入力画像中の画素が存在していない場合には、式（３０）を用いた濃度補正により決定した濃度を用いて、図１８のステップＳ４０１において決定された明暗閾値と比較することにより、２次元コードの各データセルの明（白）・暗（黒）いずれのデータ値であるかを決定することができ、当該データセルを切り出すことができる。
従って、かかる手順を繰り返すことにより、従来技術のごとく、データセルのセルサイズに対応する入力画像中の全画素の画素値を抽出して、白，黒の各画素の画素数を集計して、はじめて、当該データセルのデータ値を決定するような、大きな処理量を要する手順を行なう必要もなく、２次元コード内の全てのデータセルを簡潔な手順により迅速に切り出すことができる。
【０１５７】
更に、以上に説明したように、本発明においては、従来技術のごときタイミングパターンを備えることもなく、ファインダーパターンＦ０，Ｆ１，Ｆ２とアライメントパターンＰの４つの基準点のみを用いて座標変換式により各データセルの位置を、容易、かつ、迅速に特定することが可能であり、更に、特定された位置にあるデータセルのデータ値を、セル中心位置に対応する座標位置の濃度を用いて迅速に決定し、全てのデータセルを確実に切り出すことができる。しかる後、切り出された全てのデータセルのデータ値の並び即ちビット列を、予め定められた規則に従って、デコードすることにより、文字列等の情報に変換することにより、２次元コードの読み取り動作を従来技術に比し格段に少ない処理量により完了させることができる。従って、たとえ、処理能力がそれほど高くないカメラ内蔵の携帯電話機などの携帯端末に対しても、本発明に係る２次元コード読み取り方法を適用することができる。
【０１５８】
【発明の効果】
本発明に係る２次元コード読み取り装置，２次元コード読み取り方法，２次元コード読み取りプログラム及び該プログラムの記録媒体によれば、比較的解像度が低く、ノイズが含まれている画質が良くない入力画像の中からでも、２次元コードのファインダーパターンやアライメントパターンを精度よく検出することができる。また、２次元コードのファインダーパターンを検出する際に、水平方向及び垂直方向のみならず、斜め方向からも２次元コードの白及び黒のランを評価することにより、たとえ、２次元コードが入力画像中で水平方向から回転した状態に存在している場合であっても、ファインダーパターンを正しく検出することが可能である。また、ファインダーパターンの座標位置に基づいて、２次元コードの回転の有無を判定し、２次元コードが回転している状態であれば、回転補正を施して、アライメントパターンを抽出することとしているので、回転している状態にあっても、アライメントパターンを確実に検出することができる。
【０１５９】
２次元コードの基準となる４点（即ち、３つのファインダーパターンと１つのアライメントパターン）の位置を検出することのみにより、２次元コードのデータセルの切り出しを行なうことを可能としているので、従来技術のごときタイミングパターンなどの検出を行なう処理を省略することが可能となり、２次元コード読み取り動作全体に要する処理量を節約することができる。
【０１６０】
２次元コードが矩形状（正方形状を含む）から歪んでいる状態にある場合であっても、ファインダーパターンの座標位置から、２次元コードの傾きを求めて、アライメントパターンが存在する探索範囲を正確に求めることができ、探索範囲を正確に特定することができない従来技術とは異なり、アライメントパターンの存在位置を精査することに関する処理を結果的に大幅に減少せしめ、２次元コード読み取り全体に要する処理量を節約することができる。
【０１６１】
２次元コードのバージョンとセル数との対応を示すバージョン登録テーブルを備えているので、入力画像中の２次元コードから検出されたファインダーパターンに基づいて判定されたバージョンに誤りがあり、２次元コードの読み取りに失敗することがあったとしても、バージョン登録テーブルに基づいて、判定されたバージョンを１段階ずらして、再度読み取り動作を行なわせることが可能であり、バージョン判定の誤りによる、２次元コードの読み取り失敗の発生を最小限に抑えることができる。
【０１６２】
而して、処理能力が比較的小さいカメラ内蔵の携帯電話機などの携帯端末においても、本発明に係る２次元コード読み取り方法を適用することにより、２次元コードを高精度かつ迅速に読み取ることが実現できる。
【図面の簡単な説明】
【図１】ＱＲコードの構成例を示す模式図である。
【図２】本発明に係る２次元コード読み取り装置における動作の流れの一例を示すフローチャートである。
【図３】ファインダーパターンの位置検出に関する動作の流れの一例を示すフローチャートである。
【図４】候補ファインダーパターンの候補中心座標位置の検出と評価値の記録に関する動作の流れの一例を示すフローチャートである。
【図５】２次元コードの向きとファインダーパターンの位置関係とを示す模式図である。
【図６】検出された候補ファインダーパターンの幅と候補中心座標位置とを説明するための模式図である。
【図７】検出されたファインダーパターンの候補を記録する評価値テーブルの一例を示す構成図である。
【図８】図７に示す評価値テーブルに記録されているファインダーパターンの候補に対する統合整理結果の評価値テーブルの一例を示す構成図である。
【図９】ファインダーパターンの候補同士の中心座標位置が近接する条件の例を示す模式図である。
【図１０】基準ファインダーパターンＦ０の中心点を原点とするｘ座標及びｙ座標を時計回りの方向に４５°回転された位置における第１象限乃至第４象限をそれぞれ領域０乃至領域３とする一例を示す領域分割図である。
【図１１】図５に示す２次元コードの方向と図１０に示す４つの領域との組み合わせの関係を表示する関連図である。
【図１２】図５に示す２次元コードの各方向とファインダーパターンＦ１，Ｆ２の中心点の座標位置が属する各領域との関係を表示する関連図である。
【図１３】アライメントパターンの位置検出を行なう処理の流れの一例を示すフローチャートである。
【図１４】２次元コードの水平又は垂直方向からの回転角度の一例を示す模式図である。
【図１５】２次元コードにおけるアライメントパターンの探索基準点の位置の一例を示す模式図である。
【図１６】ファインダーパターンのエッジ追跡の一例を示す模式図である。
【図１７】アライメントパターンＰの探索範囲を決定する一例を説明するための模式図である。
【図１８】データセルの切り出し処理に関する流れの一例を示すフローチャートである。
【図１９】データセルの明暗（即ち白黒）を識別するための明暗閾値の決定方法を説明する模式図である。
【図２０】２次元コードの形状と、基準となる４つの基準点のセル位置との関係を示す模式図である。
【図２１】４つの隣接画素の画素値を用いた線形補間の一例を示す模式図である。
【図２２】ＱＲコードのデータセルの中心座標を算出する従来技術の様子を説明するための模式図である。
【符号の説明】
Ａ，Ｂ，Ｃ，Ｄ…２次元コードの頂点、ａ，ｂ…追跡開始点、ｃ，ｅ…追跡終了点、ｃｓ…セルサイズ、ｄ…追跡最大点、Ｅ…セルの中心点、Ｆ，Ｆ０，Ｆ１，Ｆ２，Ｆ３…ファインダーパターン、Ｆ０Ｃ，Ｆ１Ｃ，Ｆ２Ｃ，Ｆａ，Ｆｂ，Ｆｃ…ファインダーパターンの中心点、Ｆｂ’，Ｆｃ’…移動した点、Ｈ…探索基準点、Ｈ’…補正探索基準点、Ｈｓ…水平基準線、Ｊ…対角線、ｍ…セル数、Ｐ，Ｐ’…アライメントパターン、ＰＣ，ＰＣ’，Ｐｄ…アライメントパターンの中心点、ＰＰ…予測中心座標位置、ＰＰ’…補正予測中心座標位置、ＰＲ…探索範囲、ＰＲ’…補正探索範囲、Ｑ…画素値、Ｒ…回転角度、Ｓ１，Ｓ２，Ｓ３，Ｓ４…直線、Ｔ…タイミングパターン、Ｖｓ…垂直基準線、ｗ…幅、ｗｈ…水平幅、ｗｖ…垂直幅、ｗｏ…斜め幅。
【図１】
2004054530.tif 000007
【図２】
2004054530.tif 000008
【図３】
2004054530.tif 000009
【図４】
2004054530.tif 000010
【図５】
2004054530.tif 000011
【図６】
2004054530.tif 000012
【図７】
2004054530.tif 000013
【図８】
2004054530.tif 000014
【図９】
2004054530.tif 000015
【図１０】
2004054530.tif 000016
【図１１】
2004054530.tif 000017
【図１２】
2004054530.tif 000018
【図１３】
2004054530.tif 000019
【図１４】
2004054530.tif 000020
【図１５】
2004054530.tif 000021
【図１６】
2004054530.tif 000022
【図１７】
2004054530.tif 000023
【図１８】
2004054530.tif 000024
【図１９】
2004054530.tif 000025
【図２０】
2004054530.tif 000026
【図２１】
2004054530.tif 000027
【図２２】
2004054530.tif 000028