(57)【要約】【課題】カメラで斜めに撮影した２次元コード画像から迅速かつ正確な２次元コードの読み取りを可能とする。【解決手段】撮影された２次元コード画像から３つの位置検出要素パターン及び１つの位置合わせパターンの合計４点の座標位置を検出し（ステップＳ１）、２次元コードの大きさを求め（ステップＳ２）、奥行き情報を付加して、画像の傾きを補正した各セル中心位置に対する座標位置を計算する計算式における係数を求め（ステップＳ３）、求めた係数を適用して各セル中心位置の座標位置を該計算式の計算にて求め（ステップＳ４）、各セル中心位置に対応する画像データから明暗を判定し、各セルに関する０／１の２値化データを作成し（ステップＳ５）、該２値化データを基に復元作業をする（ステップＳ６）。前記計算式を各セル中心位置に関する漸化式で表現する。２次元コードの４点の座標位置から得た各係数を同一の定数で除算し、整数演算化する。【選択図】　　　　図２
2004054529.tif 000002
【特許請求の範囲】
【請求項１】
２進コードで表されるデータをセル化し、当該セルを縦横２方向に配列したマトリックス方式２次元コード、又は、データをバーコード化し、当該バーコードをバーの配列方向に対して垂直な方向に多段に積み重ねたスタック方式２次元コードを読み取るために用いられる２次元コード読み取り方法であって、２次元コードの画像を得ると共に、当該画像中の２次元コード領域を決定する２次元コード領域決定処理を行ない、決定された該２次元コード領域内でセル化されたデータを読み取るセル中心位置を決定するために、該２次元コード領域の境界を示す４辺のうち、前記マトリックス方式２次元コードであれば、２組の対向する辺間を結ぶ検査線を設定し、一方、前記スタック方式２次元コードであれば、バー配列方向に対向する１組の辺間を結ぶ検査線を設定する検査線設定処理を行ない、該検査線設定処理により設定された前記検査線に基づいて前記２次元コードの情報を復元するデコード処理を行なう２次元コード読み取り方法において、前記２次元コード領域決定処理にて決定された前記２次元コード領域の４点の座標位置に基づいて、読み取られた２次元コードの画像に対して前記検査線を設定するための処理として、２次元コードに関する奥行き情報を付加して、画像の傾きが補正された２次元コードのセル中心位置の座標位置を計算する画像位置計算式における各係数を求めることを特徴とする２次元コード読み取り方法。
【請求項２】
請求項１に記載の２次元コード読み取り方法において、セル中心位置の２次元コード画像内における座標位置を計算する前記画像位置計算式が、各セル中心位置に関する漸化式を用いて表現されることにより、前記２次元コードの奥行き情報を付加して、画像の傾きが補正されたセル中心位置の前記座標位置を計算する計算量を減少させることを可能とすることを特徴とする２次元コード読み取り方法。
【請求項３】
請求項１又は２に記載の２次元コード読み取り方法において、前記２次元コード領域の４隅における各座標位置を計算する際の前記画像位置計算式の各係数を予め定めた同一の定数で除算して整数化することにより、各前記セル中心位置の座標位置の計算を、整数範囲の計算とすることを可能とすることを特徴とする２次元コード読み取り方法。
【請求項４】
請求項１又は２に記載の２次元コード読み取り方法において、シンボリックに求めた前記画像位置計算式の係数を除算すべき定数として、該画像位置計算式の中から、共通に用いられている頻度が多い定数を求めることにより、該定数を用いて除算して、前記画像位置計算式の各係数を小さなサイズの係数に変換し、２次元コードの読み取りを可能とすることを特徴とする２次元コード読み取り方法。
【請求項５】
請求項１乃至４のいずれかに記載の２次元コード読み取り方法をコンピュータにより実行することが可能なプログラムコードにより表現していることを特徴とする２次元コード読み取りプログラム。
【請求項６】
請求項５に記載の２次元コード読み取りプログラムをコンピュータにより読み取ることが可能な記録媒体に記録していることを特徴とするプログラム記録媒体。
【請求項７】
２進コードで表されるデータをセル化し、当該セルを縦横２方向に配列したマトリックス方式２次元コード、又は、データをバーコード化し、当該バーコードをバーの配列方向に対して垂直な方向に積み上げたスタック方式２次元コードを読み取るために用いられる２次元コード読み取り装置であって、２次元コードの画像を得ると共に、当該画像中の２次元コード領域を決定する２次元コード領域決定処理を行なう手段と、決定された該２次元コード領域内でセル化されたデータを読み取るセル中心位置を決定するために、該２次元コード領域の境界を示す４辺のうち、前記マトリックス方式２次元コードであれば、２組の対向する辺間を結ぶ検査線を設定し、一方、前記スタック方式２次元コードであれば、バー配列方向に対向する１組の辺間を結ぶ検査線を設定する手段と、設定された前記検査線に基づいて前記２次元コードの情報を復元するデコード処理を行なう手段とを備えた２次元コード読み取り装置において、前記２次元コード領域決定処理を行なう手段にて決定された前記２次元コード領域の４点の座標位置に基づいて、読み取られた２次元コードの画像に対して前記検査線を設定するための手段として、請求項１乃至４のいずれかに記載の２次元コード読み取り方法を実行する手段が備えられていることを特徴とする２次元コード読み取り装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２次元コード読み取り方法，２次元コード読み取りプログラム，該２次元コード読み取りプログラムの記録媒体及び２次元コード読み取り装置に関するものであり、特に、デジカメ（カメラ付き携帯電話機を含む）にて、非接触式に斜めに撮像された２次元コードの画像を、正確に、かつ、迅速に読み取ることができる２次元コード読み取り方法，２次元コード読み取りプログラム，該２次元コード読み取りプログラムの記録媒体及び２次元コード読み取り装置に関する。
【０００２】
【従来の技術】
図４に、商品のタグ情報などをコンピュータ読み取りが可能な形式にコード化するために従来から用いられている代表的なコードの種類を示している。１次元の横方向（又は縦方向）にのみ情報を有するバーコード（図４（ａ））に比べ、２次元の縦・横両方向に情報を有する２次元コードは、大量の情報を記録できる利点がある一方、２次元コードの画像データの読み取りに、より大きな時間を必要とすることになる。
【０００３】
また、２次元コードにはいくつかの方式があるが、スタック方式（図４（ｂ））とマトリックス方式（図４（ｃ））とに大別される。
スタック方式の２次元コードは、２進化コードで表されるデータをバーコード化し、当該バーコードをバーの配列方向に対して直交する方向に多段（列）に積み重ねた構造を採用しており、各列を識別するために、各列にスタートコードとストップコードとが備えられている。
【０００４】
一方、マトリックス方式の２次元コードは、２進化コードで表されるデータをセル化し、当該セルを縦横２方向に配列するものであり、表示エリアを明（白）又は暗（黒）のセル（一般に、正方形状のセル）のセルパターンで表現し、かかるセルパターンの角度とサイズとを読み取ることにより解読される。
【０００５】
かくのごとき２次元コードを正しく解読するためには、各バーや各セルの明暗（白黒）の判別が正確に行われなくてはならない。従って、読み取るべきデータ位置を示す各バーや各セルの中心位置の決定が重要となる。また、シンボル（即ち２次元コード）の方向を判別するために、「Ｌ型のガイドセル」や「切り出しシンボル」を設け、３６０°全方向からの２次元コードの読み取りと高速読み取りとを可能にしている。
【０００６】
スタック方式の２次元コードに関する代表的なコード例としては、ＣＯＤＥ４９，ＣＯＤＥ１６Ｋ，ＰＤＦ４１７等が挙げられ、マトリックス方式の２次元コードに関する代表的なコード例としては、ＤＡＴＡ　ＣＯＤＥ，ＱＲコード，ＭＡＸＩ　ＣＯＤＥ，Ｖｅｒｉ　ＣＯＤＥ，ＣＯＤＥ１，アレイタグ，ＣＰコード，カルラコード等が挙げられる。
【０００７】
例えば、マトリックス方式の２次元コードの一例として、図５に示すようなＪＩＳ　Ｘ０５１０規格に制定されているＱＲコードがある。図５は、ＱＲコードの概要を説明している説明図である。
図５に示すように、例えば、モデル２のＱＲコードの３隅には、ＱＲコードの位置を検出するために固有の特徴を有する位置検出要素パターンＡ，Ｂ，Ｃが配置されており、更に、ＱＲコード内部に、各セルの配置箇所の位置合わせをするために固有の特徴を有する位置合わせパターンＤ０，Ｄ１，…，Ｄｍａｘが配置されており（ｍａｘはＱＲコードの型番：セルの個数に依存した数である）、更には、各セル毎の位置をガイドするためのタイミングパターンＥ，Ｆが、ＱＲコードの上辺・左辺に沿って横・縦方向に配置されている。
【０００８】
而して、ＱＲコードのごとき前記マトリックス方式２次元コードであれば、タイミングパターンＥ，Ｆの各セルの中心位置を通るように、上下及び左右の２組の対向する２次元コードの辺間を結ぶ検査線を設定し、一方、前記スタック方式２次元コードのごときバーコードを積み上げた方式であれば、バーの配列方向の辺に対向する１組の２次元コードの辺間を結ぶ検査線を設定する検査線設定処理を行ない、設定された前記検査線に基づいて、マトリックス方式２次元コードであれば、各検査線が互いに交差する交点にあるセルの情報を、スタック方式２次元コードであれば、各層の中心線と検査線とが交差する交点にあるセルの情報を読み取って、デコード処理を行なうことにより、２次元コードの読み取りを行なう。
【０００９】
図５に示すようなＱＲコードの読み取り処理に関する簡単な動作について、図６のフローチャートに示している。
図６のフローチャートにおいて、最初に、位置検出パターン固有の特徴を検出することにより、３つの位置検出要素パターンＡ，Ｂ，Ｃを検出し（ステップＳ２１）、次に、シンボルの型番即ちデータを記録するセル数（２次元コードの大きさ）を求め（ステップＳ２２）、ＱＲコードを構成する各セルの中心位置を計算にて求め（ステップＳ２３）、各セル位置に対応する画像データから明暗を判定し、“０”又は“１”の２値化データを作成し（ステップＳ２４）、各セル位置の２値化データを基にＱＲコードに関する復元作業を行なう（ステップＳ２５）。
ここで、通常、ステップＳ２３におけるセルの中心位置の計算とステップＳ２４における２値化データの作成は、各セルに対してそれぞれ行なわれるので、ループ（縦横方向の２重のループ）して繰り返し行なわれる。
【００１０】
また、ステップＳ２１におけるＱＲコードの座標位置（画像座標位置）の検出においては、位置合わせパターンＤｉ（ｉ＝０，１，…，ｍａｘ）やタイミングパターンＥ，Ｆなどの付加情報を利用する場合もあり、更に、位置合わせパターンＤｉ（ｉ＝０，１，…，ｍａｘ）やタイミングパターンＥ，Ｆなどを基に、ＱＲコードを領域分割して、位置合わせ精度の向上を図る場合もある。
更に、別の方法としては、位置検出要素パターンＡ，Ｂ，Ｃの間に存在する明と暗とのセルが交互に配列されたタイミングパターンＥ，Ｆを検出することにより、画像処理によって、位置検出要素パターンＡ，Ｂ，Ｃ及びタイミングパターンＥ，Ｆに関する各セルの中心位置の座標を検出し、該座標を利用して、他のセルの中心位置を計算にて求めることも可能である。
【００１１】
ところが、２次元コードの画像は、歪みなく検出されるとは限らず、例えば、２次元コードが斜めに読み取られ、画像に歪みが生じている場合がある。特に、デジカメやカメラ付き携帯電話機などのように、２次元コードが記録された媒体（多くは、紙）に接触させない状態で、非接触タイプで読み込む場合には、２次元コードに歪みが生じる可能性が高い。
【００１２】
このような場合には、位置検出要素パターンＡ，Ｂ，Ｃ、位置合わせパターンＤｉやタイミングパターンＥ，Ｆに近い位置に存在するデータセルについては、計算により求められた読み取り位置と実際のセル位置との間の位置ずれが少ないので、セルの種類（即ち、セルに記録された情報）の読み取りは正確に行なわれるが、位置検出要素パターンＡ，Ｂ，Ｃ、位置合わせパターンＤｉやタイミングパターンＥ，Ｆから離れるにしたがって、計算により求められた読み取り位置と実際のセル位置との位置ずれが大きくなり、セルの種類を正確に判定することができなくなってしまう。
【００１３】
かくのごとく、斜め方向から読み取られることにより、歪みが生じた２次元コードを正確に読み取るための一手法として、特許第２７４２５５５号公報「デジタルデータ記録紙のデジタルデータ読取装置」に開示されている技術がある。特許第２７４２５５５号公報に開示される技術は、マトリックス方式の２次元コードの読み取りに関するものであり、前述のごとく、斜めに読み取られた２次元コードの歪みが、ある程度、比例的に生じることに着目して、セル中心位置を求める検査線の設定を工夫するものである。
【００１４】
即ち、斜めに読み取られた２次元コード領域の４つの頂点をパターンの特徴から特定して、２次元コード領域を形成する各辺のうち、隣接する二つの辺の傾きを示す傾斜角度を最初に算出する。次に、一つの辺上におけるセル中心位置を通る各検査線の位置に基づいて、該検査線毎の辺との間の傾斜角度を、前記辺の傾きを示す傾斜角度からの按分により算出する。按分により算出された傾斜角度を有する各検査線の交点を求めることにより、各セル中心位置を特定して、各セルの種類を読み取る。なお、かかる各検査線の傾斜角度を算出するためには、計算量が多い逆三角関数を用いる必要があり、２次元コードのセル中心位置を特定し、２次元コードを解読するまでに多くの時間を要する結果となる。かかる技術をスタック方式の２次元コードに適用する場合においても、同様に、バーコードの中心位置を求める際に全く同様の計算量が多い逆三角関数を用いることとなり、２次元コードを解読するまでに多くの時間を要する結果となる。
【００１５】
また、特開２０００−２２２５１７号公報「デジタルデータ記録紙のデジタルデータ読取装置」においては、検査線設定処理を工夫せんとしているものであり、２次元コード領域を、一定条件を満たす台形とみなすことによって、対向する辺のそれぞれに対して分割点を設定し、設定された分割点のうち対応する分割点同士を結んでセル位置を決定するための検査線を設定する技術が開示されている。かかる技術を適用することにより、各検査線を設定する都度、角度計算を行なうことを不要とし、検査線の設定処理の迅速化を図ろうとしている。
即ち、取り込まれた画像中の２次元コード領域が一定条件を備えた台形とみなすことができれば、ある辺に設定される分割点の設定位置を、該辺に隣接されている２辺の長さの比率に基づいて按分して設定せんとしているものである。
即ち、前述した特許第２７４２５５５号公報或いは特開２０００−２２２５１７号公報に記載の技術においては、セル中心位置を決定するための検査線の設定を工夫することにより、２次元コードの正確な読み取り或いは２次元コードの解読時間の短縮のいずれかを実現せんとしているものである。
【００１６】
【発明が解決しようとする課題】
ここで、特許第２７４２５５５号公報に開示された技術は、各セルの中心位置を如何にして正確に算出すればよいかという観点のみから構成されており、２次元コードの解読時間という点に関しては何等言及されていない。即ち、特許第２７４２５５５号公報に基づく技術により各データセルの中心位置を求めようとする場合、前述のごとく、各検査線の傾斜角度即ちタイミングセルの中心位置における各データセルの傾斜角度を算出する都度、逆三角関数の演算が必要となり、２次元コードのセル数に比例して、検査線の傾斜の演算に要する時間は膨大なものとなる。
一方、特開２０００−２２２５１７号公報に開示された技術は、四辺形として読み取られた２次元コードの画像を、一定条件を満たす台形に近似させることにしているため、検査線の設定に要する時間而して２次元コードの解読時間という点については、特許第２７４２５５５号公報に開示された技術よりも改良されているが、検査線の交点により決定される各セルの中心位置に対する正確性に欠ける面がある。
【００１７】
本発明は、かかる事情に鑑みてなされたものであり、カメラにより斜めに撮影された２次元コードの画像を、奥行き情報を考慮して、画像の傾きを補正して正対して撮影された２次元コードの画像情報に画像変換することにより、より正確な２次元コードの値を求めることを可能とすると共に、画像変換を行なう計算式を漸化式によって表すことにより、セル中心位置の決定時間即ち２次元コードの読み取り時間を大幅に短縮せんとするものである。
【００１８】
【課題を解決するための手段】
第１の技術手段は、２進コードで表されるデータをセル化し、当該セルを縦横２方向に配列したマトリックス方式２次元コード、又は、データをバーコード化し、当該バーコードをバーの配列方向に対して垂直な方向に多段に積み重ねたスタック方式２次元コードを読み取るために用いられる２次元コード読み取り方法であって、２次元コードの画像を得ると共に、当該画像中の２次元コード領域を決定する２次元コード領域決定処理を行ない、決定された該２次元コード領域内でセル化されたデータを読み取るセル中心位置を決定するために、該２次元コード領域の境界を示す４辺のうち、前記マトリックス方式２次元コードであれば、２組の対向する辺間を結ぶ検査線を設定し、一方、前記スタック方式２次元コードであれば、バー配列方向に対向する１組の辺間を結ぶ検査線を設定する検査線設定処理を行ない、該検査線設定処理により設定された前記検査線に基づいて前記２次元コードの情報を復元するデコード処理を行なう２次元コード読み取り方法において、前記２次元コード領域決定処理にて決定された前記２次元コード領域の４点の座標位置に基づいて、読み取られた２次元コードの画像に対して前記検査線を設定するための処理として、２次元コードに関する奥行き情報を付加して、画像の傾きが補正された２次元コードのセル中心位置の座標位置を計算する画像位置計算式における各係数を求める２次元コード読み取り方法とすることを特徴とするものである。
【００１９】
第２の技術手段は、前記第１の技術手段に記載の２次元コード読み取り方法において、セル中心位置の２次元コード画像内における座標位置を計算する前記画像位置計算式が、各セル中心位置に関する漸化式を用いて表現されることにより、前記２次元コードの奥行き情報を付加して、画像の傾きが補正されたセル中心位置の前記座標位置を計算する計算量を減少させることを可能とする２次元コード読み取り方法とすることを特徴とするものである。
【００２０】
第３の技術手段は、前記第１又は第２の技術手段に記載の２次元コード読み取り方法において、前記２次元コード領域の４隅における各座標位置を計算する際の前記画像位置計算式の各係数を予め定めた同一の定数で除算して整数化することにより、各前記セル中心位置の座標位置の計算を、整数範囲の計算とすることを可能とする２次元コード読み取り方法とすることを特徴とするものである。
【００２１】
第４の技術手段は、前記第１又は第２の技術手段に記載の２次元コード読み取り方法において、シンボリックに求めた前記画像位置計算式の係数を除算すべき定数として、該画像位置計算式の中から、共通に用いられている頻度が多い定数を求めることにより、該定数を用いて除算して、前記画像位置計算式の各係数を小さなサイズの係数に変換し、２次元コードの読み取りを可能とする２次元コード読み取り方法とすることを特徴とするものである。
【００２２】
第５の技術手段は、前記第１乃至第４の技術手段のいずれかに記載の２次元コード読み取り方法をコンピュータにより実行することが可能なプログラムコードにより表現している２次元コード読み取りプログラムとすることを特徴とするものである。
【００２３】
第６の技術手段は、前記第５の技術手段に記載の２次元コード読み取りプログラムをコンピュータにより読み取ることが可能な記録媒体に記録しているプログラム記録媒体とすることを特徴とするものである。
【００２４】
第７の技術手段は、２進コードで表されるデータをセル化し、当該セルを縦横２方向に配列したマトリックス方式２次元コード、又は、データをバーコード化し、当該バーコードをバーの配列方向に対して垂直な方向に積み上げたスタック方式２次元コードを読み取るために用いられる２次元コード読み取り装置であって、２次元コードの画像を得ると共に、当該画像中の２次元コード領域を決定する２次元コード領域決定処理を行なう手段と、決定された該２次元コード領域内でセル化されたデータを読み取るセル中心位置を決定するために、該２次元コード領域の境界を示す４辺のうち、前記マトリックス方式２次元コードであれば、２組の対向する辺間を結ぶ検査線を設定し、一方、前記スタック方式２次元コードであれば、バー配列方向に対向する１組の辺間を結ぶ検査線を設定する手段と、設定された前記検査線に基づいて前記２次元コードの情報を復元するデコード処理を行なう手段とを備えた２次元コード読み取り装置において、前記２次元コード領域決定処理を行なう手段にて決定された前記２次元コード領域の４点の座標位置に基づいて、読み取られた２次元コードの画像に対して前記検査線を設定するための手段として、請求項１乃至４のいずれかに記載の２次元コード読み取り方法を実行する手段が備えられている２次元コード読み取り装置とすることを特徴とするものである。
【００２５】
【発明の実施の形態】
本発明に係る２次元コード読み取り方法の実施の形態についてその一例を以下に図面を参照しながら、説明する。なお、以下の実施の形態の説明においては、２次元コードとして、ＱＲコードを例に採って説明することとする。しかし、本発明は、ＱＲコードに特化した発明ではなく、ＱＲコードと同様に２進コードで表されるデータをセル化して、当該セルを縦横２方向に配列したマトリックス方式のみならず、データをバーコード化して、当該バーコードをバーの配列方向に対して直交する方向に多段に積み上げたスタック方式からなる２次元コードについても、本発明の技術的範囲に属する限り、適用することが可能であることは言うまでもない。
【００２６】
一般に、２次元コードは、歪みなく検出されるとは限らず、例えば、２次元コードが、斜めに読み取られ、２次元コードの画像に歪みが生じる場合がある。特に、図１に示すごとく、デジカメやカメラ付き携帯電話機などのように、２次元コードが記録されている記録媒体（多くは、記録紙）に接触させない状態で、撮影するような場合には、非接触形式で２次元コードが読み取られており、読み取られた（即ち、撮像された）２次元コード画像に歪みが生じる可能性が高い。ここに、図１は、デジカメやカメラ付き携帯電話機により、２次元コードの印刷画像を非接触形式で撮影して取り込む様子を説明している説明図であり、印刷画像に正対した状態ではなく、斜め方向から撮影した場合の２次元コードの画像に歪みが生じている様子を示している。
本発明に係る２次元コード読み取り方法は、かくのごとき歪みを伴う２次元コードの画像であっても、正確に、かつ、迅速に２次元コードを読み取ることを可能としているものである。以下に、本発明に係る２次元コードの読み取り処理方法について、説明する。
【００２７】
即ち、斜めから撮影されて歪んだ撮影画像として記録されている２次元コードの各セルのセル中心位置を如何にして正確に、なおかつ、高速に処理しているかについて以下に説明する。カメラで撮影されたマトリックス方式（あるいはスタック方式）の２次元コードの認識率を上げるためには、正対していない状態で撮影されている画像を、奥行き情報を考慮して、画像の傾きが補正されて正対した状態の２次元コード画像位置に変換しなければならない。
ここで、カメラのレンズの中心を原点Ｏとし、奥行き方向をｚとした場合、カメラレンズのピントが合う光軸に垂直な被写体平面（撮像平面）Πは、ｚ＝ａとして与えられる。
【００２８】
一般に、光軸に垂直な撮像平面Π上にはなく、傾いた状態で二次元バーコードを撮影したものとする。
従って、撮像平面Π上に二次元バーコードがある場合には、Ｐ（ｕ，ｖ，ａ）にあるものが、傾いた状態であるので、Ｑ（ｘ，ｙ，ｚ）の位置にあるものとすれば、両者の関係は、３次元空間におけるアフィン変換の関係にあり、斉次座標系を用いて、下記式（１）のごとく表現することができる。
【００２９】
【式１】
2004054529.tif 000003
【００３０】
一方、撮影をした画像上における位置は、原点ＯとＱとを結ぶ線分と、被写体平面Πとの交点の位置であるから、これをＲ（Ｘ，Ｙ，ａ）とすると、
Ｘ＝（ａ・ｘ）／ｚ　　　　　　　　　　　　　　　　　　　…（２）
Ｙ＝（ａ・ｙ）／ｚ　　　　　　　　　　　　　　　　　　　…（３）
の関係にある。
【００３１】
従って、式（２）及び（３）に式（１）のｘ及びｙを代入して、
2004054529.tif 000004
ここで、ａは定数であるので、９個｛ａ００，ａ１０，ａ０１，ａ１１，（ａ０２・ａ＋ａ０３），（ａ１２・ａ＋ａ１３），ａ２０，ａ２１，（ａ２２・ａ＋ａ２３）｝の未知数があることになる。
【００３２】
ａ２０≠０と仮定した場合は、
ｂ００＝（ａ・ａ００）／ａ２０　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（６）
ｂ０１＝（ａ・ａ０１）／ａ２０　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（７）
ｂ０２＝｛ａ・（ａ０２・ａ＋ａ０３）｝／ａ２０　　　　　　　　　　　　　　　　　　　　…（８）
ｂ２１＝（ａ・ａ２１）／ａ２０　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（９）
ｂ１０＝（ａ・ａ１０）／ａ２０　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（１０）
ｂ１１＝（ａ・ａ１１）／ａ２０　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（１１）
ｂ１２＝｛ａ・（ａ１２・ａ＋ａ１３）｝／ａ２０　　　　　　　　　　　　　　　　　　　　…（１２）
ｂ２２＝｛ａ・（ａ２２・ａ＋ａ２３）｝／ａ２０　　　　　　　　　　　　　　　　　　　　…（１３）
と置けば、式（４），（５）は、
（ｂ００・ｕ＋ｂ０１・ｖ＋ｂ０２）＝Ｘ・（ｕ＋ｂ２１・ｖ＋ｂ２２）　　…（１４）
（ｂ１０・ｕ＋ｂ１１・ｖ＋ｂ１２）＝Ｙ・（ｕ＋ｂ２１・ｖ＋ｂ２２）　　…（１５）
と表現することが出来る。従って、適切に選んだ４セルの位置（ｕ，ｖ）に対して、対応する画像座標（Ｘ，Ｙ）を取得すれば、式（１４），（１５）の連立方程式を解くことが可能であり、ｂ００，ｂ０１，ｂ０２，ｂ１０，ｂ１１，ｂ１２，ｂ２１，ｂ２２の８個の係数を算出することができる。
【００３３】
一方、ａ２０＝０であれば、未知数は８個であるから、同様にして、４セルの位置（ｕ，ｖ）に対して、対応する画像座標（Ｘ，Ｙ）を取得すれば、この連立方程式を解くことが可能である。
【００３４】
ａ２０が０以外，０のいずれの場合でも、方程式を解くことができるので、それらの値を用いて、式（４），（５）は
Ａ＝ｃ００・ｕ＋ｃ０１・ｖ＋ｃ０２　　　　　　　　　　　　　　　　　…（１６）
Ｂ＝ｃ１０・ｕ＋ｃ１１・ｖ＋ｃ１２　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（１７）
Ｃ＝ｃ２０・ｕ＋ｃ２１・ｖ＋ｃ２２　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　…（１８）
Ｘ＝Ａ／Ｃ　　　　　　　　　　　　　　　　　　　　　　　…（１９）
Ｙ＝Ｂ／Ｃ　　　　　　　　　　　　　　　　　　　　　　　…（２０）
とも置換することができる。更に、セル中心位置（ｕ０，ｖ０）に対する画像座標位置（Ｘ０，Ｙ０）とした場合、
Ａ′＝ｃ００・（ｕ−ｕ０）＋ｃ０１・（ｖ−ｖ０）　　　　　　　…（１６′）
Ｂ′＝ｃ１０・（ｕ−ｕ０）＋ｃ１１・（ｖ−ｖ０）　　　　　　　…（１７′）
Ｃ′＝ｃ２０・（ｕ−ｕ０）＋ｃ２１・（ｖ−ｖ０）　　　　　　　…（１８′）
Ｘ＝Ｘ０＋Ａ′／Ｃ′　　　　　　　　　　　　　　　　　　…（１９′）
Ｙ＝Ｙ０＋Ｂ′／Ｃ′　　　　　　　　　　　　　　　　　　…（２０′）
と置換することもできる。また、Ａ，Ｂ，Ｃは、後述のごとく、それぞれセル中心位置（ｕ，ｖ）に関する漸化式で表すことができるので、１回のセルの中心位置に対応する座標位置即ち画像座標位置（Ｘ，Ｙ）を求めるための計算は、ほぼ３回の加算と２回の除算とにより計算することができることになり、計算速度は高速となる。
【００３５】
（第１の実施の形態）
次に、前述のごとき２次元コードの読み取り方法を、具体的に実現する本発明に係る第１の実施の形態について説明する。図２に、本発明に係る２次元コードの読み取り方法に関する第１の実施の形態の処理を、フローチャートを用いて示している。
図２において、最初に、２次元コードのパターンの特徴から、３つの位置検出要素パターンＡ，Ｂ，Ｃと１つの位置合わせパターンＤｉ（複数個配置されている位置合わせパターンＤｉ（ｉ＝０，１，…，９）の中のいずれか一つ）の合計４つの座標位置（画像座標位置）を検出する（ステップＳ１）。次に、２次元コードのシンボルの型番（即ち、２次元コードの大きさ）を求める（ステップＳ２）。
即ち、ステップＳ１においては、当該画像中に存在する２次元コードの領域を決定する２次元コード領域決定処理を司るものであり、ステップＳ２においては、検出された２次元コードのセル数を決定するものである。
【００３６】
しかる後に、ステップＳ１にて検出された４つのパターンそれぞれの座標位置（画像座標位置）（Ｘ，Ｙ）と、シンボルの型番を参照して得られるそれぞれに対応するセル中心位置（ｕ，ｖ）とを、式（１６）乃至（２０）に代入して、式（１６）乃至（１８）の係数（ｃ００乃至ｃ２２）を求める（ステップＳ３）。
４つのパターン以外の当該２次元コードにおける各セルのセル中心位置の座標位置（画像座標位置）を、ステップＳ３にて求められた係数を適用した式（１６）乃至（２０）を用いて、計算にて求め（ステップＳ４）、求められた座標位置（画像座標位置）に対応する画像データから、明（白）又は暗（黒）を判定し、対応している各セルに関する“０”又は“１”の２値化データを作成する（ステップＳ５）。
各セルに関して作成された２値化データを基にして、２次元コードの情報の復元作業を行なう（ステップＳ６）。
【００３７】
即ち、ステップＳ３は、ステップＳ１にて決定された２次元コード領域内でセル化されているデータを読み取るセル中心位置を決定するための処理を示すものであり、セル化されたデータを読み取るセル中心位置を決定する検査線（即ち、２次元コード領域の境界を示す４辺のうち、マトリックス方式の場合には、２組の対向する辺間を結び、一方、スタック方式の場合には、バー配列方向に対向する１組の辺間を結び、２次元コードのセル中心位置を特定する検査線）を算出する処理の一つとして、決定された２次元コード領域の座標位置（即ち、画像中における２次元コードの座標位置（画像座標位置）及び対応する２次元コードのセル中心位置）に基づいて、斜めに読み取られた２次元コードの画像に関する奥行き情報を付加して、画像の傾きが補正された２次元コードのセル中心位置の座標位置を計算する画像位置計算式における各係数を求めることにより、前記各検査線の傾斜に相当する各セル中心位置の座標位置を求めているものである。
【００３８】
次に、図２のステップＳ４における各セルの中心位置の座標位置（画像座標位置）を求める処理手順について、図３に示すフローチャートを用いて説明する。ここに、図３は、各セルの中心位置の座標位置（画像座標位置）を求める処理手順の一例を示すフローチャートである。これは、また、Ａ，Ｂ，Ｃの漸化式を用いたフローチャートでもある。
図３において、最初に、式（１６）乃至（２０）の各変数の初期化を行なう（ステップＳ１１）。ここで、初期化する変数は、２次元コードを構成するセルの行，列番号にそれぞれ相当するｖ，ｕ（共に“０”に設定）とｖ（行）方向の漸化式におけるＡ，Ｂ，Ｃの初期値であるＡ０，Ｂ０，Ｃ０（ｕ＝０，ｖ＝０におけるＡ，Ｂ，Ｃの値）とである。
【００３９】
即ち、ｖ＝０，ｕ＝０を式（１６）乃至（１８）に代入して、
Ａ＝Ａ０＝ｃ０２，Ｂ＝Ｂ０＝ｃ１２，Ｃ＝Ｃ０＝ｃ２２
が与えられる。
【００４０】
次に、２次元コード画像中におけるセルの中心位置の座標位置（画像座標位置）を式（１９）及び（２０）により求める（ステップＳ１２）。
即ち、ｖ＝０，ｕ＝０の初期状態においては
Ｘ＝Ａ／Ｃ＝Ａ０／Ｃ０＝ｃ０２／ｃ２２　　　　　　　　　　　　　　　　　　　　…（２１）
Ｙ＝Ｂ／Ｃ＝Ｂ０／Ｃ０＝ｃ１２／ｃ２２　　　　　　　　　　　　　　　　　　　　…（２２）
と与えられる。
【００４１】
更に、Ｘ，Ｙに対応する座標位置（画像座標位置）の画像データから明又は暗を判定し、該当するセルにおける“０”又は“１”の２値化データを作成する（ステップＳ１３）。
かかる明暗の値を求める方法については種々の方法があり、例えば、当該座標位置の小数点部の切捨て、四捨五入などにより当該座標位置（画像座標位置）に最も近い画素の画素値を取得するニアレスト法、当該座標位置（画像座標位置）の小数点部を用いて当該位置情報に隣接する近傍の４点の画素の画素値を用いて、線形補間を行なうバイリニア法、更には、より正確な近似を行なうバイキュウビック法などがある。
【００４２】
次に、ｕ方向（列方向）の更新を行なう（ステップＳ１４）。即ち、ｕを“１”だけインクリメントし、Ａ，Ｂ，Ｃの値を更新する。
式（１６）乃至（１８）に示すごとく、ｕが“１”インクリメントすると、Ａ，Ｂ，Ｃは、それぞれ、ｃ００，ｃ１０，ｃ２０の変位量が加算される状態になるが、ステップＳ１４では、Ｃ言語の表記を用いて、Ａ＋＝ｃ００，Ｂ＋＝ｃ１０，Ｃ＋＝ｃ２０と表現している。
【００４３】
次に、２次元コードのｕ方向（列方向）について終了したか否かの判定即ちｕの終了判定を行なう（ステップＳ１５）。ｕの値が、２次元コードの領域範囲を超えていなければ（ステップＳ１５のＮＯ）、ステップＳ１２の処理に戻り、同様の処理を繰り返す。一方、２次元コードの領域範囲を超えている場合（ステップＳ１５のＹＥＳ）、次に、ｖ方向（行方向）の更新を行なう（ステップＳ１６）。
【００４４】
ｖを“１”だけインクリメントすると共に、ｕ（列）を初期値の“０”に復帰させた後、Ａ（Ａ０），Ｂ（Ｂ０），Ｃ（Ｃ０）を更新する。
即ち、Ａ（Ａ０），Ｂ（Ｂ０），Ｃ（Ｃ０）を更新した結果、式（１６）乃至（１８）に示すごとく、ｖが“１”インクリメントすると、Ａ（Ａ０），Ｂ（Ｂ０），Ｃ（Ｃ０）を更新した結果として、Ａ，Ｂ，Ｃは、それぞれ、ｃ０１，ｃ１１，ｃ２１の変位量が加算された状態になり、ステップＳ１６では、Ｃ言語の表記を用いて、Ａ０＋＝ｃ０１，Ｂ０＋＝ｃ１１，Ｃ０＋＝ｃ２１と表現している。
【００４５】
最後に、２次元コードのｖ方向（行方向）について終了したか否かの判定即ちｖの終了判定を行なう（ステップＳ１７）。ｖの値が、２次元コードの領域範囲を超えていなければ（ステップＳ１７のＮＯ）、ステップＳ１２の処理に戻り、同様の処理を繰り返す。一方、ｖの値が、２次元コードの領域範囲を超えている場合（ステップＳ１７のＹＥＳ）、終了する。
【００４６】
次に、図２のステップＳ３における式（１６）乃至（１８）の係数（ｃ００乃至ｃ２２）の求め方の一例について説明する。
まず、図２のステップＳ１において検出している４つの座標位置（画像座標位置）のうち、３つの座標位置（画像座標位置）は、図５のＱＲコードの例に示す位置検出要素パターンＡ，Ｂ，Ｃである。残る１つの座標位置（画像座標位置）は、位置合わせパターンＤｉのうちのいずれか１つを利用している。即ち、２次元コードは、図５のＱＲコードの例に示すように、通常、位置合わせパターンＤｉを複数個備えているが、かかる複数の位置合わせパターンＤｉのうち、３つの位置検出要素パターンＡ，Ｂ，Ｃから最も遠い位置にある位置合わせパターンＤｉ（図５の場合における位置合わせパターンＤ１２）を選択するようにする。
【００４７】
ここで、２次元コードの大きさをｍ×ｍセルとし、位置検出要素パターンＡ，Ｂ，Ｃが７×７セルの大きさからなり（即ち、位置検出要素パターンＡ，Ｂ，Ｃそれぞれが、２次元コードの隅から４×４セル分内側に配置され）、位置合わせパターンＤ１２が、２次元コードの隅から７×７セル分内側に配置されているものとすれば、４つの座標位置（画像座標位置）に対応する各点のセル中心位置の座標は、位置検出要素パターンＡが（３，３，ａ）、位置検出要素パターンＢが（ｍ−４，３，ａ）、位置検出要素パターンＣが（３，ｍ−４，ａ）、位置合わせパターンＤ１２が（ｍ−７，ｍ−７，ａ）で表される。
【００４８】
４つの座標位置（画像座標位置）と対応する各点のセル中心位置の座標とからガウス法などを用いて、数値計算することも可能である。しかしながら、処理時間と計算精度（割り算を多用する）とを考慮すると、シンボリックに予め解を求めておく方法もある。
位置検出要素パターンＡ，Ｂ，Ｃ及び位置合わせパターンＤ１２の４つの座標位置（画像座標位置）を、それぞれ、（Ｘ０，Ｙ０），（Ｘ１，Ｙ１），（Ｘ２，Ｙ２），（Ｘ３，Ｙ３）として、シンボリックに予め解を求めた場合、式（１６）乃至（１８）の各係数（ｃ００乃至ｃ２２）は、下記の式（２２）乃至（３０）により与えられる。
【００４９】
2004054529.tif 000005
【００５０】
2004054529.tif 000006
【００５１】
2004054529.tif 000007
【００５２】
2004054529.tif 000008
【００５３】
2004054529.tif 000009
【００５４】
2004054529.tif 000010
【００５５】
2004054529.tif 000011
【００５６】
2004054529.tif 000012
【００５７】
2004054529.tif 000013
【００５８】
ここで、更に、ＱＲコードの特性からｍは（４の倍数＋１）であるので、
ｍ＝４・ｎ＋１３　　　　　　　　　　　　　　　　　　　　　…（３１）
と置くことができて、
ＹＸ０１＝Ｙ０・Ｘ１−Ｙ１・Ｘ０　　　　　　　　　　　　　…（３２）
ＹＸ０２＝−Ｙ０・Ｘ２＋Ｙ２・Ｘ０　　　　　　　　　　　　…（３３）
ＹＸ０３＝Ｙ０・Ｘ３−Ｙ３・Ｘ０　　　　　　　　　　　　　…（３４）
ＹＸ１２＝Ｙ１・Ｘ２−Ｙ２・Ｘ１　　　　　　　　　　　　　…（３５）
ＹＸ１３＝−Ｙ１・Ｘ３＋Ｙ３・Ｘ１　　　　　　　　　　　　…（３６）
ＹＸ２３＝Ｙ２・Ｘ３−Ｙ３・Ｘ２　　　　　　　　　　　　　…（３７）
とし、
【００５９】
更に、
ｒ＝１６・ｎ２＋４８・ｎ＋３６
＝４・ｎ・（４・ｎ＋１２）＋３６　　　　　　　　　　　…（３８）
とし、また、
ｃｘｘ＝ＹＸ１２＋ＹＸ１３＋ＹＸ２３　　　　　　　　　　　　　　…（３９）
ｃｙｙ＝ＹＸ０１＋ＹＸ０２＋ＹＸ１２　　　　　　　　　　　　　　…（４０）
と置くと、式（２２）乃至（３０）の各係数は、下記の式（４１）乃至（４９）で与えられる。
【００６０】
2004054529.tif 000014
【００６１】
即ち、式（１６）乃至（１８）の各係数（ｃ００乃至ｃ２２）も、例えば、式（４１）乃至（４９）を用いることにより、比較的単純な計算で求めることが可能である。而して、セル中心位置の座標位置を算出する画像位置計算式が漸化式を用いて表現されることにより、２次元コードの奥行き情報を付加して、画像の傾きが補正されたセル中心位置に対応する座標位置を計算する計算量を大幅に減少させることができ、２次元コードをより簡易化した計算に基づいて、迅速に読み取ることができる。
【００６２】
（実施の形態２）
次に、前述のごとき２次元コードの読み取り方法を、具体的に実現する本発明に係る第２の実施の形態について説明する。
携帯電話機など携帯端末の場合のように、比較的小さなサイズのカメラを搭載し、かつ、搭載されている処理装置ＣＰＵの性能が比較的低く、更には、浮動小数点を扱うコプロセッサも有していない場合を考えると、２次元コードの読み取りに当たっては、整数計算のみにより実現されることが望まれる。
前述した式（４），（５）において、各係数（ａ００乃至ａ２３）を同一の定数で割ったとしても、分母、分子それぞれを同一の定数で除算することとなるので、Ｘ，Ｙを算出する計算結果が同じであることは明らかである。従って、セル数ｍ×ｍの２次元コードの４つの隅の点（０，０），（０，ｍ），（ｍ，０），（ｍ，ｍ）における座標位置（画像座標位置）の分母、分子が整数範囲に収まるような定数を予め定めることによって、各セルの座標位置（画像座標位置）Ｘ，Ｙを算出する際の計算を整数計算のみとすることも可能となる。
【００６３】
（実施の形態３）
ここで、係数をシンボリックに解いた際の式を吟味して、式（１６）乃至（１８）の各係数（ｃ００乃至ｃ２２）に対して、式（１６）乃至（１８）の各係数を除算するための適切な定数を定めることも可能である。
例えば、前述の実施の形態１に示した係数（ｃ００乃至ｃ２２）においては、式（４１）乃至（４９）に示すように、各係数（ｃ００乃至ｃ２２）を表す式として、（４・ｎ）を有している場合が多い。従って、すべての係数を（４・ｎ）或いは（４・ｎ）の倍数で除算することにより、比較的小さな画面即ち小さなサイズの２次元コードに対応した係数（ｃ００乃至ｃ２２）を求めることが可能である。式（４１）乃至（４９）の各係数（ｃ００乃至ｃ２２）の計算式を（４・ｎ）により除算して、２次元コードを示すより小さな係数（ｃ００′乃至ｃ２２′）に変換した結果を下記の式（５０）乃至（５８）に示す。
【００６４】
2004054529.tif 000015
【００６５】
【発明の効果】
本発明によれば、カメラにより斜めに撮影された２次元コードを、奥行き情報を考慮して、画像の傾きを補正して正対した２次元コードの画像情報に画像変換することとしているので、より正確な２次元コードの値を求めることを可能とすると共に、画像変換を行なう計算式を漸化式によって表すことにより、２次元コードの読み取り時間を大幅に短縮することが可能となる。
【図面の簡単な説明】
【図１】デジカメやカメラ付き携帯電話機により、２次元コードの印刷画像を非接触形式で撮影して取り込む様子を説明している説明図である。
【図２】本発明に係る２次元コードの読み取り方法に関する第１の実施の形態の処理を示すフローチャートである。
【図３】各セルの中心位置の座標位置（画像座標位置）を求める処理手順を示すフローチャートである。
【図４】従来から用いられている代表的なコードの種類を示す模式図である。
【図５】ＱＲコードの概要を説明している説明図である。
【図６】従来のＱＲコードの読み取り処理に関する簡単な動作を示すフローチャートである。
【符号の説明】
Ａ，Ｂ，Ｃ…位置検出要素パターン、Ｄ０，Ｄ１，…，Ｄｍａｘ…位置合わせパターン、Ｅ，Ｆ…タイミングパターン。
【図１】
2004054529.tif 000016
【図２】
2004054529.tif 000017
【図３】
2004054529.tif 000018
【図４】
2004054529.tif 000019
【図５】
2004054529.tif 000020
【図６】
2004054529.tif 000021