(57)【要約】【課題】物品等の狭い部分に配置可能であり、複数の二次元コードを同時に撮影する画像から容易に識別可能な二次元コードを提供する。【解決手段】二次元コードは、二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセル１３と、単独で画像から検出可能な２個以上の異なる位置検出パターン１２Ａ、１２Ｂ、１２Ｃを備え、各位置検出パターンの外形は四角形であり、一の位置検出パターン１２Ａの対向する一対の辺を、辺の延びる方向に延長した一対の延長線の内部に、全ての他の位置検出パターン１２Ｂ、１２Ｃそれぞれが、少なくとも一部が重なるように配置されている。【選択図】図１
2020173874.tif 000002
【特許請求の範囲】
【請求項１】
二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセルと、
単独で画像から検出可能な２個以上の異なる位置検出パターンと、
を備え、
各前記位置検出パターンの外形は四角形であり、一の前記位置検出パターンの対向する一対の辺を、辺の延びる方向に延長した一対の延長線の内部に、全ての他の前記位置検出パターンそれぞれが、少なくとも一部が重なるように配置されている、二次元コード。
【請求項２】
二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセルと、
単独で画像から検出可能な２個以上の異なる位置検出パターンと、
を備え、
一の前記位置検出パターンの輪郭上の対向する一対の点を、所定の方向に平行に延長した一対の延長線の内部に、全ての他の前記位置検出パターンそれぞれが、少なくとも一部が重なるように配置されており、
全てのセルは、一対の前記延長線の内部に配置されている、二次元コード。
【請求項３】
他の前記位置検出パターンの輪郭の少なくとも一部が、一対の前記延長線の一方と重なっている請求項１又は２に記載の二次元コード。
【請求項４】
他の前記位置検出パターンの輪郭は、一対の前記延長線の内部に配置されている請求項１又は２に記載の二次元コード。
【請求項５】
他の前記位置検出パターンの対向する一対の辺は、一対の前記延長線上に配置されている請求項１に記載の二次元コード。
【請求項６】
３個以上の前記位置検出パターンを備える請求項１〜５の何れか一項に記載の二次元コード。
【請求項７】
少なくとも１つの前記位置検出パターンは、一重の正方形枠と、前記正方形枠内に配置された正方形を有する請求項１〜６の何れか一項に記載の二次元コード。
【請求項８】
少なくとも１つの前記位置検出パターンは、一重の正方形枠又は長方形枠を有する請求項１〜７の何れか一項に記載の二次元コード。
【請求項９】
前記位置検出パターンに対して、所定の位置に配置される位置補正パターンを備える請求項１〜８の何れか一項に記載の二次元コード。
【請求項１０】
請求項１又は請求項２に記載の二次元コードの解析方法であって、
撮影された二次元コードの画像に基づいて、少なくとも３個の前記位置検出パターンが識別された場合には、識別された少なくとも３個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、２個の前記位置検出パターンが識別された場合には、識別された２個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、１個の前記位置検出パターンが識別された場合には、識別された１個の前記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行う、二次元コードの解析方法。
【請求項１１】
前記４点の座標を、一又は複数の前記位置検出パターンの輪郭を形成する点から取得する請求項１０に記載の二次元コードの解析方法。
【請求項１２】
前記位置検出パターンの外形は四角形であり、
前記４点の座標を、一又は複数の前記位置検出パターンの輪郭を形成する四角形の頂点から取得する請求項１１に記載の二次元コードの解析方法。
【請求項１３】
少なくとも２個の前記位置検出パターンが識別された場合には、前記４点の座標を、第１の前記位置検出パターンの輪郭を形成する四角形の２つの頂点、及び、第２の前記位置検出パターンの輪郭を形成する四角形の２つの頂点から取得する請求項１２に記載の二次元コードの解析方法。
【請求項１４】
前記二次元コードは、前記位置検出パターンに対して、所定の位置に配置される位置補正パターンを備えており、
撮影された二次元コードの画像に基づいて、１個の前記位置検出パターン候補が検出された場合には、検出された位置検出パターン候補が、前記位置検出パターンである場合に、該位置検出パターンに対して所定の位置に配置されている前記位置補正パターンを識別して、前記位置検出パターン候補が、前記位置検出パターンであることを識別し、識別された前記位置検出パターンから、４点の座標を取得する請求項９〜１１の何れか一項に記載の二次元コードの解析方法。
【請求項１５】
請求項１又は請求項２に記載の二次元コードの解析装置であって、
撮影された二次元コードの画像に基づいて、少なくとも３個の前記位置検出パターンが識別された場合には、識別された少なくとも３個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、２個の前記位置検出パターンが識別された場合には、識別された２個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、１個の前記位置検出パターンが識別された場合には、識別された１個の前記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行う、二次元コードの解析装置。
【請求項１６】
請求項１又は請求項２に記載の二次元コードの解析をコンピュータに実行させるプログラムであって、
撮影された二次元コードの画像に基づいて、少なくとも３個の前記位置検出パターンが識別された場合には、識別された少なくとも３個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、２個の前記位置検出パターンが識別された場合には、識別された２個の前記位置検出パターンの内から少なくとも１個の前記位置検出パターンを選択して、選択された前記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、
撮影された二次元コードの画像に基づいて、１個の前記位置検出パターンが識別された場合には、検出された１個の前記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行うことを、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二次元コード、二次元コードの解析方法、二次元コードの解析装置及び二次元コードを解析するプログラムに関する。
【背景技術】
【０００２】
二次元コードは、一次元コードと比較して、狭い面積に多くの情報を持つことができ、物品管理や、携帯電話を用いたウェブ誘導など、様々な用途で広く活用されている。二次元コードは色々な角度で撮影されるため、二次元コードの画像は、画面における大きさ又は向きが一定ではなく、画像の歪み及び画像のぼけ等が発生し得る。また、二次元コード自体が汚れている場合には、一部の画像が判別できない事態も発生し得る。
【０００３】
マトリックス型の二次元コードは、一般に略正方形の形状であり、撮影された二次元コードの画像を元の形状に座標変換した上で、各セルの画素値に基づいて解析（デコード）処理が行われる。二次元コードは、撮影された画像内の位置を検出するため、所定形状の位置検出パターンを有する。解析時には、撮影した二次元コードの画像から位置検出パターンを検出し、位置検出パターンの位置関係に基づいて二次元コードの画像の座標変換を行って、画像の歪み又は画像のぼけ等の影響が補正されて、元の二次元コードの画像が作成される。二次元コードが有するメッセージの取り出しは、座標変換された後の画像に基づいて行われる。このように、位置検出パターンの検出は、解析の基礎となる処理であり、認識精度や、解析時間への影響が大きいので、位置検出パターンの検出処理は、解析処理の重要な要素である。
【０００４】
また、一度に複数の二次元コードを同時に認識させるというニーズがある。例えば、棚に二次元コードを貼ったダンボールが同じ向きに複数配置されており、これらダンボールの棚卸をする場合、二次元コードをダンボールに近づけて一つ一つ認識させるよりも、遠くから一括して複数の二次元コードの認識ができると、作業効率が向上する。複数の物品の一括認識は、例えばＲＦＩＤ等を利用して行うことが知られているが、ＲＦＩＤはメディア側にアンテナ等が必要なので、メディアが高コストになる。このような一括認識に対して、二次元コードを使用できれば、二次元コードは、例えば紙に印字するだけで使えるので、低コストになる。
【０００５】
二次元コードの形状は、上述したように、一般にほぼ正方形の形状のものが使用されているが、二次元コードを物品の狭い部分に印刷する場合、又は、本の背表紙の様な幅の狭い部分に貼付する場合には、細長い形状の二次元コードを使用することが望まれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−３０１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、特許文献１には、細長い形状の二次元コードが提案されている。
【０００８】
しかし、特許文献１に記載されている細長い形状の二次元コードは、１個の位置検出パターンしか備えていない。
【０００９】
位置検出パターンを１個のみ備える二次元コードでは、撮影された二次元コードの画像において、位置検出パターンを画像に写り込むノイズ情報と明確に切り分ける必要がある。特に、汚れ又は画像のブレのために、唯一の位置検出パターンが識別できない場合には、二次元コードの解析が行えないおそれが生じる。
【００１０】
例えば、上述した複数の二次元コードが１つの画像に撮影される棚卸しの例では、全ての二次元コードに撮影のフォーカスを合わせることは困難であり、ぼけが生じやすい。一般にぼけ・ブレが生じた二次元コードの画像の補正は困難なので、ソフトウェアでの改善には限界があり、オートフォーカス機能、シャッタースピードを上げる等のハードウェアの改善を用いてぼけ・ブレを解決する必要があり、そのためにコストが増加するという問題がある。最近では、携帯電話に設けられたカメラで二次元コードを認識するというニーズがあるが、撮影時のカメラの傾き、ブレ、フォーカスが不十分であるために生じるぼけ等、二次元コードの解析においては問題の生じやすい撮影環境にあり、コスト・サイズの関係からも、携帯電話のカメラ等の改善は困難な場合が多い。
【００１１】
なお、一般的な二次元コードは誤り訂正機能を有するが、これは二次元コードが有するメッセージの誤りを訂正する機能であり、位置検出パターンを訂正する機能ではないので、位置検出パターンに汚れ・欠けが発生すると、二次元コードの認識が困難となる。
【００１２】
本明細書では、上述した課題を解決し得る二次元コードを提供することを課題とする。
【００１３】
また、本明細書では、上述した課題を解決し得る二次元コードの解析方法を提供することを課題とする。
【００１４】
また、本明細書では、上述した課題を解決し得る二次元コードの解析装置を提供することを課題とする。
【００１５】
更に、本明細書では、上述した課題を解決し得る二次元コードを解析するプログラムを提供することを課題とする。
【課題を解決するための手段】
【００１６】
本明細書に開示する二次元コードによれば、二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセルと、単独で画像から検出可能な２個以上の異なる位置検出パターンと、を備え、各上記位置検出パターンの外形は四角形であり、一の上記位置検出パターンの対向する一対の辺を、辺の延びる方向に延長した一対の延長線の内部に、全ての他の上記位置検出パターンそれぞれが、少なくとも一部が重なるように配置されている。
【００１７】
また、本明細書に開示する他の二次元コードによれば、二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセルと、単独で画像から検出可能な２個以上の異なる位置検出パターンと、を備え、一の上記位置検出パターンの輪郭上の対向する一対の点を、所定の方向に平行に延長した一対の延長線の内部に、全ての他の上記位置検出パターンそれぞれが、少なくとも一部が重なるように配置されており、全てのセルは、一対の上記延長線の内部に配置されている。
【００１８】
また、本明細書に開示する二次元コードの解析方法によれば、上述した二次元コードの解析方法であって、撮影された二次元コードの画像に基づいて、少なくとも３個の上記位置検出パターンが識別された場合には、識別された少なくとも３個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、２個の上記位置検出パターンが識別された場合には、識別された２個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、１個の上記位置検出パターンが識別された場合には、識別された１個の上記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行う。
【００１９】
また、本明細書に開示する二次元コードの解析装置によれば、上述した二次元コードの解析装置であって、撮影された二次元コードの画像に基づいて、少なくとも３個の上記位置検出パターンが識別された場合には、識別された少なくとも３個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、２個の上記位置検出パターンが識別された場合には、識別された２個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、１個の上記位置検出パターンが識別された場合には、識別された１個の上記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行う。
【００２０】
更に、本明細書に開示する二次元コードを解析するプログラムによれば、上述した二次元コードの解析をコンピュータに実行させるプログラムであって、撮影された二次元コードの画像に基づいて、少なくとも３個の上記位置検出パターンが識別された場合には、識別された少なくとも３個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、２個の上記位置検出パターンが識別された場合には、識別された２個の上記位置検出パターンの内から少なくとも１個の上記位置検出パターンを選択して、選択された上記位置検出パターンから合計４点の座標を取得し、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行い、撮影された二次元コードの画像に基づいて、１個の上記位置検出パターンが識別された場合には、検出された１個の上記位置検出パターンから４点の座標を取得して、取得された４点の座標に基づいて、二次元コードの画像の座標変換を行うことを、コンピュータに実行させる。
【発明の効果】
【００２１】
上述した本明細書に開示する二次元コードによれば、物品等の狭い部分に配置可能であり、複数の二次元コードを同時に撮影する場合、又は、ぼけ・ブレが発生し易い環境での撮影等、様々な撮影条件で撮影された場合にも、二次元コードの正確な認識を短時間で行うことできる。
【００２２】
また、上述した本明細書に開示する他の二次元コードによれば、物品等の狭い部分に配置可能であり、複数の二次元コードを同時に撮影する場合、又は、ぼけ・ブレが発生し易い環境での撮影等、様々な撮影条件で撮影された場合にも、二次元コードの正確な認識を短時間で行うことできる。
【００２３】
また、上述した本明細書に開示する二次元コードの解析方法によれば、上述した二次元コードを解析することができる。
【００２４】
また、上述した本明細書に開示する二次元コードの解析装置によれば、上述した二次元コードを解析することができる。
【００２５】
更に、上述した本明細書に開示する二次元コードを解析するプログラムによれば、上述した二次元コードを解析することができる。
【図面の簡単な説明】
【００２６】
【図１】本明細書に開示する第１実施形態の二次元コードを示す図である。
【図２】二次元コードのデータ部を説明する図である。
【図３】（Ａ）〜（Ｄ）は、一対の延長線と他の二次元コードとの関係の例を説明する図である。
【図４】（Ａ）〜（Ｌ）は、位置検出パターンの様々な形態を示す図である。
【図５】（Ａ）及び（Ｂ）は、位置検出パターンの他の形態を示す図である。
【図６】（Ａ）〜（Ｅ）は、位置検出パターンの更に他の形態を示す図である。
【図７】（Ａ）〜（Ｆ）は、位置検出パターンの更にまた他の形態を示す図である。
【図８】本明細書に開示する第１実施形態の二次元コードの変形例１を示す図である。
【図９】本明細書に開示する第１実施形態の二次元コードの変形例２を示す図である。
【図１０】本明細書に開示する第１実施形態の二次元コードが印刷されたカードを示す図である。
【図１１】本明細書に開示する第１実施形態の二次元コードの変形例２が貼付された本を示す図である。
【図１２】（Ａ）は、本明細書に開示する第２実施形態の二次元コードを示す図であり、（Ｂ）は、第２実施形態の二次元コードの変形例を示す図である。
【図１３】本明細書に開示する二次元コードの作成方法を説明するフローチャートである。
【図１４】本明細書に開示する二次元コードの解析装置を説明する図である。
【図１５】本明細書に開示する二次元コードの解析方法を説明するフローチャート（その１）である。
【図１６】本明細書に開示する二次元コードの解析方法を説明するフローチャート（その２）である。
【図１７】本明細書に開示する二次元コードの解析方法を説明するフローチャート（その３）である。
【図１８】位置検出パターン候補の形状チェックを説明する図である。
【図１９】位置検出補正パターンの形状チェックを説明する図である。
【図２０】本明細書に開示する二次元コードの解析方法を説明するフローチャート（その４）である。
【図２１】検出された３個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【図２２】（Ａ）〜（Ｃ）は、検出された２個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【図２３】（Ａ）〜（Ｃ）は、検出された１個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【発明を実施するための形態】
【００２７】
以下、本明細書で開示する二次元コードの好ましい第１実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００２８】
図１は、本明細書に開示する第１実施形態の二次元コードを示す図である。
【００２９】
本実施形態の二次元コード１０は、図１に示すように、所定の方向に延びる形状を備えており、図１に示す例では、横長の形状を備える。
【００３０】
二次元コード１０は、二次元コードが撮影された画像において二次元コードの位置を検出するために使用される複数の位置検出パターン１２Ａ、１２Ｂ、１２Ｃと、メッセージ等の情報を有するデータ部１１を備える。
【００３１】
二次元コード１０は、単独で画像から検出可能な２個以上の異なる位置検出パターンを備える。本実施形態では、二次元コード１０は、３つ異なる位置検出パターン１２Ａ、１２Ｂ、１２Ｃを備える。なお、二次元コード１０は、４個以上の位置検出パターンを備えていてもよい。
【００３２】
具体的には、二次元コード１０は、長手方向の左端に配置される第１位置検出パターン１２Ａと、長手方向の中央部に配置される第２位置検出パターン１２Ｂと、長手方向の右端に配置される第３位置検出パターン１２Ｃを備える。
【００３３】
第１位置検出パターン１２Ａと第２位置検出パターン１２Ｂとの間には、データ部１１が配置される。また、第２位置検出パターン１２Ｂと第３位置検出パターン１２Ｃとの間にも、データ部１１が配置される。データ部１１は、一対の延長線Ｌの内部から外部へ亘って配置されているが、データ部１１を構成するセルが、一対の延長線Ｌの外部に配置される領域は、一対の延長線Ｌの幅の５０％以内、特に２０％以内、更に１０％以内であることが、二次元コード１０の幅を狭くする観点から好ましい。
【００３４】
各位置検出パターン１２Ａ、１２Ｂ、１２Ｃの外形は四角形であり、一の位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内部に、全ての他の２つの位置検出パターン１２Ｂ、１２Ｃそれぞれが、少なくとも一部が重なるように配置されている。
【００３５】
図１に示す二次元コードの例では、第２位置検出パターン１２Ｂは、その対向する一対の辺が、一対の延長線Ｌと重なるように配置されており、第２位置検出パターン１２Ｂの全体が、一対の延長線Ｌの内部に重なるように配置されている。
【００３６】
また、第３位置検出パターン１２Ｃも、その対向する一対の辺が、一対の延長線Ｌと重なるように配置されており、第３位置検出パターン１２Ｃの全体が、一対の延長線Ｌの内部に重なるように配置されている。
【００３７】
上述した説明では、一対の延長線として、第１位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した線を用いて、他の位置検出パターン１２Ｂ、１２Ｃとの関係を説明したが、一の位置検出パターンの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置されていればよい。一対の延長線は、第２位置検出パターン１２Ｂ又は第３位置検出パターン１２Ｃの対向する一対の辺を延長した線であってもよい。
【００３８】
各位置検出パターン１２Ａ、１２Ｂ、１２Ｃは、上述したように、二次元コード１０が撮影された画像において二次元コード１０の位置を検出して、解析するために使用される。具体的には、まず、撮影された画像から位置検出パターン１２Ａ、１２Ｂ、１２Ｃが識別される。次に、識別された位置検出パターン１２Ａ、１２Ｂ、１２Ｃに基づいて４つの座標が取得される。次に、取得された４つの座標に基づいて、二次元空間の射影変換の係数が求まり、射影変換により二次元コードの画像の座標変換が行われて、画像の歪み又は画像のぼけ等の影響が補正される。次に、補正された二次元コードの画像のデータ部１１のセルに基づいて、メッセージ等の情報が取り出される。この処理の詳細については、後述する。
【００３９】
データ部１１は、図２に示すように、二次元のマトリックス状のパターンとして配置され、メッセージ等の情報が二進コードで表されたデータを表す複数のセル１３を有する。セル１３は、明又は暗の明るさの違いによって、二進情報を表す。
【００４０】
図２に示すように、データ部１１は、複数の同じ大きさのブロック１４に分割されており、隣接するブロック１４間に、明又は暗の分離スペース１５を有する。一のブロック１４は、複数のセル１３により形成される。
【００４１】
図２に示す例では、ブロック１４は、３×３のセルにより形成されており、隣接するブロック１４間には、１セル分の明の分離スペース１５が配置される。分離スペース１５は、各ブロック１４を分離するように格子状に配置される。これにより、各ブロック１４におけるセルの明暗の判定精度が向上する。なお、ブロックを形成するセルの数又は形状は、図２に示す例には制限されない。また、分離スペースの形状も、図２に示す例には制限されない。
【００４２】
データ部１１が有する実データは、メッセージの数に対応した複数のセグメントと、終端フラグだけが入ったセグメントと、実データの余った領域に配置される埋め草を有する。複数のセグメントは、メッセージと、メッセージを修飾するヘッダー（メッセージ種類（メッセージのエンコード）・メッセージサイズ等）を有するセグメントが、メッセージの数だけ並べられたものである。データ部１１は、実データが、１ブロック当たりのデータ容量に従い、ブロック単位に分割される。
【００４３】
また、データ部１１は、デコードする際のデータ部１１自身の誤りを訂正するための誤り訂正符号を有する。誤り訂正符号も、ブロック単位に分割される。
【００４４】
例えば、誤り訂正符号にリードソロモン符号を使った場合、誤り訂正はワード単位で行われるため、１ワードを１ブロックとすることが好ましい。１ワードが複数のブロックにまたがる場合、１つのブロックに汚れが発生した場合でも、そのブロックが関係する全てのワードが誤り訂正の対象となり、訂正の効率が悪くなる。訂正原因となる汚れや、スポットライトによる色とびは、１箇所に集中することが多いが、ブロックにすることにより同時に訂正対象となるデータを１箇所にまとめる効果があるので、効率的な訂正を可能にし、コードを認識させる可能性を高める。
【００４５】
また、データ部１１は、位置検出パターン１２Ａ、１２Ｂ、１２Ｃに対して、所定の位置に配置される位置補正パターン１６Ａ、１６Ｂを備える。位置補正パターン１６Ａは、第１位置検出パターン１２Ａ及び第２位置検出パターン１２Ｂそれぞれに対して、所定の位置に配置されている。位置補正パターン１６Ｂは、第２位置検出パターン１２Ｂ及び第３位置検出パターン１２Ｃそれぞれに対して、所定の位置に配置されている。なお、位置補正パターンは、何れか一方の位置検出パターンに対してか、又は複数の位置検出パターン対して位置が関連づけられていればよい。
【００４６】
位置補正パターン１６Ａ、１６Ｂの第１の役割は、二次元コードを撮影した画像から検出された位置検出パターン候補に対して所定の位置に配置される位置補正パターンが識別されることにより、検出された位置検出パターン候補が位置検出パターンであることが識別されることである。例えば、二次元コードを撮影した画像から１個の位置検出パターン候補しか検出されない場合、位置検出パターンが単純な形状であるほど、撮影画像のノイズである可能性が高まるが、位置検出パターン候補に対応する位置補正パターンが識別されることにより、検出された位置検出パターン候補が、位置検出パターンであることが識別されるので、識別された１個の位置検出パターンに基づいて４つの座標を取得することができる。この処理の詳細については、後述する。
【００４７】
また、位置補正パターン１６Ａ、１６Ｂの第２の役割は、データ部１１のセルの座標の誤差を補正することである。二次元コードを撮影した画像から位置検出パターンの位置を取得する時のズレによりデータ部１１のセルの座標に誤差が生じる場合がある。そこで、位置補正パターン１６Ａ、１６Ｂと対応づけられている位置検出パターンとの位置関係に基づいて、データ部１１のセルの座標の誤差が補正される。なお、位置補正パターンを形成するセルの数又は形状は、図１に示す例には制限されない。
【００４８】
また、データ部１１は、バージョン情報ブロック、フォーマット情報ブロック、絵柄埋め込み情報ブロック等を有していてもよい。
【００４９】
バージョン情報ブロックは、二次元コード１０のサイズに関する情報を有する。二次元コード１０を解析する時には、バージョン情報ブロックが有する情報に基づいて、データ部１１の領域を識別することができる。例えば、二次元コードの縦方向のサイズに関する情報を有する縦バージョン情報ブロックと、二次元コードの横方向のサイズに関する情報を有する横バージョン情報ブロックを用いることができる。バージョン情報ブロックを用いることにより、データ部１１のサイズを可変にして、二次元コード１０に含める情報量を制御することができる。
【００５０】
フォーマット情報ブロックは、一つのブロック１４が有するデータ量を情報として有する。フォーマット情報ブロックを用いることにより、例えば、一つのブロック１４が有するデータ量を、６、７、９ビット／ブロックというように選択可能にすることができる。
【００５１】
絵柄埋め込み情報ブロックは、二次元コード１０が絵柄を有する時に、絵柄等が配置されて、セルが配置されない領域を規定するために用いられる。絵柄埋め込み情報ブロックは、例えば、絵柄等を埋め込む領域（セルが配置されない領域）のサイズ及びブロック位置に関する情報を有することができる。なお、セルが配置されない領域には、絵柄だけでなく、空白又は他の一次元コード若しくは二次元コードを配置することもできる。
【００５２】
位置検出パターンが、単独で画像から検出可能であるとは、二次元コードを撮影した画像に基づいて、画像を解析することにより各位置検出パターンを検出可能であることを意味する。
【００５３】
また、位置検出パターンが異なることには、例えば、外形、大きさ、二次元コード上での配置方向、位置検出パターンを形成する線幅の比率が異なることが含まれる。また、線幅の比率が異なるとは、例えば位置検出パターンの中心を通るように走査した際に、明暗の比率が異なることを含む。
【００５４】
また、位置検出パターンが異なることには、外形が同じでも、内部の形状が異なることが含まれる。更に、位置検出パターンが異なることには、少なくとも２個の位置検出パターンは、回転させても形状が一致しないか、又は回転させても外形が一致しないか、又は、回転させて外形が一致しても位置検出パターンを形成する線の線幅の比率が異なることが含まれる。
【００５５】
二次元コード１０が少なくとも２個以上の位置検出パターンを備える理由を、以下に説明する。二次元コード１０の解析では、画像の歪み又は画像のぼけ等の影響を精度良く補正して、歪み又はぼけの影響の少ない二次元コードの画像を得ることが好ましい。この観点から、少なくとも４点の座標を位置検出パターンに基づいて取得し、取得された４点の座標に基づいて、二次元空間の射影変換の係数が求まり、射影変換により二次元コードの画像の座標変換を行うことが好ましい。射影変換を行うための４点の座標は、データ取得の計算対象となるデータ部１１に近いことが望まれる。１つの位置検出パターンから４点の座標を取得した場合、この位置検出パターンから離れたデータ部１１における座標の計算精度が悪化するため、データ部１１の全体を広くカバーできる４点を取得することが望ましい。また、読取装置のレンズの歪みや、二次元コードを印字する面の歪みなどが原因で撮影されたコードに歪みが発生した場合、その歪みは一様ではない。そのため、同じ位置検出パターンから取得した４点の座標から二次元空間の射影変換の係数を取得するよりも、異なる位置検出パターンにまたがる複数の点に基づいて射影変換の係数を求める方が、歪みによる影響を軽減できる効果が期待できる。
【００５６】
次に、二次元コード１０が異なる位置検出パターンを備える理由を、以下に説明する。１画像に複数の二次元コードが撮影された場合、各二次元コードの複数の位置検出パターンが異なる場合には、位置検出パターンの検討すべき組合せ数を大幅に減少することが可能であり、正規の組合せであるかを判定する処理量を低減することができる。この処理量が低減することを、以下に説明する。
【００５７】
撮影された１つの画像に複数の二次元コードが写し込まれた場合について、二次元コードが異なる複数の位置検出パターンを備える場合と、二次元コードが同じ複数の位置検出パターンを備える場合とについて、位置検出パターンの正規の組合せであることを判定する処理量を以下に比較する。
【００５８】
例えば、１つの画像に６個の二次元コードが撮影されており、各二次元コードは３個の同じ位置検出パターンを備えているとする。この場合、画像には、同じ位置検出パターンが１８個（６個×３）写し込まれる。１８個の位置検出パターンを検出し、それらの内の３個の組合せ全てについて同一の二次元コードのものであるか調べる場合、組合せは１８Ｃ３＝８１６通りとなる。もし、１個の二次元コードに４個の同じ位置検出パターンがある場合には、画面の位置検出パターンの個数は２４個になり、その組合せは、２４Ｃ４＝１０６２４通りとなる。このように、位置検出パターンの組合せ数が膨大となりその処理時間が増加する。
【００５９】
一方、図１に示す二次元コードのように３個の位置検出パターンが異なる場合、３個の異なる位置検出パターンの組み合わせ数は、６Ｃ１×６Ｃ１×６Ｃ１＝２１６通りとなり、４個の異なる位置検出パターンでは、６Ｃ１×６Ｃ１×６Ｃ１×６Ｃ１＝１２９６通りとなり、上述した場合と比べて位置検出パターンの組合せ数が大幅に減る。従って、同じ二次元コードに含まれる位置検出パターンの正規の組合せを判定する処理量を大きく低減できる。
【００６０】
また、位置検出パターンが異なる場合には、１個の位置検出パターンを検出した場合に他の位置検出パターンの方向・位置の予測が容易になるので、位置検出パターンを探索する処理量を低減することができる。二次元コードが位置補正パターンを備える場合には、他の位置検出パターンを探索する時に、位置補正パターンを用いてもよい。
【００６１】
３つの位置検出パターン１２Ａ、１２Ｂ、１２Ｃは、ブロック１４よりも大きな面積を有することが好ましい。これにより、位置検出パターンと同じパターンが、二次元コード中に出現することはなくなり、位置検出パターンの検出が容易になる。
【００６２】
また、位置検出パターン１２Ａ、１２Ｂ、１２Ｃは、識別スペースを設けた枠形状であることが好ましい。この識別スペースは、二次元コードを構成する最小セルの２倍以上のスペースであることが好ましい。
【００６３】
二次元コード１０では、第１位置検出パターン１２Ａは、一重の正方形枠を有する。第２位置検出パターン１２Ｂは、一重の正方形枠と、正方形枠内に配置された正方形を有する。第３位置検出パターン１２Ｃは、一重の長方形枠を有する。各位置検出パターン１２Ａ、１２Ｂ、１２Ｃは、最小セルの２倍以上のスペースである明の識別スペースを有している。
【００６４】
位置検出パターン１２Ａ、１２Ｂ、１２Ｃが内部に識別スペースを有することにより、位置検出パターンとその他の写り込みを容易に区別することができるので、ぼけ・ブレの影響を抑制して識別性が向上する。この場合、識別スペースは、２セル以上であることが好ましい。その理由は、最小セルが１ビットを表す二次元コードでは、１セルを上回るぼけ・ブレが発生する場合には、位置検出パターンの検出ができても、データの取得ができなくなるためである。１セルを上回るぼけ・ブレがある場合はコードを認識できず、識別スペースが２セルあれば、１セル分のあらゆる方向のぼけ・ブレに対応できる。これは、１画面で複数の二次元コードを撮影する場合に、１つ１つの二次元コードが小さくなるので、ぼけ・ブレの影響が大きくなり、二次元コードの画像が不鮮明になることに対しても有効である。
【００６５】
各位置検出パターン１２Ａ、１２Ｂ、１２Ｃの周囲には、１セル分の明パターンが配置されている。これにより、二次元コード１０と隣接して、他の図形が配置された場合にも、二次元コード１０が撮影された画像から、各位置検出パターン１２Ａ、１２Ｂ、１２Ｃを検出し易くなされている。
【００６６】
なお、二次元コード１０の各位置検出パターン１２Ａ、１２Ｂ、１２Ｃ及びデータ部１１を形成する明暗を反転してもよい。例えば、図１の第１位置検出パターン１２Ａの明暗を反転した場合には、黒い正方形の背景の中に、明の正方形枠が配置されることになる。
【００６７】
次に、図３を参照しながら、一対の延長線と他の二次元コードとの関係の例を説明する。以下に説明する図３（Ａ）〜図３（Ｄ）は、第１位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内部に他の位置検出パターン１２Ｂ、１２Ｃの少なくとも一部が重なっている場合の例を示す。
【００６８】
図３（Ａ）に示す例では、第１位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内の一方と、第２位置検出パターン１２Ｂの輪郭の少なくとも一部が重なっている。具体的には、第２位置検出パターン１２Ｂの外形を形成する正方形の一辺が、延長線Ｌと重なっている。第２位置検出パターン１２Ｂは、外形を形成する正方形の一辺を除いた部分は、一対の延長線Ｌの内部には重なっていない。このように、一対の延長線Ｌの内部に第２位置検出パターン１２Ｂの少なくとも一部が重なることには、第２位置検出パターン１２Ｂの輪郭の少なくとも一部が重なっていることが含まれる。
【００６９】
図３（Ｂ）に示す例では、図１と同様に、第２位置検出パターン１２Ｂは、その対向する一対の辺が、一対の延長線Ｌと重なるように配置されており、第２位置検出パターン１２Ｂの全体が、一対の延長線Ｌの内部に重なるように配置されている。第３位置検出パターン１２Ｃ（図１とは異なる形状を有する）は、その対向する一対の辺の内の一方が、一対の延長線Ｌの内の一方と重なるように配置されており、第３位置検出パターン１２Ｃの全体が、一対の延長線Ｌの内部に重なるように配置されている。
【００７０】
図３（Ｃ）に示す例では、第２位置検出パターン１２Ｂは、第２位置検出パターン１２Ｂの一部（約半分の領域）が、一対の延長線Ｌの内部に重なるように配置されている。
【００７１】
図３（Ｄ）に示す例では、第２位置検出パターン１２Ｂは、第２位置検出パターン１２Ｂの輪郭が、一対の延長線Ｌの内部に含まれるように配置されている。
【００７２】
上述した図３（Ａ）〜図３（Ｄ）に示すように、一の位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内部に、他の位置検出パターン１２Ｂ、１２Ｃそれぞれが、少なくとも一部が重なるように配置されているので、一の位置検出パターン１２Ａに基づいて、他の位置検出パターン１２Ｂ、１２Ｃを検索する処理時間が短くなるようになされている。特に、図３（Ｄ）に示すように、第２位置検出パターン１２Ｂの輪郭が、一対の延長線Ｌの内部に配置されている場合には、他の例よりも検索領域が少なくなるので、検索する処理時間を一層短くできる。詳しい説明は後述する。
【００７３】
上述した図１及び図３（Ａ）〜図３（Ｄ）の例では、一の位置検出パターン１２Ａの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌと、他の位置検出パターン１２Ｂ、１２Ｃとの関係を説明したが、本明細書では、各位置検出パターンの外形が四角形であれば、一の位置検出パターンの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置されていればよい。
【００７４】
また、本発明では、各位置検出パターンの外形が四角形以外の形状を有していてもよい。この場合、一の位置検出パターンの輪郭上の対向する一対の点を、仮想的に所定の方向に平行に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置されており、全てのセルは、一対の延長線の内部に配置される。
【００７５】
次に、位置検出パターンの様々な形態を、図面を参照しながら、以下に説明する。
【００７６】
図４（Ａ）〜図４（Ｌ）は、外形が四角形の位置検出パターンの様々な形態を示す図である。
【００７７】
図４（Ａ）及び図４（Ｂ）では、位置検出パターンは、一重の正方形枠を有する。図４（Ａ）に示す位置検出パターンは、図４（Ｂ）に示す位置検出パターンよりも大きい。また、位置検出パターンを形成する線の線幅の比率も異なる。
【００７８】
図４（Ｃ）及び図４（Ｄ）では、位置検出パターンは、縦長の一重の長方形枠を有する。図４（Ｃ）に示す位置検出パターンは、図４（Ｄ）に示す位置検出パターンよりも幅が広い。また、位置検出パターンを形成する線の線幅の比率も異なる。
【００７９】
図４（Ｅ）〜図４（Ｇ）では、位置検出パターンは、横長の一重の長方形枠を有する。図４（Ｅ）に示す位置検出パターンは、図４（Ｆ）に示す位置検出パターンよりも大きい。図４（Ｇ）に示す位置検出パターンは、図４（Ｅ）に示す位置検出パターンよりも高さが高いが、幅は狭い。また、位置検出パターンを形成する線の線幅の比率も異なる。
【００８０】
図４（Ｈ）及び図４（Ｉ）では、位置検出パターンは、一重の正方形枠と、この正方形枠内に配置された正方形を有する。図４（Ｈ）に示す位置検出パターンは、図４（Ｉ）に示す位置検出パターンよりも大きい。また、位置検出パターンを形成する線の線幅の比率も異なる。
【００８１】
図４（Ｊ）〜図４（Ｌ）では、位置検出パターンは、暗パターンにより形成される。図４（Ｊ）に示す位置検出パターンは、正方形である。図４（Ｋ）に示す位置検出パターンは、縦長の長方形である。図４（Ｌ）に示す位置検出パターンは、横長の長方形である。
【００８２】
図５（Ａ）及び図５（Ｂ）は、外形が正方形の位置検出パターンの他の形態を示す図である。
【００８３】
図５（Ａ）に示す位置検出パターンは、二重の正方形枠を有する。図５（Ｂ）に示す位置検出パターンは、三重の正方形枠を有する。図５（Ａ）に示す位置検出パターンは、二重の縦長又は横長の長方形枠で構成しても良い。また、図５（Ｂ）に示す位置検出パターンは、三重の縦長又は横長の長方形枠で構成しても良い。さらに、図５（Ａ）、図５（Ｂ）に示す位置検出パターンは、位置検出パターンの内側の正方形のパターンのみを縦長又は横長の長方形枠で構成してもよく、また４重以上の枠を有してもよい。
【００８４】
図６（Ａ）〜図６（Ｅ）は、外形が正方形の位置検出パターンの更に他の形態を示す図である。
【００８５】
図６（Ａ）に示す位置検出パターンは、一重の正方形枠と、この正方形枠内に配置された縦長の長方形の明パターン及び暗パターンを有する。
【００８６】
図６（Ｂ）に示す位置検出パターンは、一重の正方形枠と、この正方形枠内に配置された三角形の明パターン及び暗パターンを有する。
【００８７】
図６（Ｃ）に示す位置検出パターンは、一重の正方形枠と、この正方形枠内に配置されており、交互に縦方向に並べられた横長の明パターン及び暗パターンを有する。
【００８８】
図６（Ｄ）に示す位置検出パターンは、一重の正方形枠と、この正方形枠内に配置されており、交互に横方向に並べられた縦長の明パターン及び暗パターンを有する。
【００８９】
図６（Ｅ）に示す位置検出パターンは、一重の正方形枠と、この正方形枠内に配置された４つの正方形の明パターンと、各正方形の明パターンを分離する暗パターンを有する。図６に示す位置検出パターンは、縦長又は横長の長方形としても良い。また、位置検出パターンを形成する線幅の比率を適宜変更してもよい。
【００９０】
図７（Ａ）〜図７（Ｅ）は、外形が四角形以外の形状を有する位置検出パターンの形態を示す図である。
【００９１】
図７（Ａ）に示す位置検出パターンは、一重の円形又は楕円形の枠を有する。４つの位置検出パターンは、異なっている。
【００９２】
図７（Ｂ）に示す位置検出パターンは、一重の円形又は楕円形の枠と、枠内に配置された円形又は楕円形を有する。４つの位置検出パターンは、異なっている。
【００９３】
図７（Ｃ）に示す位置検出パターンは、第１の長方形及び第２の長方形を有し、第１の長方形と第２の長方形とは互いに重心の位置で直交するように交差している。４つの位置検出パターンは、異なっている。
【００９４】
図７（Ｄ）に示す位置検出パターンは、第１の長方形及び第２の長方形を有し、第１の長方形の端部から第２の長方形が垂直に延びている。４つの位置検出パターンは、異なっている。
【００９５】
図７（Ｅ）に示す位置検出パターンは、一重の直角三角形の枠を有する。４つの位置検出パターンは、異なっている。また、例えば１つの二次元コードを構成する３つの位置検出パターンとして、図４（Ａ）と図５（Ａ）と図６（Ａ）に記載のものを用いる等、図４、図５、図６、図７に示す位置検出パターンをそれぞれ組み合わせても良い。
【００９６】
次に、上述した第１実施形態の二次元コードの変形例１及び変形例２を、図面を参照しながら、以下に説明する。
【００９７】
図８は、本明細書に開示する第１実施形態の二次元コードの変形例１を示す図である。
【００９８】
変形例１の二次元コード１０は、四角形の第１位置検出パターン１２Ａの輪郭上の対向する一対の点Ｐを、仮想的に所定の方向に平行に延長した一対の延長線Ｌの内部に、全ての他の位置検出パターン１２Ｂ、１２Ｃそれぞれが、少なくとも一部が重なるように配置されており、全てのセルは、一対の延長線Ｌの内部に配置される。
【００９９】
輪郭上の対向する一対の点Ｐ、四角形の第１位置検出パターン１２Ａの輪郭上の点であれば、辺上の点であってもよいし、頂点であってもよい。
【０１００】
二次元コード１０のセルが、一対の延長線Ｌの内部に配置されることは、一のセルの輪郭が、一対の延長線Ｌの一方と重なるように配置されることを含む。
【０１０１】
データ部１１を形成する全てのセルは、一対の延長線Ｌの内部に配置されるので、二次元コード１０の大きさを小さくするように成されている。
【０１０２】
変形例１の二次元コード１０では、位置検出パターン１２Ａ、１２Ｂ、１２Ｃの四角形の外形を有しているが、位置検出パターン１２Ａ、１２Ｂ、１２Ｃは、四角形以外の外形を有していてもよい。例えば、位置検出パターンは、図７（Ａ）〜図７（Ｅ）に示すような外形を有していてもよい。
【０１０３】
また、変形例１の二次元コード１０は、位置補正パターンを有していない。データ部１１に位置補正パターンを配置しないことにより、より多くの情報をデータ部１１にセルとして配置することができる。
【０１０４】
図９は、本明細書に開示する第１実施形態の二次元コードの変形例２を示す図である。
【０１０５】
変形例２の二次元コード１０は、縦長の形状を有する。変形例２の二次元コード１０では、第１位置検出パターン１２Ａの縦方向に延びる対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線Ｌの内部に、全ての他の２つの位置検出パターン１２Ｂ、１２Ｃそれぞれが、少なくとも一部が重なるように配置されている。
【０１０６】
次に、上述した二次元コードが物品に配置された例を、図面を参照しながら、以下に説明する。
【０１０７】
図１０は、本明細書に開示する第１実施形態の二次元コードが印刷されたカードを示す図である。
【０１０８】
カード２０は、例えば、ゲーム機によって読み取り可能な情報を有するカード状の媒体である。カード２０には、カード２０を特徴づける絵柄２１が配置される。また、カード２０には、絵柄２１と、カード２０の端縁との間の横長の領域に、二次元コード１０が印刷されている。二次元コード１０のデータ部には、例えば、カード２０を識別する識別情報が記録されている。カード２０は、例えば、ゲーム機によって、二次元コード１０が有するカード２０の識別情報が読み取られて、カード２０の情報がゲームの進行に組み込まれる。
【０１０９】
図１１は、本明細書に開示する第１実施形態の二次元コードの変形例２が貼付された本を示す図である。
【０１１０】
本３０の背表紙３１には、二次元コード１０が貼付されている。二次元コード１０のデータ部には、例えば、本を管理する管理番号及び本のタイトルが情報として記録されている。多数の本を管理する図書館等では、本３０の背表紙３１に貼付された二次元コード１０を用いて、本３０の管理を行うことができる。
【０１１１】
上述した本実施形態の二次元コードによれば、物品等の狭い部分に配置可能であり、複数の二次元コードを同時に撮影する場合、又は、ぼけ・ブレが発生し易い環境での撮影等、様々な撮影条件で撮影された場合にも、二次元コードの正確な認識が短時間で行うことできる。
【０１１２】
次に、上述した二次元コードの第２実施形態を、図１２（Ａ）及び図１２（Ｂ）を参照しながら以下に説明する。第２実施形態について特に説明しない点については、上述の第１実施形態に関して詳述した説明が適宜適用される。また、同一の構成要素には同一の符号を付してある。
【０１１３】
図１２（Ａ）は、本明細書に開示する第２実施形態の二次元コードを示す図である。
【０１１４】
本実施形態の二次元コード１０は、基本パターン部１０Ａと、基本パターン部１０Ａの外側に配置される周辺部１０Ｂを備える。基本パターン部１０Ａは、３つの異なる位置検出パターン１２Ａ、１２Ｂ、１２Ｃと、データ部１１を備える。基本パターン部１０Ａの構成は、上述した第１実施形態の二次元コードと同様である。
【０１１５】
周辺部１０Ｂには、データ部１１が配置される。周辺部１０Ｂは、基本パターン部１０Ａの長手方向の両端の外側に配置される。
【０１１６】
基本パターン部１０Ａは、二次元コード領域内の基本パターン部１０Ａの位置を示す基本パターン部移動情報を含む。基本パターン部移動情報は、基本パターン部１０Ａの二次元コード内での位置を示す基本パターン部位置情報、又は、基本パターン部の所定位置からの移動量を示す基本パターン部移動量情報を有する。二次元コード１０を解析する時には、基本パターン部移動情報に基づいて、二次元コード１０における基本パターン部１０Ａの領域及び周辺部１０Ｂの領域が識別される。
【０１１７】
また、基本パターン部１０Ａは、二次元コード１０のサイズを示すバージョン情報を有しており、バージョン情報を用いて、複数個の位置検出パターン間の距離を固定した状態で二次元コードのサイズを可変に設計することが可能になされている。
【０１１８】
上述した本実施形態の二次元コードによれば、位置検出パターンの配置の自由度が高く、二次元コードを配置する場合に、読み取り困難な領域に位置検出パターンが位置する場合には、そのような読み取り困難な領域を避けて位置検出パターンを配置できる。これにより、二次元コードの読み取りの認識精度を上げることができる。また、データ部１１に配置されるデータ量に応じて周辺部１０Ｂの大きさを可変に設計可能である。更に、上述した第１実施形態と同様の効果が奏される。
【０１１９】
図１２（Ｂ）は、第２実施形態の二次元コードの変形例を示す図である。
【０１２０】
本変型例の二次元コード１０では、周辺部１０Ｂは、基本パターン部１０Ａの上下左右の周囲に配置される。データ部１１に配置されるデータ量が多い場合には、基本パターン部１０Ａの長手方向の両端の外側と、基本パターン部１０Ａの長手方向の側縁の外側にもデータ部１１を配置してもよい。
【０１２１】
次に、上述した本明細書に開示する二次元コードを作成する作成方法（エンコード方法）について、図１３を参照しながら、以下に説明する。
【０１２２】
図１３は、本明細書に開示する二次元コードの作成方法を説明するフローチャートである。
【０１２３】
図１３に示す処理は、例えば、コンピュータが、記憶媒体等を含む記憶装置に記憶された所定のプログラムを実行することにより実現され得る。
【０１２４】
まず、ステップＳ１０において、エンコードのメイン処理を開始する。
【０１２５】
次に、ステップＳ１２において、二次元コードに記録するメッセージが、コンピュータに入力される。
【０１２６】
次に、ステップＳ１４において、コンピュータは、コード画像における位置検出パターンの配置位置を決定する。コンピュータは、単独で画像から検出可能な２個以上の異なる位置検出パターンであって、各位置検出パターンの外形は四角形である位置検出パターンを、一の位置検出パターンの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるようにコード画像に配置する。又は、コンピュータは、単独で画像から検出可能な２個以上の異なる位置検出パターンを、一の位置検出パターンの対向する一対の辺を、仮想的に辺の延びる方向に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるようにコード画像配置してもよい。この場合には、後述するステップＳ２４では、全てのセルは、一対の延長線の内部に配置される。
【０１２７】
次に、ステップＳ１６において、コンピュータは、コード画像における位置補正パターンの配置位置を決定する。位置補正パターンは、位置検出パターンに対して所定の位置に配置される。なお、二次元コードに位置補正パターンを配置しない場合には、このステップは省略される。
【０１２８】
次に、ステップＳ１８において、コンピュータは、各メッセージにヘッダーを付与してセグメントを生成し、複数のセグメントを有する実データを作成する。
【０１２９】
次に、ステップＳ２０において、コンピュータは、実データに対して、誤り訂正符号を作成する。例えば、誤り訂正符号にリードソロモン符号を使用して、誤り訂正をワード単位で行なってもよい。
【０１３０】
次に、ステップＳ２２において、コンピュータは、実データ及び誤り訂正符号を二進コードに変換して、明暗のセル情報を作成する。
【０１３１】
次に、ステップＳ２４において、コンピュータは、位置検出パターン、位置補正パターン及びデータ部を形成する各セルを、コード画像に配置する。
【０１３２】
次に、ステップＳ２６において、コンピュータは、コード画像をデータとして出力して、二次元コードが得られる。
【０１３３】
二次元コードが印刷される場合には、二次元コードを印刷する媒体はどのようなものでもよく、例えば、紙、樹脂板、筐体表面等が挙げられる。印刷装置は、これらの媒体に二次元コードを印刷可能なものであればよく、例えば簡易プリンタ、精密プリンタ、印刷装置等が挙げられる。印刷装置は、モノクロ印刷だけでなく、カラー印刷可能なものでもよい。また、作成した二次元コードは、印刷せずに、通信回線を介してユーザーに二次元コードのデータとして送信されてもよい。
【０１３４】
次に、上述した本明細書に開示する二次元コードを解析する解析装置（デコード装置）について、図１４を参照しながら、以下に説明する。
【０１３５】
解析装置４０は、読み取り部４１と、コンピュータ（二次元コード解析処理部）４５と、ディスプレイ４６と、通信インターフェース４７を有する。読み取り部４１は、レンズ４２と、イメージセンサ４３と、アナログ・デジタル変換器（ＡＤ）４４を有し、撮影した二次元コードのデジタル画像データをコンピュータ４５に出力する。コンピュータ４５は、記憶媒体等を含む記憶装置に記憶された所定のプログラムを実行することにより、二次元コードの解析を実行する演算部を有する。図１４に示す解析装置４０は、例えば、携帯端末を用いて構成され得る。コンピュータ４５は、二次元コードを解析したデータを、通信インターフェース４７を用いて、ネットワーク（図示せず）を介して、他のサーバ又は端末等（図示せず）へ送信してもよい。
【０１３６】
次に、上述した解析装置４０が、図１に示す二次元コードを解析する解析方法を、図面を参照しながら、以下に説明する。図１５〜図１７は、本明細書に開示する二次元コードの解析方法を説明するフローチャートである。
【０１３７】
まず、ステップＳ３０において、解析のメイン処理を開始する。
【０１３８】
次に、ステップＳ３２において、コンピュータ４５は、読み取り部４１により撮影された二次元コードの画像を入力する。
【０１３９】
次に、ステップＳ３４では、コンピュータ４５は、入力された撮影画像の二値画像を作成する。二値化の方法は、入力された撮影画像がＲＧＢ画像等のカラー画像であれば、一旦グレースケール画像に変換し、画像内の最大輝度値と最小輝度値の平均を閾値とし、閾値以上であれば明、閾値未満であれば暗とする。カラー画像からグレースケールに変換するには、例えば、各画素のＲＧＢの値を用いて、輝度(ｂｒｉｇｈｔｎｅｓｓ)＝０．２９９Ｒ＋０．５８７Ｇ＋０．１１４Ｂの変換式にしたがって変換した輝度をグレースケールとして扱う。カラー画像へのグレースケール画像への変換方法、更に二値化画像への変換方法は、様々な方法が提案されており、上記変換方法には限られない。
【０１４０】
次に、ステップＳ３６において、コンピュータ４５は、位置検出パターン候補を検出する。具体的には、画像の左上の点を始点とし、画面をＸ方向に走査し、右端にたどり着いたら、数ピクセル下の左端からＸ方向に走査する。言い換えれば、数ピクセル分間引くことになる。これを画像全体に対して繰り返す。間引くピクセル数は、（最大間引き量）＝(全ての位置検出パターンの辺の長さの中で最小となるセルサイズ）×（撮影時のセルあたりのピクセル数)である。位置検出パターンの辺の長さの中で最小となるセルサイズとは、コードの回転も考慮し、位置検出パターンの回転で起こり得るＹ方向の最小セルサイズである。撮影時のセルあたりのピクセル数は、１セル当たり１ピクセルを下回ると、理想的な撮影画像でもセルの明と暗を判別することが困難になる。実際の撮影画像でのセルのずれ又は回転を考慮すると、少なくとも１セル当たり３ピクセル以上あるのが望ましい。
【０１４１】
そして、コンピュータ４５は、検出された位置検出パターン候補を検査する。具体的には、走査中に明から暗の境界を見つけた場合、暗部分の周囲を走査する。その際に、最小・最大のＸ座標、Ｙ座標をそれぞれ求める。これにより、暗の固まりの外接する長方形が取得できる。これの左上座標を（ｘ１，ｙ１）、右下座標を（ｘ２，ｙ２）と表す。
【０１４２】
図１８は、位置検出パターン候補の形状チェックを説明する図である。
【０１４３】
まず、コンピュータ４５は、位置検出パターン候補の形状をチェックする。図１に示す二次元コードの各位置検出パターンは、いずれも枠、すなわち穴形状を有する。そこで、まず穴の有無を確認する。始点を外接長方形の左側中点（ｘ１，（ｙ１＋ｙ２）／２）とし、終点を（ｘ２，（ｙ１＋ｙ２）／２）として、ｘ軸方向の走査を行う。ここで、次の（１）または（２）の条件にあてはまることを確認する。
【０１４４】
（１）暗明暗となる並びが存在することを確認する。１つ目の暗の左端（ｌｘ１）から２つ目の暗の右端（ｒｘ１）までの中心となる画素が明であることを確認する。
（２）暗明暗明暗というパターンを探す。１つ目の暗の左端（ｌｘ２）から３つ目の暗の右端（ｒｘ２）までの中心となる画素が暗であることを確認する。
【０１４５】
（１）の場合はさらに、図１８（Ａ）に示すように、中心座標（（ｌｘ１＋ｒｘ１）／２，（ｙ１＋ｙ２）／２）から上下を走査し、上側が明暗明（終点:（（ｌｘ１＋ｒｘ１）／２），ｙ１−１））となっており、下側が明暗明（終点:（（ｌｘ１＋ｒｘ１）／２），ｙ２＋１））となっており、上側走査の暗と明の境界のｙ座標ｔｙ１と下側走査の暗と明の境界のｙ座標ｂｙ１の中点が、明の中心座標とほぼ一致することを確認する。
【０１４６】
（２）の場合もさらに、図１８（Ｂ）に示すように、中心座標（（ｌｘ２＋ｒｘ２）／２，（ｙ１＋ｙ２）／２）から上下方向それぞれを走査し、上側が暗明暗明となっており（終点:（（ｌｘ２＋ｒｘ２）／２），ｙ１−１））、下側が暗明暗明となっており（終点:（（ｌｘ２＋ｒｘ２）／２），ｙ２＋１））、上側走査の２つめの暗と明の境界のｙ座標ｔｙ２と下側走査の２つめの暗と明の境界のｙ座標ｂｙ２の中点が暗の中心座標とほぼ一致することを確認する。
【０１４７】
以上の処理により、枠内に暗部を有する第２位置検出パターン（正方形枠内に正方形）と、枠のみの第１位置検出パターン及び第３位置検出パターン（正方形枠または長方形枠：ロ型）と、に区別できる。（１）又は（２）に当てはまらないものは、位置検出パターンではない。
【０１４８】
次に、コンピュータ４５は、各位置検出パターン候補の頂点を探索する。外接する長方形の左上の座標（ｘ１，ｙ１）からＸ軸方向に（ｘ２，ｙ１）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ１：（ｖｘ１，ｖｙ１）とする。次に右上の座標（ｘ２，ｙ１）からＹ軸方向に（ｘ２，ｙ２）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ２：（ｖｘ２，ｖｙ２）とする。右下の座標（ｘ２，ｙ２）からＸ軸の反対方向に（ｘ１，ｙ２）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ３：（ｖｘ３，ｖｙ３）とする。次に左下の座標（ｘ１，ｙ２）からＹ軸の反対方向に（ｘ１，ｙ１）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ４：（ｖｘ４，ｖｙ４）とする。ｖｅｒｔｅｘ１〜４は長方形（正方形を含む）となるはずである。そうでない場合は、位置検出パターンではない。図１８（Ｂ）の表記は省略する。
【０１４９】
次に、コンピュータ４５は、長方形の長辺と短辺の辺の比を計算する。（（ｖｘ１−ｖｘ２）×（ｖｘ１−ｖｘ２）＋（ｖｙ１−ｖｙ２）×（ｖｙ１−ｖｙ２））１／２で１辺の長さが、（（ｖｘ２−ｖｘ３）×（ｖｘ２−ｖｘ３）＋（ｖｙ２−ｖｙ３）×（ｖｙ２−ｖｙ３））１／２でもう１辺の長さが、求められる。そして、求めた２辺を比較して、長い方が長辺、短い方が短辺となる。
【０１５０】
辺の比率が、（長辺）：（短辺）＝１：１でかつ形状が（２）であれば第２位置検出パターン候補であり、辺の比率が、（長辺）：（短辺）＝１：１でかつ（１）であれば第１位置検出パターン候補であり、（長辺）：（短辺）＝９：５で形状が（２）であれば第３位置検出パターン候補となる。このようにして、３種類の位置検出パターン候補の区別が可能となる。
【０１５１】
次に、コンピュータ４５は、位置検出パターン候補の面積を求める。ここでの面積は、外側の長方形枠の面積で、内側のスペースの面積も含む。第２位置検出パターンの場合は、枠の中の正方形も含む。位置検出パターンの面積は、外側の長方形の面積から４隅を含む４つの直角三角形の面積を減じることにより求める。面積＝（ｘ２−ｘ１）×（ｙ２−ｙ１）−（ｖｘ１−ｖｘ４）×（ｖｙ４−ｖｙ１）／２−（ｖｘ２−ｖｘ１）×（ｖｙ２−ｖｙ１）／２−（ｖｘ２−ｖｘ３）×（ｖｙ３−ｖｙ２）／２−（ｖｘ３−ｖｘ４）×（ｖｙ３−ｖｙ４）／２で求まる。
【０１５２】
次に、コンピュータ４５は、位置検出パターン候補の回転角度を求める。第１位置検出パターン及び第２位置検出パターンは、正方形であり９０度以上の傾きを検知できないので、９０度まで求める。角度は時計回りとする。
θ＝ａｒｃｔａｎ（（ｖｙ２−ｖｙ１）／（ｖｘ２−ｖｘ１））
θが回転角度となる。
【０１５３】
長方形である第３位置検出パターン候補の回転角度は、０から１８０度まで求める。第３位置検出パターンは、２点間の座標の距離を求める関数ｌｅｎｇｔｈ（ｘ１,ｙ１,ｘ２,ｙ２）＝（（ｘ２−ｘ１）２  ＋  （ｙ２−ｙ１）２）１／２を定義し、０〜４５度まではｌｅｎｇｔｈ（ｖｘ１,ｖｙ１,ｖｘ２,ｖｙ２）＞ｌｅｎｇｔｈ（ｖｘ４,ｖｙ４,ｖｘ１,ｖｙ１）かつ（ｘ２−ｘ１）＞（ｙ２−ｙ１）であり、θ＝ａｒｃｔａｎ（（ｖｙ２−ｖｙ１）／（ｖｘ２−ｖｘ１））で求まる。４５〜９０度まではｌｅｎｇｔｈ（ｖｘ１,ｖｙ１,ｖｘ２,ｖｙ２）＞ｌｅｎｇｔｈ（ｖｘ４,ｖｙ４,ｖｘ１,ｖｙ１）および（ｘ２−ｘ１）＜（ｙ２−ｙ１）であり、θ＝ａｒｃｔａｎ（（ｖｙ２−ｖｙ１）／（ｖｘ２−ｖｘ１））で求まる。９０〜１３５度まではｌｅｎｇｔｈ（ｖｘ１,ｖｙ１,ｖｘ２,ｖｙ２）＜ｌｅｎｇｔｈ（ｖｘ４,ｖｙ４,ｖｘ１,ｖｙ１）および（ｘ２−ｘ１）＜（ｙ２−ｙ１）であり、θ＝ａｒｃｔａｎ（（ｖｙ２−ｖｙ１）／（ｖｘ２−ｖｘ１））＋９０度で求まる。１３５〜１８０度まではｌｅｎｇｔｈ（ｖｘ１,ｖｙ１,ｖｘ２,ｖｙ２）＜ｌｅｎｇｔｈ（ｖｘ４,ｖｙ４,ｖｘ１,ｖｙ１）および（ｘ２−ｘ１）＞（ｙ２−ｙ１）であり、θ＝ａｒｃｔａｎ（（ｖｙ２−ｖｙ１）／（ｖｘ２−ｖｘ１））＋９０度で求まる。
【０１５４】
次に、コンピュータ４５は、位置検出パターン候補の中心座標を検出する。中心座標は外接長方形の中心（（ｘ１＋ｘ２）／２、（ｙ１＋ｙ２）／２）とする。
以上で、位置検出パターン候補の検査が終了する。
【０１５５】
次に、ステップＳ３８において、コンピュータ４５は、３種の位置検出パターン候補の組合せを作成する。まず、コンピュータ４５は、第１位置検出パターン候補を選択する。第１位置検出パターンの面積をＳとすると、面積がＳであり且つ回転角度（０度から９０度）が同じである位置検出パターン候補を、第２位置検出パターン候補として探す。第２位置検出パターン候補が見つかると、次に、面積がＳ＊５／９であり且つ回転角度（０度から１８０度）が同じである位置検出パターン候補を、第３位置検出パターン候補として探す。
【０１５６】
撮影された１画像に複数の二次元コードが写し込まれている場合、位置検出パターン候補のあらゆる組合せを考えると、莫大な組合せ数になってしまう。本発明のように位置検出パターンを全て異ならせることにより、この組合せ数を大きく低減し、更に事前に得られた形状・面積・回転などの特徴を用いることで、簡単な比較演算で、更なる組合せ数の絞込みが可能となっている。また、本明細書に開示する二次元コードによれば、位置検出パターンの配置の特徴により、以下に説明するように組み合わせ数の絞り込みが可能となる。このことを具体的に説明する。
【０１５７】
一の位置検出パターンの対向する一対の辺または、一の位置検出パターンの輪郭上の対向する一対の点を、辺の延びる方向又は所定の方向に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置されているため、この条件から外れる位置に存在する位置検出パターンは一の二次元コードを構成する位置検出パターンの候補から外れるので、組み合わせ数の絞り込みが可能となっている。例えば、図１では、位置検出パターンの対向する一対の辺を延びる方向に延長した一対の延長線に、全ての他の位置検出パターンそれぞれが、重なるように配置されている。具体的には、図２１の位置検出パターン１２Ａの辺Ａ４―Ａ１と、辺Ａ２―Ａ３を延長した延長線が、位置検出パターン１２Ｂの辺Ｂ４―Ｂ１と、辺Ｂ２―Ｂ３と重なり、また位置検出パターン１２Ｃの辺Ｃ４―Ｃ１と、辺Ｃ２−Ｃ３と重なる。辺Ａ４―Ａ１は、１次方程式Ｙ＝ａ１Ｘ＋ｂ１−（１）で表される。辺Ａ２―Ａ３は、辺Ａ４−Ａ１と平行であり、１次方程式Ｙ＝ａ１Ｘ＋ｂ１’−（２）により表される。
【０１５８】
位置検出パターン１２Ａの重心を通る上記１次方程式の法線は、Ｙ＝−（１／ａ１）Ｘ＋ｂ１’’−（３）で表され、位置検出パターン１２Ｂの重心を通る上記１次方程式の法線は、Ｙ＝−（１／ａ１）Ｘ＋ｂ２−（４）で表され、位置検出パターン１２Ｃの重心を通る上記１次方程式の法線は、Ｙ＝−（１／ａ１）Ｘ＋ｂ３−（５）で表せる。位置検出パターン１２Ａの重心と、式（１）と式（３）の交点座標との距離を、Ｌ１として、位置検出パターン１２Ｂの重心と、式（１）と式（４）の交点座標との距離を、Ｌ２として、位置検出パターン１２Ｃの重心と、式（１）と式（５）の交点座標との距離を、Ｌ３とする。Ｌ１、Ｌ２、Ｌ３の比率を、Ｌ１を基準として、Ｌ１：Ｌ２：Ｌ３＝１：Ｒ２：Ｒ３と表した時、図１ではＲ２＝１、Ｒ３＝１となる。
【０１５９】
位置検出パターンの組み合わせが正しければ、Ｒ２＝１＝Ｌ２／Ｌ１、Ｒ３＝１＝Ｌ３／Ｌ１となる。また、位置検出パターン１２Ａの重心と、式（２）と式（３）との交点座標の距離を、Ｌ４として、位置検出パターン１２Ｂの重心と、式（２）と式（４）の交点座標との距離を、Ｌ５として、位置検出パターン１２Ｃの重心と、式（２）と式（５）の交点座標との距離を、Ｌ６とする。Ｌ４、Ｌ５、Ｌ６の比率を、Ｌ４を基準として、Ｌ４：Ｌ５：Ｌ６＝１：Ｒ５：Ｒ６と表した時、図１ではＲ２＝１、Ｒ３＝１となる。位置検出パターンの組み合わせが正しければ、Ｒ５＝１＝Ｌ５／Ｌ４、Ｒ６＝１＝Ｌ６／Ｌ４となる。上記関係が成り立たない場合は、位置検出パターンの組み合わせとして正しくない。この方法により、位置検出パターンの組み合わせが正しいか否かを検証することができる。また、図３（Ａ）の場合でも、Ｒ２、Ｒ３、Ｒ５、Ｒ６の値が変わるだけで、同様の方法により、位置検出パターンの組み合わせが正しいか否かを判定できる。位置検出パターンの輪郭上の対向する一対の点を、所定の方向に平行に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置した場合でも、また図７に示すような位置検出パターンが四角形でない場合でも、形状に関わらず、組み合わせが正しいか否かの判定が可能である。辺の延びる方向に延長した一対の延長線上の辺Ａ４−Ａ１と、辺Ａ２−Ａ３のかわりに、位置検出パターンの輪郭上の対向する一対の点を、所定の方向に平行に延長した一対の延長線を用いることで、同様に位置検出パターンの組み合わせが正しいか否かを判定できる。さらに、一の位置検出パターンの対向する一対の辺または、一の位置検出パターンの輪郭上の対向する一対の点を、辺の延びる方向又は所定の方向に延長した一対の延長線の内部に、全ての他の位置検出パターンそれぞれが、少なくとも一部が重なるように配置されているため、この条件から外れる位置に存在する位置検出パターンが一の二次元コードを構成する位置検出パターンの候補から外れることで、組み合わせ数の絞り込みが可能となっている。
【０１６０】
ステップＳ３８では、コンピュータ４５は、検討されていない３種の位置検出パターン候補の組合せが残っているかを判定し、残っていればステップＳ４０に進み、残っていなければステップＳ５０に進む。
【０１６１】
ステップＳ４０では、コンピュータ４５は、組合せた３種の位置検出パターン候補が、同一の二次元コードの位置検出パターンであるとして、データ部から情報の取り出しを行う。この処理については、図２０を参照して後述する。
【０１６２】
ステップＳ４２では、コンピュータ４５は、情報の取り出しに成功したかの結果に応じて、成功した場合にはステップＳ４４に進み、失敗した場合には失敗した位置検出パターンの組合せを、位置検出パターン候補の組み合わせ対象から除外する処理を行った後、ステップＳ３８に戻る。
【０１６３】
ステップＳ４４では、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた３個の位置検出パターン候補を、同一の二次元コードの識別された３個の位置検出パターンの組み合わせてとして記録する。
【０１６４】
次に、ステップＳ４６において、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた３個の位置検出パターン候補を、位置検出パターン候補の組み合わせ対象から除外して、ステップＳ３８に戻る。なお、データの取り出しに成功した二次元パターンの所定の範囲に、使用していない位置検出パターン候補がある場合には、その位置検出パターン候補を、位置検出パターン候補の組み合わせ対象から除外しても良い。
【０１６５】
上述したステップＳ３８からＳ４６を繰り返すことにより、３種の位置検出パターン候補の組合せが、同一の二次元コードに含まれているかが確認される。ここで、検討されていない３種の位置検出パターン候補の組み合わせが残っていない場合には、ステップＳ５０に進む。
【０１６６】
ステップＳ５０では、コンピュータ４５は、検討されていない２種の位置検出パターン候補の組合せが残っているかを判定し、残っていればステップＳ５２に進み、残っていなければステップＳ６０に進む。
【０１６７】
ステップＳ５２では、組合せた２種の位置検出パターン候補が、同一の二次元コードの位置検出パターンであるとして、データ部から情報の取り出しを行う。この処理については、図２０を参照して後述する。
【０１６８】
ステップＳ５４では、コンピュータ４５は、情報の取り出しに成功したかの結果に応じて、成功した場合にはステップＳ５６に進み、失敗した場合には失敗した位置検出パターンの組合せを、位置検出パターン候補の組み合わせ対象から除外する処理を行った後、ステップＳ５０に戻る。
【０１６９】
ステップＳ５６では、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた２個の位置検出パターン候補を、同一の二次元コードの識別された２個の位置検出パターンの組み合わせてとして記録する。
【０１７０】
次に、ステップＳ５８において、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた２個の位置検出パターン候補を、位置検出パターン候補の組み合わせ対象から除外して、ステップＳ５０に戻る。なお、データの取り出しに成功した二次元パターンの所定の範囲に、使用していない位置検出パターン候補がある場合には、その位置検出パターン候補を、位置検出パターン候補の組み合わせ対象から除外する。
【０１７１】
上述したステップＳ５０からステップＳ５８を繰り返すことにより、２種の位置検出パターン候補の組合せが、同一の二次元コードに含まれているかが確認される。ここで、検討されていない２種の位置検出パターン候補の組み合わせが残っていない場合には、ステップＳ６０に進む。
【０１７２】
ステップＳ６０では、コンピュータ４５は、検討されていない１種の位置検出パターン候補が残っているかを判定し、残っていればステップＳ６２に進み、残っていなければステップＳ７２に進む。ステップＳ７２では、解析メインの処理を終了する。
【０１７３】
ステップＳ６２では、コンピュータ４５は、検出された１種の位置検出パターン候補が、位置検出パターンである場合に、該位置検出パターンに対して所定の位置に配置されている位置補正パターンが識別されるかを判定する。この位置補正パターンが識別された場合には、ステップ６４に進む。コンピュータ４５は、位置検出パターン候補に対して所定の位置に配置されている位置補正パターンを識別できたので、この位置検出パターン候補が、位置検出パターンであることを識別する。一方、位置補正パターンが識別されない場合には、検出された１種の位置検出パターン候補を、検討していない１種の位置検出パターン候補の対象から除外する処理を行った後、ステップＳ５０に戻る。
【０１７４】
ここで位置補正パターンを検出する処理について、図１９を参照しながら、以下に説明する。二次元コードに位置補正パターンが存在する場合、位置補正パターンを検出する。位置補正パターンを検出する場合、図１８に示す位置検出パターンと同様、画像の左上の点を始点とし、画面をＸ方向に走査し、右端にたどり着いたら、数ピクセル下の左端からＸ方向に走査する。言い換えれば、数ピクセル分間引くことになる。これを画像全体に対して繰り返す。間引くピクセル数は、（最大間引き量）＝(位置補正パターンの辺の長さの中で最小となるセルサイズ）×（撮影時のセルあたりのピクセル数)である。全ての位置補正パターンの辺の長さの中で最小となるセルサイズは、コードの回転も考慮し、位置補正パターンの回転で起こり得るＹ方向の最小セルサイズである。撮影時のセルあたりのピクセル数は、１セル当たり１ピクセルを下回ると、理想的な撮影画像でもセルの明と暗を判別することが困難になる。実際の撮影画像でのセルのずれ又は回転を考慮すると、少なくとも１セル当たり３ピクセル以上であることが望ましい。この処理は、間引くピクセルサイズを除き、位置検出パターンの検出のための走査とほぼ同じ処理になるため、同時に行ってもよい。その場合、間引くピクセルサイズを、少ない方に合わせる。そして、コンピュータ４５は、検出された位置補正パターンを検査する。
【０１７５】
具体的には、走査中に明から暗の境界を見つけた場合、暗部分の周囲を走査する。その際に、最小・最大のＸ座標、Ｙ座標をそれぞれ求める。これにより、暗の固まりの外接する長方形が取得できる。これの左上座標を（ｘ１’，ｙ１’）、右下座標を（ｘ２’，ｙ２’）と表す。図１９は、位置補正パターンの形状チェックを説明する図である。まず、コンピュータ４５は、位置補正パターンの形状をチェックする。
【０１７６】
(ｘ２’-ｘ１’)と、（ｙ２’−ｙ１’）の値がほぼ同じ値となる。図１に示す二次元コードの各位置補正パターン１６Ａ、１６Ｂは、3×3の暗セルである。そこで、まず明の穴がないことを確認する。始点を外接長方形の左側中点（ｘ１’，（ｙ１’＋ｙ２’）／２）とし、終点を（ｘ２’，（ｙ１’＋ｙ２’）／２）として、ｘ軸方向の走査を行う。ここで、暗の左端（ｌｘ１’）から暗の右端（ｒｘ１’）まで、全て暗であることを確認する。さらに、図１９に示すように、中心座標（（ｌｘ１’＋ｒｘ１’）／２，（ｙ１’＋ｙ２’）／２）から上下を走査し、こちらもｙ軸方向に、暗の上端と暗の下端まで、全て暗であることを確認する。
【０１７７】
次に、コンピュータ４５は、各位置補正パターンの頂点を探索する。外接する長方形の左上の座標（ｘ１’，ｙ１’）からＸ軸方向に（ｘ２’，ｙ１’）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ１：（ｖｘ１’，ｖｙ１’）とする。次に右上の座標（ｘ２’，ｙ１’）からＹ軸方向に（ｘ２’，ｙ２’）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ２：（ｖｘ２’，ｖｙ２’）とする。右下の座標（ｘ２’，ｙ２’）からＸ軸の反対方向に（ｘ１’，ｙ２’）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ３：（ｖｘ３’，ｖｙ３’）とする。次に、左下の座標（ｘ１’，ｙ２’）からＹ軸の反対方向に（ｘ１’，ｙ１’）まで走査する。一番初めに接触した暗点の座標をｖｅｒｔｅｘ４：（ｖｘ４’，ｖｙ４’）とする。ｖｅｒｔｅｘ１〜４は正方形となるはずである。そうでない場合は、位置補正パターンではないと判定する。
【０１７８】
次に、コンピュータ４５は、位置補正パターンの面積を求める。位置補正パターンの面積は、外接する正方形の面積から４隅を含む４つの直角三角形の面積を減じることにより求める。面積＝（ｘ２’−ｘ１’）×（ｙ２’−ｙ１’）−（ｖｘ１’−ｖｘ４’）×（ｖｙ４’−ｖｙ１’）／２−（ｖｘ２’−ｖｘ１’）×（ｖｙ２’−ｖｙ１’）／２−（ｖｘ２’−ｖｘ３’）×（ｖｙ３’−ｖｙ２’）／２−（ｖｘ３’−ｖｘ４’）×（ｖｙ３’−ｖｙ４’）／２で求まる。
【０１７９】
次に、コンピュータ４５は、位置補正パターン候補の回転角度を求める。位置補正パターンは、正方形であり９０度以上の傾きを検知できないので、９０度までの角度を求める。角度は時計回りとする。θ＝ａｒｃｔａｎ（（ｖｙ２’−ｖｙ１’）／（ｖｘ２’−ｖｘ１’））θが回転角度となる。これら検査は簡単なものであり、これと似た形状（黒の正方形）は多くあるため、多数のノイズを拾うことになる。位置補正パターンは、位置検出パターンにより画像内での二次元コードの位置がおおまかに判明した後に、セルの座標補正や、位置検出パターン候補の作成を行うため用いるものであり、検出された位置補正パターンを単独で正しいかどうかを判定する必要はなく、識別された位置検出パターン、又は位置検出パターン候補との位置関係に基づいて、正しい位置補正パターンか否かを判定できればよい。また一方で、位置補正パターンが見つからなくても、位置検出パターン候補を取得することは可能であり、位置補正パターンは、位置検出パターンと異なり必須ではない。
【０１８０】
ステップＳ６４では、コンピュータ４５は、検出された１種の位置検出パターン候補が、二次元コードの位置検出パターンであるとして、データ部から情報の取り出しを行う。この処理については、図２０を参照して後述する。
【０１８１】
ステップＳ６６では、コンピュータ４５は、情報の取り出しに成功したかの結果に応じて、成功した場合にはステップＳ６８に進み、失敗した場合には失敗した位置検出パターン候補を、位置検出パターン候補の対象から除外する処理を行った後、ステップＳ６０に戻る。
【０１８２】
ステップＳ６８では、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた１個の位置検出パターン候補を、二次元コードの識別された位置検出パターンとして記録する。
【０１８３】
次に、ステップＳ７０において、コンピュータ４５は、データの取り出しに成功した二次元パターンに使われた１個の位置検出パターン候補を、位置検出パターン候補の対象から除外して、ステップＳ６０に戻る。なお、データの取り出しに成功した二次元パターンの所定の範囲に、使用していない位置検出パターン候補がある場合には、その位置検出パターン候補を、位置検出パターン候補の対象から除外する。
【０１８４】
上述したステップＳ６０からステップＳ７０を繰り返すことにより、１種の位置検出パターン候補が、二次元コードの位置検出パターンであるかが確認される。ここで、除外されていない１種の位置検出パターン候補が残っていない場合には、ステップＳ７２に進む。ステップＳ７２では、解析メインの処理を終了する。処理時間短縮のため、ステップＳ５０で、検討していない２種の位置検出パターン候補の組み合わせがない場合は、ステップＳ７２で解析メインの処理を終了しても良い。
【０１８５】
次に、上述したステップＳ４０、Ｓ５２及びＳ６４における情報の取り出し処理を、図２０〜図２３を参照して、以下に説明する。
【０１８６】
まず、ステップＳ８０において、コンピュータ４５は、情報取り出し処理を開始する。
【０１８７】
次に、ステップＳ８２において、コンピュータ４５は、一又は複数の位置検出パターンから合計４点の座標を取得する。まず、ステップＳ４０の場合の処理について、以下に説明する。
【０１８８】
ステップＳ４０の場合には、コンピュータ４５は、検出された３個の位置検出パターン候補の内から２個の位置検出パターン候補を選択して、選択された一の位置検出パターン候補から少なくとも１点の座標を取得するように、選択された少なくとも２個の位置検出パターン候補から合計４点の座標を取得する。この際、位置検出パターンは外側の２つを選択し、各位置検出パターンから４隅の２点を選択して、選択された４点を結んだ外形が長方形状となることが望ましい。後述するステップＳ９６において、取り出されたメッセージから正しく情報が得られたならば、検出された位置検出パターン候補は、識別された位置検出パターンということになる。なお、コンピュータ４５は、識別された少なくとも３個の位置検出パターンの内から少なくとも１個の記位置検出パターンを選択して、選択された位置検出パターンから合計４点の座標を取得してもよい。
【０１８９】
図２１は、検出された３個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【０１９０】
図２１に示すように、撮影された二次元コードの画像に基づいて、３つの位置検出パターン候補が検出されているとする。コンピュータ４５は、４点の座標を、複数の位置検出パターンの輪郭を形成する点から取得することが好ましい。図２１に示す例では、位置検出パターン１２Ａ、１２Ｂ、１２Ｃの外形は四角形であり、コンピュータ４５は、４点の座標を、位置検出パターン１２Ａ、１２Ｂ、１２Ｃの輪郭を形成する四角形の頂点から取得する。４点の座標は、二次元コードの射影変換を行うパラメータとして取得して使用されるので、同一直線上に配置されない４点を取得することが好ましい。この考え方は、後述するＳ５２及びＳ６４の処理にも適用される。
【０１９１】
第１位置検出パターン１２Ａは、左上の位置から反時計回りに、４つの頂点Ａ１、頂点Ａ２、頂点Ａ３、頂点Ａ４を有する。第２位置検出パターン１２Ｂは、左上の位置から反時計回りに、４つの頂点Ｂ１、頂点Ｂ２、頂点Ｂ３、頂点Ｂ４を有する。第３位置検出パターン１２Ｃは、左上の位置から反時計回りに、４つの頂点Ｃ１、頂点Ｃ２、頂点Ｃ３、頂点Ｃ４を有する。
【０１９２】
コンピュータ４５は、３つの異なる位置検出パターン候補の内、距離が最も離れている第１位置検出パターン１２Ａ及び第３位置検出パターン１２Ｃを選択する。そして、コンピュータ４５は、第１位置検出パターン１２Ａから２つの頂点Ａ１及び頂点Ａ２の座標を取得し、第３位置検出パターン１２Ｃから２つの頂点Ｃ３及び頂点Ｃ４の座標を取得する。このように、最も距離が離れている２つの位置検出パターンを選択し、更に、最も距離が離れている４つの頂点が取得される理由は、データ取得の計算対象となるデータ部１１から近いことが望まれるためである。１つの位置検出パターンから４点の座標を取得した場合、遠くのデータ部１１における座標の計算精度が悪化するため、データ部１１の全体を広くカバーできる４点を取得することが望ましい。また、読取装置のレンズの歪みや、二次元コードを印字する面の歪みなどが原因で撮影されたコードに歪みが発生した場合、その歪みは一様でない。そのため、同じ位置検出パターンから取得した４点の座標から二次元空間の射影変換の係数を取得するよりも、異なる位置検出パターンにまたがる複数の点を元に係数を計算したほうが、歪みによる影響を軽減できる効果が期待できる。
【０１９３】
そして、コンピュータ４５は、取得した４つの頂点の組み合わせが、以下の（ａ）（ｂ）の条件を満たすことが望ましい。これらの条件が満たされない場合は、ステップＳ１００に進んでも良い。ステップＳ１００では情報の取り出しに失敗して、処理を終了する。
【０１９４】
（ａ）４つの頂点を結んで形成される４角形の４つの頂点の角度が直角になり、向かい合う辺の長さが１：１となる。
（ｂ）４つの頂点を結んで形成される４角形がデータ部から所定の距離以上離れている。
【０１９５】
以上が、ステップＳ４０の場合の処理の説明である。
【０１９６】
次に、ステップＳ５２の場合の処理について、以下に説明する。
【０１９７】
ステップＳ５２の場合には、コンピュータ４５は、検出された２個の記位置検出パターン候補に基づいて、一の位置検出パターン候補から少なくとも１点の座標を取得するように、検出された２個の位置検出パターン候補から合計４点の座標を取得する。後述するステップＳ９６において、取り出されたメッセージから正しく情報が得られたならば、検出された位置検出パターン候補は、識別された位置検出パターンということになる。なお、コンピュータ４５は、識別された２個の位置検出パターンの内から少なくとも１個の位置検出パターンを選択して、選択された位置検出パターンから合計４点の座標を取得してもよい。
【０１９８】
図２２（Ａ）〜図２２（Ｃ）は、検出された２個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【０１９９】
図２２（Ａ）〜図２２（Ｃ）に示すように、撮影された二次元コードの画像に基づいて、３つの内の２つ位置検出パターン候補が検出されているとする。二次元コードの汚れ又は撮影時のぼけ・ブレ等のために、３つの内の１つ位置検出パターンは検出されていない。
【０２００】
図２２（Ａ）に示す例では、第１位置検出パターン１２Ａ及び第３位置検出パターン１２Ｃが検出されており、第２位置検出パターン１２Ｂは検出されていない。コンピュータ４５は、第１位置検出パターン１２Ａから２つの頂点Ａ１及び頂点Ａ２の座標を取得し、第３位置検出パターン１２Ｃから２つの頂点Ｃ３及び頂点Ｃ４の座標を取得する。最も距離が離れている４つの頂点が取得される理由は、射影変換を行うための４点の座標は、データ取得の計算対象となるデータ部１１から近いことが望まれるからである。１つの位置検出パターンから４点の座標を取得した場合、遠くのデータ部１１における座標の計算精度が悪化するため、データ部１１を広くカバーできる４点を取得することが望ましい。また、読取装置のレンズの歪みや、二次元コードを印字する面の歪みなどが原因で撮影されたコードに歪みが発生した場合、その歪みは一様でない。そのため、同じ位置検出パターンから取得した４点の座標から二次元空間の射影変換の係数を取得するよりも、異なる位置検出パターンにまたがる複数の点を元に係数を計算したほうが、歪みによる影響を軽減できる効果が期待できる。この考え方は、図２２（Ｂ）及び図２２（Ｃ）の処理に対しても適用される。
【０２０１】
図２２（Ｂ）に示す例では、第２位置検出パターン１２Ｂ及び第３位置検出パターン１２Ｃが検出されており、第１位置検出パターン１２Ａは検出されていない。コンピュータ４５は、第２位置検出パターン１２Ｂから２つの頂点Ｂ１及び頂点Ｂ２の座標を取得し、第３位置検出パターン１２Ｃから２つの頂点Ｃ３及び頂点Ｃ４の座標を取得する。
【０２０２】
図２２（Ｃ）に示す例では、第１位置検出パターン１２Ａ及び第２位置検出パターン１２Ｂが検出されており、第３位置検出パターン１２Ｃは検出されていない。コンピュータ４５は、第１位置検出パターン１２Ａから２つの頂点Ａ１及び頂点Ａ２の座標を取得し、第２位置検出パターン１２Ｂから２つの頂点Ｂ３及び頂点Ｂ４の座標を取得する。
【０２０３】
そして、コンピュータ４５は、取得した４つの頂点の組み合わせが、以下の（ａ）（ｂ）の条件を満たすことが望ましい。これらの条件が満たされない場合は、ステップＳ１００に進んでも良い。ステップＳ１００では情報の取り出しに失敗して、処理を終了する。
【０２０４】
（ａ）４つの頂点を結んで形成される４角形の４つの頂点の角度が直角になり、向かい合う辺の長さが１：１となる。
（ｂ）４つの頂点を結んで形成される４角形がデータ部から所定の距離以上離れている。
【０２０５】
以上が、ステップＳ５２の場合の処理の説明である。
【０２０６】
次に、ステップＳ６４の場合の処理について、以下に説明する。
【０２０７】
ステップＳ６４の場合には、コンピュータ４５は、識別された位置検出パターンから、４点の座標を取得する。
【０２０８】
図２３（Ａ）〜図２３（Ｃ）は、検出された１個の位置検出パターン候補から合計４点の座標を取得することを説明する図である。
【０２０９】
図２３（Ａ）〜図２３（Ｃ）に示すように、撮影された二次元コードの画像に基づいて、３つの内の１つ位置検出パターンが識別されているとする。二次元コードの汚れ又は撮影時のぼけ・ブレ等のために、３つの内の２つ位置検出パターンは検出されていない。位置検出パターン候補が正しいとすると、位置補正パターンが所定の位置から見つかるはずである。位置検出パターン１２Ａの頂点Ａ１と頂点Ａ２の中点をＭ１、頂点Ａ２と頂点Ａ３の中点をＭ２、頂点Ａ３と頂点Ａ４の中点をＭ３、頂点Ａ４と頂点Ａ１の中点をＭ４とする。位置検出パターンの重心座標から、４点Ｍ１、Ｍ２、Ｍ３、Ｍ４を通る直線を引く。その直線上、且つ重心座標から所定の距離（例えば１４．５セル）に、位置補正パターンが存在するはずである。さらに位置検出パターンと、位置補正パターンの面積を比較し、例えば位置検出パターンの面積：位置補正パターンの面積＝６４：９（８×８セル：３×３セル）でなければ、位置検出パターンの候補から除外する。さらに位置検出パターンと、位置補正パターンの回転角度を比較し、同じでなければ、位置検出パターンの候補から除外する。以上の判定より、位置検出パターン候補と、位置補正パターンから、正しい位置検出パターンを取得できる。
【０２１０】
図２３（Ａ）に示す例では、位置補正パターン１６Ａを識別することにより、第１位置検出パターン１２Ａが識別されており、第２位置検出パターン１２Ｂ及び第３位置検出パターン１２Ｃは検出されていない。コンピュータ４５は、第１位置検出パターン１２Ａから４つの頂点Ａ１、頂点Ａ２、頂点Ａ３及び頂点Ａ４の座標を取得する。四角形の位置検出パターンの４つの頂点が取得される理由は、位置検出パターン上の局所的に汚れている点を取得することを回避するためである。図２３（Ａ）に示す例では、４つの頂点が１つの位置検出パターンから取得されるため、４つの頂点から大きく離れたコード端部に位置するデータ部が発生しているので、第１位置検出パターン１２Ａ、第３位置検出パターン１２Ｃから４点を取得した場合に比べ、精度は下がるがデータの検出は可能である。この考え方は、図２３（Ｂ）及び図２３（Ｃ）の処理に対しても適用される。
【０２１１】
図２３（Ｂ）に示す例では、位置補正パターン１６Ａ又は１６Ｂを識別することにより、第２位置検出パターン１２Ｂが識別されており、第１位置検出パターン１２Ａ及び第３位置検出パターン１２Ｃは検出されていない。コンピュータ４５は、第２位置検出パターン１２Ｂから４つの頂点Ｂ１、頂点Ｂ２、頂点Ｂ３及び頂点Ｂ４の座標を取得する。
【０２１２】
図２３（Ｃ）に示す例では、位置補正パターン１６Ｂを識別することにより、第３位置検出パターン１２Ｃが識別されており、第１位置検出パターン１２Ａ及び第２位置検出パターン１２Ｂは検出されていない。コンピュータ４５は、第３位置検出パターン１２Ｃから４つの頂点Ｃ１、頂点Ｃ２、頂点Ｃ３及び頂点ＡＣ２の座標を取得する。
【０２１３】
そして、コンピュータ４５は、取得した４つの頂点の組み合わせが、以下の（ａ）（ｂ）の条件を満たすことが望ましい。これらの条件が満たされない場合は、ステップＳ１００に進んでも良い。ステップＳ１００では情報の取り出しに失敗して、処理を終了する。
【０２１４】
（ａ）４つの頂点を結んで形成される４角形の４つの頂点の角度が直角になり、向かい合う辺の長さが１：１となる。
（ｂ）４つの頂点を結んで形成される４角形がデータ部から所定の距離以上離れている。
【０２１５】
以上が、ステップＳ６４の場合の処理の説明である。
【０２１６】
コンピュータ４５は、ステップＳ８２の処理を終了すると、ステップＳ８４に進む。
【０２１７】
次に、ステップＳ８４において、コンピュータ４５は、取得された４点の座標に基づいて、二次元空間の射影変換の係数が求まり、射影変換により二次元コードの画像の座標変換を行って、歪み又はぼけが補正された二次元コードの元の形状の画像を生成する。
【０２１８】
次に、ステップＳ８６において、コンピュータ４５は、元の形状に座標変換された二次元コードの画像における各セルの座標及び画素値を求める。
【０２１９】
次に、ステップＳ８８において、コンピュータ４５は、各セルの画素値に基づいて、メッセージ、誤り訂正符号等を含むバイナリ形式の実データを取り出す。
【０２２０】
次に、ステップＳ９０において、コンピュータ４５は、誤り訂正符号を用いて、データ部と誤り訂正符号に関して、誤りの数と位置を検出する。誤り数がゼロであれば、ステップＳ９６に進む。誤り数がゼロでなければ、ステップＳ９２に進む。
【０２２１】
ステップＳ９２では、コンピュータ４５は、誤り訂正可能であるか否かを判定し、訂正可能であればステップＳ９４に進み、訂正ができなければステップＳ１００に進む。ステップＳ１００では、情報の取り出しが失敗して、処理を終了する。
【０２２２】
ステップＳ９４では、コンピュータ４５は、誤り訂正符号を用いて、実データの誤り訂正を行う。
【０２２３】
次に、ステップＳ９６において、コンピュータ４５は、実データに基づいてメッセージを復元して記憶する。
【０２２４】
次に、ステップＳ９８において、コンピュータ４５は、情報の取り出しに成功したので、情報の取り出しを終了して、ステップＳ４０、Ｓ５２又はＳ６４の次の処理に進む。
【０２２５】
図２２及び図２３の例で示したように、位置検出パターンの個数は、二次元コードが汚れている場合には検出できないものが発生することを考慮すると、個数の多い方が好ましい。しかし、個数が多いと、位置検出パターンが占有する二次元コード内の領域の面積の比率が増加するので、データ効率が低下すると共に、位置検出パターンを検出するための処理量も増加する。従って、位置検出パターンの個数は、二次元コードの使用形態等に応じて適宜決定することが好ましい。
【０２２６】
本発明では、上述した二次元コード、二次元コードの解析方法、二次元コードの解析装置及び二次元コードを解析するプログラムは、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【符号の説明】
【０２２７】
１０    二次元コード
１０Ａ    基本パターン部
１０Ｂ    周辺部
１１    データ部
１２Ａ    第１位置検出パターン
１２Ｂ    第２位置検出パターン
１２Ｃ    第３位置検出パターン
１３    セル
１４    ブロック
１５    分離スペース
１６Ａ、１６Ｂ    位置補正パターン
Ｌ    延長線
２０    カード
２１    絵柄
３０    本
３１    背表紙
４０    解析装置
４１    読み取り部
４２    レンズ
４３    イメージセンサ
４４    アナログ・デジタル変換部（ＡＤ）
４５    コンピュータ
４６    ディスプレイ
４７    通信インターフェース
【図１】
2020173874.tif 000003
【図２】
2020173874.tif 000004
【図３】
2020173874.tif 000005
【図４】
2020173874.tif 000006
【図５】
2020173874.tif 000007
【図６】
2020173874.tif 000008
【図７】
2020173874.tif 000009
【図８】
2020173874.tif 000010
【図９】
2020173874.tif 000011
【図１０】
2020173874.tif 000012
【図１１】
2020173874.tif 000013
【図１２】
2020173874.tif 000014
【図１３】
2020173874.tif 000015
【図１４】
2020173874.tif 000016
【図１５】
2020173874.tif 000017
【図１６】
2020173874.tif 000018
【図１７】
2020173874.tif 000019
【図１８】
2020173874.tif 000020
【図１９】
2020173874.tif 000021
【図２０】
2020173874.tif 000022
【図２１】
2020173874.tif 000023
【図２２】
2020173874.tif 000024
【図２３】
2020173874.tif 000025
【手続補正書】
【提出日】令和2年7月31日(2020.7.31)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
二次元のマトリックス状のパターンとして配置され、二進コードで表されるデータを表す複数のセルと、
単独で画像から検出可能な３個以上の異なる位置検出パターンであって、二次元コードの解析時に当該３個以上の異なる位置検出パターンの位置関係に基づいて二次元コードの画像の座標変換を行うための位置検出パターンと、
を備え、
各前記位置検出パターンの外形は四角形であり、一の前記位置検出パターンの対向する一対の辺を、辺の延びる方向に延長した一対の延長線の内部に、全ての他の前記位置検出パターンそれぞれが、少なくとも一部が重なるように配置されている、マトリックス型の二次元コード。
【請求項２】
他の前記位置検出パターンの輪郭の少なくとも一部が、一対の前記延長線の一方と重なっている請求項１に記載のマトリックス型の二次元コード。
【請求項３】
他の前記位置検出パターンの輪郭は、一対の前記延長線の内部に配置されている請求項１に記載のマトリックス型の二次元コード。
【請求項４】
他の前記位置検出パターンの対向する一対の辺は、一対の前記延長線上に配置されている請求項１に記載のマトリックス型の二次元コード。
【請求項５】
少なくとも１つの前記位置検出パターンは、一重の正方形枠と、前記正方形枠内に配置された正方形を有する請求項１〜４の何れか一項に記載のマトリックス型の二次元コード。
【請求項６】
少なくとも１つの前記位置検出パターンは、一重の正方形枠又は長方形枠を有する請求項１〜５の何れか一項に記載のマトリックス型の二次元コード。
【請求項７】
前記位置検出パターンに対して所定の位置に配置される位置補正パターンであって、二次元コードの解析時に当該位置補正パターンに対して前記所定の位置に配置されるパターンが前記位置検出パターンとして識別されるか、又は、二次元コードの解析時に前記位置検出パターンとの位置関係に基づいて、前記セルの座標の誤差が補正される位置補正パターンを備える請求項１〜６の何れか一項に記載のマトリックス型の二次元コード。
【請求項８】
前記位置補正パターンは、隣接する２つの異なる前記前記位置検出パターンの間の中心に配置される請求項７に記載のマトリックス型の二次元コード。
【請求項９】
第１の前記位置検出パターンと、第２の前記位置検出パターンと、第３の前記位置検出パターンと、第１の前記位置補正パターンと、第２の前記位置補正パターンを備え、
第１の前記位置補正パターンは、隣接する第１の前記位置検出パターンと第２の前記位置検出パターンとの間の中心に配置され、
第２の前記位置補正パターンは、隣接する第２の前記位置検出パターンと第３の前記位置検出パターンとの間の中心に配置される請求項７又は８に記載のマトリックス型の二次元コード。