(57)【特許請求の範囲】
【請求項１】
あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードであって、
前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のａ個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、
前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数としてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して各セルに付して構成したことを特徴とする二次元コード。
【請求項２】
前記セパレータに付された色は白色であり、
前記ｄ種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のａ個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色を優先して各セルに付して構成したことを特徴とする請求項１に記載の二次元コード。
【請求項３】
前記ａが２であり、前記ｂが２4以下である場合において、
前記各セル群における２個のセルには、白色および黄色を除く残りの色のうちのいずれか４色における、各セル群の示すべき情報に対応する色をそれぞれ付して構成したことを特徴とする請求項２に記載の二次元コード。
【請求項４】
前記ｐ×ｑに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有することを特徴とする請求項２又は請求項３に記載の二次元コード。
【請求項５】
前記セパレータに付された色は黒色であり、
前記ｄ種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のａ個のセルには、各セル群の示すべき情報に対応する色
として、少なくとも緑色及び黒色を除く残りの色を優先して各セルに付して構成したことを特徴とする請求項１に記載の二次元コード。
【請求項６】
前記ａが２であり、前記ｂが２4以下である場合において、
前記各セル群における２個のセルには、黒色および緑色を除く残りの色のうちのいずれか４色における、各セル群の示すべき情報に対応する色をそれぞれ付して構成したことを特徴とする請求項５に記載の二次元コード。
【請求項７】
前記各セル群は、前記ａが２以上の場合において、行方向または列方向うち一方向に連続する各ａ個のセルからなることを特徴とする請求項１乃至請求項６のいずれか１項に記載の二次元コード。
【請求項８】
前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含むことを特徴とする請求項７に記載の二次元コード。
【請求項９】
あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、
前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群のａ個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のａ個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、
前記二次元コードで示すべき情報群を入力する情報群入力部と、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のａ個のセルに対して、各セル群にて示すべき情報の種類に対応するａ個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えており、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数としてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数ｂとに基づき、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して用いて前記情報の各種類に対応するセル群のａ個のセルの色を設定することを特徴とするエンコード装置。
【請求項１０】
あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、
前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群のａ個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のａ個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、
前記二次元コードで示すべき情報群を入力する情報群入力部、および、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のａ個のセルに対して、各セル群にて示すべき情報の種類に対応するａ個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実
現される処理をコンピュータに実行させるためのプログラムを含んでおり、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数としてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数ｂとに基づき、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して用いて前記情報の各種類に対応するセル群のａ個のセルの色を設定することを特徴とするエンコードプログラム。
【請求項１１】
請求項１乃至請求項８のいずれか１項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、
該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、
該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、
前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、
前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、
該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、
該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、
前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えており、
前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定することを特徴とする二次元コードリーダ。
【請求項１２】
前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、
特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域（以降「抽出済み候補領域」という）と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えており、
前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記
一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させることを特徴とする請求項１１に記載の二次元コードリーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セルが配列されてなる二次元コード、この二次元コードを用いて情報群をエンコードするエンコード装置およびプログラム、ならびに、二次元コードを読み取って情報を識別する二次元コードリーダに関する。
【背景技術】
【０００２】
従来から、複数のセルを配列して構成される二次元コードを用いて、該二次元コードの１以上のセルからなる各セル群に付された色または色の組み合わせによって情報をエンコードする技術が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１９５５３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１の技術においては、白色又は黒色の境界領域で分割された複数のセルに対して、赤色、緑色、青色、黒色、シアン色、マゼンタ色、黄色及び白色の８色を用いて、各セルに色を付すことで情報をエンコードしている。そして、カメラによって、二次元コードの領域を含む画像部分を撮影し、該撮影して得られた画像について、色の判定処理を行ってエンコードされた情報を識別（デコード）している。このように、撮影画像に対して色の判定処理を行うため、例えば、黒色の境界領域に対して緑色でセルに色を付したり、白色の境界領域に対して黄色でセルに色を付した場合などにおいて、セルの領域とセル以外の領域との色の組み合わせによって、撮影画像において両者の色が混ざり、色の認識率が低下するといった不具合が生じる恐れがあった。
本発明は、このような課題を解決するためになされたものであり、その目的は、複数のセルを配列してなる二次元コードの各セルに付された色の認識率の低下を抑制するのに好適な技術を提供することである。
【課題を解決するための手段】
【０００５】
〔第１の構成〕
上記課題を解決するために、本発明に係る第１の構成の二次元コードは、あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードであって、前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のａ個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数としてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して各セルに付して構成されている。
【０００６】
この構成であれば、特に必要な色数ｃが使用可能な色数ｄよりも少ないときに、認識率の比較的高い色が優先してセルに付されるので、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【０００７】
〔第２の構成〕
さらに、第２の構成の二次元コードは、上記第１の構成において、前記ｐ×ｑに配列されたセルは、あらかじめ定められた色が付されたセパレータで分けられており、前記各セル群で示すべき情報の種類に対応する色として、前記ｄ種類の色のうち、前記セパレータに付された色とセルに付される色との組み合わせに対して、色の認識率が比較的高いものを優先して各セルに付して構成されている。
【０００８】
この構成であれば、セパレータに付された色とセルに付された色との組み合わせに対して、色の認識率が比較的高い色が優先してセルに付されているので、当該二次元コードの画像を撮影したときの撮影画像において、混色等によるセルに付された色の認識率の低下を抑制することができる。
【０００９】
〔第３の構成〕
さらに、第３の構成の二次元コードは、上記第２の構成において、前記セパレータに付された色は白色であり、前記ｄ種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のａ個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色を優先して各セルに付して構成されている。
【００１０】
この構成であれば、特に必要な色数ｃが使用可能な色数ｄよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの白色に対して、認識率の低くなる黄色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【００１１】
〔第４の構成〕
さらに、第４の構成の二次元コードは、上記第３の構成において、前記ａが２であり、前記ｂが２4以下である場合において、前記各セル群における２個のセルには、白色および黄色を除く残りの色のうちのいずれか４色における、各セル群の示すべき情報に対応する色をそれぞれ付して構成されている。
この構成であれば、セパレータに用いられる白色、および、白色の背景色に溶け込みやすい黄色を除く残りの色のうち比較的認識率の高い４色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【００１２】
〔第５の構成〕
さらに、第５の構成の二次元コードは、上記第３又は４の構成において、前記ｐ×ｑに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有する。
この構成であれば、例えば、この二次元コードの領域を含む領域の撮影画像中から二次元コードの位置を検出する際に、セパレータの白と枠部分の黒色とによって外周部分の輝度差を大きくすることができ、二次元コードの領域の外形エッジを抽出しやすくすることができる。
【００１３】
〔第６の構成〕
さらに、第６の構成の二次元コードは、上記第２の構成において、前記セパレータに付された色は黒色であり、前記ｄ種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のａ個のセルには、各セル群の示すべき情報に対応する色として、少なくとも緑色及び黒色を除く残りの色を優先して各セルに付して構成されている。
【００１４】
この構成であれば、特に必要な色数ｃが使用可能な色数ｄよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの黒色に対して、認識率の低くなる緑色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【００１５】
〔第７の構成〕
さらに、第７の構成の二次元コードは、上記第６の構成において、前記ａが２であり、前記ｂが２4以下である場合において、前記各セル群における２個のセルには、黒色および緑色を除く残りの色のうちのいずれか４色における、各セル群の示すべき情報に対応する色をそれぞれ付して構成されている。
この構成であれば、セパレータに用いられる黒色、および、黒色の背景色に溶け込みやすい緑色を除く残りの色のうち比較的認識率の高い４色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【００１６】
〔第８の構成〕
さらに、第８の構成の二次元コードは、上記第１乃至第７のいずれか１の構成において、前記各セル群は、前記各セル群は、前記ａが２以上の場合において、行方向または列方向うち一方向に連続する各ａ個のセルからなる。
この構成であれば、不連続となるａ個のセルから各セル群を構成した場合と比較して、各セル群のａ個のセルが一方向に連続しているので、エンコード時などにおいて、文字列や数字列などの各情報群との対応付けが容易となる。また、色の判定処理において、連続するａ個のセルの色を判定することで各セル群の色の判定を行うことができるので、不連続なものと比較して、色の判定処理と各セル群の情報の識別とを順次行うことができる。
【００１７】
〔第９の構成〕
さらに、第９の構成の二次元コードは、上記第８の構成において、前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含む。
この構成であれば、方向識別用のセル群によって、複数のセル群の配列方向を識別することができるので、エンコード時において、この配列方向と文字列や数字列などの各情報群の並び方向とを対応させておくことで、正しい並び順での情報の識別を容易に行うことができる。また、識別用のセル群とその他のセル群との位置関係を利用して、二次元コードの領域であることを判定する処理を行うことも可能である。
【００１８】
〔第１０の構成〕
一方、上記課題を解決するために、第１０の構成のエンコード装置は、あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群のａ個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のａ個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、前記二次元コードで示すべき情報群を入力する情報群入力部と、前記エンコード情
報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のａ個のセルに対して、各セル群にて示すべき情報の種類に対応するａ個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えている。
【００１９】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数をとしてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数ｂとに基づき、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して用いて前記情報の各種類に対応するセル群のａ個のセルの色を設定する。
【００２０】
この構成であれば、ｐ×ｑにセルが配列されてなる二次元コードにおける、ａ個のセルからなるセル群について、使用可能なｄ色から認識率の比較的高いｃ色を優先して用いて、情報の各種類に対応するセル群のａ個のセルの色を設定することができる。さらに、この設定情報に基づき、情報の各種類と、該各種類にそれぞれ対応する各セル群のａ個のセルに設定する色との関係を示すエンコード情報を記憶することができる。
【００２１】
さらに、情報群が入力されると、前記記憶したエンコード情報に基づき、二次元コードの各セル群のａ個のセルに対して、各セル群にて示すべき情報の種類に対応するａ個のセルの色を設定することで前記情報群の各情報をエンコードすることができる。
これにより、上記第１の構成の二次元コードを生成することができる。
このようにして構成された二次元コードは、上記第１の構成の二次元コードと同様に、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【００２２】
〔第１１の構成〕
また、上記課題を解決するために、第１１の構成のエンコードプログラムは、あらかじめ定められた色が付されたセパレータで分けられたｐ×ｑ（１≦ｐ，１≦ｑ）にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、前記ｐ×ｑに配列されたセルを、それぞれａ個（１≦ａ＜（ｐ×ｑ））のセルからなる複数のセル群に分けた場合における各セル群のａ個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のａ個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、前記二次元コードで示すべき情報群を入力する情報群入力部、および、前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のａ個のセルに対して、各セル群にて示すべき情報の種類に対応するａ個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実現される処理をコンピュータに実行させるためのプログラムを含んでいる。
【００２３】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をｂ（２≦ｂ）、ｂ種類の情報を前記各セル群で示すのに必要な色の種類数としてｃ（２≦ｃ）を決定し、前記セルに付すことが可能な色の種類数をｄ（ｄ≦ｂ）とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数ｂとに基づき、前記ｄ種類の色のうち、前記セパレータに付された色との組み合わせに対して、色の認識率が比較的高い前記ｃ種類の色を優先して用いて前記情報の各種類に対応するセル群のａ個のセルの色を設定する。
【００２４】
このようなプログラムにより制御されるコンピュータシステムは、上記第１１の構成に係るエンコード装置の一部を構成することができる。
なお、上述したプログラムは、コンピュータシステムによる処理に適した命令の順番付けられた列からなるものであって、各種記録媒体や通信回線を介して二次元コードリーダや、これを利用するユーザに提供されるものである。
【００２５】
〔第１２の構成〕
また、上記課題を解決するために、第１２の構成の二次元コードリーダは、請求項１乃至請求項９のいずれか１項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えている。
【００２６】
そして、前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定する。
この構成であれば、取得された画像（原画像）から生成されたエッジ画像中における候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定を経て、原画像中から二次元コードの領域を検出することができる。
【００２７】
このように、原画像の領域において、エッジ画像から抽出された有効な候補領域に対応する対応領域のうち、特徴的なパターンが含まれる対応領域を、原画像中における二次元コードの領域として検出することにより、原画像に含まれる複数の二次元コードの領域それぞれを特定することができるようになる。
また、上記構成では、取得された画像から、二次元コードの領域の候補となる候補領域を抽出し、抽出した候補領域が有効か否かを判定したうえで、有効と判定された領域から二次元コードの領域を検出して情報の識別を行うことができる。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。
【００２８】
加えて、有効と判定された候補領域に対応する対応領域についてのみ、この領域から二次元コードの領域を検出して情報の識別を行うことができる。
そのため、二次元コードの理想の形状から逸脱した形状等の明らかに二次元コードの領域とは異なる形状の候補領域に対して、特徴的なパターンが含まれているか否かの判定、二次元コードの領域の検出および情報の識別を含む処理が行われるのを防ぐことができる。
以上のことにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【００２９】
また、上記構成では、対応領域における各セルに対応する領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色判定が未処理の残りのピクセルについては色判定処理を省略し、所定数の有効な色の判定結果に基づき各セルに対応する領域に付された色を判定することができる。
これにより、各セルの領域を構成する複数のピクセルにおいて所定数の有効な色の判定結果を得た場合に、残りの未処理のピクセルについては色の判定処理が行われないため、その分だけ各セルの領域の色の判定にかかる処理時間を短縮することができる。
【００３０】
この構成において、原画像から変換されるエッジ画像は、原画像に含まれるエッジ成分の分布を示すものであればよく、例えば、原画像における輝度、明度、彩度など特定の成分のみを分布させた画像における所定のしきい値以上の成分のみを抽出（具体的にはしきい値で二値化）した画像や、この画像に対して輪郭線の抽出をした画像などのことである。
この輪郭線の抽出は、具体的に、エッジ画像中に含まれるオブジェクトの輪郭線を抽出する処理であり、輪郭線を抽出できればどのような処理方法を用いてもよい。
【００３１】
例えば、公知の細線化アルゴリズム（Hilditch、Deutsch、Zhang Suen、田村、鶴岡などの手法）を用いた細線化処理によってエッジ部分を線形化する方法がある。また、例えば、ラプラシアンフィルタ等の公知のエッジ抽出フィルタを用いたフィルタリング処理を行ってエッジ部分を線形化する方法や、公知のブレゼンハムの線分描画アルゴリズムを用いてエッジ部分を線形化する方法などもある。
【００３２】
また、エッジ画像から候補領域を抽出する際の「あらかじめ定められた領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などを、規定しておけばよい。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形の領域などの矩形形状を角度を変えて見た（撮影した）場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの撮影環境や原画像の画質等によって円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規定でもよいし、エッジ成分の分布パターン（エッジ成分の分布状態、分布されているエッジ成分の配置など）が特定のパターンの領域を抽出するといった規定でもよい。
【００３３】
また、抽出した候補領域が有効であるか否かを判定する際の「形状情報」とは、例えば、外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状（理想の形状）に係る形状の情報となる。
また、原画像から二次元コードの領域を検出する際に参照される「特徴的なパターン」とは、二次元コードについて定められた特徴的なパターンを直接的または間接的に示す情報であればよく、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンを直接的または間接的に示す情報などのことである。
【００３４】
また、「所定数の有効な色の判定結果」とは、各セルの領域の色を正確に判定可能な精度を有した有効な色の判定結果の数であり、処理速度の観点からは、より少数の方が望ましい。
また、「有効な色」とは、例えば、色の判定対象が複数ある場合には判定結果が最も多数となる色や、予め各セルの領域に付す色が解っている場合、または、色の並びなどから推定できる場合は、各セルの領域に対応する色などが該当する。
【００３５】
〔第１３の構成〕
さらに、第１３の構成の二次元コードリーダは、第１２の構成において、前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域（以降「抽出済み候補領域」という）と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えている。
【００３６】
そして、前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させる。
【００３７】
この構成であれば、複数種類の変換条件に対応するエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定、および、原画像中からの二次元コードの領域の検出を繰り返し実施している。
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの領域の検出精度を高めることができる。
【００３８】
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出された候補領域が、先に参照されたエッジ画像について抽出された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このように一致する抽出済み候補領域について、抽出した候補領域の各セルに対応する領域の色の判定、抽出した候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない。
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードの領域にて示される情報を識別するに際し、本来同じものであるはずの二次元コードの領域を繰り返し識別してしまうといった無用な処理負担をなくすことができる。
【図面の簡単な説明】
【００３９】
【図１】エンコード機能付き二次元コードリーダ１の構成例を示すブロック図である。
【図２】セパレータが白色の場合の二次元コード１００の構成例を示す図である。
【図３】セパレータが黒色の場合の二次元コード１００の構成例を示す図である。
【図４】エンコード情報作成処理の一例を示すフローチャートである。
【図５】エンコード対象情報の一例を示す図である。
【図６】（ａ）は、セパレータが白色の場合のエンコード情報の一例を示す図であり、（ｂ）は、セパレータが黒色の場合のエンコード情報の一例を示す図である。
【図７】（ａ）は、図５のエンコード対象情報に対応する二次元コード１００の構成例を示す図であり、（ｂ）は、（ａ）の二次元コード１００に対するセル群の設定例を示す図である。
【図８】エンコード処理の一例を示すフローチャートである。
【図９】入力情報群の一例を示す図である。
【図１０】セパレータが白色の場合のエンコード処理によって作成された二次元コード１００の一例を示す図である。
【図１１】セパレータが黒色の場合のエンコード処理によって作成された二次元コード１００の一例を示す図である。
【図１２】情報識別処理の一例を示すフローチャートである。
【図１３】エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが抽出済み候補領域と一致するか否かを判定するための別手法を示す図である。
【図１４】（ａ）は、変数Ｙの値と画像種類およびしきい値との対応関係の一例を示す図であり、（ｂ）は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
【図１５】有効領域判定処理の処理手順を示すフローチャートである。
【図１６】（ａ）は、理想的な候補領域の形状例を示す図であり、（ｂ）〜（ｅ）は、誤差範囲外の形状例を示す図であり、（ｆ）〜（ｇ）は、誤差範囲内の形状例を示す図である。
【図１７】色判定処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００４０】
以下に本発明の実施形態を図面に基づき説明する。
（１）エンコード機能付き二次元コードリーダ１の構成
まず、図１に基づき、エンコード機能付き二次元コードリーダ１の構成を説明する。図１は、エンコード機能付き二次元コードリーダ１の構成例を示すブロック図である。
エンコード機能付き二次元コードリーダ１（以下、単に二次元コードリーダ１と称す）は、図１に示すように、ＣＰＵ（Central Processing Unit）６０と、ＲＡＭ（Random Access Memory）６２と、ＲＯＭ（Read Only Memory）６４と、入出力インターフェース（Ｉ／Ｆ）６６と、バス６８とを含んで構成されるコンピュータシステムを備えている。ＣＰＵ６０、ＲＡＭ６２、ＲＯＭ６４およびＩ／Ｆ６６は、バス６８に接続されており、バス６８を介してこれら接続デバイス間のデータの送受信を可能としている。
【００４１】
二次元コードリーダ１は、さらに、Ｉ／Ｆ６６を介して、記憶装置７０と、表示装置７２と、印刷装置７３と、入力装置７４と、カメラ７６と、ＮＩＣ（Network Interface Card）７８とに接続されている。
ＣＰＵ６０は、ＲＯＭ６４または記憶装置７０に予め記憶された各種専用のコンピュータプログラムをＲＡＭ６２に読み込み、ＲＡＭ６２に読み込まれたプログラムに記述された命令に従って、各種リソースを駆使して、各種処理を実行する。ＣＰＵ６０において実行される各種処理としては、二次元コードを利用して情報をエンコードするためのエンコード情報の作成処理、作成したエンコード情報を用いて情報をエンコードするエンコード処理がある。さらに、エンコード処理にて情報をエンコードしてなる二次元コードの領域が１以上含まれる画像から二次元コードの領域を検出し、該検出した二次元コードにて示される情報を識別する情報識別処理がある。
【００４２】
記憶装置７０は、各種専用のコンピュータプログラム、プログラムの実行において用いられるデータ等の、上記エンコード情報作成処理、エンコード処理、および情報識別処理に必要なデータを記憶する。
具体的に、記憶装置７０は、二次元コードを用いて情報をエンコードする際のエンコード情報の作成に必要なエンコード対象情報、エンコード対象情報に基づいて作成したエンコード情報、エンコード情報を用いて情報をエンコードしてなる二次元コードの情報を記憶する。
【００４３】
ここで、エンコード対象情報とは、エンコード対象の情報群の情報量（例えば、文字列や数字列の桁数等）、エンコード対象の情報の種類（例えば、１０進数、英大文字、英小文字、ひらがな、カタカナなど）、エンコード対象の単位情報の種類数（例えば、１０進数なら０〜９の１０種類）などを含む情報となる。
他にも、二次元コードの構成が決まっている場合はそのセルの構成（例えば、３行×６列（ｐ×ｑ）等）を示す情報、また、セルにマークすることが可能な色の種類数の情報、これらの色の認識率に係る情報などもエンコード対象情報に含まれる。
【００４４】
また、エンコード情報とは、二次元コードを構成する各セル群それぞれの色または色の組み合わせと、当該色または色の組み合わせに対応する情報との対応関係を示す情報が登録されたデータテーブルである。
さらに、記憶装置７０は、二次元コードを特徴づける情報を規定したテンプレート、カメラ７６によって撮影して得られる画像データを記憶する。
【００４５】
ここで、記憶装置７０は、ＦＤドライブ、ＨＤドライブ等の磁気記憶型記憶装置、ＣＤドライブ、ＤＶＤドライブ、ＢＲＤドライブ等の光学的読取／書込方式記憶装置、ＭＯドライブ等の磁気記憶型／光学的読取方式記憶装置等の、コンピュータで記憶データを読み取り可能な記憶装置であれば何でもよい。
表示装置７２は、ＣＲＴディスプレイ、液晶ディスプレイなどの周知の表示装置であり、ＣＰＵ６０からの指令に応じて、カメラ７６で撮影された画像の表示を行う。
【００４６】
印刷装置７３は、例えば、公知のインクジェット方式またはバブルジェット（登録商標）方式などの印刷方式で印刷媒体に画像を印刷する装置である。本実施形態では、エンコード処理によって生成された二次元コードの画像等を印刷用紙やシール等の印刷媒体に印刷するのに用いられる。
入力装置７４は、キーボード、マウス、操作ボタン、タッチ式の入力デバイス（タッチパネル等）などのヒューマンインターフェースデバイスであり、ユーザの操作に応じた入力を受け付ける。
【００４７】
カメラ７６は、デジタルカメラ等の周知のカメラであり、所定の撮影領域を撮影して得られた画像を示す画像データを生成して順次Ｉ／Ｆ６６を介してＲＡＭ６２または記憶装置７０に送信して、ＲＡＭ６２または記憶装置７０に画像データを格納する。
ＮＩＣ７８は、ＬＡＮ、ＷＡＮ、インターネット等のネットワーク上の外部装置と通信をするためのデバイスであり、一般にＬＡＮカード等と呼ばれる周知のネットワークアダプタである。ＮＩＣ７８は、ネットワークケーブルＬを介してルータやハブ等に接続され、これらを介して、二次元コードリーダ１をネットワークに接続する。なお、周知の無線ＬＡＮ等の、無線によって無線ＬＡＮ用のアクセスポイントを介してネットワークに接続する構成であってもよい。
【００４８】
これにより、本実施の形態では、ネットワークに接続された外部カメラから、ＮＩＣ７８を介して所定の撮影領域の撮影画像を示す画像データを取得したり、ネットワークに接続されたデータサーバから各種データを取得したりすることも可能である。
なお、この二次元コードリーダ１は、例えば、携帯電話端末、携帯情報端末、周知のパーソナルコンピュータなどに実装されるものとして構成される。
【００４９】
そして、本実施形態における二次元コードリーダ１は、エンコード対象のエンコードに係る情報であるエンコード対象情報に基づき、エンコード情報を作成するエンコード情報作成処理と、作成したエンコード情報を用いて、入力される情報群をエンコードするエンコード処理とを行う装置として構成されている。
さらに、本実施形態における二次元コードリーダ１は、１以上の二次元コードが含まれた画像を示す画像データに基づき、その画像中の二次元コードを検出する処理と、検出した二次元コードにより示される情報を識別して取得する処理とを行う装置として構成されている。
【００５０】
（２）二次元コード１００の構成
次に、図２および図３に基づき、二次元コードリーダ１により生成し、かつ情報が読み取られる二次元コード１００について説明する。図２および図３は、セパレータの色が白色および黒色の場合の二次元コード１００の構成例を示す図である。
本実施形態における二次元コード１００は、図２および図３に示すように、白色および黒色のセパレータ１１０を境界領域として複数のセルＣ１１〜Ｃｐｑ（１≦ｐ，１≦ｑ）が一定間隔で配列され、所定の情報が各セルの色および色の組み合わせによりエンコードされたものである。なお、図２に示すように、セパレータ１１０を白色とした場合は、二次元コード１００の外周部に黒色のフレーム１２０を設ける。これは、後述する候補領域の特定において二次元コードの領域の認識率を向上するための構成である。
【００５１】
そして、この二次元コード１００は、セルそれぞれ、または、組み合わせに係るセル群それぞれが、そこに付された複数の色（多色）、または、色の組み合わせパターンにより、数字や文字など複数種類の値（多値）を表現可能となっている。例えば、複数の二次元コードについて、それぞれ、色の組み合わせや、色の配列パターンを変えることによって、各二次元コードに固有のユニークな情報を付すことが可能である。
【００５２】
また、セルＣ１１〜Ｃｐｑは、行毎に、それぞれ１以上のセルＣからなるセル群に分けられており、そのセル群で示すべき単位情報（１以上の文字）の対応づけられた色または色の組み合わせでマークが付けられる。こうして、各セルそれぞれ、または、１以上の組み合わせに係るセル群それぞれが、複数種類の文字のいずれかや多進数の数字で示されるいずれかの値からなる情報を持つことができるようになっている。
【００５３】
また、これらセルＣにそれぞれ付けられたマークの色は、シアン色（Ｃ）、マゼンタ色（Ｍ）、黄色（Ｙ）の分布を表した三次元空間内において、それぞれ三次元領域として球形に拡がる複数の成分領域（後述する判定領域）を、これら成分領域同士が互いに干渉しない大きさおよび位置関係で配置した成分モデルにより決められる。具体的に、この成分モデルに配置された成分領域内における中心座標で表される成分それぞれが、情報色の成分または組み合わせ色における各色の成分として、セル群にマークが付けられている。
ここでいう「成分領域同士が互いに干渉しない」とは、各成分領域が重複しないように、各成分領域同士の間隔を空けて配置したり、各成分領域の境界を隣接させて配置したり、することである。
【００５４】
また、成分領域の大きさは、画像の撮影環境に応じて生じうる誤差の範囲を十分に包摂できる空間として規定したものであり、本実施形態では、特定座標における色を一般的な撮影環境下の色とし、この色から撮影環境に応じて生じうる誤差の範囲を含む領域を成分領域として規定している。
また、二次元コード１００におけるセパレータ１１０の色には、セルＣに付すマークの色に用いられていない成分領域における中心座標の色が用いられている。
【００５５】
（３）ＣＰＵ６０による処理
以下に、ＣＰＵ６０がＲＯＭ６４または記憶装置７０に記憶された専用のコンピュータプログラムに従って実行する各種処理の手順について順次説明する。
（３−１）エンコード情報作成処理
まず、二次元コードリーダ１において、入力装置７４を介した作成指示に応じて開始されるエンコード情報作成処理の処理手順を、図４〜図７に基づいて説明する。
【００５６】
ここで、図４は、エンコード情報作成処理の処理手順の一例を示すフローチャートである。また、図５は、エンコード対象情報の一例を示す図である。また、図６（ａ）は、図５のエンコード対象情報に対応する二次元コード１００の構成例を示す図であり、（ｂ）は、（ａ）の二次元コード１００に対するセル群の設定例を示す図である。また、図７（ａ）は、セパレータ１１０が白色の場合のエンコード情報の一例を示す図であり、（ｂ）は、セパレータ１１０が黒色の場合のエンコード情報の一例を示す図である。
【００５７】
エンコード情報作成処理は、ＣＰＵ６０によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図４に示すように、まず、ステップＳ１１へと移行する。
ステップＳ１１では、入力装置７４を介したユーザからの作成指示の入力があったか否かを判定し、作成指示の入力があったと判定した場合(Yes)は、ステップＳ１３に移行し、そうでない場合(No)は、入力されるまで判定処理を繰り返す。
ここでは、入力装置７４によって、簡易に作成指示を入力できるように、例えば、作成指示を選択するボタンのグラフィックスを表示装置７２の表示画面に表示する。
【００５８】
そして、画面に表示されたボタンを、入力装置７４がタッチパネルであれば指でタッチすることで選択かつ押下し、入力装置がマウスであればマウスカーソルによって選択してクリックすることにより押下することで、作成指示を入力できるようにしている。つまり、ＧＵＩ（Graphical User Interface）によって、簡易に作成指示の入力を行うことが可能となっている。
作成指示が入力され、ステップＳ１３に移行した場合は、エンコード対象情報を取得して、ステップＳ１５に移行する。
【００５９】
この処理は、記憶装置７０に記憶されたエンコード対象情報をＲＡＭ６２などのワークメモリに読み出す処理となる。
なお、ステップＳ１１における、作成指示の入力前に、ユーザが入力装置７４を介して、エンコード対象の情報群の情報量、情報種類、単位情報の種類数、二次元コードのセルの構成、使用可能な色数等を含むエンコード対象情報の一部を選択または入力できるようにしてもよい。この場合は、記憶装置７０に記憶されたエンコード対象情報に加えて、この選択または入力された情報を取得してＲＡＭ６２等のワークメモリに読み出す（記憶する）処理も行う。
【００６０】
例えば、エンコード対象情報として、図５に示すように、情報量が１７桁、情報種類が１０進数、単位情報の種類数が１０、セルの構成を示す情報としてセルの配列数が３行×１２列、使用可能な色として赤色（Ｒ）、緑色（Ｇ）、青色（Ｂ）、白色（Ｗ）、シアン色（Ｃ）、マゼンタ色（Ｍ）、黄色（Ｙ）および黒色（Ｋ）の８色の情報が得られたとする。
ここで、情報量１７桁とは、文字（ａ，ｂ，ｃ，・・・）や数字（１，２，３，・・・）などの１文字の情報（単位情報）が１７個あることを意味する。また、情報種類が１０進数のみであることから、単位情報の種類は、０〜９の１０種類となる。そして、セルの配列数が３行×１２列ということから、二次元コード１００は、例えば、図６（ａ）に示すような構成となる。図６（ａ）に示す二次元コード１００は、セパレータ１１０が白色の場合の例となる。
【００６１】
つまり、図５のエンコード対象情報に対応する二次元コード１００のセルの配列は、図６（ａ）に示すように、第１行〜第３行の３行構成（ｐ＝３）であり、最上段の第１行はセルＣ１１〜Ｃ１１２の１２個のセルから、中段の第２行はセルＣ２１〜Ｃ２１２の１２個のセルから、最下段の第３行はセルＣ３１〜Ｃ３１２の１２個のセルからそれぞれ構成される。従って、列数は１２列（ｑ＝１２）となる。
【００６２】
次に、エンコード対象情報が取得されステップＳ１５に移行すると、ステップＳ１５では、取得したエンコード対象情報に基づき、セル群の構成、および、１０種類の情報をエンコードするのに必要な色数を設定して、ステップＳ１７に移行する。
セル群の構成の設定処理は、エンコード対象情報における、エンコード対象の情報群の情報量と、単位情報の種類数および使用可能な色の種類数とに基づき、セル群の各セル数ａ（１≦ａ）を決定する処理となる。
【００６３】
セルの総数が３６個であり、情報量が１７桁であり、色の種類数が８色であることから、１つのセルに１色を用いる場合に、１つのセルだけでは９種類以上の情報をエンコードすることは不可能であるため、セル群のセル数ａは最低２となる。ここでは、行数が奇数であり、列数が偶数であるため、各行で連続して並ぶ２つのセルからセル群を構成するようにセルの構成を設定する。これにより、二次元コード１００の３６個のセルは、図６（ｂ）に示すように、各行の連続する各２つのセルからなるセル群Ｃｇ１〜Ｃｇ１８の１８個のセル群に分けられることになる。
【００６４】
また、色数の設定は、セル群を構成する２個のセルの色の組み合わせで、１０種類の情報をエンコードすることから、最低４色となる。本実施形態では、使用する色の種類数が最小となるように決定する。従って、ここでは４色に決定する。
ステップＳ１７では、エンコード対象情報における色の認識率に係る情報と、ステップＳ１５で設定された色数の情報とに基づき、使用可能な色のなかからエンコードに使用する色を決定して、ステップＳ１９に移行する。
【００６５】
ここで、各セルに付された色の認識率は、撮影環境（撮影場所の光源の種類、光源の状態、使用するカメラの性能など）やセパレータ１１０の色とセルの色との組み合わせ内容などによって変わってくる。そのため、本実施形態では、事前に、様々な撮影環境下における、様々なセパレータ１１０の色とセルの色との組み合わせに対する、撮影画像におけるセルに付された各色の認識率を測定する。そして、その測定した認識率の情報を色の認識率に係る情報として記憶装置７０やＲＯＭ６４などに記憶しておく。
図５および図６（ｂ）の例では、各セル群の２つのセルに付された４色中の１色または２色の色によって単位情報をエンコードするので、本実施形態では、使用可能な８色のなかから、認識率の比較的高いもの（所定認識率以上（例えば、９０％以上）のもの）から優先して４色を使用色として決定する。
【００６６】
また、本実施形態では、セパレータ１１０の色が白色および黒色の２パターンについて、使用色を決定する。
具体的に、セパレータ１１０の色が白色であれば、セパレータで用いられている白色、白色に溶け込みやすい黄色などは認識率が低くなるので、例えば、シアン色（Ｃ）、マゼンタ色（Ｍ）、緑色（Ｇ）、黒色（Ｋ）の４色を使用色として決定する。また、セパレータ１１０の色が黒色であれば、セパレータと同じ黒色、緑色などは認識率が低くなるので、例えば、赤色（Ｒ）、青色（Ｂ）、黄色（Ｙ）、白色（Ｗ）の４色を使用色として決定する。
これら使用色の情報は、後述する「着色規則」としても設定される。
【００６７】
次に、ステップＳ１９では、ステップＳ１７で決定した使用色を用いて、各情報の種類に対応するセル群のａ個のセルの色を設定して、ステップＳ２１に移行する。
本実施形態では、セパレータ１１０の色が白色の場合と、黒色の場合との双方に対して各情報の種類に対応するセル群のａ個のセルの色を設定する。
また、情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように設定を行う。
【００６８】
図５および図６（ｂ）の例では、セパレータ１１０の色が白色の場合に、シアン色（Ｃ）、マゼンタ色（Ｍ）、緑色（Ｇ）、黒色（Ｋ）の４色を使用色としているので、例えば、１０進数の「０」に対しては、左側のセルにシアン色（Ｃ）を、右側のセルにマゼンタ色（Ｍ）を設定し、「１」に対しては、左側のセルにシアン色を、右側のセルに緑色（Ｇ）を設定する。このようにして、１０進数の０〜９に対して色を設定する。
【００６９】
なお、本実施形態においては、二次元コード１００における情報の配列方向を識別できるようにするために、第１行の先頭のセル群Ｃｇ１を方向識別用に用いている。従って、方向識別用の情報についても、例えば、左右両方のセルに黒色といったように色を設定する。
セパレータ１１０の色が黒色の場合も、白色の場合と同様に、赤色（Ｒ）、青色（Ｂ）、黄色（Ｙ）、白色（Ｗ）の４色を用いて、１０進数０〜９、および方向識別情報に対してセル群の各セルの色を設定する。
【００７０】
次に、ステップＳ２１では、ステップＳ１９で設定した情報に基づき、エンコード情報を生成して、ステップＳ２３に移行する。
本実施形態では、セパレータ１１０の色が白色の場合と、黒色の場合との双方に対してそれぞれエンコード情報を生成する。
また、エンコード情報は、例えば、図７（ａ）および（ｂ）に示すように、情報の種類と、該情報の種類毎に対応するセルの色の組み合わせと、各色の組み合わせに対応するコード値とが対応付けられたデータテーブルとなる。なお、図７（ａ）は、セパレータ１１０の色が白色のものに対応するエンコード情報を示し、図７（ｂ）は、セパレータ１１０の色が黒色のものに対応するエンコード情報を示す。
【００７１】
図７（ａ）において、例えば、「Ｃ−Ｃ」であれば、セル群Ｃｇの左右両方のセルの色がシアン色となることを示し、例えば、「Ｃ−Ｇ」であれば、セル群Ｃｇの左側のセルの色がシアン色、右側のセルの色が緑色であることを示す。つまり、「−」の左側の英字で示される色がセル群の左側のセルの色に対応し、「−」の右側の英字で示される色がセル群の右側のセルの色に対応する。図７（ｂ）についても同様である。
また、コード値は、例えば、シアン色を「０」、マゼンタ色を「１」、黄色を「２」、黒色を「３」、赤色を「４」、緑色を「５」、青色を「６」、白色を「７」とした場合の色の組み合わせに対する２桁の数字となる。例えば、「Ｃ−Ｃ」であれば「００」、「Ｃ−Ｇ」であれば「０５」となる。
【００７２】
次に、ステップＳ２３では、ステップＳ２２で生成したエンコード情報を、記憶装置７０に記憶して、ステップＳ１１へと移行する。
つまり、作成指示を受信する毎に、取得したエンコード対象情報に対応するエンコード情報が生成され、生成されたエンコード情報が記憶装置７０に記憶される。
なお、セパレータ１１０の２色（白色および黒色）についてそれぞれエンコード情報を生成する例を説明したが、セパレータ１１０の色を予め１色に固定しておき、その固定色のみに対して上記セルの色の設定処理（Ｓ１９）、エンコード情報の生成処理（Ｓ２１）を行うようにしてもよい。
【００７３】
また、図５に例示したエンコード対象情報について、図６（ｂ）に示すように、セル群を構成するセルの数を２個とする例を説明したが、この構成に限らず、３個以上のセルでセル群を構成することも可能である。
また、エンコード対象情報の内容や、使用可能な色数、二次元コードの構成などによっては、１個、または、３個以上のセルでセル群を構成することも可能である。
【００７４】
また、図５に例示したエンコード対象情報について、セパレータ１１０が白色の場合に、シアン色、マゼンタ色、緑色、黒色の４色を使用色とし、セパレータ１１０の色が黒色の場合に、赤色（Ｒ）、青色（Ｂ）、黄色（Ｙ）、白色（Ｗ）の４色を使用色としたが、この構成に限らない。先述したように、撮影環境や、カメラの性能等に応じて色の認識率は変化するので、状況に応じて最適な認識率となるように他の色の組み合わせを使用色として設定することも可能である。
【００７５】
（３−１）エンコード処理
次に、二次元コードリーダ１において行われるエンコード処理の処理手順を、図８〜図１１に基づいて説明する。
ここで、図８は、エンコード処理の処理手順の一例を示すフローチャートである。また、図９は、エンコード対象である情報群の一例を示す図である。また、図１０は、セパレータ１１０が白色の場合の第１情報群をエンコードしてなる二次元コード１００の一例を示す図である。また、図１１は、セパレータ１１０が黒色の場合の第１情報群をエンコードしてなる二次元コード１００の一例を示す図である。
【００７６】
エンコード処理は、ＣＰＵ６０によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図８に示すように、まず、ステップＳ３１へと移行する。
ステップＳ３１では、入力装置７４を介して、ユーザからのエンコード情報の設定指示の入力があったか否かを判定し、設定指示の入力があったと判定した場合(Yes)は、ステップＳ３３に移行し、そうでない場合(No)は、ステップＳ３９に移行する。
【００７７】
ステップＳ３３に移行した場合は、記憶装置７０に記憶されているエンコード情報の一覧を表示装置７２に表示して、ステップＳ３５に移行する。例えば、エンコード情報のファイル名の一覧を表示する。本実施形態では、ＧＵＩによって、ユーザが、入力装置７４を介して簡易に所望のエンコード情報の選択を行うことが可能となっている。
ステップＳ３５では、入力装置７４を介して、ユーザがエンコード情報を選択したか否かを判定し、選択したと判定した場合(Yes)は、ステップＳ３７に移行し、そうでない場合(No)は、選択されるまで判定処理を繰り返す。
【００７８】
ステップＳ３５においてエンコード情報が選択されステップＳ３７に移行した場合は、選択されたエンコード情報をエンコード処理に用いる情報として設定して、ステップＳ３１に移行する。
例えば、図７に示す、エンコード情報ＡおよびＢのうち、エンコード情報Ａが選択された場合は、エンコード情報Ａをエンコード処理に用いる情報として設定し、エンコード情報Ｂが選択された場合は、エンコード情報Ｂをエンコード処理に用いる情報として設定する。
【００７９】
一方、ステップＳ３１において、エンコード情報の設定指示の入力がなくステップＳ３９に移行した場合は、エンコード対象の情報群を入力して、ステップＳ４１に移行する。
ここで、情報群の入力は、エンコード対象の情報群が予めファイルとして記憶装置７０に記憶してある場合は、その記憶されたファイルの一覧を表示装置７２により画面に表示し、その一覧の中からユーザが入力装置７４を介して所望のファイルを選択し、記憶装置７０からＲＡＭ６２などのワークメモリへと読み出す処理となる。この場合に、情報群が複数ある場合は、自動的に連続して入力されるようにしてもよい。
【００８０】
一方、エンコード対象の情報を、入力装置７４を介してユーザが直接入力する場合は、入力装置７４により画面に表示した入力欄などへの入力処理となる。
ここで、入力される情報群は、例えば、図５に示すエンコード対象情報に対応する情報群の場合は、図９に示すように、１７桁の１０進数となる。つまり、各情報群は、「０」、「１」、・・・、「８」、「９」といった１０進数の各桁を表す単位情報（１桁の数字）の情報列（数字列）となる。なお、図９に示す情報群は、図書の特定に用いられるＩＳＢＮコードの一例を示している。
【００８１】
ステップＳ４１では、ステップＳ３９において入力された情報群に対する、入力装置７４を介したユーザからのエンコード指示の入力があったか否かを判定し、エンコード指示の入力があったと判定した場合(Yes)は、ステップＳ４３に移行する。一方、エンコード指示の入力が無い場合(No)は、入力があるまで判定処理を繰り返す。
ステップＳ４３に移行した場合は、エンコード指示の入力に応じて、ステップＳ３７で設定されたエンコード情報に基づきステップＳ３９で入力された情報群をエンコードして、ステップＳ４５に移行する。
【００８２】
以下、図９に示す第１情報群「０１２３４５６７８９０１２３４５２」を、図７（ａ）に示すエンコード情報Ａを用いてエンコードする場合を例に挙げて、エンコード処理について具体的に説明する。
二次元コード１００は、図６（ｂ）に示すように、セル群Ｃｇ１〜Ｃｇ１８の１８個のセル群に分かれている。
【００８３】
先述したように、セル群Ｃｇ１は、方向識別用の情報をエンコードするのに用いられる。このように方向識別用のセル群を左上のセル群Ｃｇ１に位置させた場合は、情報の方向が左から右に向かう方向となる。具体的に、セル群Ｃｇ１の右隣のセル群Ｃｇ２を先頭として、第１行目はＣｇ２→Ｃｇ６の方向に情報の順番が決まる。そして、第２行目は、Ｃｇ６に続いてＣｇ７→Ｃｇ１２の方向に情報の順番が決まり、第３行目は、Ｃｇ１２に続いてＣｇ１３→Ｃｇ１８の方向に情報の順番が決まる。この情報の順番は、第１情報群の上位桁（左）から下位桁（右）へと向かう各桁の数字の並び順（０→１→２→・・・８→９→０→・・・４→５→２）に対応する。
つまり、セル群Ｃｇ２〜Ｃｇ１８の１７個のセル群を用いて、第１情報群の１７桁の１０進数をエンコードすることになる。
【００８４】
まず、セル群Ｃｇ１の２つのセルは、方向識別用の情報をエンコードするため、図７（ａ）に示すエンコード情報から、両方とも黒色（Ｋ−Ｋ）となる。
次に、セル群Ｃｇ２は、第１情報群の最上位桁（一番左端）の数字「０」をエンコードすることになるので、図７（ａ）に示すエンコード情報から、左側のセルがシアン色（Ｃ）、右側のセルがマゼンタ色（Ｍ）となる。つまり「Ｃ−Ｍ」となる。
【００８５】
同様に、セル群Ｃｇ３は２番目の数字「１」を、セル群Ｃｇ４は３番目の数字「２」を、セル群Ｃｇ５は４番目の数字「３」を、セル群Ｃｇ６は５番目の数字「４」をそれぞれエンコードすることになる。
従って、図７（ａ）のエンコード情報Ａから、これらのエンコード結果は、セル群Ｃｇ３は「Ｃ−Ｇ」、セル群Ｃｇ４は「Ｃ−Ｃ」、セル群Ｃｇ５は「Ｍ−Ｃ」、セル群Ｃｇ６は「Ｍ−Ｇ」となる。
【００８６】
さらに、セル群Ｃｇ７は６番目の数字「５」を、セル群Ｃｇ８は７番目の数字「６」を、セル群Ｃｇ９は８番目の数字「７」を、セル群Ｃｇ１０は９番目の数字「８」を、セル群Ｃｇ１１は１０番目の数字「９」を、セル群Ｃｇ１２は１１番目の数字「０」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図７（ａ）のエンコード情報Ａから、セル群Ｃｇ７は「Ｍ−Ｍ」、セル群Ｃｇ８は「Ｇ−Ｍ」、セル群Ｃｇ９は「Ｇ−Ｍ」、セル群Ｃｇ１０は「Ｇ−Ｇ」、セル群Ｃｇ１１は「Ｋ−Ｃ」、セル群Ｃｇ１２は「Ｃ−Ｇ」となる。
【００８７】
さらに、セル群Ｃｇ１３は１２番目の数字「１」を、セル群Ｃｇ１４は１３番目の数字「２」を、セル群Ｃｇ１５は１４番目の数字「３」を、セル群Ｃｇ１６は１５番目の数字「４」を、セル群Ｃｇ１７は１６番目の数字「５」を、セル群Ｃｇ１８は１７番目の数字「２」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図７（ａ）のエンコード情報Ａから、セル群Ｃｇ１３は「Ｃ−Ｋ」、セル群Ｃｇ１４は「Ｃ−Ｃ」、セル群Ｃｇ１５は「Ｍ−Ｃ」、セル群Ｃｇ１６は「Ｍ−Ｇ」、セル群Ｃｇ１７は「Ｍ−Ｍ」、セル群Ｃｇ１８は「Ｃ−Ｃ」となる。
【００８８】
また、上記ステップＳ３７において、図７（ｂ）に示すエンコード情報Ｂが設定された場合は、そのエンコード結果は、セル群Ｃｇ１が「Ｗ−Ｗ」、セル群Ｃｇ２が「Ｂ−Ｒ」、セル群Ｃｇ３が「Ｂ−Ｙ」、セル群Ｃｇ４が「Ｂ−Ｂ」、セル群Ｃｇ５が「Ｒ−Ｂ」、セル群Ｃｇ６が「Ｒ−Ｙ」となる。
さらに、セル群Ｃｇ７が「Ｒ−Ｒ」、セル群Ｃｇ８が「Ｙ−Ｒ」、セル群Ｃｇ９が「Ｙ−Ｒ」、セル群Ｃｇ１０が「Ｙ−Ｙ」、セル群Ｃｇ１１が「Ｗ−Ｂ」、セル群Ｃｇ１２が「Ｂ−Ｙ」となる。
【００８９】
なおさらに、セル群Ｃｇ１３が「Ｂ−Ｗ」、セル群Ｃｇ１４が「Ｂ−Ｂ」、セル群Ｃｇ１５が「Ｒ−Ｂ」、セル群Ｃｇ１６が「Ｒ−Ｙ」、セル群Ｃｇ１７が「Ｒ−Ｒ」、セル群Ｃｇ１８が「Ｂ−Ｂ」となる。
なお、上記各セル群のエンコード結果は、ＲＡＭ６２などのメモリに一時保存される。
ステップＳ４５では、ＲＡＭ６２に一時保存されているエンコード結果の情報を、少なくとも、二次元コード１００の基本情報（外形形状の情報、セルの配列構成の情報、セパレータ１１０の色情報など）と、エンコード処理で使用したエンコード情報とに対応付けて記憶装置７０に記憶して、ステップＳ４７に移行する。
【００９０】
ステップＳ４７では、ユーザからの入力装置７４を介した終了指示が入力されたか否かを判定し、入力されたと判定した場合(Yes)は、一連の処理を終了し、そうでない場合(No)は、ステップＳ３１に移行する。
このようにして作成されたエンコード情報は、セルの基本情報に基づきカラー画像データ化される。例えば、エンコード情報Ａを用いて第１情報群をエンコードした場合は、図１０に示す二次元コードが形成される。
つまり、図１０に示す二次元コード１００は、１７桁の１０進数が、各セルの背景色となるセパレータ１１０の色が白色の場合に比較的認識率の高い、シアン色、マゼンタ色、緑色および黒色の４色を用いてエンコードされたものとなる。
【００９１】
一方、エンコード情報Ｂを用いて第１情報群をエンコードした場合は、図１１に示す二次元コードが形成される。
つまり、図１１に示す二次元コード１００は、１７桁の１０進数が、各セルの背景色となるセパレータ１１０の色が黒色の場合に比較的認識率の高い、赤色、青色、黄色および白色の４色を用いてエンコードされたものとなる。
【００９２】
また、二次元コード１００は、その利用時において、カラー画像を携帯端末などに表示したり、二次元コードのカラー画像を印刷装置７３でカラー印刷し、カラー印刷した二次元コードの画像を物品に貼り付けたりすることで利用される。
例えば、図９に例示したＩＳＢＮコードをエンコードしてなる二次元コード１００の場合は、紙やシール等にカラー印刷した二次元コードを図書の背表紙等に貼り付けて利用する。
【００９３】
（３−３）情報識別処理
次に、二次元コードリーダ１が、カメラ７６からの画像データを受信中において、入力装置７４を介したユーザからの指示入力に応じて実行される情報識別処理の処理手順を、図に基づいて説明する。
ここで、図１２は、情報識別処理の処理手順の一例を示すフローチャートである。
情報識別処理が開始されると、まず、カメラ７６で撮影された撮影画像データからのエッジ画像データの生成、エッジ画像データからの候補領域の抽出、候補領域が有効か否かの判定、原画像における有効な候補領域に対応する領域について二次元コードの各セルに対応する領域の色の判定（補正、再判定等含む）、有効な候補領域に対応する領域が特徴パターンを含むか否かの判定といった手順を経て、二次元コードの領域を検出する。
【００９４】
次に、検出された二次元コードの領域に対して、各セル領域の色の判定結果とエンコード情報との照合を行い、検出した二次元コードでエンコードされている情報を識別（デコード）する。
情報識別処理は、ＣＰＵ６０によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図１２に示すように、まず、ステップＳ１００へと移行する。
【００９５】
ステップＳ１００では、入力装置７４を介して、ユーザからの指示入力があったか否かを判定し、指示入力があったと判定した場合(Yes)は、ステップＳ１０２に移行し、そうでない場合(No)は、入力されるまで判定処理を続行する。
なお、本実施形態において、指示入力は、表示装置７２に表示されたカメラ７６の撮影画像を見ながらユーザが入力装置７４を介して行う処理となる。
【００９６】
例えば、図書館などにおいて、本棚に格納された複数の図書の背表紙にそれぞれ付された二次元コード１００を撮影領域内に入れて撮影を行い、その撮影画像を見ながらユーザが指示入力を行う。
ステップＳ１０２に移行した場合(Yes)は、ＲＡＭ６２または記憶装置７０から、指示入力のあったタイミングに表示していた画像データまたは該画像データに加えて複数フレーム分の画像データを取得して、ステップＳ１０４に移行する。
【００９７】
具体的に、設定されたモードや仕様に応じて、指示入力が行われたタイミングの１枚の画像、または、指示入力のタイミングを起点にして予め設定された複数フレームの画像を取得する。そして、これらの画像データに対して以降の処理が実行される。但し、説明の便宜上、本実施形態では、１枚の画像を取得し、取得した１枚の画像について処理を行うこととする。
【００９８】
ステップＳ１０４では、二次元コードを特徴づける情報を規定したテンプレートを記憶装置７０から読み出して、ステップＳ１０６に移行する。
ここでいうテンプレートは、候補領域を規定する領域規則、候補領域が有効か否かを判定する形状情報、二次元コードにおける特徴的なパターン、二次元コードにマークとして付けられる色（色数，色の種類）の着色規則などを示す情報である。
【００９９】
これらのうち、「領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などとなる。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形形状の領域などの矩形形状を角度を変えて見た（撮影した）場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの画質等によって真円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規則でもよいし、エッジ成分の分布パターン（エッジ成分の分布状態、分布されているエッジ成分の配置など）が特定のパターンの領域を抽出するといった規則でもよい。ただ、以降の処理による候補領域が有効か否かの判定などに要する処理負担を軽減するためには、複数の項目を選択して規定したものとすることが望ましく、この場合、候補領域としての抽出数が少なくなる結果、処理負担の軽減に伴って処理時間の短縮が実現されることとなる。
【０１００】
また、「形状情報」とは、「領域規則」に基づいて抽出された候補領域が有効か否かを判定する際に用いるもので、例えば、抽出された候補領域の外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状（理想の形状）に係る情報となる。
また、「特徴的なパターン」とは、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンなどのことである。
【０１０１】
例えば、図２および図３に例示した二次元コード１００であれば、セルＣ１１〜Ｃｐｑの各セルの配置パターンや、セルＣ１１〜Ｃｐｑの各セルまたは一部のセルに付けられた複数の色などにより、二次元コードの領域を示す特徴的なパターンが形成されている。
つまり、各セルに付された複数の色やその組み合わせパターン、該複数の色の付されたセルの配置順等が特徴的なパターンを形成している。
【０１０２】
この場合に、特定のセルに付される色に何らかの情報を対応付けておき、この情報を用いた計算処理などによって、特徴的なパターンが含まれているか否かを判定することも可能である。つまり、各セルの配置パターンや、各セルの色などが正しいパターンおよび色となっているかを計算処理によって確認できる情報（例えば、誤り検出符号など）を対応付ける。
【０１０３】
この場合は、例えば、一部のセルに付された色に対応するコード値を用いて計算処理を行い、この計算結果の数値等が正しいパターンを示す数値となっているか否か等で判定を行うことになる。そのため、テンプレートにおける特徴的なパターンは、直接的なパターンだけではなく、間接的に正しいパターンを示す数値などの情報として設定される場合もある。
なお、この特徴的なパターンとしては、セパレータ１１０の領域もパターンに含ませる構成や、ヘッダー領域や特定セル等を設けて、これらのセルで特徴的なパターンを形成する構成など、別の構成により実現するものとしてもよい。
【０１０４】
また、「着色規則」とは、二次元コードにおける複数のセルそれぞれに付すべき色の規則であり、該当セルにてエンコードすべき情報、および、該当セルと隣接するセルに付された色に応じて決められるものである。例えば、エンコード時の使用色、エンコードする各種情報の種類に対して設定されている色の組み合わせ、未使用となっている色の組み合わせなどの情報を含む。
【０１０５】
ステップＳ１０６では、以降の処理で参照する変数Ｘ，Ｙを初期化（０→Ｘ，１→Ｙ）して、ステップＳ１０８に移行する。
ステップＳ１０８では、ステップＳ１０２で取得した画像データに対してエッジ画像の生成処理を実行してエッジ画像データを生成し、ステップＳ１１０に移行する。なお、このエッジ画像生成処理における具体的な処理手順については後述する。
【０１０６】
ステップＳ１１０では、ステップＳ１０８において生成されたエッジ画像データに基づいて、このエッジ画像から、二次元コードからなる候補領域それぞれの位置を特定して、ステップＳ１１２に移行する。ここでは、ステップＳ１０４にて読み出されたテンプレートにおける「領域規則」に基づいて、第Ｙ番目のエッジ画像から、二次元コードからなる候補領域を規定する画像中の座標それぞれが特定される。
【０１０７】
本実施形態では、二次元コード１００が図２および図３などに示す外形形状（矩形形状）であることから、「領域規則に従った領域」として、線形化された輪郭部によって閉領域となる矩形形状の領域を候補領域として全て特定する。また、この「領域規則に従った領域」には、領域規則に従った領域だけでなく、その領域として許容される誤差範囲のパラメータで形成された領域も含まれる。例えば、誤差範囲内であれば、矩形形状だけでなく、台形形状、平行四辺形状、菱形形状なども含まれる。
【０１０８】
ステップＳ１１２では、ステップＳ１１０において、候補領域が特定されたか否かを判定し、特定されたと判定した場合(Yes)は、ステップＳ１１４に移行し、そうでない場合(No)は、ステップＳ１４０に移行する。
ステップＳ１１４に移行した場合は、ステップＳ１１０において特定された候補領域（座標情報）それぞれをリストに登録して、ステップＳ１１６に移行する。
ステップＳ１１６では、ステップＳ１１４においてリストに登録された候補領域のうち、以降の処理で処理対象となっていない（未処理の）候補領域があるか否かを判定し、あると判定した場合(Yes)は、ステップＳ１１８に移行し、そうでない場合(No)は、ステップＳ１３８に移行する。ここでは、リストに候補領域が登録されていない場合にも、未処理の候補領域がないと判定される。
【０１０９】
ステップＳ１１８に移行した場合は、リストに登録されている未処理の候補領域のうち、いずれか１の候補領域を選択して、ステップＳ１２０に移行する。
ステップＳ１２０では、ステップＳ１１８において選択された候補領域が有効なものであるか否かを判定する有効領域判定処理を実行して、ステップＳ１２２に移行する。なお、この有効領域判定処理における具体的な処理手順については後述する。
【０１１０】
ステップＳ１２２では、ステップＳ１２０の判定結果に基づき、ステップＳ１１８で選択した候補領域が、有効なものであるか否かを判定する。そして、有効なものであると判定した場合(Yes)は、ステップＳ１２４に移行し、そうでない場合(No)は、ステップＳ１１６に移行し、以降、別の候補領域について上記同様の処理を行う。
ステップＳ１２４に移行した場合は、直前に行われた上記ステップＳ１１０において特定された候補領域（新規候補領域）が、過去に行われた上記ステップＳ１１０において特定された候補領域（抽出済み候補領域）と同じであるか否かを判定する。
【０１１１】
具体的に、新規候補領域が抽出済み候補領域に領域として所定割合以上重複している場合、または、新規候補領域および抽出済み候補領域の一方が他方に包摂されている場合に、新規候補領域が抽出済み候補領域と同じであると判定される。
本実施形態では、候補領域が多角形となるため、エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが、別のエッジ画像における抽出済み候補領域と一致するか否かは、候補領域として形成された多角形における１以上の頂点Pｎが抽出済み候補領域として形成された多角形におけるいずれかの頂点Pｏから一定範囲（例えば一定の半径ｒ距離）内に位置しているか否かに応じて判定することとしてもよい（図１３参照）。
【０１１２】
なお、ここでいう「いずれかの頂点から一定範囲内」とは、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域とが一致する場合に、両方の候補領域が位置しうる位置関係で決まる範囲内とすればよく、上記一定の半径ｒ距離内に限られない。
そして、ステップＳ１２４において新規候補領域が過去に行われた上記ステップＳ１１０において特定されてＲＡＭ６２または記憶装置７０に格納されたいずれかの抽出済み候補領域と同じであると判定した場合(Yes)は、ステップＳ１１６に移行し、以降、別の候補領域について上記同様の処理を行う。
【０１１３】
一方、ステップＳ１２４において新規候補領域が抽出済み候補領域と同じではないと判定された場合(No)は、ステップＳ１２６に移行する。
ステップＳ１２６に移行した場合は、この時点における新規候補領域を情報の識別に適したものとなるように補正して、ステップＳ１２８に移行する。
ここでは、新規候補領域の形状、角度が補正される。具体的には、例えば、処理対象の領域が斜めに配置されていた場合や、正方形になっていない歪んだ形状となっている場合に、そのようなズレを補正すべく回転や、座標軸に合わせた延長・短縮などが行われる。
【０１１４】
なお、領域そのものを補正するのではなく、これ以降の処理で二次元コードか否かの判定、および、ここからの情報の識別を行う際に基準とする座標軸の角度や長さを補正することとしてもよい。
さらに、このステップＳ１２６では、新規候補領域の色成分が、各セルにおける色の識別性（認識率）を高めるべく補正される。
【０１１５】
具体的に、原画像データがＲＧＢ色空間等のＣＭＹＫ以外の色空間で色が表現されたカラー画像データである場合に、各ピクセル値を、ＣＭＹＫの色空間で色が表現されたカラー画像データへと変換する。これにより、以降の色判定処理において、例えば、ＲＧＢ色空間では認識しにくい色（例えば、セパレータ１１０が黒色の場合の緑色）の認識精度を向上することができる。本実施形態では、ＣＭＹＫ以外の色空間（本実施形態ではＲＧＢ色空間）の値を、ＣＭＹＫ色空間の値に変換する変換テーブル（色変換用ＬＵＴ（Look Up Table））が記憶装置７０に記憶されており、この色変換用ＬＵＴを用いて色変換を行う。
【０１１６】
但し、本実施形態では、情報のエンコード時に比較的認識率の高い色を優先して用いてセルに色を付しているので、４色などの使用する色数が比較的少ない場合に、この変換処理を省略することも可能である。つまり、ＲＧＢ色空間の画像データのままで以降の処理を実施することも可能である。その場合は、後述する色の判定処理において、色の成分領域（判定領域）との比較処理ではなく、ＲＧＢ色空間の対応色そのもの（４色のうちのいずれか１色）との比較処理を行うことになる。
【０１１７】
また、補正の必要が無い場合は、上記いずれの処理も行わずにステップＳ１２８に移行する。
ステップＳ１２８では、上記ステップＳ１２６において補正された候補領域につき、その候補領域における二次元コードのセルに対応する領域にそれぞれに付された色を特定するための色判定処理を行って、ステップＳ１３０に移行する。
【０１１８】
この色判定処理は、上記ステップＳ１２６において補正された候補領域を引数として実行され、この候補領域におけるセルに対応する領域それぞれに付された色が戻り値となる。なお、この色判定処理における具体的な処理手順については後述する。
ステップＳ１３０では、上記ステップＳ１２８の色判定処理の結果に基づき、上記ステップＳ１０２において取得された画像データで示される原画像のうち、上記ステップＳ１２６において補正された候補領域に対応する対応領域に、二次元コードとしての特徴的なパターンが含まれているか否かを判定する。
【０１１９】
ここでは、色の判定された各セルの領域について、これらのセルやマークのパターンが、上記ステップＳ１０４において読み出されたテンプレートにおける「特徴的なパターン」で規定されたセルの配置パターンやマークのパターンと一致しているか否かを判定する。
あるいは、特定の複数のセルに付された色に対応するコード値を用いて、採用した誤り検出手法に応じた計算処理を行い、その計算結果が、「特徴的なパターン」で規定された誤りの無い場合の数値（例えば、誤り検出符号に対応するセルの色に対応するコード値）と一致しているか否かを判定する。
【０１２０】
そして、一致している場合は、コード領域（セルの領域）に二次元コードとしての特徴的なパターンが含まれていると判定し、一致していない場合は、コード領域に二次元コードとしての特徴的なパターンが含まれていないと判定する。
なお、本実施形態において、図１０および図１１に例示した二次元コード１００は、ＩＳＢＮコードをエンコードしたものとなっており、最後の桁に対応するセル群Ｃｇ１８の示す数値がチェックディジットとなっている。従って、方向識別用のセル群Ｃｇ１の検出に加えて、このチェックディジットを利用して、特徴的なパターンを含むか否かを判定することも可能である。
【０１２１】
つまり、セル群Ｃｇ２〜Ｃｇ１７に付された各色の組み合わせに対応する数字に、ＩＳＢＮで用いられているモジュラス１０ウェイト３という計算法を適用して、チェックディジットを算出する。この算出値が、セル群Ｃｇ１８に付された色の組み合わせに対応する数字と一致するか否かによって、特徴的なパターンを含むか否かの判定を行うことが可能である。この場合は、情報の識別（デコード）も同時に行われる。
【０１２２】
そして、ステップＳ１３０において、二次元コードとしての特徴的なパターンが含まれていないと判定した場合(No)は、ステップＳ１１６に移行し、以降、別のコード領域について上記同様の処理を行う。
一方、ステップＳ１３０において、二次元コードとしての特徴的なパターンが含まれていると判定した場合(Yes)は、ステップＳ１３２に移行する。
【０１２３】
ステップＳ１３２に移行した場合は、この時点における新規候補領域を二次元コードの領域として検出して、ステップＳ１３４に移行する。
この検出処理は、新規候補領域の座標情報に基づき、原画像から新規候補領域を切り出して（複製画像を生成して）、記憶装置７０に記憶する処理となる。
ステップＳ１３４では、上記ステップＳ１３２において検出された二次元コードの領域につき、上記ステップＳ１２８において特定された色に基づいて、その二次元コードで示される情報を、セルＣそれぞれに付された色およびその組み合わせに基づいて識別して、ステップＳ１３６に移行する。
【０１２４】
この識別処理においては、まず、方向識別用のセル群Ｃｇ１を検出する。例えば、図１０に示す二次元コード１００であれば、セパレータ１１０の色が白色となっているので、Ｃｇ１の位置を特定するために、左上端または右下端に位置するセル群のうち、２つのセルの色の組み合わせが「Ｋ−Ｋ」となるものを検出する。
つまり、「Ｋ−Ｋ」の組み合わせとなっているセル群が方向識別用のセル群Ｃｇ１となり、この検出によって、セル群の配列方向を判定することができる。従って、セル群Ｃｇ１として検出されたセルの領域の右隣のセルの領域から順に、上記色判定処理において判定された色と、エンコード時に用いた図７（ａ）に示すエンコード情報Ａとから、各色の組み合わせで示される情報（ここでは０〜９のいずれかの数字）を識別する。
【０１２５】
ここで、ＩＳＢＮコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、そのときに識別した情報を採用することができるので、この処理を省略して次のステップに移行することができる。
ステップＳ１３６では、ステップＳ１３４において識別された情報を、ＲＡＭ６２または記憶装置７０に格納して、ステップＳ１３８に移行する。
なお、ＩＳＢＮコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、ステップＳ１３０で識別された情報を、ＲＡＭ６２または記憶装置７０に格納することになる。
【０１２６】
ステップＳ１３８では、変数Ｘをインクリメント（Ｘ＋１→Ｘ）して、ステップＳ１４０に移行する。
ここまで示したように、上述したステップＳ１１６〜Ｓ１３６までが行われるのは、ステップＳ１１０において特定された候補領域が二次元コードの体をなしていたことを意味している。そのため、このステップＳ１３８では、この変数Ｘをインクリメントすることにより、二次元コードの領域として検出かつ識別された候補領域の数を積算していることになる。
ステップＳ１４０では、この時点で変数Ｘが所定数以上になっているか否かを判定する。つまり、所定数以上の候補領域が二次元コードの体をなしていたか否かを判定する。
【０１２７】
そして、ステップＳ１４０において、変数Ｘが所定数以上になっていると判定した場合(Yes)は、ステップＳ１４０に移行し、変数Ｘが所定数以上になっていないと判定した場合(No)は、ステップＳ１４２に移行する。
つまり、上記ステップＳ１１６〜Ｓ１４０は、二次元コードとして検出かつ識別された候補領域の数が所定数以上とならない限り、リストに登録された全てのコード領域について繰り返し行われる。
その後、全ての候補領域について上記ステップＳ１１６〜Ｓ１４０が行われたら、上記ステップＳ１１６において未処理の候補領域がないと判定されて、ステップＳ１４２に移行し、この時点での変数Ｙの値が、変数ｎの値より小さい値（Ｙ＜ｎ）となっているか否かを判定する。
【０１２８】
そして、ステップＳ１４２において、変数Ｙの値が変数ｎの値より小さい値となっていると判定した場合(Yes)は、ステップＳ１４４に移行する。
ステップＳ１４４に移行した場合は、変数Ｙをインクリメント（Ｙ＋１→Ｙ）して、ステップＳ１０８に移行し、上記ステップＳ１０８〜Ｓ１４４の処理を行う。
これ以降は、次のエッジ画像に基づいて上記ステップＳ１１０〜Ｓ１４４の処理が行われ、その処理の中で変数Ｘが所定数以上になれば、上記ステップＳ１４０で「Yes」と判定されて、ステップＳ１４６に移行する。一方、その処理の中で変数Ｘが所定数以上にならなければ、その次のエッジ画像についての処理が繰り返し行われることとなる。
さらに、ステップＳ１４２において、変数Ｙの値が変数ｎの値以上の値となっていると判定した場合(No)は、変数Ｘの値に関係なく、一連の処理を終了する。
【０１２９】
（３−４）エッジ画像生成処理
続いて、図１２のステップＳ１０８であるエッジ画像生成処理の処理手順の一例を図１４に基づき説明する。図１４（ａ）は、変数Ｙの値と画像種類およびしきい値との対応関係の一例を示す図であり、（ｂ）は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
本実施形態において、エッジ画像の生成は、異なる複数種類の変換条件に基づいて行う。
具体的に、第１〜第ｉ（１≦ｉ）の変換条件に対応する第１〜第ｉ番目のエッジ画像までが、それぞれ異なるしきい値で原画像をグレースケール化してなるグレースケール画像を二値化した画像の輪郭部を線形化した画像となる。
【０１３０】
また、第（ｉ＋１）〜第（ｉ＋ｊ）の変換条件に対応する第（ｉ＋１）〜第（ｉ＋ｊ）番目（１≦ｊ）のエッジ画像までが、ｊ種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像を予め設定されたしきい値で二値化した二値化画像の輪郭部を線形化した画像となる。
特に、各色成分画像について、予め設定されたしきい値としてｋ種類（１≦ｋ）のしきい値を用いて二値化を行う場合は、第（ｉ＋１）〜第（ｉ＋ｊ×ｋ）の変換条件に対応する第（ｉ＋１）〜第（ｉ＋ｊ×ｋ）番目のエッジ画像までが、ｊ種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像をｋ種類のしきい値それぞれで二値化した二値化画像の輪郭部を線形化した画像となる。
【０１３１】
従って、最大で「ｉ＋ｊ×ｋ」種類の変換条件に基づいて「ｉ＋ｊ×ｋ」種類のエッジ画像を生成することができる。
ここでいう「ｉ」および「ｋ」は、予め用意されたしきい値の種類によって値が決定し、「ｊ」は、原画像に用いられている色空間（表色系）の種類によって規定される色成分数によって値が決定する。例えば、しきい値の種類がそれぞれ３種類で、色空間がＲＧＢ色空間であれば、「ｉ」および「ｋ」の値は３、「ｊ」の値は３となる。
【０１３２】
本実施形態では、図１４（ａ）に示すように、変数Ｙの値に対応する１〜６の数値と、変換条件の種類を示すエッジ画像を生成する際に用いる画像の種類としきい値とが対応付けられてデータテーブルとして記憶装置７０に記憶されている。なお、図１４（ａ）の例は、「ｉ」の値が３、「ｊ」の値が３、「ｋ」の値が１となる例である。ここで、変数Ｙの上限値は、変数ｎにセットされる値によって決まるが、本実施形態では、ユーザが、要求する二次元コードの検出精度に応じた値を任意にセット可能に構成されている。なお、図１４（ａ）の例では、変数ｎの最大値は「６」となる。
エッジ画像生成処理が開始されると、図１４（ｂ）に示すように、まず、ステップＳ２００に移行し、変数Ｙの値が３以下となっているか否かを判定する。
【０１３３】
そして、ステップＳ２００において、変数Ｙの値が３以下となっていると判定した場合(Yes)は、ステップＳ２０２に移行し、変数Ｙの値が３よりも大きいと判定した場合(No)は、ステップＳ２０８に移行する。
ステップＳ２０２に移行した場合は、上記図１２のステップＳ１０２で取得した原画像のデータを複製し、該複製した原画像データに基づき、グレースケール画像を生成して、ステップＳ２０４に移行する。
【０１３４】
ここでは、原画像のデータが、ＲＧＢの各色８ビット（０〜２５５）のカラー画像データであるとして、この画像データからグレースケール画像を生成する。
なお、必須ではないが、原画像データのピクセル数が膨大（例えば、１２００万画素等）な場合は、処理負荷および処理時間を考慮して、検出精度を損なわない程度に、解像度をこれよりも低解像度へと変換する処理を行うようにしてもよい。
【０１３５】
また、グレースケール画像の生成方法としては、例えば、中間値法、平均法等の周知の生成方法がある。
中間値法は、Ｒ、Ｇ、Ｂの３つの色成分の値のうち、最大値と最小値の２つを足して２で割ったものを利用してグレースケール化する方法である。
平均法は、平均の取り方によって、算術平均（相和平均）法、幾何平均（相乗平均）法、加重平均法等がある。
【０１３６】
算術平均法は、Ｒ、Ｇ、Ｂの３つの色成分の値を算術平均（足して３で割る）して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
幾何平均法は、Ｒ、Ｇ、Ｂの３つの色成分の値を幾何平均（各要素の値の対数値を算術平均）して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
【０１３７】
加重平均法は、Ｒ、Ｇ、Ｂの３つの色要素の値に対して、重み付けをして３で割り、平均を取ってグレースケール化する方法である。この重み付けの係数の内容によって、ＮＴＳＣ加重平均法、ＨＤＴＶ加重平均法等がある。ＮＴＳＣ加重平均法は、日本やアメリカのテレビ放送で利用されている輝度信号（明るさ）の分離方法のものと同じである。また、ＨＤＴＶ加重平均法は、デジタルハイビジョン放送を映す際に基準とされる、ＨＤＴＶ規格に基づいて重み係数が設定されたものである。
グレースケール画像の生成方法は、処理速度や検出精度等を考慮して適切なものを用いることが望ましい。
【０１３８】
そして、上記いずれかの方法を用いた場合は、算出された１つの輝度値を、Ｒ、Ｇ、Ｂの３つの色成分の値（Ｒ＝Ｇ＝Ｂ）とする。
なお、ここでは、グレースケール画像を、Ｒ，Ｇ，Ｂの各色成分の値を輝度値に変換することで生成する例を説明したが、輝度以外に、明度等によってグレースケール画像を生成するようにしてもよい。
このようにして、原画像データの各ピクセル値をグレースケール値に変換することで、グレースケール画像データが生成される。
【０１３９】
ステップＳ２０４では、ステップＳ２０２で生成したグレースケール画像データを、現時点の変数Ｙの値に対応したしきい値により二値化してなる二値化画像データを生成して、ステップＳ２０６に移行する。
具体的に、グレースケール画像データの各色のピクセル値が８ビットの階調値で表現されているときに、しきい値と、グレースケール画像の各ピクセル値とを比較し、ピクセル値がしきい値以下のときに、ピクセル値を「０」に変換し、ピクセル値がしきい値より大きいときに、ピクセル値を「２５５」に変換することで二値化を行う。
【０１４０】
ここでは、図１４（ａ）に示すように、変数Ｙの値１、２、３に対して、１２０、１５０、２００の３種類のしきい値がそれぞれ用意されている。この二値化のしきい値は、二次元コードの「領域規則」および「特徴的なパターン」に応じ、以降の処理において有効な候補領域を抽出し、適切に二次元コードを識別するのに適した値として定められたものである。
従って、変数Ｙの値が１のときは、しきい値１２０を用いて上記ステップＳ２０２で生成したグレースケール画像を二値化し、変数Ｙの値が２、３のときは、しきい値１５０、２００をそれぞれ用いて上記ステップＳ２０２で生成したグレースケール画像を二値化する。
【０１４１】
例えば、しきい値１２０のときに、グレースケール画像におけるあるピクセル値が（８０，８０，８０）である場合は、二値化後の値は、黒色に対応する（０，０，０）となる。一方、しきい値１２０のときに、グレースケール画像におけるあるピクセル値が（１６０，１６０，１６０）である場合は、二値化後の値は、白色に対応する（２５５，２５５，２５５）となる。
【０１４２】
このようにして、上記ステップＳ２０２で生成したグレースケール画像データの各ピクセル値を二値化したものが、原画像データに対する二値化画像データとなる。
ステップＳ２０６では、二値化画像データに対して、二値化画像中の物体（オブジェクト）の輪郭部を線形化してなるエッジ画像データを生成して、一連の処理を終了し、元の処理に復帰する。
【０１４３】
本実施形態では、公知のブレゼンハムの線分描画アルゴリズムによって、二値化画像中に存在する物体の輪郭部を線形化する。なお、本実施形態では、線形化後の輪郭線を形成していない不要なピクセルは除去（例えば、ピクセル値を（０，０，０）に変換）する。
ここで、ブレゼンハムの線分描画アルゴリズムは、割り算等を用いずに全てを整数演算のみで行うことができるため、高速に線分を描画することができる。
このようにして、二値化画像中の物体の輪郭部を線形化した画像のデータが、エッジ画像データとなる。
【０１４４】
一方、ステップＳ２００において変数Ｙの値が３よりも大きくてステップＳ２０８に移行した場合は、原画像のデータから、変数Ｙの値に対応した色成分を抽出して、ステップＳ２１０に移行する。
ここでは、図１４（ａ）に示すように、変数Ｙの値４、５、６に対して、赤色、緑色、青色の色成分をそれぞれ抽出する。
例えば、変数Ｙの値が４であり、原画像データのあるピクセル値が（１２０，８０，４５）である場合は、赤色成分値（１２０，０，０）を抽出する。同様に、変数Ｙの値が５であれば、緑色成分値（０，８０，０）を抽出し、変数Ｙの値が６であれば、青色成分値（０，０，４５）を抽出する。
【０１４５】
このようにして、各色成分の値を抽出してなる画像データが、赤色成分画像データ、緑色成分画像データ、青色成分画像データとなる。
ステップＳ２１０では、ステップＳ２０８で生成した色成分画像データからグレースケール画像データを生成して、ステップＳ２１２に移行する。
グレースケール画像データの生成は、上記ステップＳ２０２と同様の処理となる。
【０１４６】
ステップＳ２１２では、ステップＳ２１０で生成したグレースケール画像に対して、予め設定されたしきい値で二値化を行い、二値化画像データを生成して、ステップＳ２０６に移行する。
ここでは、図１４（ａ）に示すように、変数Ｙの値４、５、６に対して、共通のしきい値１２０が用意されている。
従って、上記ステップＳ２１０で生成したグレースケール画像データに対して、しきい値１２０を用いて二値化を行い、ステップＳ２０８で生成した色成分画像データに対する二値化画像データを生成する。
【０１４７】
そして、ステップＳ２１２で二値化画像データを生成後は、ステップＳ２０６に移行して、二値化画像中の物体の輪郭部を線形化してなるエッジ画像データを生成し、一連の処理を終了して、元の処理に復帰する。
なお、図１４（ａ）に示す例では、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の種類を１種類としたが、この構成に限らず、第７以降の変換条件を設定して、複数種類のしきい値を用いて二値化を行う構成としてもよい。
【０１４８】
また、図１４（ａ）に示す例では、原画像に対応するグレースケール画像に対してしきい値を小さい値から順に用いて二値化を行い、その二値化画像からエッジ画像を生成する処理を行う構成とした。さらに、原画像に対応するグレースケール画像を用いたエッジ画像の生成処理の後に、色成分画像に対応するグレースケール画像を二値化してエッジ画像を生成する処理を、赤、緑、青の色成分画像の順で行う構成としたが、この構成に限らない。
例えば、原画像に対応するグレースケール画像の二値化に用いるしきい値を別の順番で用いる構成、色成分画像に対応するグレースケール画像の二値化を別の色の順番で行う構成としてもよい。
【０１４９】
また、例えば、色成分画像を用いたエッジ画像の生成処理を原画像を用いた生成処理よりも先に行う構成、原画像と色成分画像とを用いたエッジ画像の生成処理を交互に行う構成、ランダムに行う構成など、別の順番で行う構成としてもよい。
また、色成分画像に対応するグレースケール画像の二値化を複数種類のしきい値を用いて行う場合は、そのしきい値を用いる順番も小さい方から順に行う構成だけに限らず、別の順番とする構成としてもよい。また、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の値は、原画像に対応するグレースケール画像の二値化に用いるしきい値と同じ値であってもよいし、異なる値であってもよい。
【０１５０】
また、図１４（ａ）に示す例では、原画像に対するしきい値を３種類、色成分画像に対するしきい値を１種類、色成分画像数を３種類としたが、これらの組み合わせに限らず、異なる種類数の組み合わせとしてもよい。
また、図１４（ａ）に示す例では、原画像および色成分画像の双方を用いてエッジ画像の生成を行うことが可能な構成としたが、この構成に限らず、原画像だけを用いてエッジ画像を生成する構成や、色成分画像だけを用いてエッジ画像を生成する構成など他の構成としてもよい。
【０１５１】
また、図１４（ａ）に示す例では、原画像に対応するグレースケール画像を二値化する際の３種類のしきい値として、「１２０」、「１５０」、「２００」を用いているが、これに限らず、別の値を用いる構成としてもよい。同様に、図１４（ａ）に示す例では、色成分画像に対応するグレースケール画像を二値化する際のしきい値として、「１２０」を用いているが、これに限らず、別の値を用いる構成としてもよい。
【０１５２】
（３−５）有効領域判定処理
続いて、図１２のステップＳ１２０である有効領域判定処理の処理手順を図１５および図１６に基づき説明する。
ここで、図１５は、有効領域判定処理の処理手順を示すフローチャートである。また、図１６（ａ）は、理想的な候補領域の形状例を示す図であり、（ｂ）〜（ｅ）は、誤差範囲外の形状例を示す図であり、（ｆ）〜（ｇ）は、誤差範囲内の形状例を示す図である。
候補領域の縦横比は、図１６（ａ）に示すように、理想の領域形状における短辺の長さＡと長辺の長さＢとの比（Ａ：Ｂ＝Ａ／Ｂ）となっていることが望ましい。また、候補領域の各辺間（四隅）の角度は、図１６（ａ）に示すように、理想的には、いずれも９０°であることが望ましい。
【０１５３】
しかし、上記ステップＳ１１０の候補領域の特定処理においては、矩形形状だけでなく台形形状等の形状も含む閉領域（閉四角領域）であれば何でも候補領域として特定するようになっているため、様々な外形形状の候補領域が特定されることになる。また、特定された候補領域が二次元コードのものであっても、撮影環境（撮影角度等）や撮影画像の画質等によって、形状が理想的な形状とならないこともある。そのため、厳密な判定を行ってしまうと、二次元コードの領域に該当する領域をも除外することになってしまう。そこで、本実施形態では、判定の際の縦横比および角度等の二次元コードの理想の形状情報に誤差範囲を設定している。
【０１５４】
ここでは、本実施形態の二次元コードの領域が、図２および図３などに示すように、矩形形状であることと、判定処理の処理負荷とを考慮して、二次元コードの理想的な縦横比と各辺間の角度とに誤差範囲が設定された形状情報に基づき有効領域か否かを判定する例を説明する。
有効領域判定処理が開始されると、図１５に示すように、まず、ステップＳ３００に移行し、選択された候補領域の縦横比が、テンプレートの形状情報に定められた縦横比の誤差範囲内か否かを判定する。
【０１５５】
例えば、図１６（ｂ）、（ｃ）および（ｆ）に示す候補領域のように、短辺の長さをＣ、長辺の長さをＤとした場合に、縦横比は「Ｃ：Ｄ＝Ｃ／Ｄ」となり、理想形との誤差ｄｒは、「ｄｒ＝Ａ／Ｂ−Ｃ／Ｄ」となる。そして、誤差範囲を「−ｄｘ〜＋ｄｘ」とし、本実施形態では、ｄｒが「−ｄｘ〜＋ｄｘ」の範囲内であれば、誤差範囲内であると判定し、「−ｄｘ〜＋ｄｘ」の範囲外であれば、誤差範囲外であると判定する。
【０１５６】
そして、ステップＳ３００において、候補領域の縦横比が誤差範囲外であると判定した場合(No)は、ステップＳ３０２に移行し、候補領域の縦横比が誤差範囲内であると判定した場合(Yes)は、ステップＳ３０４に移行する。
ステップＳ３０２に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して（判定結果を戻り値として）、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図１６（ｂ）および（ｃ）に示すように、理想の縦横比Ａ：Ｂに対して極端に縦横比の異なる形状を排除することができ、これらの領域に対して以降の処理（図１２のステップＳ１２４以降の処理）が行われるのを防ぐことができる。
【０１５７】
一方、縦横比が誤差範囲内であると判定されステップＳ３０４に移行した場合は、候補領域の各辺間で形成される角度が、テンプレートの形状情報に定められた角度の誤差範囲内か否かを判定する。
例えば、図１６（ｄ）〜（ｆ）に示すように、各辺間（四隅）の角度をβ１〜β４とした場合に、理想形の角度との誤差ｄβ１〜ｄβ４は、理想形の角度９０°から角度β１〜β４をそれぞれ減じたもの「ｄβ１〜ｄβ４＝９０°−β１〜９０°−β４」となる。そして、誤差範囲を「−ｄｙ〜＋ｄｙ」とし、本実施形態では、ｄβ１〜ｄβ４がいずれも「−ｄｙ〜＋ｄｙ」の範囲内であれば誤差範囲内であると判定し、いずれか１つでも「−ｄｙ〜＋ｄｙ」の範囲外であれば誤差範囲外であると判定する。
【０１５８】
そして、ステップＳ３０４において候補領域の各辺間の角度が誤差範囲外であると判定した場合(No)は、ステップＳ３０６に移行し、候補領域の各辺間の角度が誤差範囲内であると判定した場合(Yes)は、ステップＳ３０８に移行する。
ステップＳ３０６に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して（判定結果を戻り値として）、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図１６（ｄ）および（ｅ）に示すように、理想の角度に対して角度β１〜β４の少なくとも１つが誤差範囲外の角度となっている形状を排除することができ、これらの領域に対して以降の処理（図１２のステップＳ１２４以降の処理）が行われるのを防ぐことができる。
【０１５９】
一方、角度が誤差範囲内であると判定されステップＳ３０８に移行した場合は、誤差範囲内と判定された候補領域を有効な候補領域であると判定して（判定結果を戻り値として）、一連の処理を終了し、元の処理に復帰する。
例えば、図１６（ｆ）に示す候補領域のように、角度β１〜β４の誤差ｄβ１〜ｄβ４がいずれも誤差範囲内（この例では、いずれも９０°）で、縦横比の誤差ｄｒが「−ｄｘ〜＋ｄｘ」の範囲内となる程度で縦横比のみが異なる場合に、この候補領域は除外されることなく、有効な候補領域と判定される。
【０１６０】
同様に、例えば、図１６（ｇ）に示す候補領域のように、縦横比の誤差ｄｒが「−ｄｘ〜＋ｄｘ」の範囲内であるが、角度β１〜β４がいずれも９０°とならずに斜めに歪んでいても、角度β１〜β４の誤差ｄβ１〜ｄβ４のいずれもが「−ｄｙ〜＋ｄｙ」の誤差範囲内となる場合には、この候補領域は除外されることなく、有効な候補領域と判定される。
つまり、本実施形態では、縦横比および角度の双方が誤差範囲内に納まっている候補領域のみを有効な候補領域と判定する。
【０１６１】
（３−６）色判定処理
続いて、図１２のステップＳ１２８である色判定処理の処理手順を図１７に基づき説明する。
ここで、図１７は、色判定処理の処理手順の一例を示すフローチャートである。
色判定処理が開始さると、図１７に示すように、まず、ステップＳ４００に移行して、図１２のステップＳ１３０で検出された二次元コードの領域におけるセパレータ１１０の領域を特定（座標を特定）して、ステップＳ４０２に移行する。
【０１６２】
なお、検出された二次元コードの領域は、例えば、図２および図３などの形状姿勢において、左上のピクセルの座標を（０，０）として管理される。そして、セパレータ１１０の特定は、座標（０，０）から、行方向および列方向にピクセルを走査（ラスタスキャン）して、各ピクセルの値（色）が、セパレータ１１０の色（本実施形態では白（Ｗ）または黒（Ｋ））の判定領域に含まれているか否かを判定する。そして、ピクセルの色が判定領域に含まれていると判定したときに、そのピクセル（座標）をセパレータ１１０と判定する。そして、この座標情報をＲＡＭ６２または記憶装置７０に記憶する。
【０１６３】
ステップＳ４０２では、セパレータ１１０の座標情報に基づき、各セルの存在する領域を分割して、ステップＳ４０４に移行する。
具体的に、白色（Ｗ）または黒色（Ｋ）のセパレータ１１０に周囲（四辺）を囲まれた領域の座標を各セルの座標として、その座標情報をＲＡＭ６２または記憶装置７０に記憶する。
ステップＳ４０４では、以降の処理で参照する変数を初期化（０→ａｐ，０→ｘ，０→ｙ）して、ステップＳ４０６に移行する。
【０１６４】
ステップＳ４０６では、セパレータ１１０の特定された二次元コードの領域における座標（ｘ，ｙ）のピクセルを選択して、ステップＳ４０８に移行する。
ステップＳ４０８では、変数ａｐの値が予め定められた一定数以上か否かを判定し、一定数以上ではないと判定した場合(No)は、ステップＳ４１０に移行し、一定数以上であると判定した場合(Yes)は、ステップＳ４２２に移行する。
ステップＳ４１０に移行した場合は、選択したピクセルの値（色）が、二次元コードにおいて使用される複数の色それぞれを中心座標として広がる色空間上の判定領域のうち、いずれかの判定領域に含まれている（いずれの判定領域内に位置する）か否かを判定する。
【０１６５】
そして、ステップＳ４１０において、選択したピクセルがいずれかの判定領域内に含まれていると判定した場合(Yes)は、ステップＳ４１２に移行し、選択したピクセルがいずれの判定領域にも含まれていないと判定した場合(No)は、ステップＳ４１４に移行する。
ステップＳ４１２に移行した場合は、変数ａｐをインクリメント（ａｐ＋１→ａｐ）して、ステップＳ４１４に移行する。
ここでは、変数ａｐをインクリメントすることで、判定領域に含まれていると判定されたピクセルの数を計数している。この判定結果（判定領域の情報および計数結果を含む）は、各セルに対応付けてＲＡＭ６２または記憶装置７０に記憶される。
【０１６６】
なお、ここでは、変数ａｐにより、同じ色の判定領域に含まれるピクセルの数を計数することが望ましい。しかし、各セルの領域において、それぞれ異なる色の判定領域に含まれるピクセルがある場合に、上記ステップＳ４１２の処理では、これらを区別せずに計数してしまう。つまり、同じセルの領域において、黄色と判定されても、マゼンタ色と判定されても、変数ａｐはインクリメントされてしまう。従って、それぞれ異なる色の判定領域に含まれるピクセルがあることを想定した場合に、別の変数を用いて各領域に含まれるピクセルの数を計数し、上記ステップＳ４１２の処理を、現時点で最も数の多い判定領域のピクセル数を変数ａｐに設定する処理に代えてもよい。
その後、ステップＳ４１４に移行して、変数ｘの値が、その行の一番右端のｘ座標であるｘＥであるか否かを判定する。
【０１６７】
一方、選択したピクセルがいずれの判定領域にも含まれていないと判定された場合も、ステップＳ４１４に移行して、変数ｘの値が、ｘＥであるか否かを判定する。
そして、変数ｘの値がｘＥではないと判定した場合(No)は、ステップＳ４１６に移行し、変数ｘの値がｘＥであると判定した場合(Yes)は、ステップＳ４２２に移行する。
ステップＳ４１６に移行した場合は、変数ｘをインクリメント（ｘ＋１→ｘ）して、ステップＳ４１８に移行する。
【０１６８】
つまり、変数ｘの値がｘＥではない場合に、変数ｘをインクリメントすることで、１つ右隣のピクセルに座標を変更する。
ステップＳ４１８では、現時点の座標（ｘ，ｙ）が次のセルに対応するセパレータ部分の開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップＳ４２０に移行し、そうでない場合(No)は、ステップＳ４０６に移行する。
ステップＳ４２０に移行した場合は、変数ａｐを初期化（０→ａｐ）して、ステップＳ４０６に移行する。
つまり、色判定領域に含まれる色のピクセルが一定数以上とならないまま、ｘ座標が、次のセルに対応するセパレータの開始ｘ座標に到達した場合に、変数ａｐを初期化する。
【０１６９】
一方、ステップＳ４１４において変数ｘの値がｘＥであると判定されてステップＳ４２２に移行した場合は、変数ｙの値が列方向の一番下端のｙ座標であるｙＥであるか否かを判定する。
そして、変数ｙの値がｙＥではないと判定した場合(No)は、ステップＳ４２４に移行し、変数ｙの値がｙＥであると判定した場合(Yes)は、ステップＳ４３８に移行する。
ステップＳ４２４に移行した場合は、変数ａｐおよび変数ｘを初期化（０→ａｐ，０→ｘ）し、変数ｙをインクリメント（ｙ＋１→ｙ）して、ステップＳ４０６に移行する。
【０１７０】
つまり、変数ｘを初期化し、変数ｙをインクリメントすることで、１つ下隣の行で且つ一番左端のピクセルに座標を変更する。このとき、座標（ｘ，ｙ）が次のセルに対応した領域の座標となるので、変数ａｐも初期化する。
一方、ステップＳ４０８において、変数ａｐの値が一定数以上ではないと判定されてステップＳ４２６に移行した場合は、変数ｘの値が、ｘＥであるか否かを判定する。
そして、変数ｘの値がｘＥではないと判定した場合(No)は、ステップＳ４２８に移行し、変数ｘの値がｘＥであると判定した場合(Yes)は、ステップＳ４３２に移行する。
ステップＳ４２８に移行した場合は、変数ｘをインクリメント（ｘ＋１→ｘ）して、ステップＳ４３０に移行する。
【０１７１】
ステップＳ４３０では、現時点の座標（ｘ，ｙ）が次のセルに対応するセパレータの開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップＳ４３２に移行し、そうでない場合(No)は、ステップＳ４２６に移行する。
ステップＳ４３２に移行した場合は、変数ａｐを初期化（０→ａｐ）して、ステップＳ４０６に移行する。
つまり、変数ａｐが一定数以上のときに、上記ステップＳ４２６〜Ｓ４３０の処理を繰り返し行うことで、各セルＣに対応する領域においてその行の残りのピクセルに対して上記ステップＳ４１０の色判定処理を省略している。
【０１７２】
ここで、上記ステップＳ４０８における変数ａｐの比較対象である一定数は、色の判定精度を考慮して予め設定される値であり、各行における各セルＣのピクセル数未満の値となる。従って、各行の色の判定に十分な一定数の色の判定がされたことに応じて、残りのピクセルに対する色判定処理を省略することとなる。
具体的に、例えば、一定数を１０としたときに、あるセルの領域におけるいずれかの行において黒色を中心座標とした判定領域に含まれると判定されたピクセルが１０ピクセル（ａｐ＝１０）になったときに、ステップＳ４０８において、変数ａｐの値が一定数以上であると判定され、該当セルＣの同じ行の残りのピクセルに対しては上記ステップＳ４１０の色判定処理が省略される。
【０１７３】
一方、ステップＳ４２６において、変数ｘの値がｘＥであると判定されてステップＳ４３４に移行した場合は、現時点における変数ｙの値が列方向の一番下端のｙ座標であるｙＥであるか否かを判定する。
そして、ステップＳ４３４において、変数ｙの値がｙＥではないと判定した場合(No)は、ステップＳ４３６に移行し、変数ｙの値がｙＥであると判定した場合(Yes)は、ステップＳ４３８に移行する。
ステップＳ４３６に移行した場合は、変数ａｐおよび変数ｘを初期化（０→ａｐ，０→ｘ）し、変数ｙをインクリメント（ｙ＋１→ｙ）して、ステップＳ４０６に移行する。
【０１７４】
一方、二次元コードの領域における全てのピクセルについて色判定が終了して、ステップＳ４３８に移行した場合は、ＲＡＭ６２または記憶装置７０に記憶された各セルＣの領域の各行のピクセルの色の判定結果に基づき、各セルＣの色を判定して、ステップＳ４４０に移行する。
具体的に、各セルＣの領域について、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数以上のときに、各セルＣの色をその判定領域の中心座標の色として判定する。そして、各セルＣと、判定された色とが対応づけられてＲＡＭ６２または記憶装置７０のデータテーブルに登録される。ここでは、データテーブルに登録済のセルＣに対して色が判定された場合、このセルＣに対応する色として、こうして判定された最新の色に更新される。なお、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数未満であり、二次元コードに用いられる複数色の判定領域のいずれにも含まれていないと判定された場合には、該当のセルＣに対し、判定領域外の色である旨が対応づけられる。
【０１７５】
ステップＳ４４０では、ステップＳ４３８で色が判定されたセルＣの中に、着色規則に従っていない色の付されたセルＣが一定数以上存在しているか否かを判定する。
ここでは、この時点でセルＣと色とが対応づけて登録されたデータテーブルの中に、判定領域外の色である旨が対応づけられたセルＣが一定数（例えば全体の３割）以上存在していることをもって、着色規則に従っていない色の付されたセルＣが所定割合以上存在していると判定される。
【０１７６】
なお、ここでは、着色規則に従っていない色の付されたセルＣが一定数以上存在しているか否かを、二次元コードのセルＣに占める相対的な数（つまり割合）により判定するように構成しているが、二次元コードのセルＣに占める絶対数により判定するように構成してもよいし、着色規則に従っていないセルＣが特定のパターン（例えば、このセルＣが２つ以上連続しているなど）で配置されている場合におけるこのパターンの数により判定するように構成してもよい。
【０１７７】
このステップＳ４４０において、着色規則に従っていない色の付されたセルＣが一定数以上存在していると判定した場合(Yes)は、ステップＳ４４２に移行する。
ステップＳ４４２に移行した場合は、判定領域を変更して再度の色判定が可能な状態であるか否かを判定する。
ここでは、ステップＳ４１０における色判定で参照された判定領域が、あらかじめ定められた上限まで変更されている場合に、再度の色判定が可能な状態ではないと判定される。
【０１７８】
この「あらかじめ定められた上限」とは、各判定領域が他の判定領域と干渉しないように変更できる範囲として定められたものであり、後述のように、判定領域を単純に拡げていく場合であれば、各判定領域を他の領域と干渉する程度まで拡張した状態となっていることをもって「あらかじめ定められた上限まで変更されている」こととすればよい。また、判定領域を変移させていく場合であれば、判定領域で規定される色が別の色成分になる直前の位置（境界）まで変移した状態となっていることをもって、「あらかじめ定められた上限まで変更されている」こととすればよい。
【０１７９】
このステップＳ４４２において、再度の色判定が可能であると判定された場合(Yes)は、ステップＳ４４４に移行し、そうでない場合(No)は、ステップＳ４４６に移行する。
ステップＳ４４４に移行した場合は、上記ステップＳ４１０における色判定で参照された判定領域を変更して、ステップＳ４０４に移行する。ここでは、各判定領域を色空間上で一定領域だけ拡げる、または、各判定領域を色空間上で一定距離だけ変移させることにより判定領域それぞれが変更される。
【０１８０】
なお、この後者の場合、判定領域は、二次元コードの画像領域における色成分の偏りを打ち消すことのできる色空間上の位置へと変移させるように構成するとよい。具体的には、二次元コードの画像領域における色の分布を参照し、その分布において特定の色成分が全体的に大きくなっている場合に、この色成分を小さくする方向に各判定領域を変移させる。
【０１８１】
こうして、ステップＳ４４４を終えた後、ステップＳ４０４に移行し、再度、ステップＳ４０２で分割された各セルＣの領域について色の判定処理が行われる。
以降、再度色が判定されたセルＣそれぞれの中に、着色規則に従っていない色の付されたセルＣが一定数以上存在していないと判定されるまで（ステップＳ４４０の「No」の分岐）、判定領域の変更および再度の色判定が繰り返される（ステップＳ４０４〜Ｓ４４４）。
【０１８２】
一方、ステップＳ４４２において、再度の色判定が不可能であると判定されステップＳ４４６に移行した場合は、エラー処理を行って、一連の処理を終了し、元の処理に復帰する。
このエラー処理では、いずれのセルＣの色についても判定できなかったものとし、データテーブルに登録されていた全ての対応関係を消去され、こうして空のデータテーブルが戻り値として元の処理へと復帰する。この場合、図１２の情報識別処理では、ステップＳ１３４，Ｓ１３６で何らの処理も行われることなく、Ｓ１３８以降の処理が行われる。
【０１８３】
そして、上記ステップＳ４３８〜Ｓ４４４までの処理中に、上記ステップＳ４４０において、着色規則に従っていない色の付されたセルＣが一定数以上存在していないと判定された場合(No)は、ステップＳ４４８に移行する。
ステップＳ４４８に移行した場合は、着色規則に従っていない色の付されたセルＣが存在しているか否かを判定する。
【０１８４】
このステップＳ４４８において、該当セルＣが存在していると判定した場合(Yes)は、ステップＳ４５０に移行し、該当セルＣが存在していないと判定した場合(No)は、一連の処理を終了し、元の処理に復帰する。
ステップＳ４５０に移行した場合は、二次元コードの中から該当セルＣを特定して、ステップＳ４５２に移行する。
【０１８５】
ここでは、この時点でデータテーブルに登録されているセルＣのうち、着色規則に従っていない色の付されたセルＣが特定され、このセルＣが二次元コードの中から特定される。
ステップＳ４５２では、上記ステップＳ４４８において特定されたセルＣそれぞれについて、着色規則に従って本来付されるべき色を推定して、ステップＳ４５４に移行する。
【０１８６】
ここでは、上記ステップＳ４４８において特定されたセルＣに対し、着色規則に従って本来付されるべき色の候補として、そのセルＣに隣接するセルＣに付された色との関係で考えられる色が選出され、その候補の中から最も確からしい色が、そのセルＣに付されるべき色であるとして推定される。
ステップＳ４５４では、上記ステップＳ４４８において特定されたセルＣそれぞれについて、該セルＣの色が、上記ステップＳ４５２において推定された色であると判定し、一連の処理を終了し、元の処理に復帰する。
【０１８７】
ここでは、上記ステップＳ４４８において特定されたセルＣそれぞれについてのみ、データテーブルにおける色の更新がなされる。
この場合と、ステップＳ４４８において該当のセルＣが特定されなかった場合は、この時点でセルＣと色との対応関係が登録されたデータテーブルを戻り値として図３のコード利用物品検出処理へと戻る。この場合、コード利用物品検出処理では、データテーブルに基づいて各セルＣに付された色を認識したうえで、ステップＳ１３４による情報の識別を行うこととなる。
なお、上記図１２のステップＳ１２８における、特徴的なパターンを含むか否かを判定する処理を行う際に、上記ステップＳ４００〜Ｓ４５４に示すアルゴリズム、または、上記ステップＳ４００〜Ｓ４３８に示すアルゴリズムを適用することが可能である。
【０１８８】
また、データ領域しか有さない二次元コードの構成であれば、ステップＳ１２８の処理を行う前に、上記ステップＳ４００〜Ｓ４３８の色判定処理、または、上記ステップＳ４００〜Ｓ４５４の色判定処理を先に行い、その判定結果に基づき、特徴的なパターンを含むか否かを判定する処理を行う構成とすることも可能である。例えば、上記図１２のステップＳ１２６の処理の次に、色判定処理（Ｓ１３２）を行う構成とし、ステップＳ１２８では、先に行われた色判定処理の結果に基づき、特徴的なパターンを含むか否かの判定を行う。この場合は、以降の色判定処理を不要とすることができる。
【０１８９】
（４）作用，効果
上記実施形態における二次元コードリーダ１であれば、入力装置７４を介したユーザからの作成指示に応じて、エンコード対象情報の取得（図４のＳ１３）、セル群の構成および色数の決定（同図Ｓ１５）、使用色の決定（同図Ｓ１７）、情報の種類毎にセルの色の設定（同図Ｓ１９）を経て、エンコード情報を生成することができる（同図Ｓ２１）。
【０１９０】
そして、セルに付すことが可能な色のなかから、色の認識率が比較的高いものを優先して選択して使用色を決定し、このようにして決定された使用色を用いて、エンコード情報を生成することができる。また、単位情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように各セルの色の設定を行うことができる。
【０１９１】
さらに、上記実施形態における二次元コードリーダ１であれば、入力装置７４を介したユーザからの設定指示に応じて（図８のＳ３１）、作成したエンコード情報のなかから、エンコード処理に用いるエンコード情報を設定することができる（同図Ｓ３７）。
さらに、情報群が入力され（同図Ｓ３９）、入力装置７４を介したユーザからのエンコード指示に応じて（同図４１）、設定されたエンコード情報を用いて、入力された情報群をエンコードすることができる（同図４３）。
【０１９２】
これにより、セパレータ１１０の色との組み合わせを考慮せずに、単純にＣＭＹＫの４色やＲＧＢＷの４色で二次元コードを構成した場合と比較して、各セルの色の認識精度が高い二次元コードを構成することができる。
さらに、上記実施形態における二次元コードリーダ１であれば、取得された画像（原画像）から、グレースケール画像の生成（図１４（ｂ）のＳ２０２，Ｓ２１０）、二値化画像の生成（同図Ｓ２０４，Ｓ２１２）、二値化画像中の物体の輪郭部の線形化（同図Ｓ２０６）を経てエッジ画像を生成することができる（図１２のＳ１０８）。
【０１９３】
さらに、生成したエッジ画像に基づき、このエッジ画像中における候補領域の抽出（同図Ｓ１１０）、この抽出した候補領域が有効か否かの判定（同図Ｓ１２０，Ｓ１２２）、有効と判定された候補領域に対応する原画像中の対応領域それぞれに特徴的なパターンが含まれているか否かの判定（同図Ｓ１２８）を経て、原画像中から二次元コードの領域を検出することができる（同図Ｓ１３０）。
このように、二値化画像中の物体の輪郭部が線形化されたエッジ画像から、候補領域を抽出することができるので、線形化しない場合と比較して高速に候補領域を抽出することができる。
【０１９４】
そして、原画像の領域において、有効と判定された候補領域に対応する対応領域のうち、特徴的なパターンが含まれている対応領域を、原画像中における二次元コードの領域として検出することにより、原画像中に含まれる複数の二次元コードそれぞれを特定することができるようになる。
また、上記実施形態では、原画像に基づいて生成される複数種類のエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する対応領域における各セルＣに対応する領域に付されている色の判定、色の判定された対応領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を繰り返し実施している（図１２のＳ１０８〜Ｓ１４４）。
【０１９５】
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの検出精度を高めることができる。
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出され、かつ、有効と判定された候補領域が、先に参照されたエッジ画像について抽出され、かつ、有効と判定された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このような抽出済み候補領域について、該候補領域の各セルＣに対応する領域に付されている色の判定、該候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない（同図Ｓ１２４の「Yes」の分岐）。
【０１９６】
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別するに際し、本来同じものであるはずの二次元コードを繰り返し識別してしまうといった無用な処理負担をなくすことができる。
また、この繰り返しの過程では、理想的な領域形状に対して、各候補領域の縦横比および四隅の角度等の形状情報が、あらかじめ設定された誤差範囲内となるか否かを判定することによって（図１５のＳ３００〜Ｓ３０８）、抽出した候補領域が有効な候補領域であるか否かを判定することができる（図１２のＳ１２２）。
これにより、理想的な形状に対して、誤差範囲外の形状を有する候補領域を、以降の処理対象から除外することができ、二次元コードの領域とは明らかに異なる領域等に対して、無用な処理が行われるのを防ぐことができる。
【０１９７】
また、上記実施形態では、原画像からエッジ画像を生成し、このエッジ画像から、二次元コードの領域の候補となる候補領域を抽出し（図１２のＳ１１０）、該抽出した候補領域が有効か否かを判定したうえで（図１２のＳ１２０，Ｓ１２２）、原画像における、有効と判定された候補領域に対応する領域から二次元コードの領域を検出して情報の識別を行っている（同図Ｓ１１６〜Ｓ１３４）。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。これにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【０１９８】
また、上記実施形態では、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別することができる（図１２のＳ１３４）。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域との重複度合に応じ、その重複度合が一定以上であることをもって、両候補領域が一致すると判定することができる。
【０１９９】
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域、および、別のエッジ画像における抽出済み候補領域のうち、一方の候補領域が他方の候補領域に包摂されていることをもって、両候補領域が一致すると判定することができる。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域における１以上の頂点が、抽出済み候補領域におけるいずれかの頂点から一定範囲内に位置していることをもって、両候補領域が一致すると判定することもできる。
【０２００】
また、上記実施形態においては、テンプレートで規定される規則に従って候補領域を抽出することができるため、このテンプレートと共に規則を変更することにより、任意の規則に従って形成された二次元コードの領域として検出できるようにすることができる。
また、上記実施形態においては、二次元コードの各セルＣに付された色に基づいて、二次元コードで示される情報を識別することができる（図１２のＳ１３２〜Ｓ１３４）。
【０２０１】
また、上記実施形態では、画像の生成（具体的には撮影）状態により、二次元コードにおける各セルＣのうち、一部のセルＣに対応する領域が欠けてしまっていたとしても、そのセルに本来付されるべき色を着色規則に従って推定し（図１７のＳ４５２）、その色に基づいて情報を識別することができるため、情報の識別そのものができなくなってしまうことを防止することができる。
【０２０２】
また、上記実施形態では、二次元コードにおける各セルＣに付されている色を、色空間におけるいずれの判定領域（成分領域）に含まれているかにより判定することができる（図１７のＳ４１０）。
また、この構成においては、各ピクセルの色判定を行う際に、二次元コードの領域を、ラスタスキャンによって順番に走査して色判定処理を行い（図１７のＳ４１０）、各セルＣの領域における各行に位置するピクセルについて、一定数以上が判定領域に含まれると判定された場合（図１７のＳ４０８の「Yes」の分岐）に、該当セルＣの領域におけるその行の残りのピクセルに対して色判定処理を省略することができる。
【０２０３】
これによって、各セルＣの領域における各行のピクセルの全てに対して色判定処理を行う場合と比較して、各ピクセルの色判定処理を高速に行うことができる。
また、この構成においては、各セルＣの色を判定するに際し、多くのセルＣに付された色がいずれの判定領域にも含まれず、情報の識別そのものができなくなるような場合であっても、そのようなことを防止できるように構成されている。
【０２０４】
具体的には、複数の色それぞれに対応する判定領域のいずれにも含まれていないと判定したセルが一定数以上存在する場合に（図１７のＳ４４０「Yes」の分岐）、判定領域を一定領域だけ拡げる、または、変移させたうえで、再度、各セルに付されている色を判定している（同図Ｓ４４４〜Ｓ４３８）。
この構成であれば、画像の生成条件が悪く、適切に色の判定ができない場合であっても、判定領域を拡げることで判定の感度を上げて再度色を判定する、または、判定領域を色の分布に応じた適切な位置まで変移させて再度色を判定することにより、色の判定確率を高めることができる。
【０２０５】
（５）変形例
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
例えば、上記実施形態においては、二次元コードリーダ１が単体の装置により構成されている場合を例示したが、この二次元コードリーダ１は、複数の装置が協調して動作するシステムとして構成してもよい。
【０２０６】
また、上記実施形態では、着色規則に従って付されるべき色の候補を選出し、その中から最も確からしい単一の色を、着色規則に従って本来付されるべき色と推定しているが、こうして色の候補を選出した段階で、これら候補のいずれかをユーザに選択させることとしてもよい。
また、候補として選出した色それぞれについて情報の識別までも行うようにし、そうして識別した情報の中からいずれかをユーザに選択させることとしてもよい。この場合、図１７のＳ４５２では何らの処理も行わず、Ｓ４５４にて候補の色それぞれを、該当するセルＣに付された色と判定する。そして、図１２のＳ１３４では、セルＣに付された色として判定された色が複数存在していれば、各色について、または、各色の組合せに基づいて情報を識別し、そうして識別した情報の中から、いずれかをユーザに選択させる、といった構成を考えることができる。
【０２０７】
また、上記実施形態において、情報識別処理を、入力装置７４を介したユーザーの操作入力（指示情報）をトリガとして行われる一連の処理として説明したが、この構成に限らない。
例えば、トリガがなくても情報識別処理を繰り返し実行して、常に、撮影画像に対して識別処理を実行する構成とするなど、他の構成としてもよい。
【０２０８】
また、上記実施形態において、二次元コードリーダ１は、専用のプログラムをＣＰＵ６０によって実行することで、エンコード情報作成処理、エンコード処理、および、情報識別処理に必要な各機能を実現する構成としたが、この構成に限らない。例えば、処理の一部を半導体集積回路等のハードウェアに置き換えて、ハードウェアとソフトウェアとの双方によって各機能を実現する構成としてもよいし、可能であれば、処理の全てまたは略全てをハードウェアに置き換えて、ハードウェア主体で各機能を実現する構成としてもよい。
【０２０９】
（６）本発明との対応関係
以上説明した実施形態において、図４のＳ１９が本発明におけるエンコード情報設定部であり、同図Ｓ２１，２３が本発明におけるエンコード情報記憶部であり、図８のＳ３９が本発明における情報群入力部であり、同図Ｓ４３が本発明におけるエンコード部である。
また、図１２のＳ１０２が本発明における画像取得部であり、同図Ｓ１０８（図１４のＳ２００〜Ｓ２１２）が本発明における成分変換部であり、同図Ｓ１１０が本発明における領域抽出部であり、同図Ｓ１２０が本発明における候補領域判定部であり、同図Ｓ１２８が本発明におけるパターン判定部である。
【０２１０】
また、図１２のＳ１３０が本発明における領域検出部であり、同図Ｓ１０８〜Ｓ１４４（特にＳ１０８，Ｓ１４２，Ｓ１４４）が本発明における繰り返し実施部であり、同図Ｓ１２４が本発明における一致判定部であり、同図Ｓ１３４が本発明における情報識別部である。
また、図１７におけるＳ４５２が本発明における色推定部であり、同図Ｓ４１０、Ｓ４３８およびＳ４５４が本発明における色判定部である。
【符号の説明】
【０２１１】
１…エンコード機能付き二次元コードリーダ、６０…ＣＰＵ、６２…ＲＡＭ、６４…ＲＯＭ、６６…Ｉ／Ｆ、６８…バス、７０…記憶装置、７２…表示装置、７３…印刷装置、７４…入力装置、７６…カメラ、７８…ＮＩＣ、１１０…セパレータ、１２０…フレーム、Ｃ…セル。
【図１】
0005319637.tif 000002
【図２】
0005319637.tif 000003
【図３】
0005319637.tif 000004
【図４】
0005319637.tif 000005
【図５】
0005319637.tif 000006
【図６】
0005319637.tif 000007
【図７】
0005319637.tif 000008
【図８】
0005319637.tif 000009
【図９】
0005319637.tif 000010
【図１０】
0005319637.tif 000011
【図１１】
0005319637.tif 000012
【図１２】
0005319637.tif 000013
【図１３】
0005319637.tif 000014
【図１４】
0005319637.tif 000015
【図１５】
0005319637.tif 000016
【図１６】
0005319637.tif 000017
【図１７】
0005319637.tif 000018