二次元コード、エンコード装置、エンコードプログラムおよび二次元コードリーダ
【課題】複数のセルを配列してなる二次元コードの各セルに付された色の認識率の低下を抑制するのに好適な技術を提供する。
【解決手段】エンコードする情報の量、種類、二次元コードの構成、セルに付すことが可能な色の種類の情報、各色の認識率に係る情報などを含むエンコード対象情報の取得(S13)、この情報に基づくセル群の構成およびエンコードに必要な色数の設定(S15)、セパレータ(110)の色とセルの色との組み合わせに対する各色の認識率に基づく使用色の決定(S17)、決定した使用色を用いた情報の各種類に対応するセル群の色の設定(S19)、設定した情報に基づくエンコード情報の生成(S21)を経て、セルに付すことが可能な色のうち、認識率が比較的高い色を使用したエンコード情報を生成する。そして、生成したエンコード情報を用いて、入力された情報群をエンコードする。
【解決手段】エンコードする情報の量、種類、二次元コードの構成、セルに付すことが可能な色の種類の情報、各色の認識率に係る情報などを含むエンコード対象情報の取得(S13)、この情報に基づくセル群の構成およびエンコードに必要な色数の設定(S15)、セパレータ(110)の色とセルの色との組み合わせに対する各色の認識率に基づく使用色の決定(S17)、決定した使用色を用いた情報の各種類に対応するセル群の色の設定(S19)、設定した情報に基づくエンコード情報の生成(S21)を経て、セルに付すことが可能な色のうち、認識率が比較的高い色を使用したエンコード情報を生成する。そして、生成したエンコード情報を用いて、入力された情報群をエンコードする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セルが配列されてなる二次元コード、この二次元コードを用いて情報群をエンコードするエンコード装置およびプログラム、ならびに、二次元コードを読み取って情報を識別する二次元コードリーダに関する。
【背景技術】
【0002】
従来から、複数のセルを配列して構成される二次元コードを用いて、該二次元コードの1以上のセルからなる各セル群に付された色または色の組み合わせによって情報をエンコードする技術が開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−195536号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記特許文献1の技術においては、白色又は黒色の境界領域で分割された複数のセルに対して、赤色、緑色、青色、黒色、シアン色、マゼンタ色、黄色及び白色の8色を用いて、各セルに色を付すことで情報をエンコードしている。そして、カメラによって、二次元コードの領域を含む画像部分を撮影し、該撮影して得られた画像について、色の判定処理を行ってエンコードされた情報を識別(デコード)している。このように、撮影画像に対して色の判定処理を行うため、例えば、黒色の境界領域に対して緑色でセルに色を付したり、白色の境界領域に対して黄色でセルに色を付した場合などにおいて、セルの領域とセル以外の領域との色の組み合わせによって、撮影画像において両者の色が混ざり、色の認識率が低下するといった不具合が生じる恐れがあった。
本発明は、このような課題を解決するためになされたものであり、その目的は、複数のセルを配列してなる二次元コードの各セルに付された色の認識率の低下を抑制するのに好適な技術を提供することである。
【課題を解決するための手段】
【0005】
〔第1の構成〕
上記課題を解決するために、本発明に係る第1の構成の二次元コードは、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードであって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のa個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち色の認識率が比較的高いものが優先して各セルに付されている。
【0006】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、認識率の比較的高い色が優先してセルに付されるので、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【0007】
〔第2の構成〕
さらに、第2の構成の二次元コードは、上記第1の構成において、前記p×qに配列されたセルは、あらかじめ定められた色が付されたセパレータで分けられており、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち、前記セパレータに付された色とセルに付される色との組み合わせに対して、色の認識率が比較的高いものが優先して各セルに付されている。
【0008】
この構成であれば、セパレータに付された色とセルに付された色との組み合わせに対して、色の認識率が比較的高い色が優先してセルに付されているので、当該二次元コードの画像を撮影したときの撮影画像において、混色等によるセルに付された色の認識率の低下を抑制することができる。
【0009】
〔第3の構成〕
さらに、第3の構成の二次元コードは、上記第2の構成において、前記セパレータに付された色は白色であり、前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色が優先して各セルに付されている。
【0010】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの白色に対して、認識率の低くなる黄色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【0011】
〔第4の構成〕
さらに、第4の構成の二次元コードは、上記第3の構成において、前記aが2であり、前記bが24以下である場合において、前記各セル群における2個のセルには、白色および黄色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されている。
この構成であれば、セパレータに用いられる白色、および、白色の背景色に溶け込みやすい黄色を除く残りの色のうち比較的認識率の高い4色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【0012】
〔第5の構成〕
さらに、第5の構成の二次元コードは、上記第3又は4の構成において、前記p×qに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有する。
この構成であれば、例えば、この二次元コードの領域を含む領域の撮影画像中から二次元コードの位置を検出する際に、セパレータの白と枠部分の黒色とによって外周部分の輝度差を大きくすることができ、二次元コードの領域の外形エッジを抽出しやすくすることができる。
【0013】
〔第6の構成〕
さらに、第6の構成の二次元コードは、上記第2の構成において、前記セパレータに付された色は黒色であり、前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも緑色及び黒色を除く残りの色が優先して各セルに付されている。
【0014】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの黒色に対して、認識率の低くなる緑色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【0015】
〔第7の構成〕
さらに、第7の構成の二次元コードは、上記第6の構成において、前記aが2であり、前記bが24以下である場合において、前記各セル群における2個のセルには、黒色および緑色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されている。
この構成であれば、セパレータに用いられる黒色、および、黒色の背景色に溶け込みやすい緑色を除く残りの色のうち比較的認識率の高い4色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【0016】
〔第8の構成〕
さらに、第8の構成の二次元コードは、上記第1乃至第7のいずれか1の構成において、前記各セル群は、前記各セル群は、前記aが2以上の場合において、行方向または列方向うち一方向に連続する各a個のセルからなる。
この構成であれば、不連続となるa個のセルから各セル群を構成した場合と比較して、各セル群のa個のセルが一方向に連続しているので、エンコード時などにおいて、文字列や数字列などの各情報群との対応付けが容易となる。また、色の判定処理において、連続するa個のセルの色を判定することで各セル群の色の判定を行うことができるので、不連続なものと比較して、色の判定処理と各セル群の情報の識別とを順次行うことができる。
【0017】
〔第9の構成〕
さらに、第9の構成の二次元コードは、上記第8の構成において、前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含む。
この構成であれば、方向識別用のセル群によって、複数のセル群の配列方向を識別することができるので、エンコード時において、この配列方向と文字列や数字列などの各情報群の並び方向とを対応させておくことで、正しい並び順での情報の識別を容易に行うことができる。また、識別用のセル群とその他のセル群との位置関係を利用して、二次元コードの領域であることを判定する処理を行うことも可能である。
【0018】
〔第10の構成〕
一方、上記課題を解決するために、第10の構成のエンコード装置は、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、前記二次元コードで示すべき情報群を入力する情報群入力部と、前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えている。
【0019】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定する。
【0020】
この構成であれば、p×qにセルが配列されてなる二次元コードにおける、a個のセルからなるセル群について、使用可能なd色から認識率の比較的高いc色を優先して用いて、情報の各種類に対応するセル群のa個のセルの色を設定することができる。さらに、この設定情報に基づき、情報の各種類と、該各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶することができる。
【0021】
さらに、情報群が入力されると、前記記憶したエンコード情報に基づき、二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードすることができる。
これにより、上記第1の構成の二次元コードを生成することができる。
このようにして構成された二次元コードは、上記第1の構成の二次元コードと同様に、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【0022】
〔第11の構成〕
また、上記課題を解決するために、第11の構成のエンコードプログラムは、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、前記二次元コードで示すべき情報群を入力する情報群入力部、および、前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実現される処理をコンピュータに実行させるためのプログラムを含んでいる。
【0023】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定する。
【0024】
このようなプログラムにより制御されるコンピュータシステムは、上記第11の構成に係るエンコード装置の一部を構成することができる。
なお、上述したプログラムは、コンピュータシステムによる処理に適した命令の順番付けられた列からなるものであって、各種記録媒体や通信回線を介して二次元コードリーダや、これを利用するユーザに提供されるものである。
【0025】
〔第12の構成〕
また、上記課題を解決するために、第12の構成の二次元コードリーダは、請求項1乃至請求項9のいずれか1項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えている。
【0026】
そして、前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定する。
この構成であれば、取得された画像(原画像)から生成されたエッジ画像中における候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定を経て、原画像中から二次元コードの領域を検出することができる。
【0027】
このように、原画像の領域において、エッジ画像から抽出された有効な候補領域に対応する対応領域のうち、特徴的なパターンが含まれる対応領域を、原画像中における二次元コードの領域として検出することにより、原画像に含まれる複数の二次元コードの領域それぞれを特定することができるようになる。
また、上記構成では、取得された画像から、二次元コードの領域の候補となる候補領域を抽出し、抽出した候補領域が有効か否かを判定したうえで、有効と判定された領域から二次元コードの領域を検出して情報の識別を行うことができる。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。
【0028】
加えて、有効と判定された候補領域に対応する対応領域についてのみ、この領域から二次元コードの領域を検出して情報の識別を行うことができる。
そのため、二次元コードの理想の形状から逸脱した形状等の明らかに二次元コードの領域とは異なる形状の候補領域に対して、特徴的なパターンが含まれているか否かの判定、二次元コードの領域の検出および情報の識別を含む処理が行われるのを防ぐことができる。
以上のことにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【0029】
また、上記構成では、対応領域における各セルに対応する領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色判定が未処理の残りのピクセルについては色判定処理を省略し、所定数の有効な色の判定結果に基づき各セルに対応する領域に付された色を判定することができる。
これにより、各セルの領域を構成する複数のピクセルにおいて所定数の有効な色の判定結果を得た場合に、残りの未処理のピクセルについては色の判定処理が行われないため、その分だけ各セルの領域の色の判定にかかる処理時間を短縮することができる。
【0030】
この構成において、原画像から変換されるエッジ画像は、原画像に含まれるエッジ成分の分布を示すものであればよく、例えば、原画像における輝度、明度、彩度など特定の成分のみを分布させた画像における所定のしきい値以上の成分のみを抽出(具体的にはしきい値で二値化)した画像や、この画像に対して輪郭線の抽出をした画像などのことである。
この輪郭線の抽出は、具体的に、エッジ画像中に含まれるオブジェクトの輪郭線を抽出する処理であり、輪郭線を抽出できればどのような処理方法を用いてもよい。
【0031】
例えば、公知の細線化アルゴリズム(Hilditch、Deutsch、Zhang Suen、田村、鶴岡などの手法)を用いた細線化処理によってエッジ部分を線形化する方法がある。また、例えば、ラプラシアンフィルタ等の公知のエッジ抽出フィルタを用いたフィルタリング処理を行ってエッジ部分を線形化する方法や、公知のブレゼンハムの線分描画アルゴリズムを用いてエッジ部分を線形化する方法などもある。
【0032】
また、エッジ画像から候補領域を抽出する際の「あらかじめ定められた領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などを、規定しておけばよい。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形の領域などの矩形形状を角度を変えて見た(撮影した)場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの撮影環境や原画像の画質等によって円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規定でもよいし、エッジ成分の分布パターン(エッジ成分の分布状態、分布されているエッジ成分の配置など)が特定のパターンの領域を抽出するといった規定でもよい。
【0033】
また、抽出した候補領域が有効であるか否かを判定する際の「形状情報」とは、例えば、外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状(理想の形状)に係る形状の情報となる。
また、原画像から二次元コードの領域を検出する際に参照される「特徴的なパターン」とは、二次元コードについて定められた特徴的なパターンを直接的または間接的に示す情報であればよく、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンを直接的または間接的に示す情報などのことである。
【0034】
また、「所定数の有効な色の判定結果」とは、各セルの領域の色を正確に判定可能な精度を有した有効な色の判定結果の数であり、処理速度の観点からは、より少数の方が望ましい。
また、「有効な色」とは、例えば、色の判定対象が複数ある場合には判定結果が最も多数となる色や、予め各セルの領域に付す色が解っている場合、または、色の並びなどから推定できる場合は、各セルの領域に対応する色などが該当する。
【0035】
〔第13の構成〕
さらに、第13の構成の二次元コードリーダは、第12の構成において、前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域(以降「抽出済み候補領域」という)と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えている。
【0036】
そして、前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させる。
【0037】
この構成であれば、複数種類の変換条件に対応するエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定、および、原画像中からの二次元コードの領域の検出を繰り返し実施している。
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの領域の検出精度を高めることができる。
【0038】
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出された候補領域が、先に参照されたエッジ画像について抽出された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このように一致する抽出済み候補領域について、抽出した候補領域の各セルに対応する領域の色の判定、抽出した候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない。
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードの領域にて示される情報を識別するに際し、本来同じものであるはずの二次元コードの領域を繰り返し識別してしまうといった無用な処理負担をなくすことができる。
【図面の簡単な説明】
【0039】
【図1】エンコード機能付き二次元コードリーダ1の構成例を示すブロック図である。
【図2】セパレータが白色の場合の二次元コード100の構成例を示す図である。
【図3】セパレータが黒色の場合の二次元コード100の構成例を示す図である。
【図4】エンコード情報作成処理の一例を示すフローチャートである。
【図5】エンコード対象情報の一例を示す図である。
【図6】(a)は、セパレータが白色の場合のエンコード情報の一例を示す図であり、(b)は、セパレータが黒色の場合のエンコード情報の一例を示す図である。
【図7】(a)は、図5のエンコード対象情報に対応する二次元コード100の構成例を示す図であり、(b)は、(a)の二次元コード100に対するセル群の設定例を示す図である。
【図8】エンコード処理の一例を示すフローチャートである。
【図9】入力情報群の一例を示す図である。
【図10】セパレータが白色の場合のエンコード処理によって作成された二次元コード100の一例を示す図である。
【図11】セパレータが黒色の場合のエンコード処理によって作成された二次元コード100の一例を示す図である。
【図12】情報識別処理の一例を示すフローチャートである。
【図13】エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが抽出済み候補領域と一致するか否かを判定するための別手法を示す図である。
【図14】(a)は、変数Yの値と画像種類およびしきい値との対応関係の一例を示す図であり、(b)は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
【図15】有効領域判定処理の処理手順を示すフローチャートである。
【図16】(a)は、理想的な候補領域の形状例を示す図であり、(b)〜(e)は、誤差範囲外の形状例を示す図であり、(f)〜(g)は、誤差範囲内の形状例を示す図である。
【図17】色判定処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0040】
以下に本発明の実施形態を図面に基づき説明する。
(1)エンコード機能付き二次元コードリーダ1の構成
まず、図1に基づき、エンコード機能付き二次元コードリーダ1の構成を説明する。図1は、エンコード機能付き二次元コードリーダ1の構成例を示すブロック図である。
エンコード機能付き二次元コードリーダ1(以下、単に二次元コードリーダ1と称す)は、図1に示すように、CPU(Central Processing Unit)60と、RAM(Random Access Memory)62と、ROM(Read Only Memory)64と、入出力インターフェース(I/F)66と、バス68とを含んで構成されるコンピュータシステムを備えている。CPU60、RAM62、ROM64およびI/F66は、バス68に接続されており、バス68を介してこれら接続デバイス間のデータの送受信を可能としている。
【0041】
二次元コードリーダ1は、さらに、I/F66を介して、記憶装置70と、表示装置72と、印刷装置73と、入力装置74と、カメラ76と、NIC(Network Interface Card)78とに接続されている。
CPU60は、ROM64または記憶装置70に予め記憶された各種専用のコンピュータプログラムをRAM62に読み込み、RAM62に読み込まれたプログラムに記述された命令に従って、各種リソースを駆使して、各種処理を実行する。CPU60において実行される各種処理としては、二次元コードを利用して情報をエンコードするためのエンコード情報の作成処理、作成したエンコード情報を用いて情報をエンコードするエンコード処理がある。さらに、エンコード処理にて情報をエンコードしてなる二次元コードの領域が1以上含まれる画像から二次元コードの領域を検出し、該検出した二次元コードにて示される情報を識別する情報識別処理がある。
【0042】
記憶装置70は、各種専用のコンピュータプログラム、プログラムの実行において用いられるデータ等の、上記エンコード情報作成処理、エンコード処理、および情報識別処理に必要なデータを記憶する。
具体的に、記憶装置70は、二次元コードを用いて情報をエンコードする際のエンコード情報の作成に必要なエンコード対象情報、エンコード対象情報に基づいて作成したエンコード情報、エンコード情報を用いて情報をエンコードしてなる二次元コードの情報を記憶する。
【0043】
ここで、エンコード対象情報とは、エンコード対象の情報群の情報量(例えば、文字列や数字列の桁数等)、エンコード対象の情報の種類(例えば、10進数、英大文字、英小文字、ひらがな、カタカナなど)、エンコード対象の単位情報の種類数(例えば、10進数なら0〜9の10種類)などを含む情報となる。
他にも、二次元コードの構成が決まっている場合はそのセルの構成(例えば、3行×6列(p×q)等)を示す情報、また、セルにマークすることが可能な色の種類数の情報、これらの色の認識率に係る情報などもエンコード対象情報に含まれる。
【0044】
また、エンコード情報とは、二次元コードを構成する各セル群それぞれの色または色の組み合わせと、当該色または色の組み合わせに対応する情報との対応関係を示す情報が登録されたデータテーブルである。
さらに、記憶装置70は、二次元コードを特徴づける情報を規定したテンプレート、カメラ76によって撮影して得られる画像データを記憶する。
【0045】
ここで、記憶装置70は、FDドライブ、HDドライブ等の磁気記憶型記憶装置、CDドライブ、DVDドライブ、BRDドライブ等の光学的読取/書込方式記憶装置、MOドライブ等の磁気記憶型/光学的読取方式記憶装置等の、コンピュータで記憶データを読み取り可能な記憶装置であれば何でもよい。
表示装置72は、CRTディスプレイ、液晶ディスプレイなどの周知の表示装置であり、CPU60からの指令に応じて、カメラ76で撮影された画像の表示を行う。
【0046】
印刷装置73は、例えば、公知のインクジェット方式またはバブルジェット(登録商標)方式などの印刷方式で印刷媒体に画像を印刷する装置である。本実施形態では、エンコード処理によって生成された二次元コードの画像等を印刷用紙やシール等の印刷媒体に印刷するのに用いられる。
入力装置74は、キーボード、マウス、操作ボタン、タッチ式の入力デバイス(タッチパネル等)などのヒューマンインターフェースデバイスであり、ユーザの操作に応じた入力を受け付ける。
【0047】
カメラ76は、デジタルカメラ等の周知のカメラであり、所定の撮影領域を撮影して得られた画像を示す画像データを生成して順次I/F66を介してRAM62または記憶装置70に送信して、RAM62または記憶装置70に画像データを格納する。
NIC78は、LAN、WAN、インターネット等のネットワーク上の外部装置と通信をするためのデバイスであり、一般にLANカード等と呼ばれる周知のネットワークアダプタである。NIC78は、ネットワークケーブルLを介してルータやハブ等に接続され、これらを介して、二次元コードリーダ1をネットワークに接続する。なお、周知の無線LAN等の、無線によって無線LAN用のアクセスポイントを介してネットワークに接続する構成であってもよい。
【0048】
これにより、本実施の形態では、ネットワークに接続された外部カメラから、NIC78を介して所定の撮影領域の撮影画像を示す画像データを取得したり、ネットワークに接続されたデータサーバから各種データを取得したりすることも可能である。
なお、この二次元コードリーダ1は、例えば、携帯電話端末、携帯情報端末、周知のパーソナルコンピュータなどに実装されるものとして構成される。
【0049】
そして、本実施形態における二次元コードリーダ1は、エンコード対象のエンコードに係る情報であるエンコード対象情報に基づき、エンコード情報を作成するエンコード情報作成処理と、作成したエンコード情報を用いて、入力される情報群をエンコードするエンコード処理とを行う装置として構成されている。
さらに、本実施形態における二次元コードリーダ1は、1以上の二次元コードが含まれた画像を示す画像データに基づき、その画像中の二次元コードを検出する処理と、検出した二次元コードにより示される情報を識別して取得する処理とを行う装置として構成されている。
【0050】
(2)二次元コード100の構成
次に、図2および図3に基づき、二次元コードリーダ1により生成し、かつ情報が読み取られる二次元コード100について説明する。図2および図3は、セパレータの色が白色および黒色の場合の二次元コード100の構成例を示す図である。
本実施形態における二次元コード100は、図2および図3に示すように、白色および黒色のセパレータ110を境界領域として複数のセルC11〜Cpq(1≦p,1≦q)が一定間隔で配列され、所定の情報が各セルの色および色の組み合わせによりエンコードされたものである。なお、図2に示すように、セパレータ110を白色とした場合は、二次元コード100の外周部に黒色のフレーム120を設ける。これは、後述する候補領域の特定において二次元コードの領域の認識率を向上するための構成である。
【0051】
そして、この二次元コード100は、セルそれぞれ、または、組み合わせに係るセル群それぞれが、そこに付された複数の色(多色)、または、色の組み合わせパターンにより、数字や文字など複数種類の値(多値)を表現可能となっている。例えば、複数の二次元コードについて、それぞれ、色の組み合わせや、色の配列パターンを変えることによって、各二次元コードに固有のユニークな情報を付すことが可能である。
【0052】
また、セルC11〜Cpqは、行毎に、それぞれ1以上のセルCからなるセル群に分けられており、そのセル群で示すべき単位情報(1以上の文字)の対応づけられた色または色の組み合わせでマークが付けられる。こうして、各セルそれぞれ、または、1以上の組み合わせに係るセル群それぞれが、複数種類の文字のいずれかや多進数の数字で示されるいずれかの値からなる情報を持つことができるようになっている。
【0053】
また、これらセルCにそれぞれ付けられたマークの色は、シアン色(C)、マゼンタ色(M)、黄色(Y)の分布を表した三次元空間内において、それぞれ三次元領域として球形に拡がる複数の成分領域(後述する判定領域)を、これら成分領域同士が互いに干渉しない大きさおよび位置関係で配置した成分モデルにより決められる。具体的に、この成分モデルに配置された成分領域内における中心座標で表される成分それぞれが、情報色の成分または組み合わせ色における各色の成分として、セル群にマークが付けられている。
ここでいう「成分領域同士が互いに干渉しない」とは、各成分領域が重複しないように、各成分領域同士の間隔を空けて配置したり、各成分領域の境界を隣接させて配置したり、することである。
【0054】
また、成分領域の大きさは、画像の撮影環境に応じて生じうる誤差の範囲を十分に包摂できる空間として規定したものであり、本実施形態では、特定座標における色を一般的な撮影環境下の色とし、この色から撮影環境に応じて生じうる誤差の範囲を含む領域を成分領域として規定している。
また、二次元コード100におけるセパレータ110の色には、セルCに付すマークの色に用いられていない成分領域における中心座標の色が用いられている。
【0055】
(3)CPU60による処理
以下に、CPU60がROM64または記憶装置70に記憶された専用のコンピュータプログラムに従って実行する各種処理の手順について順次説明する。
(3−1)エンコード情報作成処理
まず、二次元コードリーダ1において、入力装置74を介した作成指示に応じて開始されるエンコード情報作成処理の処理手順を、図4〜図7に基づいて説明する。
【0056】
ここで、図4は、エンコード情報作成処理の処理手順の一例を示すフローチャートである。また、図5は、エンコード対象情報の一例を示す図である。また、図6(a)は、図5のエンコード対象情報に対応する二次元コード100の構成例を示す図であり、(b)は、(a)の二次元コード100に対するセル群の設定例を示す図である。また、図7(a)は、セパレータ110が白色の場合のエンコード情報の一例を示す図であり、(b)は、セパレータ110が黒色の場合のエンコード情報の一例を示す図である。
【0057】
エンコード情報作成処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図4に示すように、まず、ステップS11へと移行する。
ステップS11では、入力装置74を介したユーザからの作成指示の入力があったか否かを判定し、作成指示の入力があったと判定した場合(Yes)は、ステップS13に移行し、そうでない場合(No)は、入力されるまで判定処理を繰り返す。
ここでは、入力装置74によって、簡易に作成指示を入力できるように、例えば、作成指示を選択するボタンのグラフィックスを表示装置72の表示画面に表示する。
【0058】
そして、画面に表示されたボタンを、入力装置74がタッチパネルであれば指でタッチすることで選択かつ押下し、入力装置がマウスであればマウスカーソルによって選択してクリックすることにより押下することで、作成指示を入力できるようにしている。つまり、GUI(Graphical User Interface)によって、簡易に作成指示の入力を行うことが可能となっている。
作成指示が入力され、ステップS13に移行した場合は、エンコード対象情報を取得して、ステップS15に移行する。
【0059】
この処理は、記憶装置70に記憶されたエンコード対象情報をRAM62などのワークメモリに読み出す処理となる。
なお、ステップS11における、作成指示の入力前に、ユーザが入力装置74を介して、エンコード対象の情報群の情報量、情報種類、単位情報の種類数、二次元コードのセルの構成、使用可能な色数等を含むエンコード対象情報の一部を選択または入力できるようにしてもよい。この場合は、記憶装置70に記憶されたエンコード対象情報に加えて、この選択または入力された情報を取得してRAM62等のワークメモリに読み出す(記憶する)処理も行う。
【0060】
例えば、エンコード対象情報として、図5に示すように、情報量が17桁、情報種類が10進数、単位情報の種類数が10、セルの構成を示す情報としてセルの配列数が3行×12列、使用可能な色として赤色(R)、緑色(G)、青色(B)、白色(W)、シアン色(C)、マゼンタ色(M)、黄色(Y)および黒色(K)の8色の情報が得られたとする。
ここで、情報量17桁とは、文字(a,b,c,・・・)や数字(1,2,3,・・・)などの1文字の情報(単位情報)が17個あることを意味する。また、情報種類が10進数のみであることから、単位情報の種類は、0〜9の10種類となる。そして、セルの配列数が3行×12列ということから、二次元コード100は、例えば、図6(a)に示すような構成となる。図6(a)に示す二次元コード100は、セパレータ110が白色の場合の例となる。
【0061】
つまり、図5のエンコード対象情報に対応する二次元コード100のセルの配列は、図6(a)に示すように、第1行〜第3行の3行構成(p=3)であり、最上段の第1行はセルC11〜C112の12個のセルから、中段の第2行はセルC21〜C212の12個のセルから、最下段の第3行はセルC31〜C312の12個のセルからそれぞれ構成される。従って、列数は12列(q=12)となる。
【0062】
次に、エンコード対象情報が取得されステップS15に移行すると、ステップS15では、取得したエンコード対象情報に基づき、セル群の構成、および、10種類の情報をエンコードするのに必要な色数を設定して、ステップS17に移行する。
セル群の構成の設定処理は、エンコード対象情報における、エンコード対象の情報群の情報量と、単位情報の種類数および使用可能な色の種類数とに基づき、セル群の各セル数a(1≦a)を決定する処理となる。
【0063】
セルの総数が36個であり、情報量が17桁であり、色の種類数が8色であることから、1つのセルに1色を用いる場合に、1つのセルだけでは9種類以上の情報をエンコードすることは不可能であるため、セル群のセル数aは最低2となる。ここでは、行数が奇数であり、列数が偶数であるため、各行で連続して並ぶ2つのセルからセル群を構成するようにセルの構成を設定する。これにより、二次元コード100の36個のセルは、図6(b)に示すように、各行の連続する各2つのセルからなるセル群Cg1〜Cg18の18個のセル群に分けられることになる。
【0064】
また、色数の設定は、セル群を構成する2個のセルの色の組み合わせで、10種類の情報をエンコードすることから、最低4色となる。本実施形態では、使用する色の種類数が最小となるように決定する。従って、ここでは4色に決定する。
ステップS17では、エンコード対象情報における色の認識率に係る情報と、ステップS15で設定された色数の情報とに基づき、使用可能な色のなかからエンコードに使用する色を決定して、ステップS19に移行する。
【0065】
ここで、各セルに付された色の認識率は、撮影環境(撮影場所の光源の種類、光源の状態、使用するカメラの性能など)やセパレータ110の色とセルの色との組み合わせ内容などによって変わってくる。そのため、本実施形態では、事前に、様々な撮影環境下における、様々なセパレータ110の色とセルの色との組み合わせに対する、撮影画像におけるセルに付された各色の認識率を測定する。そして、その測定した認識率の情報を色の認識率に係る情報として記憶装置70やROM64などに記憶しておく。
図5および図6(b)の例では、各セル群の2つのセルに付された4色中の1色または2色の色によって単位情報をエンコードするので、本実施形態では、使用可能な8色のなかから、認識率の比較的高いもの(所定認識率以上(例えば、90%以上)のもの)から優先して4色を使用色として決定する。
【0066】
また、本実施形態では、セパレータ110の色が白色および黒色の2パターンについて、使用色を決定する。
具体的に、セパレータ110の色が白色であれば、セパレータで用いられている白色、白色に溶け込みやすい黄色などは認識率が低くなるので、例えば、シアン色(C)、マゼンタ色(M)、緑色(G)、黒色(K)の4色を使用色として決定する。また、セパレータ110の色が黒色であれば、セパレータと同じ黒色、緑色などは認識率が低くなるので、例えば、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を使用色として決定する。
これら使用色の情報は、後述する「着色規則」としても設定される。
【0067】
次に、ステップS19では、ステップS17で決定した使用色を用いて、各情報の種類に対応するセル群のa個のセルの色を設定して、ステップS21に移行する。
本実施形態では、セパレータ110の色が白色の場合と、黒色の場合との双方に対して各情報の種類に対応するセル群のa個のセルの色を設定する。
また、情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように設定を行う。
【0068】
図5および図6(b)の例では、セパレータ110の色が白色の場合に、シアン色(C)、マゼンタ色(M)、緑色(G)、黒色(K)の4色を使用色としているので、例えば、10進数の「0」に対しては、左側のセルにシアン色(C)を、右側のセルにマゼンタ色(M)を設定し、「1」に対しては、左側のセルにシアン色を、右側のセルに緑色(G)を設定する。このようにして、10進数の0〜9に対して色を設定する。
【0069】
なお、本実施形態においては、二次元コード100における情報の配列方向を識別できるようにするために、第1行の先頭のセル群Cg1を方向識別用に用いている。従って、方向識別用の情報についても、例えば、左右両方のセルに黒色といったように色を設定する。
セパレータ110の色が黒色の場合も、白色の場合と同様に、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を用いて、10進数0〜9、および方向識別情報に対してセル群の各セルの色を設定する。
【0070】
次に、ステップS21では、ステップS19で設定した情報に基づき、エンコード情報を生成して、ステップS23に移行する。
本実施形態では、セパレータ110の色が白色の場合と、黒色の場合との双方に対してそれぞれエンコード情報を生成する。
また、エンコード情報は、例えば、図7(a)および(b)に示すように、情報の種類と、該情報の種類毎に対応するセルの色の組み合わせと、各色の組み合わせに対応するコード値とが対応付けられたデータテーブルとなる。なお、図7(a)は、セパレータ110の色が白色のものに対応するエンコード情報を示し、図7(b)は、セパレータ110の色が黒色のものに対応するエンコード情報を示す。
【0071】
図7(a)において、例えば、「C−C」であれば、セル群Cgの左右両方のセルの色がシアン色となることを示し、例えば、「C−G」であれば、セル群Cgの左側のセルの色がシアン色、右側のセルの色が緑色であることを示す。つまり、「−」の左側の英字で示される色がセル群の左側のセルの色に対応し、「−」の右側の英字で示される色がセル群の右側のセルの色に対応する。図7(b)についても同様である。
また、コード値は、例えば、シアン色を「0」、マゼンタ色を「1」、黄色を「2」、黒色を「3」、赤色を「4」、緑色を「5」、青色を「6」、白色を「7」とした場合の色の組み合わせに対する2桁の数字となる。例えば、「C−C」であれば「00」、「C−G」であれば「05」となる。
【0072】
次に、ステップS23では、ステップS22で生成したエンコード情報を、記憶装置70に記憶して、ステップS11へと移行する。
つまり、作成指示を受信する毎に、取得したエンコード対象情報に対応するエンコード情報が生成され、生成されたエンコード情報が記憶装置70に記憶される。
なお、セパレータ110の2色(白色および黒色)についてそれぞれエンコード情報を生成する例を説明したが、セパレータ110の色を予め1色に固定しておき、その固定色のみに対して上記セルの色の設定処理(S19)、エンコード情報の生成処理(S21)を行うようにしてもよい。
【0073】
また、図5に例示したエンコード対象情報について、図6(b)に示すように、セル群を構成するセルの数を2個とする例を説明したが、この構成に限らず、3個以上のセルでセル群を構成することも可能である。
また、エンコード対象情報の内容や、使用可能な色数、二次元コードの構成などによっては、1個、または、3個以上のセルでセル群を構成することも可能である。
【0074】
また、図5に例示したエンコード対象情報について、セパレータ110が白色の場合に、シアン色、マゼンタ色、緑色、黒色の4色を使用色とし、セパレータ110の色が黒色の場合に、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を使用色としたが、この構成に限らない。先述したように、撮影環境や、カメラの性能等に応じて色の認識率は変化するので、状況に応じて最適な認識率となるように他の色の組み合わせを使用色として設定することも可能である。
【0075】
(3−1)エンコード処理
次に、二次元コードリーダ1において行われるエンコード処理の処理手順を、図8〜図11に基づいて説明する。
ここで、図8は、エンコード処理の処理手順の一例を示すフローチャートである。また、図9は、エンコード対象である情報群の一例を示す図である。また、図10は、セパレータ110が白色の場合の第1情報群をエンコードしてなる二次元コード100の一例を示す図である。また、図11は、セパレータ110が黒色の場合の第1情報群をエンコードしてなる二次元コード100の一例を示す図である。
【0076】
エンコード処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図8に示すように、まず、ステップS31へと移行する。
ステップS31では、入力装置74を介して、ユーザからのエンコード情報の設定指示の入力があったか否かを判定し、設定指示の入力があったと判定した場合(Yes)は、ステップS33に移行し、そうでない場合(No)は、ステップS39に移行する。
【0077】
ステップS33に移行した場合は、記憶装置70に記憶されているエンコード情報の一覧を表示装置72に表示して、ステップS35に移行する。例えば、エンコード情報のファイル名の一覧を表示する。本実施形態では、GUIによって、ユーザが、入力装置74を介して簡易に所望のエンコード情報の選択を行うことが可能となっている。
ステップS35では、入力装置74を介して、ユーザがエンコード情報を選択したか否かを判定し、選択したと判定した場合(Yes)は、ステップS37に移行し、そうでない場合(No)は、選択されるまで判定処理を繰り返す。
【0078】
ステップS35においてエンコード情報が選択されステップS37に移行した場合は、選択されたエンコード情報をエンコード処理に用いる情報として設定して、ステップS31に移行する。
例えば、図7に示す、エンコード情報AおよびBのうち、エンコード情報Aが選択された場合は、エンコード情報Aをエンコード処理に用いる情報として設定し、エンコード情報Bが選択された場合は、エンコード情報Bをエンコード処理に用いる情報として設定する。
【0079】
一方、ステップS31において、エンコード情報の設定指示の入力がなくステップS39に移行した場合は、エンコード対象の情報群を入力して、ステップS41に移行する。
ここで、情報群の入力は、エンコード対象の情報群が予めファイルとして記憶装置70に記憶してある場合は、その記憶されたファイルの一覧を表示装置72により画面に表示し、その一覧の中からユーザが入力装置74を介して所望のファイルを選択し、記憶装置70からRAM62などのワークメモリへと読み出す処理となる。この場合に、情報群が複数ある場合は、自動的に連続して入力されるようにしてもよい。
【0080】
一方、エンコード対象の情報を、入力装置74を介してユーザが直接入力する場合は、入力装置74により画面に表示した入力欄などへの入力処理となる。
ここで、入力される情報群は、例えば、図5に示すエンコード対象情報に対応する情報群の場合は、図9に示すように、17桁の10進数となる。つまり、各情報群は、「0」、「1」、・・・、「8」、「9」といった10進数の各桁を表す単位情報(1桁の数字)の情報列(数字列)となる。なお、図9に示す情報群は、図書の特定に用いられるISBNコードの一例を示している。
【0081】
ステップS41では、ステップS39において入力された情報群に対する、入力装置74を介したユーザからのエンコード指示の入力があったか否かを判定し、エンコード指示の入力があったと判定した場合(Yes)は、ステップS43に移行する。一方、エンコード指示の入力が無い場合(No)は、入力があるまで判定処理を繰り返す。
ステップS43に移行した場合は、エンコード指示の入力に応じて、ステップS37で設定されたエンコード情報に基づきステップS39で入力された情報群をエンコードして、ステップS45に移行する。
【0082】
以下、図9に示す第1情報群「01234567890123452」を、図7(a)に示すエンコード情報Aを用いてエンコードする場合を例に挙げて、エンコード処理について具体的に説明する。
二次元コード100は、図6(b)に示すように、セル群Cg1〜Cg18の18個のセル群に分かれている。
【0083】
先述したように、セル群Cg1は、方向識別用の情報をエンコードするのに用いられる。このように方向識別用のセル群を左上のセル群Cg1に位置させた場合は、情報の方向が左から右に向かう方向となる。具体的に、セル群Cg1の右隣のセル群Cg2を先頭として、第1行目はCg2→Cg6の方向に情報の順番が決まる。そして、第2行目は、Cg6に続いてCg7→Cg12の方向に情報の順番が決まり、第3行目は、Cg12に続いてCg13→Cg18の方向に情報の順番が決まる。この情報の順番は、第1情報群の上位桁(左)から下位桁(右)へと向かう各桁の数字の並び順(0→1→2→・・・8→9→0→・・・4→5→2)に対応する。
つまり、セル群Cg2〜Cg18の17個のセル群を用いて、第1情報群の17桁の10進数をエンコードすることになる。
【0084】
まず、セル群Cg1の2つのセルは、方向識別用の情報をエンコードするため、図7(a)に示すエンコード情報から、両方とも黒色(K−K)となる。
次に、セル群Cg2は、第1情報群の最上位桁(一番左端)の数字「0」をエンコードすることになるので、図7(a)に示すエンコード情報から、左側のセルがシアン色(C)、右側のセルがマゼンタ色(M)となる。つまり「C−M」となる。
【0085】
同様に、セル群Cg3は2番目の数字「1」を、セル群Cg4は3番目の数字「2」を、セル群Cg5は4番目の数字「3」を、セル群Cg6は5番目の数字「4」をそれぞれエンコードすることになる。
従って、図7(a)のエンコード情報Aから、これらのエンコード結果は、セル群Cg3は「C−G」、セル群Cg4は「C−C」、セル群Cg5は「M−C」、セル群Cg6は「M−G」となる。
【0086】
さらに、セル群Cg7は6番目の数字「5」を、セル群Cg8は7番目の数字「6」を、セル群Cg9は8番目の数字「7」を、セル群Cg10は9番目の数字「8」を、セル群Cg11は10番目の数字「9」を、セル群Cg12は11番目の数字「0」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図7(a)のエンコード情報Aから、セル群Cg7は「M−M」、セル群Cg8は「G−M」、セル群Cg9は「G−M」、セル群Cg10は「G−G」、セル群Cg11は「K−C」、セル群Cg12は「C−G」となる。
【0087】
さらに、セル群Cg13は12番目の数字「1」を、セル群Cg14は13番目の数字「2」を、セル群Cg15は14番目の数字「3」を、セル群Cg16は15番目の数字「4」を、セル群Cg17は16番目の数字「5」を、セル群Cg18は17番目の数字「2」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図7(a)のエンコード情報Aから、セル群Cg13は「C−K」、セル群Cg14は「C−C」、セル群Cg15は「M−C」、セル群Cg16は「M−G」、セル群Cg17は「M−M」、セル群Cg18は「C−C」となる。
【0088】
また、上記ステップS37において、図7(b)に示すエンコード情報Bが設定された場合は、そのエンコード結果は、セル群Cg1が「W−W」、セル群Cg2が「B−R」、セル群Cg3が「B−Y」、セル群Cg4が「B−B」、セル群Cg5が「R−B」、セル群Cg6が「R−Y」となる。
さらに、セル群Cg7が「R−R」、セル群Cg8が「Y−R」、セル群Cg9が「Y−R」、セル群Cg10が「Y−Y」、セル群Cg11が「W−B」、セル群Cg12が「B−Y」となる。
【0089】
なおさらに、セル群Cg13が「B−W」、セル群Cg14が「B−B」、セル群Cg15が「R−B」、セル群Cg16が「R−Y」、セル群Cg17が「R−R」、セル群Cg18が「B−B」となる。
なお、上記各セル群のエンコード結果は、RAM62などのメモリに一時保存される。
ステップS45では、RAM62に一時保存されているエンコード結果の情報を、少なくとも、二次元コード100の基本情報(外形形状の情報、セルの配列構成の情報、セパレータ110の色情報など)と、エンコード処理で使用したエンコード情報とに対応付けて記憶装置70に記憶して、ステップS47に移行する。
【0090】
ステップS47では、ユーザからの入力装置74を介した終了指示が入力されたか否かを判定し、入力されたと判定した場合(Yes)は、一連の処理を終了し、そうでない場合(No)は、ステップS31に移行する。
このようにして作成されたエンコード情報は、セルの基本情報に基づきカラー画像データ化される。例えば、エンコード情報Aを用いて第1情報群をエンコードした場合は、図10に示す二次元コードが形成される。
つまり、図10に示す二次元コード100は、17桁の10進数が、各セルの背景色となるセパレータ110の色が白色の場合に比較的認識率の高い、シアン色、マゼンタ色、緑色および黒色の4色を用いてエンコードされたものとなる。
【0091】
一方、エンコード情報Bを用いて第1情報群をエンコードした場合は、図11に示す二次元コードが形成される。
つまり、図11に示す二次元コード100は、17桁の10進数が、各セルの背景色となるセパレータ110の色が黒色の場合に比較的認識率の高い、赤色、青色、黄色および白色の4色を用いてエンコードされたものとなる。
【0092】
また、二次元コード100は、その利用時において、カラー画像を携帯端末などに表示したり、二次元コードのカラー画像を印刷装置73でカラー印刷し、カラー印刷した二次元コードの画像を物品に貼り付けたりすることで利用される。
例えば、図9に例示したISBNコードをエンコードしてなる二次元コード100の場合は、紙やシール等にカラー印刷した二次元コードを図書の背表紙等に貼り付けて利用する。
【0093】
(3−3)情報識別処理
次に、二次元コードリーダ1が、カメラ76からの画像データを受信中において、入力装置74を介したユーザからの指示入力に応じて実行される情報識別処理の処理手順を、図に基づいて説明する。
ここで、図12は、情報識別処理の処理手順の一例を示すフローチャートである。
情報識別処理が開始されると、まず、カメラ76で撮影された撮影画像データからのエッジ画像データの生成、エッジ画像データからの候補領域の抽出、候補領域が有効か否かの判定、原画像における有効な候補領域に対応する領域について二次元コードの各セルに対応する領域の色の判定(補正、再判定等含む)、有効な候補領域に対応する領域が特徴パターンを含むか否かの判定といった手順を経て、二次元コードの領域を検出する。
【0094】
次に、検出された二次元コードの領域に対して、各セル領域の色の判定結果とエンコード情報との照合を行い、検出した二次元コードでエンコードされている情報を識別(デコード)する。
情報識別処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図12に示すように、まず、ステップS100へと移行する。
【0095】
ステップS100では、入力装置74を介して、ユーザからの指示入力があったか否かを判定し、指示入力があったと判定した場合(Yes)は、ステップS102に移行し、そうでない場合(No)は、入力されるまで判定処理を続行する。
なお、本実施形態において、指示入力は、表示装置72に表示されたカメラ76の撮影画像を見ながらユーザが入力装置74を介して行う処理となる。
【0096】
例えば、図書館などにおいて、本棚に格納された複数の図書の背表紙にそれぞれ付された二次元コード100を撮影領域内に入れて撮影を行い、その撮影画像を見ながらユーザが指示入力を行う。
ステップS102に移行した場合(Yes)は、RAM62または記憶装置70から、指示入力のあったタイミングに表示していた画像データまたは該画像データに加えて複数フレーム分の画像データを取得して、ステップS104に移行する。
【0097】
具体的に、設定されたモードや仕様に応じて、指示入力が行われたタイミングの1枚の画像、または、指示入力のタイミングを起点にして予め設定された複数フレームの画像を取得する。そして、これらの画像データに対して以降の処理が実行される。但し、説明の便宜上、本実施形態では、1枚の画像を取得し、取得した1枚の画像について処理を行うこととする。
【0098】
ステップS104では、二次元コードを特徴づける情報を規定したテンプレートを記憶装置70から読み出して、ステップS106に移行する。
ここでいうテンプレートは、候補領域を規定する領域規則、候補領域が有効か否かを判定する形状情報、二次元コードにおける特徴的なパターン、二次元コードにマークとして付けられる色(色数,色の種類)の着色規則などを示す情報である。
【0099】
これらのうち、「領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などとなる。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形形状の領域などの矩形形状を角度を変えて見た(撮影した)場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの画質等によって真円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規則でもよいし、エッジ成分の分布パターン(エッジ成分の分布状態、分布されているエッジ成分の配置など)が特定のパターンの領域を抽出するといった規則でもよい。ただ、以降の処理による候補領域が有効か否かの判定などに要する処理負担を軽減するためには、複数の項目を選択して規定したものとすることが望ましく、この場合、候補領域としての抽出数が少なくなる結果、処理負担の軽減に伴って処理時間の短縮が実現されることとなる。
【0100】
また、「形状情報」とは、「領域規則」に基づいて抽出された候補領域が有効か否かを判定する際に用いるもので、例えば、抽出された候補領域の外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状(理想の形状)に係る情報となる。
また、「特徴的なパターン」とは、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンなどのことである。
【0101】
例えば、図2および図3に例示した二次元コード100であれば、セルC11〜Cpqの各セルの配置パターンや、セルC11〜Cpqの各セルまたは一部のセルに付けられた複数の色などにより、二次元コードの領域を示す特徴的なパターンが形成されている。
つまり、各セルに付された複数の色やその組み合わせパターン、該複数の色の付されたセルの配置順等が特徴的なパターンを形成している。
【0102】
この場合に、特定のセルに付される色に何らかの情報を対応付けておき、この情報を用いた計算処理などによって、特徴的なパターンが含まれているか否かを判定することも可能である。つまり、各セルの配置パターンや、各セルの色などが正しいパターンおよび色となっているかを計算処理によって確認できる情報(例えば、誤り検出符号など)を対応付ける。
【0103】
この場合は、例えば、一部のセルに付された色に対応するコード値を用いて計算処理を行い、この計算結果の数値等が正しいパターンを示す数値となっているか否か等で判定を行うことになる。そのため、テンプレートにおける特徴的なパターンは、直接的なパターンだけではなく、間接的に正しいパターンを示す数値などの情報として設定される場合もある。
なお、この特徴的なパターンとしては、セパレータ110の領域もパターンに含ませる構成や、ヘッダー領域や特定セル等を設けて、これらのセルで特徴的なパターンを形成する構成など、別の構成により実現するものとしてもよい。
【0104】
また、「着色規則」とは、二次元コードにおける複数のセルそれぞれに付すべき色の規則であり、該当セルにてエンコードすべき情報、および、該当セルと隣接するセルに付された色に応じて決められるものである。例えば、エンコード時の使用色、エンコードする各種情報の種類に対して設定されている色の組み合わせ、未使用となっている色の組み合わせなどの情報を含む。
【0105】
ステップS106では、以降の処理で参照する変数X,Yを初期化(0→X,1→Y)して、ステップS108に移行する。
ステップS108では、ステップS102で取得した画像データに対してエッジ画像の生成処理を実行してエッジ画像データを生成し、ステップS110に移行する。なお、このエッジ画像生成処理における具体的な処理手順については後述する。
【0106】
ステップS110では、ステップS108において生成されたエッジ画像データに基づいて、このエッジ画像から、二次元コードからなる候補領域それぞれの位置を特定して、ステップS112に移行する。ここでは、ステップS104にて読み出されたテンプレートにおける「領域規則」に基づいて、第Y番目のエッジ画像から、二次元コードからなる候補領域を規定する画像中の座標それぞれが特定される。
【0107】
本実施形態では、二次元コード100が図2および図3などに示す外形形状(矩形形状)であることから、「領域規則に従った領域」として、線形化された輪郭部によって閉領域となる矩形形状の領域を候補領域として全て特定する。また、この「領域規則に従った領域」には、領域規則に従った領域だけでなく、その領域として許容される誤差範囲のパラメータで形成された領域も含まれる。例えば、誤差範囲内であれば、矩形形状だけでなく、台形形状、平行四辺形状、菱形形状なども含まれる。
【0108】
ステップS112では、ステップS110において、候補領域が特定されたか否かを判定し、特定されたと判定した場合(Yes)は、ステップS114に移行し、そうでない場合(No)は、ステップS140に移行する。
ステップS114に移行した場合は、ステップS110において特定された候補領域(座標情報)それぞれをリストに登録して、ステップS116に移行する。
ステップS116では、ステップS114においてリストに登録された候補領域のうち、以降の処理で処理対象となっていない(未処理の)候補領域があるか否かを判定し、あると判定した場合(Yes)は、ステップS118に移行し、そうでない場合(No)は、ステップS138に移行する。ここでは、リストに候補領域が登録されていない場合にも、未処理の候補領域がないと判定される。
【0109】
ステップS118に移行した場合は、リストに登録されている未処理の候補領域のうち、いずれか1の候補領域を選択して、ステップS120に移行する。
ステップS120では、ステップS118において選択された候補領域が有効なものであるか否かを判定する有効領域判定処理を実行して、ステップS122に移行する。なお、この有効領域判定処理における具体的な処理手順については後述する。
【0110】
ステップS122では、ステップS120の判定結果に基づき、ステップS118で選択した候補領域が、有効なものであるか否かを判定する。そして、有効なものであると判定した場合(Yes)は、ステップS124に移行し、そうでない場合(No)は、ステップS116に移行し、以降、別の候補領域について上記同様の処理を行う。
ステップS124に移行した場合は、直前に行われた上記ステップS110において特定された候補領域(新規候補領域)が、過去に行われた上記ステップS110において特定された候補領域(抽出済み候補領域)と同じであるか否かを判定する。
【0111】
具体的に、新規候補領域が抽出済み候補領域に領域として所定割合以上重複している場合、または、新規候補領域および抽出済み候補領域の一方が他方に包摂されている場合に、新規候補領域が抽出済み候補領域と同じであると判定される。
本実施形態では、候補領域が多角形となるため、エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが、別のエッジ画像における抽出済み候補領域と一致するか否かは、候補領域として形成された多角形における1以上の頂点Pnが抽出済み候補領域として形成された多角形におけるいずれかの頂点Poから一定範囲(例えば一定の半径r距離)内に位置しているか否かに応じて判定することとしてもよい(図13参照)。
【0112】
なお、ここでいう「いずれかの頂点から一定範囲内」とは、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域とが一致する場合に、両方の候補領域が位置しうる位置関係で決まる範囲内とすればよく、上記一定の半径r距離内に限られない。
そして、ステップS124において新規候補領域が過去に行われた上記ステップS110において特定されてRAM62または記憶装置70に格納されたいずれかの抽出済み候補領域と同じであると判定した場合(Yes)は、ステップS116に移行し、以降、別の候補領域について上記同様の処理を行う。
【0113】
一方、ステップS124において新規候補領域が抽出済み候補領域と同じではないと判定された場合(No)は、ステップS126に移行する。
ステップS126に移行した場合は、この時点における新規候補領域を情報の識別に適したものとなるように補正して、ステップS128に移行する。
ここでは、新規候補領域の形状、角度が補正される。具体的には、例えば、処理対象の領域が斜めに配置されていた場合や、正方形になっていない歪んだ形状となっている場合に、そのようなズレを補正すべく回転や、座標軸に合わせた延長・短縮などが行われる。
【0114】
なお、領域そのものを補正するのではなく、これ以降の処理で二次元コードか否かの判定、および、ここからの情報の識別を行う際に基準とする座標軸の角度や長さを補正することとしてもよい。
さらに、このステップS126では、新規候補領域の色成分が、各セルにおける色の識別性(認識率)を高めるべく補正される。
【0115】
具体的に、原画像データがRGB色空間等のCMYK以外の色空間で色が表現されたカラー画像データである場合に、各ピクセル値を、CMYKの色空間で色が表現されたカラー画像データへと変換する。これにより、以降の色判定処理において、例えば、RGB色空間では認識しにくい色(例えば、セパレータ110が黒色の場合の緑色)の認識精度を向上することができる。本実施形態では、CMYK以外の色空間(本実施形態ではRGB色空間)の値を、CMYK色空間の値に変換する変換テーブル(色変換用LUT(Look Up Table))が記憶装置70に記憶されており、この色変換用LUTを用いて色変換を行う。
【0116】
但し、本実施形態では、情報のエンコード時に比較的認識率の高い色を優先して用いてセルに色を付しているので、4色などの使用する色数が比較的少ない場合に、この変換処理を省略することも可能である。つまり、RGB色空間の画像データのままで以降の処理を実施することも可能である。その場合は、後述する色の判定処理において、色の成分領域(判定領域)との比較処理ではなく、RGB色空間の対応色そのもの(4色のうちのいずれか1色)との比較処理を行うことになる。
【0117】
また、補正の必要が無い場合は、上記いずれの処理も行わずにステップS128に移行する。
ステップS128では、上記ステップS126において補正された候補領域につき、その候補領域における二次元コードのセルに対応する領域にそれぞれに付された色を特定するための色判定処理を行って、ステップS130に移行する。
【0118】
この色判定処理は、上記ステップS126において補正された候補領域を引数として実行され、この候補領域におけるセルに対応する領域それぞれに付された色が戻り値となる。なお、この色判定処理における具体的な処理手順については後述する。
ステップS130では、上記ステップS128の色判定処理の結果に基づき、上記ステップS102において取得された画像データで示される原画像のうち、上記ステップS126において補正された候補領域に対応する対応領域に、二次元コードとしての特徴的なパターンが含まれているか否かを判定する。
【0119】
ここでは、色の判定された各セルの領域について、これらのセルやマークのパターンが、上記ステップS104において読み出されたテンプレートにおける「特徴的なパターン」で規定されたセルの配置パターンやマークのパターンと一致しているか否かを判定する。
あるいは、特定の複数のセルに付された色に対応するコード値を用いて、採用した誤り検出手法に応じた計算処理を行い、その計算結果が、「特徴的なパターン」で規定された誤りの無い場合の数値(例えば、誤り検出符号に対応するセルの色に対応するコード値)と一致しているか否かを判定する。
【0120】
そして、一致している場合は、コード領域(セルの領域)に二次元コードとしての特徴的なパターンが含まれていると判定し、一致していない場合は、コード領域に二次元コードとしての特徴的なパターンが含まれていないと判定する。
なお、本実施形態において、図10および図11に例示した二次元コード100は、ISBNコードをエンコードしたものとなっており、最後の桁に対応するセル群Cg18の示す数値がチェックディジットとなっている。従って、方向識別用のセル群Cg1の検出に加えて、このチェックディジットを利用して、特徴的なパターンを含むか否かを判定することも可能である。
【0121】
つまり、セル群Cg2〜Cg17に付された各色の組み合わせに対応する数字に、ISBNで用いられているモジュラス10ウェイト3という計算法を適用して、チェックディジットを算出する。この算出値が、セル群Cg18に付された色の組み合わせに対応する数字と一致するか否かによって、特徴的なパターンを含むか否かの判定を行うことが可能である。この場合は、情報の識別(デコード)も同時に行われる。
【0122】
そして、ステップS130において、二次元コードとしての特徴的なパターンが含まれていないと判定した場合(No)は、ステップS116に移行し、以降、別のコード領域について上記同様の処理を行う。
一方、ステップS130において、二次元コードとしての特徴的なパターンが含まれていると判定した場合(Yes)は、ステップS132に移行する。
【0123】
ステップS132に移行した場合は、この時点における新規候補領域を二次元コードの領域として検出して、ステップS134に移行する。
この検出処理は、新規候補領域の座標情報に基づき、原画像から新規候補領域を切り出して(複製画像を生成して)、記憶装置70に記憶する処理となる。
ステップS134では、上記ステップS132において検出された二次元コードの領域につき、上記ステップS128において特定された色に基づいて、その二次元コードで示される情報を、セルCそれぞれに付された色およびその組み合わせに基づいて識別して、ステップS136に移行する。
【0124】
この識別処理においては、まず、方向識別用のセル群Cg1を検出する。例えば、図10に示す二次元コード100であれば、セパレータ110の色が白色となっているので、Cg1の位置を特定するために、左上端または右下端に位置するセル群のうち、2つのセルの色の組み合わせが「K−K」となるものを検出する。
つまり、「K−K」の組み合わせとなっているセル群が方向識別用のセル群Cg1となり、この検出によって、セル群の配列方向を判定することができる。従って、セル群Cg1として検出されたセルの領域の右隣のセルの領域から順に、上記色判定処理において判定された色と、エンコード時に用いた図7(a)に示すエンコード情報Aとから、各色の組み合わせで示される情報(ここでは0〜9のいずれかの数字)を識別する。
【0125】
ここで、ISBNコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、そのときに識別した情報を採用することができるので、この処理を省略して次のステップに移行することができる。
ステップS136では、ステップS134において識別された情報を、RAM62または記憶装置70に格納して、ステップS138に移行する。
なお、ISBNコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、ステップS130で識別された情報を、RAM62または記憶装置70に格納することになる。
【0126】
ステップS138では、変数Xをインクリメント(X+1→X)して、ステップS140に移行する。
ここまで示したように、上述したステップS116〜S136までが行われるのは、ステップS110において特定された候補領域が二次元コードの体をなしていたことを意味している。そのため、このステップS138では、この変数Xをインクリメントすることにより、二次元コードの領域として検出かつ識別された候補領域の数を積算していることになる。
ステップS140では、この時点で変数Xが所定数以上になっているか否かを判定する。つまり、所定数以上の候補領域が二次元コードの体をなしていたか否かを判定する。
【0127】
そして、ステップS140において、変数Xが所定数以上になっていると判定した場合(Yes)は、ステップS140に移行し、変数Xが所定数以上になっていないと判定した場合(No)は、ステップS142に移行する。
つまり、上記ステップS116〜S140は、二次元コードとして検出かつ識別された候補領域の数が所定数以上とならない限り、リストに登録された全てのコード領域について繰り返し行われる。
その後、全ての候補領域について上記ステップS116〜S140が行われたら、上記ステップS116において未処理の候補領域がないと判定されて、ステップS142に移行し、この時点での変数Yの値が、変数nの値より小さい値(Y<n)となっているか否かを判定する。
【0128】
そして、ステップS142において、変数Yの値が変数nの値より小さい値となっていると判定した場合(Yes)は、ステップS144に移行する。
ステップS144に移行した場合は、変数Yをインクリメント(Y+1→Y)して、ステップS108に移行し、上記ステップS108〜S144の処理を行う。
これ以降は、次のエッジ画像に基づいて上記ステップS110〜S144の処理が行われ、その処理の中で変数Xが所定数以上になれば、上記ステップS140で「Yes」と判定されて、ステップS146に移行する。一方、その処理の中で変数Xが所定数以上にならなければ、その次のエッジ画像についての処理が繰り返し行われることとなる。
さらに、ステップS142において、変数Yの値が変数nの値以上の値となっていると判定した場合(No)は、変数Xの値に関係なく、一連の処理を終了する。
【0129】
(3−4)エッジ画像生成処理
続いて、図12のステップS108であるエッジ画像生成処理の処理手順の一例を図14に基づき説明する。図14(a)は、変数Yの値と画像種類およびしきい値との対応関係の一例を示す図であり、(b)は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
本実施形態において、エッジ画像の生成は、異なる複数種類の変換条件に基づいて行う。
具体的に、第1〜第i(1≦i)の変換条件に対応する第1〜第i番目のエッジ画像までが、それぞれ異なるしきい値で原画像をグレースケール化してなるグレースケール画像を二値化した画像の輪郭部を線形化した画像となる。
【0130】
また、第(i+1)〜第(i+j)の変換条件に対応する第(i+1)〜第(i+j)番目(1≦j)のエッジ画像までが、j種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像を予め設定されたしきい値で二値化した二値化画像の輪郭部を線形化した画像となる。
特に、各色成分画像について、予め設定されたしきい値としてk種類(1≦k)のしきい値を用いて二値化を行う場合は、第(i+1)〜第(i+j×k)の変換条件に対応する第(i+1)〜第(i+j×k)番目のエッジ画像までが、j種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像をk種類のしきい値それぞれで二値化した二値化画像の輪郭部を線形化した画像となる。
【0131】
従って、最大で「i+j×k」種類の変換条件に基づいて「i+j×k」種類のエッジ画像を生成することができる。
ここでいう「i」および「k」は、予め用意されたしきい値の種類によって値が決定し、「j」は、原画像に用いられている色空間(表色系)の種類によって規定される色成分数によって値が決定する。例えば、しきい値の種類がそれぞれ3種類で、色空間がRGB色空間であれば、「i」および「k」の値は3、「j」の値は3となる。
【0132】
本実施形態では、図14(a)に示すように、変数Yの値に対応する1〜6の数値と、変換条件の種類を示すエッジ画像を生成する際に用いる画像の種類としきい値とが対応付けられてデータテーブルとして記憶装置70に記憶されている。なお、図14(a)の例は、「i」の値が3、「j」の値が3、「k」の値が1となる例である。ここで、変数Yの上限値は、変数nにセットされる値によって決まるが、本実施形態では、ユーザが、要求する二次元コードの検出精度に応じた値を任意にセット可能に構成されている。なお、図14(a)の例では、変数nの最大値は「6」となる。
エッジ画像生成処理が開始されると、図14(b)に示すように、まず、ステップS200に移行し、変数Yの値が3以下となっているか否かを判定する。
【0133】
そして、ステップS200において、変数Yの値が3以下となっていると判定した場合(Yes)は、ステップS202に移行し、変数Yの値が3よりも大きいと判定した場合(No)は、ステップS208に移行する。
ステップS202に移行した場合は、上記図12のステップS102で取得した原画像のデータを複製し、該複製した原画像データに基づき、グレースケール画像を生成して、ステップS204に移行する。
【0134】
ここでは、原画像のデータが、RGBの各色8ビット(0〜255)のカラー画像データであるとして、この画像データからグレースケール画像を生成する。
なお、必須ではないが、原画像データのピクセル数が膨大(例えば、1200万画素等)な場合は、処理負荷および処理時間を考慮して、検出精度を損なわない程度に、解像度をこれよりも低解像度へと変換する処理を行うようにしてもよい。
【0135】
また、グレースケール画像の生成方法としては、例えば、中間値法、平均法等の周知の生成方法がある。
中間値法は、R、G、Bの3つの色成分の値のうち、最大値と最小値の2つを足して2で割ったものを利用してグレースケール化する方法である。
平均法は、平均の取り方によって、算術平均(相和平均)法、幾何平均(相乗平均)法、加重平均法等がある。
【0136】
算術平均法は、R、G、Bの3つの色成分の値を算術平均(足して3で割る)して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
幾何平均法は、R、G、Bの3つの色成分の値を幾何平均(各要素の値の対数値を算術平均)して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
【0137】
加重平均法は、R、G、Bの3つの色要素の値に対して、重み付けをして3で割り、平均を取ってグレースケール化する方法である。この重み付けの係数の内容によって、NTSC加重平均法、HDTV加重平均法等がある。NTSC加重平均法は、日本やアメリカのテレビ放送で利用されている輝度信号(明るさ)の分離方法のものと同じである。また、HDTV加重平均法は、デジタルハイビジョン放送を映す際に基準とされる、HDTV規格に基づいて重み係数が設定されたものである。
グレースケール画像の生成方法は、処理速度や検出精度等を考慮して適切なものを用いることが望ましい。
【0138】
そして、上記いずれかの方法を用いた場合は、算出された1つの輝度値を、R、G、Bの3つの色成分の値(R=G=B)とする。
なお、ここでは、グレースケール画像を、R,G,Bの各色成分の値を輝度値に変換することで生成する例を説明したが、輝度以外に、明度等によってグレースケール画像を生成するようにしてもよい。
このようにして、原画像データの各ピクセル値をグレースケール値に変換することで、グレースケール画像データが生成される。
【0139】
ステップS204では、ステップS202で生成したグレースケール画像データを、現時点の変数Yの値に対応したしきい値により二値化してなる二値化画像データを生成して、ステップS206に移行する。
具体的に、グレースケール画像データの各色のピクセル値が8ビットの階調値で表現されているときに、しきい値と、グレースケール画像の各ピクセル値とを比較し、ピクセル値がしきい値以下のときに、ピクセル値を「0」に変換し、ピクセル値がしきい値より大きいときに、ピクセル値を「255」に変換することで二値化を行う。
【0140】
ここでは、図14(a)に示すように、変数Yの値1、2、3に対して、120、150、200の3種類のしきい値がそれぞれ用意されている。この二値化のしきい値は、二次元コードの「領域規則」および「特徴的なパターン」に応じ、以降の処理において有効な候補領域を抽出し、適切に二次元コードを識別するのに適した値として定められたものである。
従って、変数Yの値が1のときは、しきい値120を用いて上記ステップS202で生成したグレースケール画像を二値化し、変数Yの値が2、3のときは、しきい値150、200をそれぞれ用いて上記ステップS202で生成したグレースケール画像を二値化する。
【0141】
例えば、しきい値120のときに、グレースケール画像におけるあるピクセル値が(80,80,80)である場合は、二値化後の値は、黒色に対応する(0,0,0)となる。一方、しきい値120のときに、グレースケール画像におけるあるピクセル値が(160,160,160)である場合は、二値化後の値は、白色に対応する(255,255,255)となる。
【0142】
このようにして、上記ステップS202で生成したグレースケール画像データの各ピクセル値を二値化したものが、原画像データに対する二値化画像データとなる。
ステップS206では、二値化画像データに対して、二値化画像中の物体(オブジェクト)の輪郭部を線形化してなるエッジ画像データを生成して、一連の処理を終了し、元の処理に復帰する。
【0143】
本実施形態では、公知のブレゼンハムの線分描画アルゴリズムによって、二値化画像中に存在する物体の輪郭部を線形化する。なお、本実施形態では、線形化後の輪郭線を形成していない不要なピクセルは除去(例えば、ピクセル値を(0,0,0)に変換)する。
ここで、ブレゼンハムの線分描画アルゴリズムは、割り算等を用いずに全てを整数演算のみで行うことができるため、高速に線分を描画することができる。
このようにして、二値化画像中の物体の輪郭部を線形化した画像のデータが、エッジ画像データとなる。
【0144】
一方、ステップS200において変数Yの値が3よりも大きくてステップS208に移行した場合は、原画像のデータから、変数Yの値に対応した色成分を抽出して、ステップS210に移行する。
ここでは、図14(a)に示すように、変数Yの値4、5、6に対して、赤色、緑色、青色の色成分をそれぞれ抽出する。
例えば、変数Yの値が4であり、原画像データのあるピクセル値が(120,80,45)である場合は、赤色成分値(120,0,0)を抽出する。同様に、変数Yの値が5であれば、緑色成分値(0,80,0)を抽出し、変数Yの値が6であれば、青色成分値(0,0,45)を抽出する。
【0145】
このようにして、各色成分の値を抽出してなる画像データが、赤色成分画像データ、緑色成分画像データ、青色成分画像データとなる。
ステップS210では、ステップS208で生成した色成分画像データからグレースケール画像データを生成して、ステップS212に移行する。
グレースケール画像データの生成は、上記ステップS202と同様の処理となる。
【0146】
ステップS212では、ステップS210で生成したグレースケール画像に対して、予め設定されたしきい値で二値化を行い、二値化画像データを生成して、ステップS206に移行する。
ここでは、図14(a)に示すように、変数Yの値4、5、6に対して、共通のしきい値120が用意されている。
従って、上記ステップS210で生成したグレースケール画像データに対して、しきい値120を用いて二値化を行い、ステップS208で生成した色成分画像データに対する二値化画像データを生成する。
【0147】
そして、ステップS212で二値化画像データを生成後は、ステップS206に移行して、二値化画像中の物体の輪郭部を線形化してなるエッジ画像データを生成し、一連の処理を終了して、元の処理に復帰する。
なお、図14(a)に示す例では、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の種類を1種類としたが、この構成に限らず、第7以降の変換条件を設定して、複数種類のしきい値を用いて二値化を行う構成としてもよい。
【0148】
また、図14(a)に示す例では、原画像に対応するグレースケール画像に対してしきい値を小さい値から順に用いて二値化を行い、その二値化画像からエッジ画像を生成する処理を行う構成とした。さらに、原画像に対応するグレースケール画像を用いたエッジ画像の生成処理の後に、色成分画像に対応するグレースケール画像を二値化してエッジ画像を生成する処理を、赤、緑、青の色成分画像の順で行う構成としたが、この構成に限らない。
例えば、原画像に対応するグレースケール画像の二値化に用いるしきい値を別の順番で用いる構成、色成分画像に対応するグレースケール画像の二値化を別の色の順番で行う構成としてもよい。
【0149】
また、例えば、色成分画像を用いたエッジ画像の生成処理を原画像を用いた生成処理よりも先に行う構成、原画像と色成分画像とを用いたエッジ画像の生成処理を交互に行う構成、ランダムに行う構成など、別の順番で行う構成としてもよい。
また、色成分画像に対応するグレースケール画像の二値化を複数種類のしきい値を用いて行う場合は、そのしきい値を用いる順番も小さい方から順に行う構成だけに限らず、別の順番とする構成としてもよい。また、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の値は、原画像に対応するグレースケール画像の二値化に用いるしきい値と同じ値であってもよいし、異なる値であってもよい。
【0150】
また、図14(a)に示す例では、原画像に対するしきい値を3種類、色成分画像に対するしきい値を1種類、色成分画像数を3種類としたが、これらの組み合わせに限らず、異なる種類数の組み合わせとしてもよい。
また、図14(a)に示す例では、原画像および色成分画像の双方を用いてエッジ画像の生成を行うことが可能な構成としたが、この構成に限らず、原画像だけを用いてエッジ画像を生成する構成や、色成分画像だけを用いてエッジ画像を生成する構成など他の構成としてもよい。
【0151】
また、図14(a)に示す例では、原画像に対応するグレースケール画像を二値化する際の3種類のしきい値として、「120」、「150」、「200」を用いているが、これに限らず、別の値を用いる構成としてもよい。同様に、図14(a)に示す例では、色成分画像に対応するグレースケール画像を二値化する際のしきい値として、「120」を用いているが、これに限らず、別の値を用いる構成としてもよい。
【0152】
(3−5)有効領域判定処理
続いて、図12のステップS120である有効領域判定処理の処理手順を図15および図16に基づき説明する。
ここで、図15は、有効領域判定処理の処理手順を示すフローチャートである。また、図16(a)は、理想的な候補領域の形状例を示す図であり、(b)〜(e)は、誤差範囲外の形状例を示す図であり、(f)〜(g)は、誤差範囲内の形状例を示す図である。
候補領域の縦横比は、図16(a)に示すように、理想の領域形状における短辺の長さAと長辺の長さBとの比(A:B=A/B)となっていることが望ましい。また、候補領域の各辺間(四隅)の角度は、図16(a)に示すように、理想的には、いずれも90°であることが望ましい。
【0153】
しかし、上記ステップS110の候補領域の特定処理においては、矩形形状だけでなく台形形状等の形状も含む閉領域(閉四角領域)であれば何でも候補領域として特定するようになっているため、様々な外形形状の候補領域が特定されることになる。また、特定された候補領域が二次元コードのものであっても、撮影環境(撮影角度等)や撮影画像の画質等によって、形状が理想的な形状とならないこともある。そのため、厳密な判定を行ってしまうと、二次元コードの領域に該当する領域をも除外することになってしまう。そこで、本実施形態では、判定の際の縦横比および角度等の二次元コードの理想の形状情報に誤差範囲を設定している。
【0154】
ここでは、本実施形態の二次元コードの領域が、図2および図3などに示すように、矩形形状であることと、判定処理の処理負荷とを考慮して、二次元コードの理想的な縦横比と各辺間の角度とに誤差範囲が設定された形状情報に基づき有効領域か否かを判定する例を説明する。
有効領域判定処理が開始されると、図15に示すように、まず、ステップS300に移行し、選択された候補領域の縦横比が、テンプレートの形状情報に定められた縦横比の誤差範囲内か否かを判定する。
【0155】
例えば、図16(b)、(c)および(f)に示す候補領域のように、短辺の長さをC、長辺の長さをDとした場合に、縦横比は「C:D=C/D」となり、理想形との誤差drは、「dr=A/B−C/D」となる。そして、誤差範囲を「−dx〜+dx」とし、本実施形態では、drが「−dx〜+dx」の範囲内であれば、誤差範囲内であると判定し、「−dx〜+dx」の範囲外であれば、誤差範囲外であると判定する。
【0156】
そして、ステップS300において、候補領域の縦横比が誤差範囲外であると判定した場合(No)は、ステップS302に移行し、候補領域の縦横比が誤差範囲内であると判定した場合(Yes)は、ステップS304に移行する。
ステップS302に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図16(b)および(c)に示すように、理想の縦横比A:Bに対して極端に縦横比の異なる形状を排除することができ、これらの領域に対して以降の処理(図12のステップS124以降の処理)が行われるのを防ぐことができる。
【0157】
一方、縦横比が誤差範囲内であると判定されステップS304に移行した場合は、候補領域の各辺間で形成される角度が、テンプレートの形状情報に定められた角度の誤差範囲内か否かを判定する。
例えば、図16(d)〜(f)に示すように、各辺間(四隅)の角度をβ1〜β4とした場合に、理想形の角度との誤差dβ1〜dβ4は、理想形の角度90°から角度β1〜β4をそれぞれ減じたもの「dβ1〜dβ4=90°−β1〜90°−β4」となる。そして、誤差範囲を「−dy〜+dy」とし、本実施形態では、dβ1〜dβ4がいずれも「−dy〜+dy」の範囲内であれば誤差範囲内であると判定し、いずれか1つでも「−dy〜+dy」の範囲外であれば誤差範囲外であると判定する。
【0158】
そして、ステップS304において候補領域の各辺間の角度が誤差範囲外であると判定した場合(No)は、ステップS306に移行し、候補領域の各辺間の角度が誤差範囲内であると判定した場合(Yes)は、ステップS308に移行する。
ステップS306に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図16(d)および(e)に示すように、理想の角度に対して角度β1〜β4の少なくとも1つが誤差範囲外の角度となっている形状を排除することができ、これらの領域に対して以降の処理(図12のステップS124以降の処理)が行われるのを防ぐことができる。
【0159】
一方、角度が誤差範囲内であると判定されステップS308に移行した場合は、誤差範囲内と判定された候補領域を有効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
例えば、図16(f)に示す候補領域のように、角度β1〜β4の誤差dβ1〜dβ4がいずれも誤差範囲内(この例では、いずれも90°)で、縦横比の誤差drが「−dx〜+dx」の範囲内となる程度で縦横比のみが異なる場合に、この候補領域は除外されることなく、有効な候補領域と判定される。
【0160】
同様に、例えば、図16(g)に示す候補領域のように、縦横比の誤差drが「−dx〜+dx」の範囲内であるが、角度β1〜β4がいずれも90°とならずに斜めに歪んでいても、角度β1〜β4の誤差dβ1〜dβ4のいずれもが「−dy〜+dy」の誤差範囲内となる場合には、この候補領域は除外されることなく、有効な候補領域と判定される。
つまり、本実施形態では、縦横比および角度の双方が誤差範囲内に納まっている候補領域のみを有効な候補領域と判定する。
【0161】
(3−6)色判定処理
続いて、図12のステップS128である色判定処理の処理手順を図17に基づき説明する。
ここで、図17は、色判定処理の処理手順の一例を示すフローチャートである。
色判定処理が開始さると、図17に示すように、まず、ステップS400に移行して、図12のステップS130で検出された二次元コードの領域におけるセパレータ110の領域を特定(座標を特定)して、ステップS402に移行する。
【0162】
なお、検出された二次元コードの領域は、例えば、図2および図3などの形状姿勢において、左上のピクセルの座標を(0,0)として管理される。そして、セパレータ110の特定は、座標(0,0)から、行方向および列方向にピクセルを走査(ラスタスキャン)して、各ピクセルの値(色)が、セパレータ110の色(本実施形態では白(W)または黒(K))の判定領域に含まれているか否かを判定する。そして、ピクセルの色が判定領域に含まれていると判定したときに、そのピクセル(座標)をセパレータ110と判定する。そして、この座標情報をRAM62または記憶装置70に記憶する。
【0163】
ステップS402では、セパレータ110の座標情報に基づき、各セルの存在する領域を分割して、ステップS404に移行する。
具体的に、白色(W)または黒色(K)のセパレータ110に周囲(四辺)を囲まれた領域の座標を各セルの座標として、その座標情報をRAM62または記憶装置70に記憶する。
ステップS404では、以降の処理で参照する変数を初期化(0→ap,0→x,0→y)して、ステップS406に移行する。
【0164】
ステップS406では、セパレータ110の特定された二次元コードの領域における座標(x,y)のピクセルを選択して、ステップS408に移行する。
ステップS408では、変数apの値が予め定められた一定数以上か否かを判定し、一定数以上ではないと判定した場合(No)は、ステップS410に移行し、一定数以上であると判定した場合(Yes)は、ステップS422に移行する。
ステップS410に移行した場合は、選択したピクセルの値(色)が、二次元コードにおいて使用される複数の色それぞれを中心座標として広がる色空間上の判定領域のうち、いずれかの判定領域に含まれている(いずれの判定領域内に位置する)か否かを判定する。
【0165】
そして、ステップS410において、選択したピクセルがいずれかの判定領域内に含まれていると判定した場合(Yes)は、ステップS412に移行し、選択したピクセルがいずれの判定領域にも含まれていないと判定した場合(No)は、ステップS414に移行する。
ステップS412に移行した場合は、変数apをインクリメント(ap+1→ap)して、ステップS414に移行する。
ここでは、変数apをインクリメントすることで、判定領域に含まれていると判定されたピクセルの数を計数している。この判定結果(判定領域の情報および計数結果を含む)は、各セルに対応付けてRAM62または記憶装置70に記憶される。
【0166】
なお、ここでは、変数apにより、同じ色の判定領域に含まれるピクセルの数を計数することが望ましい。しかし、各セルの領域において、それぞれ異なる色の判定領域に含まれるピクセルがある場合に、上記ステップS412の処理では、これらを区別せずに計数してしまう。つまり、同じセルの領域において、黄色と判定されても、マゼンタ色と判定されても、変数apはインクリメントされてしまう。従って、それぞれ異なる色の判定領域に含まれるピクセルがあることを想定した場合に、別の変数を用いて各領域に含まれるピクセルの数を計数し、上記ステップS412の処理を、現時点で最も数の多い判定領域のピクセル数を変数apに設定する処理に代えてもよい。
その後、ステップS414に移行して、変数xの値が、その行の一番右端のx座標であるxEであるか否かを判定する。
【0167】
一方、選択したピクセルがいずれの判定領域にも含まれていないと判定された場合も、ステップS414に移行して、変数xの値が、xEであるか否かを判定する。
そして、変数xの値がxEではないと判定した場合(No)は、ステップS416に移行し、変数xの値がxEであると判定した場合(Yes)は、ステップS422に移行する。
ステップS416に移行した場合は、変数xをインクリメント(x+1→x)して、ステップS418に移行する。
【0168】
つまり、変数xの値がxEではない場合に、変数xをインクリメントすることで、1つ右隣のピクセルに座標を変更する。
ステップS418では、現時点の座標(x,y)が次のセルに対応するセパレータ部分の開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップS420に移行し、そうでない場合(No)は、ステップS406に移行する。
ステップS420に移行した場合は、変数apを初期化(0→ap)して、ステップS406に移行する。
つまり、色判定領域に含まれる色のピクセルが一定数以上とならないまま、x座標が、次のセルに対応するセパレータの開始x座標に到達した場合に、変数apを初期化する。
【0169】
一方、ステップS414において変数xの値がxEであると判定されてステップS422に移行した場合は、変数yの値が列方向の一番下端のy座標であるyEであるか否かを判定する。
そして、変数yの値がyEではないと判定した場合(No)は、ステップS424に移行し、変数yの値がyEであると判定した場合(Yes)は、ステップS438に移行する。
ステップS424に移行した場合は、変数apおよび変数xを初期化(0→ap,0→x)し、変数yをインクリメント(y+1→y)して、ステップS406に移行する。
【0170】
つまり、変数xを初期化し、変数yをインクリメントすることで、1つ下隣の行で且つ一番左端のピクセルに座標を変更する。このとき、座標(x,y)が次のセルに対応した領域の座標となるので、変数apも初期化する。
一方、ステップS408において、変数apの値が一定数以上ではないと判定されてステップS426に移行した場合は、変数xの値が、xEであるか否かを判定する。
そして、変数xの値がxEではないと判定した場合(No)は、ステップS428に移行し、変数xの値がxEであると判定した場合(Yes)は、ステップS432に移行する。
ステップS428に移行した場合は、変数xをインクリメント(x+1→x)して、ステップS430に移行する。
【0171】
ステップS430では、現時点の座標(x,y)が次のセルに対応するセパレータの開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップS432に移行し、そうでない場合(No)は、ステップS426に移行する。
ステップS432に移行した場合は、変数apを初期化(0→ap)して、ステップS406に移行する。
つまり、変数apが一定数以上のときに、上記ステップS426〜S430の処理を繰り返し行うことで、各セルCに対応する領域においてその行の残りのピクセルに対して上記ステップS410の色判定処理を省略している。
【0172】
ここで、上記ステップS408における変数apの比較対象である一定数は、色の判定精度を考慮して予め設定される値であり、各行における各セルCのピクセル数未満の値となる。従って、各行の色の判定に十分な一定数の色の判定がされたことに応じて、残りのピクセルに対する色判定処理を省略することとなる。
具体的に、例えば、一定数を10としたときに、あるセルの領域におけるいずれかの行において黒色を中心座標とした判定領域に含まれると判定されたピクセルが10ピクセル(ap=10)になったときに、ステップS408において、変数apの値が一定数以上であると判定され、該当セルCの同じ行の残りのピクセルに対しては上記ステップS410の色判定処理が省略される。
【0173】
一方、ステップS426において、変数xの値がxEであると判定されてステップS434に移行した場合は、現時点における変数yの値が列方向の一番下端のy座標であるyEであるか否かを判定する。
そして、ステップS434において、変数yの値がyEではないと判定した場合(No)は、ステップS436に移行し、変数yの値がyEであると判定した場合(Yes)は、ステップS438に移行する。
ステップS436に移行した場合は、変数apおよび変数xを初期化(0→ap,0→x)し、変数yをインクリメント(y+1→y)して、ステップS406に移行する。
【0174】
一方、二次元コードの領域における全てのピクセルについて色判定が終了して、ステップS438に移行した場合は、RAM62または記憶装置70に記憶された各セルCの領域の各行のピクセルの色の判定結果に基づき、各セルCの色を判定して、ステップS440に移行する。
具体的に、各セルCの領域について、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数以上のときに、各セルCの色をその判定領域の中心座標の色として判定する。そして、各セルCと、判定された色とが対応づけられてRAM62または記憶装置70のデータテーブルに登録される。ここでは、データテーブルに登録済のセルCに対して色が判定された場合、このセルCに対応する色として、こうして判定された最新の色に更新される。なお、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数未満であり、二次元コードに用いられる複数色の判定領域のいずれにも含まれていないと判定された場合には、該当のセルCに対し、判定領域外の色である旨が対応づけられる。
【0175】
ステップS440では、ステップS438で色が判定されたセルCの中に、着色規則に従っていない色の付されたセルCが一定数以上存在しているか否かを判定する。
ここでは、この時点でセルCと色とが対応づけて登録されたデータテーブルの中に、判定領域外の色である旨が対応づけられたセルCが一定数(例えば全体の3割)以上存在していることをもって、着色規則に従っていない色の付されたセルCが所定割合以上存在していると判定される。
【0176】
なお、ここでは、着色規則に従っていない色の付されたセルCが一定数以上存在しているか否かを、二次元コードのセルCに占める相対的な数(つまり割合)により判定するように構成しているが、二次元コードのセルCに占める絶対数により判定するように構成してもよいし、着色規則に従っていないセルCが特定のパターン(例えば、このセルCが2つ以上連続しているなど)で配置されている場合におけるこのパターンの数により判定するように構成してもよい。
【0177】
このステップS440において、着色規則に従っていない色の付されたセルCが一定数以上存在していると判定した場合(Yes)は、ステップS442に移行する。
ステップS442に移行した場合は、判定領域を変更して再度の色判定が可能な状態であるか否かを判定する。
ここでは、ステップS410における色判定で参照された判定領域が、あらかじめ定められた上限まで変更されている場合に、再度の色判定が可能な状態ではないと判定される。
【0178】
この「あらかじめ定められた上限」とは、各判定領域が他の判定領域と干渉しないように変更できる範囲として定められたものであり、後述のように、判定領域を単純に拡げていく場合であれば、各判定領域を他の領域と干渉する程度まで拡張した状態となっていることをもって「あらかじめ定められた上限まで変更されている」こととすればよい。また、判定領域を変移させていく場合であれば、判定領域で規定される色が別の色成分になる直前の位置(境界)まで変移した状態となっていることをもって、「あらかじめ定められた上限まで変更されている」こととすればよい。
【0179】
このステップS442において、再度の色判定が可能であると判定された場合(Yes)は、ステップS444に移行し、そうでない場合(No)は、ステップS446に移行する。
ステップS444に移行した場合は、上記ステップS410における色判定で参照された判定領域を変更して、ステップS404に移行する。ここでは、各判定領域を色空間上で一定領域だけ拡げる、または、各判定領域を色空間上で一定距離だけ変移させることにより判定領域それぞれが変更される。
【0180】
なお、この後者の場合、判定領域は、二次元コードの画像領域における色成分の偏りを打ち消すことのできる色空間上の位置へと変移させるように構成するとよい。具体的には、二次元コードの画像領域における色の分布を参照し、その分布において特定の色成分が全体的に大きくなっている場合に、この色成分を小さくする方向に各判定領域を変移させる。
【0181】
こうして、ステップS444を終えた後、ステップS404に移行し、再度、ステップS402で分割された各セルCの領域について色の判定処理が行われる。
以降、再度色が判定されたセルCそれぞれの中に、着色規則に従っていない色の付されたセルCが一定数以上存在していないと判定されるまで(ステップS440の「No」の分岐)、判定領域の変更および再度の色判定が繰り返される(ステップS404〜S444)。
【0182】
一方、ステップS442において、再度の色判定が不可能であると判定されステップS446に移行した場合は、エラー処理を行って、一連の処理を終了し、元の処理に復帰する。
このエラー処理では、いずれのセルCの色についても判定できなかったものとし、データテーブルに登録されていた全ての対応関係を消去され、こうして空のデータテーブルが戻り値として元の処理へと復帰する。この場合、図12の情報識別処理では、ステップS134,S136で何らの処理も行われることなく、S138以降の処理が行われる。
【0183】
そして、上記ステップS438〜S444までの処理中に、上記ステップS440において、着色規則に従っていない色の付されたセルCが一定数以上存在していないと判定された場合(No)は、ステップS448に移行する。
ステップS448に移行した場合は、着色規則に従っていない色の付されたセルCが存在しているか否かを判定する。
【0184】
このステップS448において、該当セルCが存在していると判定した場合(Yes)は、ステップS450に移行し、該当セルCが存在していないと判定した場合(No)は、一連の処理を終了し、元の処理に復帰する。
ステップS450に移行した場合は、二次元コードの中から該当セルCを特定して、ステップS452に移行する。
【0185】
ここでは、この時点でデータテーブルに登録されているセルCのうち、着色規則に従っていない色の付されたセルCが特定され、このセルCが二次元コードの中から特定される。
ステップS452では、上記ステップS448において特定されたセルCそれぞれについて、着色規則に従って本来付されるべき色を推定して、ステップS454に移行する。
【0186】
ここでは、上記ステップS448において特定されたセルCに対し、着色規則に従って本来付されるべき色の候補として、そのセルCに隣接するセルCに付された色との関係で考えられる色が選出され、その候補の中から最も確からしい色が、そのセルCに付されるべき色であるとして推定される。
ステップS454では、上記ステップS448において特定されたセルCそれぞれについて、該セルCの色が、上記ステップS452において推定された色であると判定し、一連の処理を終了し、元の処理に復帰する。
【0187】
ここでは、上記ステップS448において特定されたセルCそれぞれについてのみ、データテーブルにおける色の更新がなされる。
この場合と、ステップS448において該当のセルCが特定されなかった場合は、この時点でセルCと色との対応関係が登録されたデータテーブルを戻り値として図3のコード利用物品検出処理へと戻る。この場合、コード利用物品検出処理では、データテーブルに基づいて各セルCに付された色を認識したうえで、ステップS134による情報の識別を行うこととなる。
なお、上記図12のステップS128における、特徴的なパターンを含むか否かを判定する処理を行う際に、上記ステップS400〜S454に示すアルゴリズム、または、上記ステップS400〜S438に示すアルゴリズムを適用することが可能である。
【0188】
また、データ領域しか有さない二次元コードの構成であれば、ステップS128の処理を行う前に、上記ステップS400〜S438の色判定処理、または、上記ステップS400〜S454の色判定処理を先に行い、その判定結果に基づき、特徴的なパターンを含むか否かを判定する処理を行う構成とすることも可能である。例えば、上記図12のステップS126の処理の次に、色判定処理(S132)を行う構成とし、ステップS128では、先に行われた色判定処理の結果に基づき、特徴的なパターンを含むか否かの判定を行う。この場合は、以降の色判定処理を不要とすることができる。
【0189】
(4)作用,効果
上記実施形態における二次元コードリーダ1であれば、入力装置74を介したユーザからの作成指示に応じて、エンコード対象情報の取得(図4のS13)、セル群の構成および色数の決定(同図S15)、使用色の決定(同図S17)、情報の種類毎にセルの色の設定(同図S19)を経て、エンコード情報を生成することができる(同図S21)。
【0190】
そして、セルに付すことが可能な色のなかから、色の認識率が比較的高いものを優先して選択して使用色を決定し、このようにして決定された使用色を用いて、エンコード情報を生成することができる。また、単位情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように各セルの色の設定を行うことができる。
【0191】
さらに、上記実施形態における二次元コードリーダ1であれば、入力装置74を介したユーザからの設定指示に応じて(図8のS31)、作成したエンコード情報のなかから、エンコード処理に用いるエンコード情報を設定することができる(同図S37)。
さらに、情報群が入力され(同図S39)、入力装置74を介したユーザからのエンコード指示に応じて(同図41)、設定されたエンコード情報を用いて、入力された情報群をエンコードすることができる(同図43)。
【0192】
これにより、セパレータ110の色との組み合わせを考慮せずに、単純にCMYKの4色やRGBWの4色で二次元コードを構成した場合と比較して、各セルの色の認識精度が高い二次元コードを構成することができる。
さらに、上記実施形態における二次元コードリーダ1であれば、取得された画像(原画像)から、グレースケール画像の生成(図14(b)のS202,S210)、二値化画像の生成(同図S204,S212)、二値化画像中の物体の輪郭部の線形化(同図S206)を経てエッジ画像を生成することができる(図12のS108)。
【0193】
さらに、生成したエッジ画像に基づき、このエッジ画像中における候補領域の抽出(同図S110)、この抽出した候補領域が有効か否かの判定(同図S120,S122)、有効と判定された候補領域に対応する原画像中の対応領域それぞれに特徴的なパターンが含まれているか否かの判定(同図S128)を経て、原画像中から二次元コードの領域を検出することができる(同図S130)。
このように、二値化画像中の物体の輪郭部が線形化されたエッジ画像から、候補領域を抽出することができるので、線形化しない場合と比較して高速に候補領域を抽出することができる。
【0194】
そして、原画像の領域において、有効と判定された候補領域に対応する対応領域のうち、特徴的なパターンが含まれている対応領域を、原画像中における二次元コードの領域として検出することにより、原画像中に含まれる複数の二次元コードそれぞれを特定することができるようになる。
また、上記実施形態では、原画像に基づいて生成される複数種類のエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する対応領域における各セルCに対応する領域に付されている色の判定、色の判定された対応領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を繰り返し実施している(図12のS108〜S144)。
【0195】
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの検出精度を高めることができる。
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出され、かつ、有効と判定された候補領域が、先に参照されたエッジ画像について抽出され、かつ、有効と判定された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このような抽出済み候補領域について、該候補領域の各セルCに対応する領域に付されている色の判定、該候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない(同図S124の「Yes」の分岐)。
【0196】
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別するに際し、本来同じものであるはずの二次元コードを繰り返し識別してしまうといった無用な処理負担をなくすことができる。
また、この繰り返しの過程では、理想的な領域形状に対して、各候補領域の縦横比および四隅の角度等の形状情報が、あらかじめ設定された誤差範囲内となるか否かを判定することによって(図15のS300〜S308)、抽出した候補領域が有効な候補領域であるか否かを判定することができる(図12のS122)。
これにより、理想的な形状に対して、誤差範囲外の形状を有する候補領域を、以降の処理対象から除外することができ、二次元コードの領域とは明らかに異なる領域等に対して、無用な処理が行われるのを防ぐことができる。
【0197】
また、上記実施形態では、原画像からエッジ画像を生成し、このエッジ画像から、二次元コードの領域の候補となる候補領域を抽出し(図12のS110)、該抽出した候補領域が有効か否かを判定したうえで(図12のS120,S122)、原画像における、有効と判定された候補領域に対応する領域から二次元コードの領域を検出して情報の識別を行っている(同図S116〜S134)。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。これにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【0198】
また、上記実施形態では、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別することができる(図12のS134)。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域との重複度合に応じ、その重複度合が一定以上であることをもって、両候補領域が一致すると判定することができる。
【0199】
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域、および、別のエッジ画像における抽出済み候補領域のうち、一方の候補領域が他方の候補領域に包摂されていることをもって、両候補領域が一致すると判定することができる。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域における1以上の頂点が、抽出済み候補領域におけるいずれかの頂点から一定範囲内に位置していることをもって、両候補領域が一致すると判定することもできる。
【0200】
また、上記実施形態においては、テンプレートで規定される規則に従って候補領域を抽出することができるため、このテンプレートと共に規則を変更することにより、任意の規則に従って形成された二次元コードの領域として検出できるようにすることができる。
また、上記実施形態においては、二次元コードの各セルCに付された色に基づいて、二次元コードで示される情報を識別することができる(図12のS132〜S134)。
【0201】
また、上記実施形態では、画像の生成(具体的には撮影)状態により、二次元コードにおける各セルCのうち、一部のセルCに対応する領域が欠けてしまっていたとしても、そのセルに本来付されるべき色を着色規則に従って推定し(図17のS452)、その色に基づいて情報を識別することができるため、情報の識別そのものができなくなってしまうことを防止することができる。
【0202】
また、上記実施形態では、二次元コードにおける各セルCに付されている色を、色空間におけるいずれの判定領域(成分領域)に含まれているかにより判定することができる(図17のS410)。
また、この構成においては、各ピクセルの色判定を行う際に、二次元コードの領域を、ラスタスキャンによって順番に走査して色判定処理を行い(図17のS410)、各セルCの領域における各行に位置するピクセルについて、一定数以上が判定領域に含まれると判定された場合(図17のS408の「Yes」の分岐)に、該当セルCの領域におけるその行の残りのピクセルに対して色判定処理を省略することができる。
【0203】
これによって、各セルCの領域における各行のピクセルの全てに対して色判定処理を行う場合と比較して、各ピクセルの色判定処理を高速に行うことができる。
また、この構成においては、各セルCの色を判定するに際し、多くのセルCに付された色がいずれの判定領域にも含まれず、情報の識別そのものができなくなるような場合であっても、そのようなことを防止できるように構成されている。
【0204】
具体的には、複数の色それぞれに対応する判定領域のいずれにも含まれていないと判定したセルが一定数以上存在する場合に(図17のS440「Yes」の分岐)、判定領域を一定領域だけ拡げる、または、変移させたうえで、再度、各セルに付されている色を判定している(同図S444〜S438)。
この構成であれば、画像の生成条件が悪く、適切に色の判定ができない場合であっても、判定領域を拡げることで判定の感度を上げて再度色を判定する、または、判定領域を色の分布に応じた適切な位置まで変移させて再度色を判定することにより、色の判定確率を高めることができる。
【0205】
(5)変形例
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
例えば、上記実施形態においては、二次元コードリーダ1が単体の装置により構成されている場合を例示したが、この二次元コードリーダ1は、複数の装置が協調して動作するシステムとして構成してもよい。
【0206】
また、上記実施形態では、着色規則に従って付されるべき色の候補を選出し、その中から最も確からしい単一の色を、着色規則に従って本来付されるべき色と推定しているが、こうして色の候補を選出した段階で、これら候補のいずれかをユーザに選択させることとしてもよい。
また、候補として選出した色それぞれについて情報の識別までも行うようにし、そうして識別した情報の中からいずれかをユーザに選択させることとしてもよい。この場合、図17のS452では何らの処理も行わず、S454にて候補の色それぞれを、該当するセルCに付された色と判定する。そして、図12のS134では、セルCに付された色として判定された色が複数存在していれば、各色について、または、各色の組合せに基づいて情報を識別し、そうして識別した情報の中から、いずれかをユーザに選択させる、といった構成を考えることができる。
【0207】
また、上記実施形態において、情報識別処理を、入力装置74を介したユーザーの操作入力(指示情報)をトリガとして行われる一連の処理として説明したが、この構成に限らない。
例えば、トリガがなくても情報識別処理を繰り返し実行して、常に、撮影画像に対して識別処理を実行する構成とするなど、他の構成としてもよい。
【0208】
また、上記実施形態において、二次元コードリーダ1は、専用のプログラムをCPU60によって実行することで、エンコード情報作成処理、エンコード処理、および、情報識別処理に必要な各機能を実現する構成としたが、この構成に限らない。例えば、処理の一部を半導体集積回路等のハードウェアに置き換えて、ハードウェアとソフトウェアとの双方によって各機能を実現する構成としてもよいし、可能であれば、処理の全てまたは略全てをハードウェアに置き換えて、ハードウェア主体で各機能を実現する構成としてもよい。
【0209】
(6)本発明との対応関係
以上説明した実施形態において、図4のS19が本発明におけるエンコード情報設定部であり、同図S21,23が本発明におけるエンコード情報記憶部であり、図8のS39が本発明における情報群入力部であり、同図S43が本発明におけるエンコード部である。
また、図12のS102が本発明における画像取得部であり、同図S108(図14のS200〜S212)が本発明における成分変換部であり、同図S110が本発明における領域抽出部であり、同図S120が本発明における候補領域判定部であり、同図S128が本発明におけるパターン判定部である。
【0210】
また、図12のS130が本発明における領域検出部であり、同図S108〜S144(特にS108,S142,S144)が本発明における繰り返し実施部であり、同図S124が本発明における一致判定部であり、同図S134が本発明における情報識別部である。
また、図17におけるS452が本発明における色推定部であり、同図S410、S438およびS454が本発明における色判定部である。
【符号の説明】
【0211】
1…エンコード機能付き二次元コードリーダ、60…CPU、62…RAM、64…ROM、66…I/F、68…バス、70…記憶装置、72…表示装置、73…印刷装置、74…入力装置、76…カメラ、78…NIC、110…セパレータ、120…フレーム、C…セル。
【技術分野】
【0001】
本発明は、セルが配列されてなる二次元コード、この二次元コードを用いて情報群をエンコードするエンコード装置およびプログラム、ならびに、二次元コードを読み取って情報を識別する二次元コードリーダに関する。
【背景技術】
【0002】
従来から、複数のセルを配列して構成される二次元コードを用いて、該二次元コードの1以上のセルからなる各セル群に付された色または色の組み合わせによって情報をエンコードする技術が開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−195536号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、上記特許文献1の技術においては、白色又は黒色の境界領域で分割された複数のセルに対して、赤色、緑色、青色、黒色、シアン色、マゼンタ色、黄色及び白色の8色を用いて、各セルに色を付すことで情報をエンコードしている。そして、カメラによって、二次元コードの領域を含む画像部分を撮影し、該撮影して得られた画像について、色の判定処理を行ってエンコードされた情報を識別(デコード)している。このように、撮影画像に対して色の判定処理を行うため、例えば、黒色の境界領域に対して緑色でセルに色を付したり、白色の境界領域に対して黄色でセルに色を付した場合などにおいて、セルの領域とセル以外の領域との色の組み合わせによって、撮影画像において両者の色が混ざり、色の認識率が低下するといった不具合が生じる恐れがあった。
本発明は、このような課題を解決するためになされたものであり、その目的は、複数のセルを配列してなる二次元コードの各セルに付された色の認識率の低下を抑制するのに好適な技術を提供することである。
【課題を解決するための手段】
【0005】
〔第1の構成〕
上記課題を解決するために、本発明に係る第1の構成の二次元コードは、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードであって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のa個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち色の認識率が比較的高いものが優先して各セルに付されている。
【0006】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、認識率の比較的高い色が優先してセルに付されるので、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【0007】
〔第2の構成〕
さらに、第2の構成の二次元コードは、上記第1の構成において、前記p×qに配列されたセルは、あらかじめ定められた色が付されたセパレータで分けられており、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち、前記セパレータに付された色とセルに付される色との組み合わせに対して、色の認識率が比較的高いものが優先して各セルに付されている。
【0008】
この構成であれば、セパレータに付された色とセルに付された色との組み合わせに対して、色の認識率が比較的高い色が優先してセルに付されているので、当該二次元コードの画像を撮影したときの撮影画像において、混色等によるセルに付された色の認識率の低下を抑制することができる。
【0009】
〔第3の構成〕
さらに、第3の構成の二次元コードは、上記第2の構成において、前記セパレータに付された色は白色であり、前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色が優先して各セルに付されている。
【0010】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの白色に対して、認識率の低くなる黄色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【0011】
〔第4の構成〕
さらに、第4の構成の二次元コードは、上記第3の構成において、前記aが2であり、前記bが24以下である場合において、前記各セル群における2個のセルには、白色および黄色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されている。
この構成であれば、セパレータに用いられる白色、および、白色の背景色に溶け込みやすい黄色を除く残りの色のうち比較的認識率の高い4色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【0012】
〔第5の構成〕
さらに、第5の構成の二次元コードは、上記第3又は4の構成において、前記p×qに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有する。
この構成であれば、例えば、この二次元コードの領域を含む領域の撮影画像中から二次元コードの位置を検出する際に、セパレータの白と枠部分の黒色とによって外周部分の輝度差を大きくすることができ、二次元コードの領域の外形エッジを抽出しやすくすることができる。
【0013】
〔第6の構成〕
さらに、第6の構成の二次元コードは、上記第2の構成において、前記セパレータに付された色は黒色であり、前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも緑色及び黒色を除く残りの色が優先して各セルに付されている。
【0014】
この構成であれば、特に必要な色数cが使用可能な色数dよりも少ないときに、セパレータに付される色を、セルに付される色と異なる色とすることができる。さらに、背景色となるセパレータの黒色に対して、認識率の低くなる緑色を用いない、または、必要数だけ用いる構成とすることができるので、混色による認識率の低下を抑制することができる。
【0015】
〔第7の構成〕
さらに、第7の構成の二次元コードは、上記第6の構成において、前記aが2であり、前記bが24以下である場合において、前記各セル群における2個のセルには、黒色および緑色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されている。
この構成であれば、セパレータに用いられる黒色、および、黒色の背景色に溶け込みやすい緑色を除く残りの色のうち比較的認識率の高い4色を用いて各セルに色が付されているので、混色等による認識率の低下を抑制することができる。
【0016】
〔第8の構成〕
さらに、第8の構成の二次元コードは、上記第1乃至第7のいずれか1の構成において、前記各セル群は、前記各セル群は、前記aが2以上の場合において、行方向または列方向うち一方向に連続する各a個のセルからなる。
この構成であれば、不連続となるa個のセルから各セル群を構成した場合と比較して、各セル群のa個のセルが一方向に連続しているので、エンコード時などにおいて、文字列や数字列などの各情報群との対応付けが容易となる。また、色の判定処理において、連続するa個のセルの色を判定することで各セル群の色の判定を行うことができるので、不連続なものと比較して、色の判定処理と各セル群の情報の識別とを順次行うことができる。
【0017】
〔第9の構成〕
さらに、第9の構成の二次元コードは、上記第8の構成において、前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含む。
この構成であれば、方向識別用のセル群によって、複数のセル群の配列方向を識別することができるので、エンコード時において、この配列方向と文字列や数字列などの各情報群の並び方向とを対応させておくことで、正しい並び順での情報の識別を容易に行うことができる。また、識別用のセル群とその他のセル群との位置関係を利用して、二次元コードの領域であることを判定する処理を行うことも可能である。
【0018】
〔第10の構成〕
一方、上記課題を解決するために、第10の構成のエンコード装置は、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、前記二次元コードで示すべき情報群を入力する情報群入力部と、前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えている。
【0019】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定する。
【0020】
この構成であれば、p×qにセルが配列されてなる二次元コードにおける、a個のセルからなるセル群について、使用可能なd色から認識率の比較的高いc色を優先して用いて、情報の各種類に対応するセル群のa個のセルの色を設定することができる。さらに、この設定情報に基づき、情報の各種類と、該各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶することができる。
【0021】
さらに、情報群が入力されると、前記記憶したエンコード情報に基づき、二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードすることができる。
これにより、上記第1の構成の二次元コードを生成することができる。
このようにして構成された二次元コードは、上記第1の構成の二次元コードと同様に、色の認識率を考慮せずに各情報の種類に対して固定的に設定された色を用いてセルに色を付す場合と比較して、各セルの色の判定時において総合的な色の認識率を向上することができる。
【0022】
〔第11の構成〕
また、上記課題を解決するために、第11の構成のエンコードプログラムは、p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、前記二次元コードで示すべき情報群を入力する情報群入力部、および、前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実現される処理をコンピュータに実行させるためのプログラムを含んでいる。
【0023】
そして、前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定する。
【0024】
このようなプログラムにより制御されるコンピュータシステムは、上記第11の構成に係るエンコード装置の一部を構成することができる。
なお、上述したプログラムは、コンピュータシステムによる処理に適した命令の順番付けられた列からなるものであって、各種記録媒体や通信回線を介して二次元コードリーダや、これを利用するユーザに提供されるものである。
【0025】
〔第12の構成〕
また、上記課題を解決するために、第12の構成の二次元コードリーダは、請求項1乃至請求項9のいずれか1項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えている。
【0026】
そして、前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定する。
この構成であれば、取得された画像(原画像)から生成されたエッジ画像中における候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定を経て、原画像中から二次元コードの領域を検出することができる。
【0027】
このように、原画像の領域において、エッジ画像から抽出された有効な候補領域に対応する対応領域のうち、特徴的なパターンが含まれる対応領域を、原画像中における二次元コードの領域として検出することにより、原画像に含まれる複数の二次元コードの領域それぞれを特定することができるようになる。
また、上記構成では、取得された画像から、二次元コードの領域の候補となる候補領域を抽出し、抽出した候補領域が有効か否かを判定したうえで、有効と判定された領域から二次元コードの領域を検出して情報の識別を行うことができる。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。
【0028】
加えて、有効と判定された候補領域に対応する対応領域についてのみ、この領域から二次元コードの領域を検出して情報の識別を行うことができる。
そのため、二次元コードの理想の形状から逸脱した形状等の明らかに二次元コードの領域とは異なる形状の候補領域に対して、特徴的なパターンが含まれているか否かの判定、二次元コードの領域の検出および情報の識別を含む処理が行われるのを防ぐことができる。
以上のことにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【0029】
また、上記構成では、対応領域における各セルに対応する領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色判定が未処理の残りのピクセルについては色判定処理を省略し、所定数の有効な色の判定結果に基づき各セルに対応する領域に付された色を判定することができる。
これにより、各セルの領域を構成する複数のピクセルにおいて所定数の有効な色の判定結果を得た場合に、残りの未処理のピクセルについては色の判定処理が行われないため、その分だけ各セルの領域の色の判定にかかる処理時間を短縮することができる。
【0030】
この構成において、原画像から変換されるエッジ画像は、原画像に含まれるエッジ成分の分布を示すものであればよく、例えば、原画像における輝度、明度、彩度など特定の成分のみを分布させた画像における所定のしきい値以上の成分のみを抽出(具体的にはしきい値で二値化)した画像や、この画像に対して輪郭線の抽出をした画像などのことである。
この輪郭線の抽出は、具体的に、エッジ画像中に含まれるオブジェクトの輪郭線を抽出する処理であり、輪郭線を抽出できればどのような処理方法を用いてもよい。
【0031】
例えば、公知の細線化アルゴリズム(Hilditch、Deutsch、Zhang Suen、田村、鶴岡などの手法)を用いた細線化処理によってエッジ部分を線形化する方法がある。また、例えば、ラプラシアンフィルタ等の公知のエッジ抽出フィルタを用いたフィルタリング処理を行ってエッジ部分を線形化する方法や、公知のブレゼンハムの線分描画アルゴリズムを用いてエッジ部分を線形化する方法などもある。
【0032】
また、エッジ画像から候補領域を抽出する際の「あらかじめ定められた領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などを、規定しておけばよい。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形の領域などの矩形形状を角度を変えて見た(撮影した)場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの撮影環境や原画像の画質等によって円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規定でもよいし、エッジ成分の分布パターン(エッジ成分の分布状態、分布されているエッジ成分の配置など)が特定のパターンの領域を抽出するといった規定でもよい。
【0033】
また、抽出した候補領域が有効であるか否かを判定する際の「形状情報」とは、例えば、外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状(理想の形状)に係る形状の情報となる。
また、原画像から二次元コードの領域を検出する際に参照される「特徴的なパターン」とは、二次元コードについて定められた特徴的なパターンを直接的または間接的に示す情報であればよく、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンを直接的または間接的に示す情報などのことである。
【0034】
また、「所定数の有効な色の判定結果」とは、各セルの領域の色を正確に判定可能な精度を有した有効な色の判定結果の数であり、処理速度の観点からは、より少数の方が望ましい。
また、「有効な色」とは、例えば、色の判定対象が複数ある場合には判定結果が最も多数となる色や、予め各セルの領域に付す色が解っている場合、または、色の並びなどから推定できる場合は、各セルの領域に対応する色などが該当する。
【0035】
〔第13の構成〕
さらに、第13の構成の二次元コードリーダは、第12の構成において、前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域(以降「抽出済み候補領域」という)と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えている。
【0036】
そして、前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させる。
【0037】
この構成であれば、複数種類の変換条件に対応するエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する原画像中の対応領域それぞれにおける二次元コードの各セルの領域に対応する領域に付された色の判定、該色の判定結果に基づく前記対応領域それぞれに特徴的なパターンが含まれているか否かの判定、および、原画像中からの二次元コードの領域の検出を繰り返し実施している。
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの領域の検出精度を高めることができる。
【0038】
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出された候補領域が、先に参照されたエッジ画像について抽出された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このように一致する抽出済み候補領域について、抽出した候補領域の各セルに対応する領域の色の判定、抽出した候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない。
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードの領域にて示される情報を識別するに際し、本来同じものであるはずの二次元コードの領域を繰り返し識別してしまうといった無用な処理負担をなくすことができる。
【図面の簡単な説明】
【0039】
【図1】エンコード機能付き二次元コードリーダ1の構成例を示すブロック図である。
【図2】セパレータが白色の場合の二次元コード100の構成例を示す図である。
【図3】セパレータが黒色の場合の二次元コード100の構成例を示す図である。
【図4】エンコード情報作成処理の一例を示すフローチャートである。
【図5】エンコード対象情報の一例を示す図である。
【図6】(a)は、セパレータが白色の場合のエンコード情報の一例を示す図であり、(b)は、セパレータが黒色の場合のエンコード情報の一例を示す図である。
【図7】(a)は、図5のエンコード対象情報に対応する二次元コード100の構成例を示す図であり、(b)は、(a)の二次元コード100に対するセル群の設定例を示す図である。
【図8】エンコード処理の一例を示すフローチャートである。
【図9】入力情報群の一例を示す図である。
【図10】セパレータが白色の場合のエンコード処理によって作成された二次元コード100の一例を示す図である。
【図11】セパレータが黒色の場合のエンコード処理によって作成された二次元コード100の一例を示す図である。
【図12】情報識別処理の一例を示すフローチャートである。
【図13】エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが抽出済み候補領域と一致するか否かを判定するための別手法を示す図である。
【図14】(a)は、変数Yの値と画像種類およびしきい値との対応関係の一例を示す図であり、(b)は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
【図15】有効領域判定処理の処理手順を示すフローチャートである。
【図16】(a)は、理想的な候補領域の形状例を示す図であり、(b)〜(e)は、誤差範囲外の形状例を示す図であり、(f)〜(g)は、誤差範囲内の形状例を示す図である。
【図17】色判定処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0040】
以下に本発明の実施形態を図面に基づき説明する。
(1)エンコード機能付き二次元コードリーダ1の構成
まず、図1に基づき、エンコード機能付き二次元コードリーダ1の構成を説明する。図1は、エンコード機能付き二次元コードリーダ1の構成例を示すブロック図である。
エンコード機能付き二次元コードリーダ1(以下、単に二次元コードリーダ1と称す)は、図1に示すように、CPU(Central Processing Unit)60と、RAM(Random Access Memory)62と、ROM(Read Only Memory)64と、入出力インターフェース(I/F)66と、バス68とを含んで構成されるコンピュータシステムを備えている。CPU60、RAM62、ROM64およびI/F66は、バス68に接続されており、バス68を介してこれら接続デバイス間のデータの送受信を可能としている。
【0041】
二次元コードリーダ1は、さらに、I/F66を介して、記憶装置70と、表示装置72と、印刷装置73と、入力装置74と、カメラ76と、NIC(Network Interface Card)78とに接続されている。
CPU60は、ROM64または記憶装置70に予め記憶された各種専用のコンピュータプログラムをRAM62に読み込み、RAM62に読み込まれたプログラムに記述された命令に従って、各種リソースを駆使して、各種処理を実行する。CPU60において実行される各種処理としては、二次元コードを利用して情報をエンコードするためのエンコード情報の作成処理、作成したエンコード情報を用いて情報をエンコードするエンコード処理がある。さらに、エンコード処理にて情報をエンコードしてなる二次元コードの領域が1以上含まれる画像から二次元コードの領域を検出し、該検出した二次元コードにて示される情報を識別する情報識別処理がある。
【0042】
記憶装置70は、各種専用のコンピュータプログラム、プログラムの実行において用いられるデータ等の、上記エンコード情報作成処理、エンコード処理、および情報識別処理に必要なデータを記憶する。
具体的に、記憶装置70は、二次元コードを用いて情報をエンコードする際のエンコード情報の作成に必要なエンコード対象情報、エンコード対象情報に基づいて作成したエンコード情報、エンコード情報を用いて情報をエンコードしてなる二次元コードの情報を記憶する。
【0043】
ここで、エンコード対象情報とは、エンコード対象の情報群の情報量(例えば、文字列や数字列の桁数等)、エンコード対象の情報の種類(例えば、10進数、英大文字、英小文字、ひらがな、カタカナなど)、エンコード対象の単位情報の種類数(例えば、10進数なら0〜9の10種類)などを含む情報となる。
他にも、二次元コードの構成が決まっている場合はそのセルの構成(例えば、3行×6列(p×q)等)を示す情報、また、セルにマークすることが可能な色の種類数の情報、これらの色の認識率に係る情報などもエンコード対象情報に含まれる。
【0044】
また、エンコード情報とは、二次元コードを構成する各セル群それぞれの色または色の組み合わせと、当該色または色の組み合わせに対応する情報との対応関係を示す情報が登録されたデータテーブルである。
さらに、記憶装置70は、二次元コードを特徴づける情報を規定したテンプレート、カメラ76によって撮影して得られる画像データを記憶する。
【0045】
ここで、記憶装置70は、FDドライブ、HDドライブ等の磁気記憶型記憶装置、CDドライブ、DVDドライブ、BRDドライブ等の光学的読取/書込方式記憶装置、MOドライブ等の磁気記憶型/光学的読取方式記憶装置等の、コンピュータで記憶データを読み取り可能な記憶装置であれば何でもよい。
表示装置72は、CRTディスプレイ、液晶ディスプレイなどの周知の表示装置であり、CPU60からの指令に応じて、カメラ76で撮影された画像の表示を行う。
【0046】
印刷装置73は、例えば、公知のインクジェット方式またはバブルジェット(登録商標)方式などの印刷方式で印刷媒体に画像を印刷する装置である。本実施形態では、エンコード処理によって生成された二次元コードの画像等を印刷用紙やシール等の印刷媒体に印刷するのに用いられる。
入力装置74は、キーボード、マウス、操作ボタン、タッチ式の入力デバイス(タッチパネル等)などのヒューマンインターフェースデバイスであり、ユーザの操作に応じた入力を受け付ける。
【0047】
カメラ76は、デジタルカメラ等の周知のカメラであり、所定の撮影領域を撮影して得られた画像を示す画像データを生成して順次I/F66を介してRAM62または記憶装置70に送信して、RAM62または記憶装置70に画像データを格納する。
NIC78は、LAN、WAN、インターネット等のネットワーク上の外部装置と通信をするためのデバイスであり、一般にLANカード等と呼ばれる周知のネットワークアダプタである。NIC78は、ネットワークケーブルLを介してルータやハブ等に接続され、これらを介して、二次元コードリーダ1をネットワークに接続する。なお、周知の無線LAN等の、無線によって無線LAN用のアクセスポイントを介してネットワークに接続する構成であってもよい。
【0048】
これにより、本実施の形態では、ネットワークに接続された外部カメラから、NIC78を介して所定の撮影領域の撮影画像を示す画像データを取得したり、ネットワークに接続されたデータサーバから各種データを取得したりすることも可能である。
なお、この二次元コードリーダ1は、例えば、携帯電話端末、携帯情報端末、周知のパーソナルコンピュータなどに実装されるものとして構成される。
【0049】
そして、本実施形態における二次元コードリーダ1は、エンコード対象のエンコードに係る情報であるエンコード対象情報に基づき、エンコード情報を作成するエンコード情報作成処理と、作成したエンコード情報を用いて、入力される情報群をエンコードするエンコード処理とを行う装置として構成されている。
さらに、本実施形態における二次元コードリーダ1は、1以上の二次元コードが含まれた画像を示す画像データに基づき、その画像中の二次元コードを検出する処理と、検出した二次元コードにより示される情報を識別して取得する処理とを行う装置として構成されている。
【0050】
(2)二次元コード100の構成
次に、図2および図3に基づき、二次元コードリーダ1により生成し、かつ情報が読み取られる二次元コード100について説明する。図2および図3は、セパレータの色が白色および黒色の場合の二次元コード100の構成例を示す図である。
本実施形態における二次元コード100は、図2および図3に示すように、白色および黒色のセパレータ110を境界領域として複数のセルC11〜Cpq(1≦p,1≦q)が一定間隔で配列され、所定の情報が各セルの色および色の組み合わせによりエンコードされたものである。なお、図2に示すように、セパレータ110を白色とした場合は、二次元コード100の外周部に黒色のフレーム120を設ける。これは、後述する候補領域の特定において二次元コードの領域の認識率を向上するための構成である。
【0051】
そして、この二次元コード100は、セルそれぞれ、または、組み合わせに係るセル群それぞれが、そこに付された複数の色(多色)、または、色の組み合わせパターンにより、数字や文字など複数種類の値(多値)を表現可能となっている。例えば、複数の二次元コードについて、それぞれ、色の組み合わせや、色の配列パターンを変えることによって、各二次元コードに固有のユニークな情報を付すことが可能である。
【0052】
また、セルC11〜Cpqは、行毎に、それぞれ1以上のセルCからなるセル群に分けられており、そのセル群で示すべき単位情報(1以上の文字)の対応づけられた色または色の組み合わせでマークが付けられる。こうして、各セルそれぞれ、または、1以上の組み合わせに係るセル群それぞれが、複数種類の文字のいずれかや多進数の数字で示されるいずれかの値からなる情報を持つことができるようになっている。
【0053】
また、これらセルCにそれぞれ付けられたマークの色は、シアン色(C)、マゼンタ色(M)、黄色(Y)の分布を表した三次元空間内において、それぞれ三次元領域として球形に拡がる複数の成分領域(後述する判定領域)を、これら成分領域同士が互いに干渉しない大きさおよび位置関係で配置した成分モデルにより決められる。具体的に、この成分モデルに配置された成分領域内における中心座標で表される成分それぞれが、情報色の成分または組み合わせ色における各色の成分として、セル群にマークが付けられている。
ここでいう「成分領域同士が互いに干渉しない」とは、各成分領域が重複しないように、各成分領域同士の間隔を空けて配置したり、各成分領域の境界を隣接させて配置したり、することである。
【0054】
また、成分領域の大きさは、画像の撮影環境に応じて生じうる誤差の範囲を十分に包摂できる空間として規定したものであり、本実施形態では、特定座標における色を一般的な撮影環境下の色とし、この色から撮影環境に応じて生じうる誤差の範囲を含む領域を成分領域として規定している。
また、二次元コード100におけるセパレータ110の色には、セルCに付すマークの色に用いられていない成分領域における中心座標の色が用いられている。
【0055】
(3)CPU60による処理
以下に、CPU60がROM64または記憶装置70に記憶された専用のコンピュータプログラムに従って実行する各種処理の手順について順次説明する。
(3−1)エンコード情報作成処理
まず、二次元コードリーダ1において、入力装置74を介した作成指示に応じて開始されるエンコード情報作成処理の処理手順を、図4〜図7に基づいて説明する。
【0056】
ここで、図4は、エンコード情報作成処理の処理手順の一例を示すフローチャートである。また、図5は、エンコード対象情報の一例を示す図である。また、図6(a)は、図5のエンコード対象情報に対応する二次元コード100の構成例を示す図であり、(b)は、(a)の二次元コード100に対するセル群の設定例を示す図である。また、図7(a)は、セパレータ110が白色の場合のエンコード情報の一例を示す図であり、(b)は、セパレータ110が黒色の場合のエンコード情報の一例を示す図である。
【0057】
エンコード情報作成処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図4に示すように、まず、ステップS11へと移行する。
ステップS11では、入力装置74を介したユーザからの作成指示の入力があったか否かを判定し、作成指示の入力があったと判定した場合(Yes)は、ステップS13に移行し、そうでない場合(No)は、入力されるまで判定処理を繰り返す。
ここでは、入力装置74によって、簡易に作成指示を入力できるように、例えば、作成指示を選択するボタンのグラフィックスを表示装置72の表示画面に表示する。
【0058】
そして、画面に表示されたボタンを、入力装置74がタッチパネルであれば指でタッチすることで選択かつ押下し、入力装置がマウスであればマウスカーソルによって選択してクリックすることにより押下することで、作成指示を入力できるようにしている。つまり、GUI(Graphical User Interface)によって、簡易に作成指示の入力を行うことが可能となっている。
作成指示が入力され、ステップS13に移行した場合は、エンコード対象情報を取得して、ステップS15に移行する。
【0059】
この処理は、記憶装置70に記憶されたエンコード対象情報をRAM62などのワークメモリに読み出す処理となる。
なお、ステップS11における、作成指示の入力前に、ユーザが入力装置74を介して、エンコード対象の情報群の情報量、情報種類、単位情報の種類数、二次元コードのセルの構成、使用可能な色数等を含むエンコード対象情報の一部を選択または入力できるようにしてもよい。この場合は、記憶装置70に記憶されたエンコード対象情報に加えて、この選択または入力された情報を取得してRAM62等のワークメモリに読み出す(記憶する)処理も行う。
【0060】
例えば、エンコード対象情報として、図5に示すように、情報量が17桁、情報種類が10進数、単位情報の種類数が10、セルの構成を示す情報としてセルの配列数が3行×12列、使用可能な色として赤色(R)、緑色(G)、青色(B)、白色(W)、シアン色(C)、マゼンタ色(M)、黄色(Y)および黒色(K)の8色の情報が得られたとする。
ここで、情報量17桁とは、文字(a,b,c,・・・)や数字(1,2,3,・・・)などの1文字の情報(単位情報)が17個あることを意味する。また、情報種類が10進数のみであることから、単位情報の種類は、0〜9の10種類となる。そして、セルの配列数が3行×12列ということから、二次元コード100は、例えば、図6(a)に示すような構成となる。図6(a)に示す二次元コード100は、セパレータ110が白色の場合の例となる。
【0061】
つまり、図5のエンコード対象情報に対応する二次元コード100のセルの配列は、図6(a)に示すように、第1行〜第3行の3行構成(p=3)であり、最上段の第1行はセルC11〜C112の12個のセルから、中段の第2行はセルC21〜C212の12個のセルから、最下段の第3行はセルC31〜C312の12個のセルからそれぞれ構成される。従って、列数は12列(q=12)となる。
【0062】
次に、エンコード対象情報が取得されステップS15に移行すると、ステップS15では、取得したエンコード対象情報に基づき、セル群の構成、および、10種類の情報をエンコードするのに必要な色数を設定して、ステップS17に移行する。
セル群の構成の設定処理は、エンコード対象情報における、エンコード対象の情報群の情報量と、単位情報の種類数および使用可能な色の種類数とに基づき、セル群の各セル数a(1≦a)を決定する処理となる。
【0063】
セルの総数が36個であり、情報量が17桁であり、色の種類数が8色であることから、1つのセルに1色を用いる場合に、1つのセルだけでは9種類以上の情報をエンコードすることは不可能であるため、セル群のセル数aは最低2となる。ここでは、行数が奇数であり、列数が偶数であるため、各行で連続して並ぶ2つのセルからセル群を構成するようにセルの構成を設定する。これにより、二次元コード100の36個のセルは、図6(b)に示すように、各行の連続する各2つのセルからなるセル群Cg1〜Cg18の18個のセル群に分けられることになる。
【0064】
また、色数の設定は、セル群を構成する2個のセルの色の組み合わせで、10種類の情報をエンコードすることから、最低4色となる。本実施形態では、使用する色の種類数が最小となるように決定する。従って、ここでは4色に決定する。
ステップS17では、エンコード対象情報における色の認識率に係る情報と、ステップS15で設定された色数の情報とに基づき、使用可能な色のなかからエンコードに使用する色を決定して、ステップS19に移行する。
【0065】
ここで、各セルに付された色の認識率は、撮影環境(撮影場所の光源の種類、光源の状態、使用するカメラの性能など)やセパレータ110の色とセルの色との組み合わせ内容などによって変わってくる。そのため、本実施形態では、事前に、様々な撮影環境下における、様々なセパレータ110の色とセルの色との組み合わせに対する、撮影画像におけるセルに付された各色の認識率を測定する。そして、その測定した認識率の情報を色の認識率に係る情報として記憶装置70やROM64などに記憶しておく。
図5および図6(b)の例では、各セル群の2つのセルに付された4色中の1色または2色の色によって単位情報をエンコードするので、本実施形態では、使用可能な8色のなかから、認識率の比較的高いもの(所定認識率以上(例えば、90%以上)のもの)から優先して4色を使用色として決定する。
【0066】
また、本実施形態では、セパレータ110の色が白色および黒色の2パターンについて、使用色を決定する。
具体的に、セパレータ110の色が白色であれば、セパレータで用いられている白色、白色に溶け込みやすい黄色などは認識率が低くなるので、例えば、シアン色(C)、マゼンタ色(M)、緑色(G)、黒色(K)の4色を使用色として決定する。また、セパレータ110の色が黒色であれば、セパレータと同じ黒色、緑色などは認識率が低くなるので、例えば、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を使用色として決定する。
これら使用色の情報は、後述する「着色規則」としても設定される。
【0067】
次に、ステップS19では、ステップS17で決定した使用色を用いて、各情報の種類に対応するセル群のa個のセルの色を設定して、ステップS21に移行する。
本実施形態では、セパレータ110の色が白色の場合と、黒色の場合との双方に対して各情報の種類に対応するセル群のa個のセルの色を設定する。
また、情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように設定を行う。
【0068】
図5および図6(b)の例では、セパレータ110の色が白色の場合に、シアン色(C)、マゼンタ色(M)、緑色(G)、黒色(K)の4色を使用色としているので、例えば、10進数の「0」に対しては、左側のセルにシアン色(C)を、右側のセルにマゼンタ色(M)を設定し、「1」に対しては、左側のセルにシアン色を、右側のセルに緑色(G)を設定する。このようにして、10進数の0〜9に対して色を設定する。
【0069】
なお、本実施形態においては、二次元コード100における情報の配列方向を識別できるようにするために、第1行の先頭のセル群Cg1を方向識別用に用いている。従って、方向識別用の情報についても、例えば、左右両方のセルに黒色といったように色を設定する。
セパレータ110の色が黒色の場合も、白色の場合と同様に、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を用いて、10進数0〜9、および方向識別情報に対してセル群の各セルの色を設定する。
【0070】
次に、ステップS21では、ステップS19で設定した情報に基づき、エンコード情報を生成して、ステップS23に移行する。
本実施形態では、セパレータ110の色が白色の場合と、黒色の場合との双方に対してそれぞれエンコード情報を生成する。
また、エンコード情報は、例えば、図7(a)および(b)に示すように、情報の種類と、該情報の種類毎に対応するセルの色の組み合わせと、各色の組み合わせに対応するコード値とが対応付けられたデータテーブルとなる。なお、図7(a)は、セパレータ110の色が白色のものに対応するエンコード情報を示し、図7(b)は、セパレータ110の色が黒色のものに対応するエンコード情報を示す。
【0071】
図7(a)において、例えば、「C−C」であれば、セル群Cgの左右両方のセルの色がシアン色となることを示し、例えば、「C−G」であれば、セル群Cgの左側のセルの色がシアン色、右側のセルの色が緑色であることを示す。つまり、「−」の左側の英字で示される色がセル群の左側のセルの色に対応し、「−」の右側の英字で示される色がセル群の右側のセルの色に対応する。図7(b)についても同様である。
また、コード値は、例えば、シアン色を「0」、マゼンタ色を「1」、黄色を「2」、黒色を「3」、赤色を「4」、緑色を「5」、青色を「6」、白色を「7」とした場合の色の組み合わせに対する2桁の数字となる。例えば、「C−C」であれば「00」、「C−G」であれば「05」となる。
【0072】
次に、ステップS23では、ステップS22で生成したエンコード情報を、記憶装置70に記憶して、ステップS11へと移行する。
つまり、作成指示を受信する毎に、取得したエンコード対象情報に対応するエンコード情報が生成され、生成されたエンコード情報が記憶装置70に記憶される。
なお、セパレータ110の2色(白色および黒色)についてそれぞれエンコード情報を生成する例を説明したが、セパレータ110の色を予め1色に固定しておき、その固定色のみに対して上記セルの色の設定処理(S19)、エンコード情報の生成処理(S21)を行うようにしてもよい。
【0073】
また、図5に例示したエンコード対象情報について、図6(b)に示すように、セル群を構成するセルの数を2個とする例を説明したが、この構成に限らず、3個以上のセルでセル群を構成することも可能である。
また、エンコード対象情報の内容や、使用可能な色数、二次元コードの構成などによっては、1個、または、3個以上のセルでセル群を構成することも可能である。
【0074】
また、図5に例示したエンコード対象情報について、セパレータ110が白色の場合に、シアン色、マゼンタ色、緑色、黒色の4色を使用色とし、セパレータ110の色が黒色の場合に、赤色(R)、青色(B)、黄色(Y)、白色(W)の4色を使用色としたが、この構成に限らない。先述したように、撮影環境や、カメラの性能等に応じて色の認識率は変化するので、状況に応じて最適な認識率となるように他の色の組み合わせを使用色として設定することも可能である。
【0075】
(3−1)エンコード処理
次に、二次元コードリーダ1において行われるエンコード処理の処理手順を、図8〜図11に基づいて説明する。
ここで、図8は、エンコード処理の処理手順の一例を示すフローチャートである。また、図9は、エンコード対象である情報群の一例を示す図である。また、図10は、セパレータ110が白色の場合の第1情報群をエンコードしてなる二次元コード100の一例を示す図である。また、図11は、セパレータ110が黒色の場合の第1情報群をエンコードしてなる二次元コード100の一例を示す図である。
【0076】
エンコード処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図8に示すように、まず、ステップS31へと移行する。
ステップS31では、入力装置74を介して、ユーザからのエンコード情報の設定指示の入力があったか否かを判定し、設定指示の入力があったと判定した場合(Yes)は、ステップS33に移行し、そうでない場合(No)は、ステップS39に移行する。
【0077】
ステップS33に移行した場合は、記憶装置70に記憶されているエンコード情報の一覧を表示装置72に表示して、ステップS35に移行する。例えば、エンコード情報のファイル名の一覧を表示する。本実施形態では、GUIによって、ユーザが、入力装置74を介して簡易に所望のエンコード情報の選択を行うことが可能となっている。
ステップS35では、入力装置74を介して、ユーザがエンコード情報を選択したか否かを判定し、選択したと判定した場合(Yes)は、ステップS37に移行し、そうでない場合(No)は、選択されるまで判定処理を繰り返す。
【0078】
ステップS35においてエンコード情報が選択されステップS37に移行した場合は、選択されたエンコード情報をエンコード処理に用いる情報として設定して、ステップS31に移行する。
例えば、図7に示す、エンコード情報AおよびBのうち、エンコード情報Aが選択された場合は、エンコード情報Aをエンコード処理に用いる情報として設定し、エンコード情報Bが選択された場合は、エンコード情報Bをエンコード処理に用いる情報として設定する。
【0079】
一方、ステップS31において、エンコード情報の設定指示の入力がなくステップS39に移行した場合は、エンコード対象の情報群を入力して、ステップS41に移行する。
ここで、情報群の入力は、エンコード対象の情報群が予めファイルとして記憶装置70に記憶してある場合は、その記憶されたファイルの一覧を表示装置72により画面に表示し、その一覧の中からユーザが入力装置74を介して所望のファイルを選択し、記憶装置70からRAM62などのワークメモリへと読み出す処理となる。この場合に、情報群が複数ある場合は、自動的に連続して入力されるようにしてもよい。
【0080】
一方、エンコード対象の情報を、入力装置74を介してユーザが直接入力する場合は、入力装置74により画面に表示した入力欄などへの入力処理となる。
ここで、入力される情報群は、例えば、図5に示すエンコード対象情報に対応する情報群の場合は、図9に示すように、17桁の10進数となる。つまり、各情報群は、「0」、「1」、・・・、「8」、「9」といった10進数の各桁を表す単位情報(1桁の数字)の情報列(数字列)となる。なお、図9に示す情報群は、図書の特定に用いられるISBNコードの一例を示している。
【0081】
ステップS41では、ステップS39において入力された情報群に対する、入力装置74を介したユーザからのエンコード指示の入力があったか否かを判定し、エンコード指示の入力があったと判定した場合(Yes)は、ステップS43に移行する。一方、エンコード指示の入力が無い場合(No)は、入力があるまで判定処理を繰り返す。
ステップS43に移行した場合は、エンコード指示の入力に応じて、ステップS37で設定されたエンコード情報に基づきステップS39で入力された情報群をエンコードして、ステップS45に移行する。
【0082】
以下、図9に示す第1情報群「01234567890123452」を、図7(a)に示すエンコード情報Aを用いてエンコードする場合を例に挙げて、エンコード処理について具体的に説明する。
二次元コード100は、図6(b)に示すように、セル群Cg1〜Cg18の18個のセル群に分かれている。
【0083】
先述したように、セル群Cg1は、方向識別用の情報をエンコードするのに用いられる。このように方向識別用のセル群を左上のセル群Cg1に位置させた場合は、情報の方向が左から右に向かう方向となる。具体的に、セル群Cg1の右隣のセル群Cg2を先頭として、第1行目はCg2→Cg6の方向に情報の順番が決まる。そして、第2行目は、Cg6に続いてCg7→Cg12の方向に情報の順番が決まり、第3行目は、Cg12に続いてCg13→Cg18の方向に情報の順番が決まる。この情報の順番は、第1情報群の上位桁(左)から下位桁(右)へと向かう各桁の数字の並び順(0→1→2→・・・8→9→0→・・・4→5→2)に対応する。
つまり、セル群Cg2〜Cg18の17個のセル群を用いて、第1情報群の17桁の10進数をエンコードすることになる。
【0084】
まず、セル群Cg1の2つのセルは、方向識別用の情報をエンコードするため、図7(a)に示すエンコード情報から、両方とも黒色(K−K)となる。
次に、セル群Cg2は、第1情報群の最上位桁(一番左端)の数字「0」をエンコードすることになるので、図7(a)に示すエンコード情報から、左側のセルがシアン色(C)、右側のセルがマゼンタ色(M)となる。つまり「C−M」となる。
【0085】
同様に、セル群Cg3は2番目の数字「1」を、セル群Cg4は3番目の数字「2」を、セル群Cg5は4番目の数字「3」を、セル群Cg6は5番目の数字「4」をそれぞれエンコードすることになる。
従って、図7(a)のエンコード情報Aから、これらのエンコード結果は、セル群Cg3は「C−G」、セル群Cg4は「C−C」、セル群Cg5は「M−C」、セル群Cg6は「M−G」となる。
【0086】
さらに、セル群Cg7は6番目の数字「5」を、セル群Cg8は7番目の数字「6」を、セル群Cg9は8番目の数字「7」を、セル群Cg10は9番目の数字「8」を、セル群Cg11は10番目の数字「9」を、セル群Cg12は11番目の数字「0」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図7(a)のエンコード情報Aから、セル群Cg7は「M−M」、セル群Cg8は「G−M」、セル群Cg9は「G−M」、セル群Cg10は「G−G」、セル群Cg11は「K−C」、セル群Cg12は「C−G」となる。
【0087】
さらに、セル群Cg13は12番目の数字「1」を、セル群Cg14は13番目の数字「2」を、セル群Cg15は14番目の数字「3」を、セル群Cg16は15番目の数字「4」を、セル群Cg17は16番目の数字「5」を、セル群Cg18は17番目の数字「2」をそれぞれエンコードすることになる。
従って、これらのエンコード結果は、図7(a)のエンコード情報Aから、セル群Cg13は「C−K」、セル群Cg14は「C−C」、セル群Cg15は「M−C」、セル群Cg16は「M−G」、セル群Cg17は「M−M」、セル群Cg18は「C−C」となる。
【0088】
また、上記ステップS37において、図7(b)に示すエンコード情報Bが設定された場合は、そのエンコード結果は、セル群Cg1が「W−W」、セル群Cg2が「B−R」、セル群Cg3が「B−Y」、セル群Cg4が「B−B」、セル群Cg5が「R−B」、セル群Cg6が「R−Y」となる。
さらに、セル群Cg7が「R−R」、セル群Cg8が「Y−R」、セル群Cg9が「Y−R」、セル群Cg10が「Y−Y」、セル群Cg11が「W−B」、セル群Cg12が「B−Y」となる。
【0089】
なおさらに、セル群Cg13が「B−W」、セル群Cg14が「B−B」、セル群Cg15が「R−B」、セル群Cg16が「R−Y」、セル群Cg17が「R−R」、セル群Cg18が「B−B」となる。
なお、上記各セル群のエンコード結果は、RAM62などのメモリに一時保存される。
ステップS45では、RAM62に一時保存されているエンコード結果の情報を、少なくとも、二次元コード100の基本情報(外形形状の情報、セルの配列構成の情報、セパレータ110の色情報など)と、エンコード処理で使用したエンコード情報とに対応付けて記憶装置70に記憶して、ステップS47に移行する。
【0090】
ステップS47では、ユーザからの入力装置74を介した終了指示が入力されたか否かを判定し、入力されたと判定した場合(Yes)は、一連の処理を終了し、そうでない場合(No)は、ステップS31に移行する。
このようにして作成されたエンコード情報は、セルの基本情報に基づきカラー画像データ化される。例えば、エンコード情報Aを用いて第1情報群をエンコードした場合は、図10に示す二次元コードが形成される。
つまり、図10に示す二次元コード100は、17桁の10進数が、各セルの背景色となるセパレータ110の色が白色の場合に比較的認識率の高い、シアン色、マゼンタ色、緑色および黒色の4色を用いてエンコードされたものとなる。
【0091】
一方、エンコード情報Bを用いて第1情報群をエンコードした場合は、図11に示す二次元コードが形成される。
つまり、図11に示す二次元コード100は、17桁の10進数が、各セルの背景色となるセパレータ110の色が黒色の場合に比較的認識率の高い、赤色、青色、黄色および白色の4色を用いてエンコードされたものとなる。
【0092】
また、二次元コード100は、その利用時において、カラー画像を携帯端末などに表示したり、二次元コードのカラー画像を印刷装置73でカラー印刷し、カラー印刷した二次元コードの画像を物品に貼り付けたりすることで利用される。
例えば、図9に例示したISBNコードをエンコードしてなる二次元コード100の場合は、紙やシール等にカラー印刷した二次元コードを図書の背表紙等に貼り付けて利用する。
【0093】
(3−3)情報識別処理
次に、二次元コードリーダ1が、カメラ76からの画像データを受信中において、入力装置74を介したユーザからの指示入力に応じて実行される情報識別処理の処理手順を、図に基づいて説明する。
ここで、図12は、情報識別処理の処理手順の一例を示すフローチャートである。
情報識別処理が開始されると、まず、カメラ76で撮影された撮影画像データからのエッジ画像データの生成、エッジ画像データからの候補領域の抽出、候補領域が有効か否かの判定、原画像における有効な候補領域に対応する領域について二次元コードの各セルに対応する領域の色の判定(補正、再判定等含む)、有効な候補領域に対応する領域が特徴パターンを含むか否かの判定といった手順を経て、二次元コードの領域を検出する。
【0094】
次に、検出された二次元コードの領域に対して、各セル領域の色の判定結果とエンコード情報との照合を行い、検出した二次元コードでエンコードされている情報を識別(デコード)する。
情報識別処理は、CPU60によって、専用のコンピュータプログラムを実行することで行われる処理であって、プログラムが実行されると、図12に示すように、まず、ステップS100へと移行する。
【0095】
ステップS100では、入力装置74を介して、ユーザからの指示入力があったか否かを判定し、指示入力があったと判定した場合(Yes)は、ステップS102に移行し、そうでない場合(No)は、入力されるまで判定処理を続行する。
なお、本実施形態において、指示入力は、表示装置72に表示されたカメラ76の撮影画像を見ながらユーザが入力装置74を介して行う処理となる。
【0096】
例えば、図書館などにおいて、本棚に格納された複数の図書の背表紙にそれぞれ付された二次元コード100を撮影領域内に入れて撮影を行い、その撮影画像を見ながらユーザが指示入力を行う。
ステップS102に移行した場合(Yes)は、RAM62または記憶装置70から、指示入力のあったタイミングに表示していた画像データまたは該画像データに加えて複数フレーム分の画像データを取得して、ステップS104に移行する。
【0097】
具体的に、設定されたモードや仕様に応じて、指示入力が行われたタイミングの1枚の画像、または、指示入力のタイミングを起点にして予め設定された複数フレームの画像を取得する。そして、これらの画像データに対して以降の処理が実行される。但し、説明の便宜上、本実施形態では、1枚の画像を取得し、取得した1枚の画像について処理を行うこととする。
【0098】
ステップS104では、二次元コードを特徴づける情報を規定したテンプレートを記憶装置70から読み出して、ステップS106に移行する。
ここでいうテンプレートは、候補領域を規定する領域規則、候補領域が有効か否かを判定する形状情報、二次元コードにおける特徴的なパターン、二次元コードにマークとして付けられる色(色数,色の種類)の着色規則などを示す情報である。
【0099】
これらのうち、「領域規則」とは、二次元コードの領域からなる候補領域を規定するものであればよく、例えば、二次元コードの外形形状に応じて、真円形の領域、楕円形の領域などの円形の領域、矩形の領域、三角形の領域などの多角形の領域、または、これらに類似する形状の領域などとなる。類似する形状としては、例えば、二次元コードの外形形状が矩形形状であれば、台形形状の領域などの矩形形状を角度を変えて見た(撮影した)場合の形状等となり、二次元コードの外形形状が真円形であれば、六角形や八角形の領域などの画質等によって真円形が崩れた場合の形状等が該当する。また、例えば、形状等は無視して、閉領域であれば何でも候補領域として抽出するといった規則でもよいし、エッジ成分の分布パターン(エッジ成分の分布状態、分布されているエッジ成分の配置など)が特定のパターンの領域を抽出するといった規則でもよい。ただ、以降の処理による候補領域が有効か否かの判定などに要する処理負担を軽減するためには、複数の項目を選択して規定したものとすることが望ましく、この場合、候補領域としての抽出数が少なくなる結果、処理負担の軽減に伴って処理時間の短縮が実現されることとなる。
【0100】
また、「形状情報」とは、「領域規則」に基づいて抽出された候補領域が有効か否かを判定する際に用いるもので、例えば、抽出された候補領域の外形形状が円形である場合における扁平率や、外形形状が多角形である場合における各辺の長さや各辺で形成される角度、外形形状が多角形である場合における各辺の長さの比率など二次元コードの形状(理想の形状)に係る情報となる。
また、「特徴的なパターン」とは、例えば、二次元コードにおいてエンコードのシンボルとなるセルの配置パターンや、二次元コードであることを識別するために配置された特定シンボルの配置パターンや、二次元コードであることを識別するために配置されたマークのパターンなどのことである。
【0101】
例えば、図2および図3に例示した二次元コード100であれば、セルC11〜Cpqの各セルの配置パターンや、セルC11〜Cpqの各セルまたは一部のセルに付けられた複数の色などにより、二次元コードの領域を示す特徴的なパターンが形成されている。
つまり、各セルに付された複数の色やその組み合わせパターン、該複数の色の付されたセルの配置順等が特徴的なパターンを形成している。
【0102】
この場合に、特定のセルに付される色に何らかの情報を対応付けておき、この情報を用いた計算処理などによって、特徴的なパターンが含まれているか否かを判定することも可能である。つまり、各セルの配置パターンや、各セルの色などが正しいパターンおよび色となっているかを計算処理によって確認できる情報(例えば、誤り検出符号など)を対応付ける。
【0103】
この場合は、例えば、一部のセルに付された色に対応するコード値を用いて計算処理を行い、この計算結果の数値等が正しいパターンを示す数値となっているか否か等で判定を行うことになる。そのため、テンプレートにおける特徴的なパターンは、直接的なパターンだけではなく、間接的に正しいパターンを示す数値などの情報として設定される場合もある。
なお、この特徴的なパターンとしては、セパレータ110の領域もパターンに含ませる構成や、ヘッダー領域や特定セル等を設けて、これらのセルで特徴的なパターンを形成する構成など、別の構成により実現するものとしてもよい。
【0104】
また、「着色規則」とは、二次元コードにおける複数のセルそれぞれに付すべき色の規則であり、該当セルにてエンコードすべき情報、および、該当セルと隣接するセルに付された色に応じて決められるものである。例えば、エンコード時の使用色、エンコードする各種情報の種類に対して設定されている色の組み合わせ、未使用となっている色の組み合わせなどの情報を含む。
【0105】
ステップS106では、以降の処理で参照する変数X,Yを初期化(0→X,1→Y)して、ステップS108に移行する。
ステップS108では、ステップS102で取得した画像データに対してエッジ画像の生成処理を実行してエッジ画像データを生成し、ステップS110に移行する。なお、このエッジ画像生成処理における具体的な処理手順については後述する。
【0106】
ステップS110では、ステップS108において生成されたエッジ画像データに基づいて、このエッジ画像から、二次元コードからなる候補領域それぞれの位置を特定して、ステップS112に移行する。ここでは、ステップS104にて読み出されたテンプレートにおける「領域規則」に基づいて、第Y番目のエッジ画像から、二次元コードからなる候補領域を規定する画像中の座標それぞれが特定される。
【0107】
本実施形態では、二次元コード100が図2および図3などに示す外形形状(矩形形状)であることから、「領域規則に従った領域」として、線形化された輪郭部によって閉領域となる矩形形状の領域を候補領域として全て特定する。また、この「領域規則に従った領域」には、領域規則に従った領域だけでなく、その領域として許容される誤差範囲のパラメータで形成された領域も含まれる。例えば、誤差範囲内であれば、矩形形状だけでなく、台形形状、平行四辺形状、菱形形状なども含まれる。
【0108】
ステップS112では、ステップS110において、候補領域が特定されたか否かを判定し、特定されたと判定した場合(Yes)は、ステップS114に移行し、そうでない場合(No)は、ステップS140に移行する。
ステップS114に移行した場合は、ステップS110において特定された候補領域(座標情報)それぞれをリストに登録して、ステップS116に移行する。
ステップS116では、ステップS114においてリストに登録された候補領域のうち、以降の処理で処理対象となっていない(未処理の)候補領域があるか否かを判定し、あると判定した場合(Yes)は、ステップS118に移行し、そうでない場合(No)は、ステップS138に移行する。ここでは、リストに候補領域が登録されていない場合にも、未処理の候補領域がないと判定される。
【0109】
ステップS118に移行した場合は、リストに登録されている未処理の候補領域のうち、いずれか1の候補領域を選択して、ステップS120に移行する。
ステップS120では、ステップS118において選択された候補領域が有効なものであるか否かを判定する有効領域判定処理を実行して、ステップS122に移行する。なお、この有効領域判定処理における具体的な処理手順については後述する。
【0110】
ステップS122では、ステップS120の判定結果に基づき、ステップS118で選択した候補領域が、有効なものであるか否かを判定する。そして、有効なものであると判定した場合(Yes)は、ステップS124に移行し、そうでない場合(No)は、ステップS116に移行し、以降、別の候補領域について上記同様の処理を行う。
ステップS124に移行した場合は、直前に行われた上記ステップS110において特定された候補領域(新規候補領域)が、過去に行われた上記ステップS110において特定された候補領域(抽出済み候補領域)と同じであるか否かを判定する。
【0111】
具体的に、新規候補領域が抽出済み候補領域に領域として所定割合以上重複している場合、または、新規候補領域および抽出済み候補領域の一方が他方に包摂されている場合に、新規候補領域が抽出済み候補領域と同じであると判定される。
本実施形態では、候補領域が多角形となるため、エッジ画像から抽出され、かつ、有効と判定された候補領域それぞれが、別のエッジ画像における抽出済み候補領域と一致するか否かは、候補領域として形成された多角形における1以上の頂点Pnが抽出済み候補領域として形成された多角形におけるいずれかの頂点Poから一定範囲(例えば一定の半径r距離)内に位置しているか否かに応じて判定することとしてもよい(図13参照)。
【0112】
なお、ここでいう「いずれかの頂点から一定範囲内」とは、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域とが一致する場合に、両方の候補領域が位置しうる位置関係で決まる範囲内とすればよく、上記一定の半径r距離内に限られない。
そして、ステップS124において新規候補領域が過去に行われた上記ステップS110において特定されてRAM62または記憶装置70に格納されたいずれかの抽出済み候補領域と同じであると判定した場合(Yes)は、ステップS116に移行し、以降、別の候補領域について上記同様の処理を行う。
【0113】
一方、ステップS124において新規候補領域が抽出済み候補領域と同じではないと判定された場合(No)は、ステップS126に移行する。
ステップS126に移行した場合は、この時点における新規候補領域を情報の識別に適したものとなるように補正して、ステップS128に移行する。
ここでは、新規候補領域の形状、角度が補正される。具体的には、例えば、処理対象の領域が斜めに配置されていた場合や、正方形になっていない歪んだ形状となっている場合に、そのようなズレを補正すべく回転や、座標軸に合わせた延長・短縮などが行われる。
【0114】
なお、領域そのものを補正するのではなく、これ以降の処理で二次元コードか否かの判定、および、ここからの情報の識別を行う際に基準とする座標軸の角度や長さを補正することとしてもよい。
さらに、このステップS126では、新規候補領域の色成分が、各セルにおける色の識別性(認識率)を高めるべく補正される。
【0115】
具体的に、原画像データがRGB色空間等のCMYK以外の色空間で色が表現されたカラー画像データである場合に、各ピクセル値を、CMYKの色空間で色が表現されたカラー画像データへと変換する。これにより、以降の色判定処理において、例えば、RGB色空間では認識しにくい色(例えば、セパレータ110が黒色の場合の緑色)の認識精度を向上することができる。本実施形態では、CMYK以外の色空間(本実施形態ではRGB色空間)の値を、CMYK色空間の値に変換する変換テーブル(色変換用LUT(Look Up Table))が記憶装置70に記憶されており、この色変換用LUTを用いて色変換を行う。
【0116】
但し、本実施形態では、情報のエンコード時に比較的認識率の高い色を優先して用いてセルに色を付しているので、4色などの使用する色数が比較的少ない場合に、この変換処理を省略することも可能である。つまり、RGB色空間の画像データのままで以降の処理を実施することも可能である。その場合は、後述する色の判定処理において、色の成分領域(判定領域)との比較処理ではなく、RGB色空間の対応色そのもの(4色のうちのいずれか1色)との比較処理を行うことになる。
【0117】
また、補正の必要が無い場合は、上記いずれの処理も行わずにステップS128に移行する。
ステップS128では、上記ステップS126において補正された候補領域につき、その候補領域における二次元コードのセルに対応する領域にそれぞれに付された色を特定するための色判定処理を行って、ステップS130に移行する。
【0118】
この色判定処理は、上記ステップS126において補正された候補領域を引数として実行され、この候補領域におけるセルに対応する領域それぞれに付された色が戻り値となる。なお、この色判定処理における具体的な処理手順については後述する。
ステップS130では、上記ステップS128の色判定処理の結果に基づき、上記ステップS102において取得された画像データで示される原画像のうち、上記ステップS126において補正された候補領域に対応する対応領域に、二次元コードとしての特徴的なパターンが含まれているか否かを判定する。
【0119】
ここでは、色の判定された各セルの領域について、これらのセルやマークのパターンが、上記ステップS104において読み出されたテンプレートにおける「特徴的なパターン」で規定されたセルの配置パターンやマークのパターンと一致しているか否かを判定する。
あるいは、特定の複数のセルに付された色に対応するコード値を用いて、採用した誤り検出手法に応じた計算処理を行い、その計算結果が、「特徴的なパターン」で規定された誤りの無い場合の数値(例えば、誤り検出符号に対応するセルの色に対応するコード値)と一致しているか否かを判定する。
【0120】
そして、一致している場合は、コード領域(セルの領域)に二次元コードとしての特徴的なパターンが含まれていると判定し、一致していない場合は、コード領域に二次元コードとしての特徴的なパターンが含まれていないと判定する。
なお、本実施形態において、図10および図11に例示した二次元コード100は、ISBNコードをエンコードしたものとなっており、最後の桁に対応するセル群Cg18の示す数値がチェックディジットとなっている。従って、方向識別用のセル群Cg1の検出に加えて、このチェックディジットを利用して、特徴的なパターンを含むか否かを判定することも可能である。
【0121】
つまり、セル群Cg2〜Cg17に付された各色の組み合わせに対応する数字に、ISBNで用いられているモジュラス10ウェイト3という計算法を適用して、チェックディジットを算出する。この算出値が、セル群Cg18に付された色の組み合わせに対応する数字と一致するか否かによって、特徴的なパターンを含むか否かの判定を行うことが可能である。この場合は、情報の識別(デコード)も同時に行われる。
【0122】
そして、ステップS130において、二次元コードとしての特徴的なパターンが含まれていないと判定した場合(No)は、ステップS116に移行し、以降、別のコード領域について上記同様の処理を行う。
一方、ステップS130において、二次元コードとしての特徴的なパターンが含まれていると判定した場合(Yes)は、ステップS132に移行する。
【0123】
ステップS132に移行した場合は、この時点における新規候補領域を二次元コードの領域として検出して、ステップS134に移行する。
この検出処理は、新規候補領域の座標情報に基づき、原画像から新規候補領域を切り出して(複製画像を生成して)、記憶装置70に記憶する処理となる。
ステップS134では、上記ステップS132において検出された二次元コードの領域につき、上記ステップS128において特定された色に基づいて、その二次元コードで示される情報を、セルCそれぞれに付された色およびその組み合わせに基づいて識別して、ステップS136に移行する。
【0124】
この識別処理においては、まず、方向識別用のセル群Cg1を検出する。例えば、図10に示す二次元コード100であれば、セパレータ110の色が白色となっているので、Cg1の位置を特定するために、左上端または右下端に位置するセル群のうち、2つのセルの色の組み合わせが「K−K」となるものを検出する。
つまり、「K−K」の組み合わせとなっているセル群が方向識別用のセル群Cg1となり、この検出によって、セル群の配列方向を判定することができる。従って、セル群Cg1として検出されたセルの領域の右隣のセルの領域から順に、上記色判定処理において判定された色と、エンコード時に用いた図7(a)に示すエンコード情報Aとから、各色の組み合わせで示される情報(ここでは0〜9のいずれかの数字)を識別する。
【0125】
ここで、ISBNコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、そのときに識別した情報を採用することができるので、この処理を省略して次のステップに移行することができる。
ステップS136では、ステップS134において識別された情報を、RAM62または記憶装置70に格納して、ステップS138に移行する。
なお、ISBNコードのチェックディジットを利用して特徴的なパターンの有無を判定した場合は、ステップS130で識別された情報を、RAM62または記憶装置70に格納することになる。
【0126】
ステップS138では、変数Xをインクリメント(X+1→X)して、ステップS140に移行する。
ここまで示したように、上述したステップS116〜S136までが行われるのは、ステップS110において特定された候補領域が二次元コードの体をなしていたことを意味している。そのため、このステップS138では、この変数Xをインクリメントすることにより、二次元コードの領域として検出かつ識別された候補領域の数を積算していることになる。
ステップS140では、この時点で変数Xが所定数以上になっているか否かを判定する。つまり、所定数以上の候補領域が二次元コードの体をなしていたか否かを判定する。
【0127】
そして、ステップS140において、変数Xが所定数以上になっていると判定した場合(Yes)は、ステップS140に移行し、変数Xが所定数以上になっていないと判定した場合(No)は、ステップS142に移行する。
つまり、上記ステップS116〜S140は、二次元コードとして検出かつ識別された候補領域の数が所定数以上とならない限り、リストに登録された全てのコード領域について繰り返し行われる。
その後、全ての候補領域について上記ステップS116〜S140が行われたら、上記ステップS116において未処理の候補領域がないと判定されて、ステップS142に移行し、この時点での変数Yの値が、変数nの値より小さい値(Y<n)となっているか否かを判定する。
【0128】
そして、ステップS142において、変数Yの値が変数nの値より小さい値となっていると判定した場合(Yes)は、ステップS144に移行する。
ステップS144に移行した場合は、変数Yをインクリメント(Y+1→Y)して、ステップS108に移行し、上記ステップS108〜S144の処理を行う。
これ以降は、次のエッジ画像に基づいて上記ステップS110〜S144の処理が行われ、その処理の中で変数Xが所定数以上になれば、上記ステップS140で「Yes」と判定されて、ステップS146に移行する。一方、その処理の中で変数Xが所定数以上にならなければ、その次のエッジ画像についての処理が繰り返し行われることとなる。
さらに、ステップS142において、変数Yの値が変数nの値以上の値となっていると判定した場合(No)は、変数Xの値に関係なく、一連の処理を終了する。
【0129】
(3−4)エッジ画像生成処理
続いて、図12のステップS108であるエッジ画像生成処理の処理手順の一例を図14に基づき説明する。図14(a)は、変数Yの値と画像種類およびしきい値との対応関係の一例を示す図であり、(b)は、エッジ画像生成処理の処理手順の一例を示すフローチャートである。
本実施形態において、エッジ画像の生成は、異なる複数種類の変換条件に基づいて行う。
具体的に、第1〜第i(1≦i)の変換条件に対応する第1〜第i番目のエッジ画像までが、それぞれ異なるしきい値で原画像をグレースケール化してなるグレースケール画像を二値化した画像の輪郭部を線形化した画像となる。
【0130】
また、第(i+1)〜第(i+j)の変換条件に対応する第(i+1)〜第(i+j)番目(1≦j)のエッジ画像までが、j種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像を予め設定されたしきい値で二値化した二値化画像の輪郭部を線形化した画像となる。
特に、各色成分画像について、予め設定されたしきい値としてk種類(1≦k)のしきい値を用いて二値化を行う場合は、第(i+1)〜第(i+j×k)の変換条件に対応する第(i+1)〜第(i+j×k)番目のエッジ画像までが、j種類の色成分それぞれを原画像から抽出した色成分画像をグレースケール化し、該グレースケール画像をk種類のしきい値それぞれで二値化した二値化画像の輪郭部を線形化した画像となる。
【0131】
従って、最大で「i+j×k」種類の変換条件に基づいて「i+j×k」種類のエッジ画像を生成することができる。
ここでいう「i」および「k」は、予め用意されたしきい値の種類によって値が決定し、「j」は、原画像に用いられている色空間(表色系)の種類によって規定される色成分数によって値が決定する。例えば、しきい値の種類がそれぞれ3種類で、色空間がRGB色空間であれば、「i」および「k」の値は3、「j」の値は3となる。
【0132】
本実施形態では、図14(a)に示すように、変数Yの値に対応する1〜6の数値と、変換条件の種類を示すエッジ画像を生成する際に用いる画像の種類としきい値とが対応付けられてデータテーブルとして記憶装置70に記憶されている。なお、図14(a)の例は、「i」の値が3、「j」の値が3、「k」の値が1となる例である。ここで、変数Yの上限値は、変数nにセットされる値によって決まるが、本実施形態では、ユーザが、要求する二次元コードの検出精度に応じた値を任意にセット可能に構成されている。なお、図14(a)の例では、変数nの最大値は「6」となる。
エッジ画像生成処理が開始されると、図14(b)に示すように、まず、ステップS200に移行し、変数Yの値が3以下となっているか否かを判定する。
【0133】
そして、ステップS200において、変数Yの値が3以下となっていると判定した場合(Yes)は、ステップS202に移行し、変数Yの値が3よりも大きいと判定した場合(No)は、ステップS208に移行する。
ステップS202に移行した場合は、上記図12のステップS102で取得した原画像のデータを複製し、該複製した原画像データに基づき、グレースケール画像を生成して、ステップS204に移行する。
【0134】
ここでは、原画像のデータが、RGBの各色8ビット(0〜255)のカラー画像データであるとして、この画像データからグレースケール画像を生成する。
なお、必須ではないが、原画像データのピクセル数が膨大(例えば、1200万画素等)な場合は、処理負荷および処理時間を考慮して、検出精度を損なわない程度に、解像度をこれよりも低解像度へと変換する処理を行うようにしてもよい。
【0135】
また、グレースケール画像の生成方法としては、例えば、中間値法、平均法等の周知の生成方法がある。
中間値法は、R、G、Bの3つの色成分の値のうち、最大値と最小値の2つを足して2で割ったものを利用してグレースケール化する方法である。
平均法は、平均の取り方によって、算術平均(相和平均)法、幾何平均(相乗平均)法、加重平均法等がある。
【0136】
算術平均法は、R、G、Bの3つの色成分の値を算術平均(足して3で割る)して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
幾何平均法は、R、G、Bの3つの色成分の値を幾何平均(各要素の値の対数値を算術平均)して平均値を算出し、算出した平均値を利用してグレースケール化する方法である。
【0137】
加重平均法は、R、G、Bの3つの色要素の値に対して、重み付けをして3で割り、平均を取ってグレースケール化する方法である。この重み付けの係数の内容によって、NTSC加重平均法、HDTV加重平均法等がある。NTSC加重平均法は、日本やアメリカのテレビ放送で利用されている輝度信号(明るさ)の分離方法のものと同じである。また、HDTV加重平均法は、デジタルハイビジョン放送を映す際に基準とされる、HDTV規格に基づいて重み係数が設定されたものである。
グレースケール画像の生成方法は、処理速度や検出精度等を考慮して適切なものを用いることが望ましい。
【0138】
そして、上記いずれかの方法を用いた場合は、算出された1つの輝度値を、R、G、Bの3つの色成分の値(R=G=B)とする。
なお、ここでは、グレースケール画像を、R,G,Bの各色成分の値を輝度値に変換することで生成する例を説明したが、輝度以外に、明度等によってグレースケール画像を生成するようにしてもよい。
このようにして、原画像データの各ピクセル値をグレースケール値に変換することで、グレースケール画像データが生成される。
【0139】
ステップS204では、ステップS202で生成したグレースケール画像データを、現時点の変数Yの値に対応したしきい値により二値化してなる二値化画像データを生成して、ステップS206に移行する。
具体的に、グレースケール画像データの各色のピクセル値が8ビットの階調値で表現されているときに、しきい値と、グレースケール画像の各ピクセル値とを比較し、ピクセル値がしきい値以下のときに、ピクセル値を「0」に変換し、ピクセル値がしきい値より大きいときに、ピクセル値を「255」に変換することで二値化を行う。
【0140】
ここでは、図14(a)に示すように、変数Yの値1、2、3に対して、120、150、200の3種類のしきい値がそれぞれ用意されている。この二値化のしきい値は、二次元コードの「領域規則」および「特徴的なパターン」に応じ、以降の処理において有効な候補領域を抽出し、適切に二次元コードを識別するのに適した値として定められたものである。
従って、変数Yの値が1のときは、しきい値120を用いて上記ステップS202で生成したグレースケール画像を二値化し、変数Yの値が2、3のときは、しきい値150、200をそれぞれ用いて上記ステップS202で生成したグレースケール画像を二値化する。
【0141】
例えば、しきい値120のときに、グレースケール画像におけるあるピクセル値が(80,80,80)である場合は、二値化後の値は、黒色に対応する(0,0,0)となる。一方、しきい値120のときに、グレースケール画像におけるあるピクセル値が(160,160,160)である場合は、二値化後の値は、白色に対応する(255,255,255)となる。
【0142】
このようにして、上記ステップS202で生成したグレースケール画像データの各ピクセル値を二値化したものが、原画像データに対する二値化画像データとなる。
ステップS206では、二値化画像データに対して、二値化画像中の物体(オブジェクト)の輪郭部を線形化してなるエッジ画像データを生成して、一連の処理を終了し、元の処理に復帰する。
【0143】
本実施形態では、公知のブレゼンハムの線分描画アルゴリズムによって、二値化画像中に存在する物体の輪郭部を線形化する。なお、本実施形態では、線形化後の輪郭線を形成していない不要なピクセルは除去(例えば、ピクセル値を(0,0,0)に変換)する。
ここで、ブレゼンハムの線分描画アルゴリズムは、割り算等を用いずに全てを整数演算のみで行うことができるため、高速に線分を描画することができる。
このようにして、二値化画像中の物体の輪郭部を線形化した画像のデータが、エッジ画像データとなる。
【0144】
一方、ステップS200において変数Yの値が3よりも大きくてステップS208に移行した場合は、原画像のデータから、変数Yの値に対応した色成分を抽出して、ステップS210に移行する。
ここでは、図14(a)に示すように、変数Yの値4、5、6に対して、赤色、緑色、青色の色成分をそれぞれ抽出する。
例えば、変数Yの値が4であり、原画像データのあるピクセル値が(120,80,45)である場合は、赤色成分値(120,0,0)を抽出する。同様に、変数Yの値が5であれば、緑色成分値(0,80,0)を抽出し、変数Yの値が6であれば、青色成分値(0,0,45)を抽出する。
【0145】
このようにして、各色成分の値を抽出してなる画像データが、赤色成分画像データ、緑色成分画像データ、青色成分画像データとなる。
ステップS210では、ステップS208で生成した色成分画像データからグレースケール画像データを生成して、ステップS212に移行する。
グレースケール画像データの生成は、上記ステップS202と同様の処理となる。
【0146】
ステップS212では、ステップS210で生成したグレースケール画像に対して、予め設定されたしきい値で二値化を行い、二値化画像データを生成して、ステップS206に移行する。
ここでは、図14(a)に示すように、変数Yの値4、5、6に対して、共通のしきい値120が用意されている。
従って、上記ステップS210で生成したグレースケール画像データに対して、しきい値120を用いて二値化を行い、ステップS208で生成した色成分画像データに対する二値化画像データを生成する。
【0147】
そして、ステップS212で二値化画像データを生成後は、ステップS206に移行して、二値化画像中の物体の輪郭部を線形化してなるエッジ画像データを生成し、一連の処理を終了して、元の処理に復帰する。
なお、図14(a)に示す例では、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の種類を1種類としたが、この構成に限らず、第7以降の変換条件を設定して、複数種類のしきい値を用いて二値化を行う構成としてもよい。
【0148】
また、図14(a)に示す例では、原画像に対応するグレースケール画像に対してしきい値を小さい値から順に用いて二値化を行い、その二値化画像からエッジ画像を生成する処理を行う構成とした。さらに、原画像に対応するグレースケール画像を用いたエッジ画像の生成処理の後に、色成分画像に対応するグレースケール画像を二値化してエッジ画像を生成する処理を、赤、緑、青の色成分画像の順で行う構成としたが、この構成に限らない。
例えば、原画像に対応するグレースケール画像の二値化に用いるしきい値を別の順番で用いる構成、色成分画像に対応するグレースケール画像の二値化を別の色の順番で行う構成としてもよい。
【0149】
また、例えば、色成分画像を用いたエッジ画像の生成処理を原画像を用いた生成処理よりも先に行う構成、原画像と色成分画像とを用いたエッジ画像の生成処理を交互に行う構成、ランダムに行う構成など、別の順番で行う構成としてもよい。
また、色成分画像に対応するグレースケール画像の二値化を複数種類のしきい値を用いて行う場合は、そのしきい値を用いる順番も小さい方から順に行う構成だけに限らず、別の順番とする構成としてもよい。また、色成分画像に対応するグレースケール画像の二値化に用いるしきい値の値は、原画像に対応するグレースケール画像の二値化に用いるしきい値と同じ値であってもよいし、異なる値であってもよい。
【0150】
また、図14(a)に示す例では、原画像に対するしきい値を3種類、色成分画像に対するしきい値を1種類、色成分画像数を3種類としたが、これらの組み合わせに限らず、異なる種類数の組み合わせとしてもよい。
また、図14(a)に示す例では、原画像および色成分画像の双方を用いてエッジ画像の生成を行うことが可能な構成としたが、この構成に限らず、原画像だけを用いてエッジ画像を生成する構成や、色成分画像だけを用いてエッジ画像を生成する構成など他の構成としてもよい。
【0151】
また、図14(a)に示す例では、原画像に対応するグレースケール画像を二値化する際の3種類のしきい値として、「120」、「150」、「200」を用いているが、これに限らず、別の値を用いる構成としてもよい。同様に、図14(a)に示す例では、色成分画像に対応するグレースケール画像を二値化する際のしきい値として、「120」を用いているが、これに限らず、別の値を用いる構成としてもよい。
【0152】
(3−5)有効領域判定処理
続いて、図12のステップS120である有効領域判定処理の処理手順を図15および図16に基づき説明する。
ここで、図15は、有効領域判定処理の処理手順を示すフローチャートである。また、図16(a)は、理想的な候補領域の形状例を示す図であり、(b)〜(e)は、誤差範囲外の形状例を示す図であり、(f)〜(g)は、誤差範囲内の形状例を示す図である。
候補領域の縦横比は、図16(a)に示すように、理想の領域形状における短辺の長さAと長辺の長さBとの比(A:B=A/B)となっていることが望ましい。また、候補領域の各辺間(四隅)の角度は、図16(a)に示すように、理想的には、いずれも90°であることが望ましい。
【0153】
しかし、上記ステップS110の候補領域の特定処理においては、矩形形状だけでなく台形形状等の形状も含む閉領域(閉四角領域)であれば何でも候補領域として特定するようになっているため、様々な外形形状の候補領域が特定されることになる。また、特定された候補領域が二次元コードのものであっても、撮影環境(撮影角度等)や撮影画像の画質等によって、形状が理想的な形状とならないこともある。そのため、厳密な判定を行ってしまうと、二次元コードの領域に該当する領域をも除外することになってしまう。そこで、本実施形態では、判定の際の縦横比および角度等の二次元コードの理想の形状情報に誤差範囲を設定している。
【0154】
ここでは、本実施形態の二次元コードの領域が、図2および図3などに示すように、矩形形状であることと、判定処理の処理負荷とを考慮して、二次元コードの理想的な縦横比と各辺間の角度とに誤差範囲が設定された形状情報に基づき有効領域か否かを判定する例を説明する。
有効領域判定処理が開始されると、図15に示すように、まず、ステップS300に移行し、選択された候補領域の縦横比が、テンプレートの形状情報に定められた縦横比の誤差範囲内か否かを判定する。
【0155】
例えば、図16(b)、(c)および(f)に示す候補領域のように、短辺の長さをC、長辺の長さをDとした場合に、縦横比は「C:D=C/D」となり、理想形との誤差drは、「dr=A/B−C/D」となる。そして、誤差範囲を「−dx〜+dx」とし、本実施形態では、drが「−dx〜+dx」の範囲内であれば、誤差範囲内であると判定し、「−dx〜+dx」の範囲外であれば、誤差範囲外であると判定する。
【0156】
そして、ステップS300において、候補領域の縦横比が誤差範囲外であると判定した場合(No)は、ステップS302に移行し、候補領域の縦横比が誤差範囲内であると判定した場合(Yes)は、ステップS304に移行する。
ステップS302に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図16(b)および(c)に示すように、理想の縦横比A:Bに対して極端に縦横比の異なる形状を排除することができ、これらの領域に対して以降の処理(図12のステップS124以降の処理)が行われるのを防ぐことができる。
【0157】
一方、縦横比が誤差範囲内であると判定されステップS304に移行した場合は、候補領域の各辺間で形成される角度が、テンプレートの形状情報に定められた角度の誤差範囲内か否かを判定する。
例えば、図16(d)〜(f)に示すように、各辺間(四隅)の角度をβ1〜β4とした場合に、理想形の角度との誤差dβ1〜dβ4は、理想形の角度90°から角度β1〜β4をそれぞれ減じたもの「dβ1〜dβ4=90°−β1〜90°−β4」となる。そして、誤差範囲を「−dy〜+dy」とし、本実施形態では、dβ1〜dβ4がいずれも「−dy〜+dy」の範囲内であれば誤差範囲内であると判定し、いずれか1つでも「−dy〜+dy」の範囲外であれば誤差範囲外であると判定する。
【0158】
そして、ステップS304において候補領域の各辺間の角度が誤差範囲外であると判定した場合(No)は、ステップS306に移行し、候補領域の各辺間の角度が誤差範囲内であると判定した場合(Yes)は、ステップS308に移行する。
ステップS306に移行した場合は、誤差範囲外と判定された候補領域を無効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
これにより、例えば、図16(d)および(e)に示すように、理想の角度に対して角度β1〜β4の少なくとも1つが誤差範囲外の角度となっている形状を排除することができ、これらの領域に対して以降の処理(図12のステップS124以降の処理)が行われるのを防ぐことができる。
【0159】
一方、角度が誤差範囲内であると判定されステップS308に移行した場合は、誤差範囲内と判定された候補領域を有効な候補領域であると判定して(判定結果を戻り値として)、一連の処理を終了し、元の処理に復帰する。
例えば、図16(f)に示す候補領域のように、角度β1〜β4の誤差dβ1〜dβ4がいずれも誤差範囲内(この例では、いずれも90°)で、縦横比の誤差drが「−dx〜+dx」の範囲内となる程度で縦横比のみが異なる場合に、この候補領域は除外されることなく、有効な候補領域と判定される。
【0160】
同様に、例えば、図16(g)に示す候補領域のように、縦横比の誤差drが「−dx〜+dx」の範囲内であるが、角度β1〜β4がいずれも90°とならずに斜めに歪んでいても、角度β1〜β4の誤差dβ1〜dβ4のいずれもが「−dy〜+dy」の誤差範囲内となる場合には、この候補領域は除外されることなく、有効な候補領域と判定される。
つまり、本実施形態では、縦横比および角度の双方が誤差範囲内に納まっている候補領域のみを有効な候補領域と判定する。
【0161】
(3−6)色判定処理
続いて、図12のステップS128である色判定処理の処理手順を図17に基づき説明する。
ここで、図17は、色判定処理の処理手順の一例を示すフローチャートである。
色判定処理が開始さると、図17に示すように、まず、ステップS400に移行して、図12のステップS130で検出された二次元コードの領域におけるセパレータ110の領域を特定(座標を特定)して、ステップS402に移行する。
【0162】
なお、検出された二次元コードの領域は、例えば、図2および図3などの形状姿勢において、左上のピクセルの座標を(0,0)として管理される。そして、セパレータ110の特定は、座標(0,0)から、行方向および列方向にピクセルを走査(ラスタスキャン)して、各ピクセルの値(色)が、セパレータ110の色(本実施形態では白(W)または黒(K))の判定領域に含まれているか否かを判定する。そして、ピクセルの色が判定領域に含まれていると判定したときに、そのピクセル(座標)をセパレータ110と判定する。そして、この座標情報をRAM62または記憶装置70に記憶する。
【0163】
ステップS402では、セパレータ110の座標情報に基づき、各セルの存在する領域を分割して、ステップS404に移行する。
具体的に、白色(W)または黒色(K)のセパレータ110に周囲(四辺)を囲まれた領域の座標を各セルの座標として、その座標情報をRAM62または記憶装置70に記憶する。
ステップS404では、以降の処理で参照する変数を初期化(0→ap,0→x,0→y)して、ステップS406に移行する。
【0164】
ステップS406では、セパレータ110の特定された二次元コードの領域における座標(x,y)のピクセルを選択して、ステップS408に移行する。
ステップS408では、変数apの値が予め定められた一定数以上か否かを判定し、一定数以上ではないと判定した場合(No)は、ステップS410に移行し、一定数以上であると判定した場合(Yes)は、ステップS422に移行する。
ステップS410に移行した場合は、選択したピクセルの値(色)が、二次元コードにおいて使用される複数の色それぞれを中心座標として広がる色空間上の判定領域のうち、いずれかの判定領域に含まれている(いずれの判定領域内に位置する)か否かを判定する。
【0165】
そして、ステップS410において、選択したピクセルがいずれかの判定領域内に含まれていると判定した場合(Yes)は、ステップS412に移行し、選択したピクセルがいずれの判定領域にも含まれていないと判定した場合(No)は、ステップS414に移行する。
ステップS412に移行した場合は、変数apをインクリメント(ap+1→ap)して、ステップS414に移行する。
ここでは、変数apをインクリメントすることで、判定領域に含まれていると判定されたピクセルの数を計数している。この判定結果(判定領域の情報および計数結果を含む)は、各セルに対応付けてRAM62または記憶装置70に記憶される。
【0166】
なお、ここでは、変数apにより、同じ色の判定領域に含まれるピクセルの数を計数することが望ましい。しかし、各セルの領域において、それぞれ異なる色の判定領域に含まれるピクセルがある場合に、上記ステップS412の処理では、これらを区別せずに計数してしまう。つまり、同じセルの領域において、黄色と判定されても、マゼンタ色と判定されても、変数apはインクリメントされてしまう。従って、それぞれ異なる色の判定領域に含まれるピクセルがあることを想定した場合に、別の変数を用いて各領域に含まれるピクセルの数を計数し、上記ステップS412の処理を、現時点で最も数の多い判定領域のピクセル数を変数apに設定する処理に代えてもよい。
その後、ステップS414に移行して、変数xの値が、その行の一番右端のx座標であるxEであるか否かを判定する。
【0167】
一方、選択したピクセルがいずれの判定領域にも含まれていないと判定された場合も、ステップS414に移行して、変数xの値が、xEであるか否かを判定する。
そして、変数xの値がxEではないと判定した場合(No)は、ステップS416に移行し、変数xの値がxEであると判定した場合(Yes)は、ステップS422に移行する。
ステップS416に移行した場合は、変数xをインクリメント(x+1→x)して、ステップS418に移行する。
【0168】
つまり、変数xの値がxEではない場合に、変数xをインクリメントすることで、1つ右隣のピクセルに座標を変更する。
ステップS418では、現時点の座標(x,y)が次のセルに対応するセパレータ部分の開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップS420に移行し、そうでない場合(No)は、ステップS406に移行する。
ステップS420に移行した場合は、変数apを初期化(0→ap)して、ステップS406に移行する。
つまり、色判定領域に含まれる色のピクセルが一定数以上とならないまま、x座標が、次のセルに対応するセパレータの開始x座標に到達した場合に、変数apを初期化する。
【0169】
一方、ステップS414において変数xの値がxEであると判定されてステップS422に移行した場合は、変数yの値が列方向の一番下端のy座標であるyEであるか否かを判定する。
そして、変数yの値がyEではないと判定した場合(No)は、ステップS424に移行し、変数yの値がyEであると判定した場合(Yes)は、ステップS438に移行する。
ステップS424に移行した場合は、変数apおよび変数xを初期化(0→ap,0→x)し、変数yをインクリメント(y+1→y)して、ステップS406に移行する。
【0170】
つまり、変数xを初期化し、変数yをインクリメントすることで、1つ下隣の行で且つ一番左端のピクセルに座標を変更する。このとき、座標(x,y)が次のセルに対応した領域の座標となるので、変数apも初期化する。
一方、ステップS408において、変数apの値が一定数以上ではないと判定されてステップS426に移行した場合は、変数xの値が、xEであるか否かを判定する。
そして、変数xの値がxEではないと判定した場合(No)は、ステップS428に移行し、変数xの値がxEであると判定した場合(Yes)は、ステップS432に移行する。
ステップS428に移行した場合は、変数xをインクリメント(x+1→x)して、ステップS430に移行する。
【0171】
ステップS430では、現時点の座標(x,y)が次のセルに対応するセパレータの開始座標であるか否かを判定する。そして、次のセパレータの開始座標であると判定した場合(Yes)は、ステップS432に移行し、そうでない場合(No)は、ステップS426に移行する。
ステップS432に移行した場合は、変数apを初期化(0→ap)して、ステップS406に移行する。
つまり、変数apが一定数以上のときに、上記ステップS426〜S430の処理を繰り返し行うことで、各セルCに対応する領域においてその行の残りのピクセルに対して上記ステップS410の色判定処理を省略している。
【0172】
ここで、上記ステップS408における変数apの比較対象である一定数は、色の判定精度を考慮して予め設定される値であり、各行における各セルCのピクセル数未満の値となる。従って、各行の色の判定に十分な一定数の色の判定がされたことに応じて、残りのピクセルに対する色判定処理を省略することとなる。
具体的に、例えば、一定数を10としたときに、あるセルの領域におけるいずれかの行において黒色を中心座標とした判定領域に含まれると判定されたピクセルが10ピクセル(ap=10)になったときに、ステップS408において、変数apの値が一定数以上であると判定され、該当セルCの同じ行の残りのピクセルに対しては上記ステップS410の色判定処理が省略される。
【0173】
一方、ステップS426において、変数xの値がxEであると判定されてステップS434に移行した場合は、現時点における変数yの値が列方向の一番下端のy座標であるyEであるか否かを判定する。
そして、ステップS434において、変数yの値がyEではないと判定した場合(No)は、ステップS436に移行し、変数yの値がyEであると判定した場合(Yes)は、ステップS438に移行する。
ステップS436に移行した場合は、変数apおよび変数xを初期化(0→ap,0→x)し、変数yをインクリメント(y+1→y)して、ステップS406に移行する。
【0174】
一方、二次元コードの領域における全てのピクセルについて色判定が終了して、ステップS438に移行した場合は、RAM62または記憶装置70に記憶された各セルCの領域の各行のピクセルの色の判定結果に基づき、各セルCの色を判定して、ステップS440に移行する。
具体的に、各セルCの領域について、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数以上のときに、各セルCの色をその判定領域の中心座標の色として判定する。そして、各セルCと、判定された色とが対応づけられてRAM62または記憶装置70のデータテーブルに登録される。ここでは、データテーブルに登録済のセルCに対して色が判定された場合、このセルCに対応する色として、こうして判定された最新の色に更新される。なお、判定領域内に含まれるピクセル数が一定数以上となっている行が所定数未満であり、二次元コードに用いられる複数色の判定領域のいずれにも含まれていないと判定された場合には、該当のセルCに対し、判定領域外の色である旨が対応づけられる。
【0175】
ステップS440では、ステップS438で色が判定されたセルCの中に、着色規則に従っていない色の付されたセルCが一定数以上存在しているか否かを判定する。
ここでは、この時点でセルCと色とが対応づけて登録されたデータテーブルの中に、判定領域外の色である旨が対応づけられたセルCが一定数(例えば全体の3割)以上存在していることをもって、着色規則に従っていない色の付されたセルCが所定割合以上存在していると判定される。
【0176】
なお、ここでは、着色規則に従っていない色の付されたセルCが一定数以上存在しているか否かを、二次元コードのセルCに占める相対的な数(つまり割合)により判定するように構成しているが、二次元コードのセルCに占める絶対数により判定するように構成してもよいし、着色規則に従っていないセルCが特定のパターン(例えば、このセルCが2つ以上連続しているなど)で配置されている場合におけるこのパターンの数により判定するように構成してもよい。
【0177】
このステップS440において、着色規則に従っていない色の付されたセルCが一定数以上存在していると判定した場合(Yes)は、ステップS442に移行する。
ステップS442に移行した場合は、判定領域を変更して再度の色判定が可能な状態であるか否かを判定する。
ここでは、ステップS410における色判定で参照された判定領域が、あらかじめ定められた上限まで変更されている場合に、再度の色判定が可能な状態ではないと判定される。
【0178】
この「あらかじめ定められた上限」とは、各判定領域が他の判定領域と干渉しないように変更できる範囲として定められたものであり、後述のように、判定領域を単純に拡げていく場合であれば、各判定領域を他の領域と干渉する程度まで拡張した状態となっていることをもって「あらかじめ定められた上限まで変更されている」こととすればよい。また、判定領域を変移させていく場合であれば、判定領域で規定される色が別の色成分になる直前の位置(境界)まで変移した状態となっていることをもって、「あらかじめ定められた上限まで変更されている」こととすればよい。
【0179】
このステップS442において、再度の色判定が可能であると判定された場合(Yes)は、ステップS444に移行し、そうでない場合(No)は、ステップS446に移行する。
ステップS444に移行した場合は、上記ステップS410における色判定で参照された判定領域を変更して、ステップS404に移行する。ここでは、各判定領域を色空間上で一定領域だけ拡げる、または、各判定領域を色空間上で一定距離だけ変移させることにより判定領域それぞれが変更される。
【0180】
なお、この後者の場合、判定領域は、二次元コードの画像領域における色成分の偏りを打ち消すことのできる色空間上の位置へと変移させるように構成するとよい。具体的には、二次元コードの画像領域における色の分布を参照し、その分布において特定の色成分が全体的に大きくなっている場合に、この色成分を小さくする方向に各判定領域を変移させる。
【0181】
こうして、ステップS444を終えた後、ステップS404に移行し、再度、ステップS402で分割された各セルCの領域について色の判定処理が行われる。
以降、再度色が判定されたセルCそれぞれの中に、着色規則に従っていない色の付されたセルCが一定数以上存在していないと判定されるまで(ステップS440の「No」の分岐)、判定領域の変更および再度の色判定が繰り返される(ステップS404〜S444)。
【0182】
一方、ステップS442において、再度の色判定が不可能であると判定されステップS446に移行した場合は、エラー処理を行って、一連の処理を終了し、元の処理に復帰する。
このエラー処理では、いずれのセルCの色についても判定できなかったものとし、データテーブルに登録されていた全ての対応関係を消去され、こうして空のデータテーブルが戻り値として元の処理へと復帰する。この場合、図12の情報識別処理では、ステップS134,S136で何らの処理も行われることなく、S138以降の処理が行われる。
【0183】
そして、上記ステップS438〜S444までの処理中に、上記ステップS440において、着色規則に従っていない色の付されたセルCが一定数以上存在していないと判定された場合(No)は、ステップS448に移行する。
ステップS448に移行した場合は、着色規則に従っていない色の付されたセルCが存在しているか否かを判定する。
【0184】
このステップS448において、該当セルCが存在していると判定した場合(Yes)は、ステップS450に移行し、該当セルCが存在していないと判定した場合(No)は、一連の処理を終了し、元の処理に復帰する。
ステップS450に移行した場合は、二次元コードの中から該当セルCを特定して、ステップS452に移行する。
【0185】
ここでは、この時点でデータテーブルに登録されているセルCのうち、着色規則に従っていない色の付されたセルCが特定され、このセルCが二次元コードの中から特定される。
ステップS452では、上記ステップS448において特定されたセルCそれぞれについて、着色規則に従って本来付されるべき色を推定して、ステップS454に移行する。
【0186】
ここでは、上記ステップS448において特定されたセルCに対し、着色規則に従って本来付されるべき色の候補として、そのセルCに隣接するセルCに付された色との関係で考えられる色が選出され、その候補の中から最も確からしい色が、そのセルCに付されるべき色であるとして推定される。
ステップS454では、上記ステップS448において特定されたセルCそれぞれについて、該セルCの色が、上記ステップS452において推定された色であると判定し、一連の処理を終了し、元の処理に復帰する。
【0187】
ここでは、上記ステップS448において特定されたセルCそれぞれについてのみ、データテーブルにおける色の更新がなされる。
この場合と、ステップS448において該当のセルCが特定されなかった場合は、この時点でセルCと色との対応関係が登録されたデータテーブルを戻り値として図3のコード利用物品検出処理へと戻る。この場合、コード利用物品検出処理では、データテーブルに基づいて各セルCに付された色を認識したうえで、ステップS134による情報の識別を行うこととなる。
なお、上記図12のステップS128における、特徴的なパターンを含むか否かを判定する処理を行う際に、上記ステップS400〜S454に示すアルゴリズム、または、上記ステップS400〜S438に示すアルゴリズムを適用することが可能である。
【0188】
また、データ領域しか有さない二次元コードの構成であれば、ステップS128の処理を行う前に、上記ステップS400〜S438の色判定処理、または、上記ステップS400〜S454の色判定処理を先に行い、その判定結果に基づき、特徴的なパターンを含むか否かを判定する処理を行う構成とすることも可能である。例えば、上記図12のステップS126の処理の次に、色判定処理(S132)を行う構成とし、ステップS128では、先に行われた色判定処理の結果に基づき、特徴的なパターンを含むか否かの判定を行う。この場合は、以降の色判定処理を不要とすることができる。
【0189】
(4)作用,効果
上記実施形態における二次元コードリーダ1であれば、入力装置74を介したユーザからの作成指示に応じて、エンコード対象情報の取得(図4のS13)、セル群の構成および色数の決定(同図S15)、使用色の決定(同図S17)、情報の種類毎にセルの色の設定(同図S19)を経て、エンコード情報を生成することができる(同図S21)。
【0190】
そして、セルに付すことが可能な色のなかから、色の認識率が比較的高いものを優先して選択して使用色を決定し、このようにして決定された使用色を用いて、エンコード情報を生成することができる。また、単位情報の種類数よりも、使用色の組み合わせ数の方が多い場合に、使用色のなかで認識率の比較的低いものを可能な限り使用しないように各セルの色の設定を行うことができる。
【0191】
さらに、上記実施形態における二次元コードリーダ1であれば、入力装置74を介したユーザからの設定指示に応じて(図8のS31)、作成したエンコード情報のなかから、エンコード処理に用いるエンコード情報を設定することができる(同図S37)。
さらに、情報群が入力され(同図S39)、入力装置74を介したユーザからのエンコード指示に応じて(同図41)、設定されたエンコード情報を用いて、入力された情報群をエンコードすることができる(同図43)。
【0192】
これにより、セパレータ110の色との組み合わせを考慮せずに、単純にCMYKの4色やRGBWの4色で二次元コードを構成した場合と比較して、各セルの色の認識精度が高い二次元コードを構成することができる。
さらに、上記実施形態における二次元コードリーダ1であれば、取得された画像(原画像)から、グレースケール画像の生成(図14(b)のS202,S210)、二値化画像の生成(同図S204,S212)、二値化画像中の物体の輪郭部の線形化(同図S206)を経てエッジ画像を生成することができる(図12のS108)。
【0193】
さらに、生成したエッジ画像に基づき、このエッジ画像中における候補領域の抽出(同図S110)、この抽出した候補領域が有効か否かの判定(同図S120,S122)、有効と判定された候補領域に対応する原画像中の対応領域それぞれに特徴的なパターンが含まれているか否かの判定(同図S128)を経て、原画像中から二次元コードの領域を検出することができる(同図S130)。
このように、二値化画像中の物体の輪郭部が線形化されたエッジ画像から、候補領域を抽出することができるので、線形化しない場合と比較して高速に候補領域を抽出することができる。
【0194】
そして、原画像の領域において、有効と判定された候補領域に対応する対応領域のうち、特徴的なパターンが含まれている対応領域を、原画像中における二次元コードの領域として検出することにより、原画像中に含まれる複数の二次元コードそれぞれを特定することができるようになる。
また、上記実施形態では、原画像に基づいて生成される複数種類のエッジ画像それぞれについて、候補領域の抽出、この抽出した候補領域が有効か否かの判定、有効と判定された候補領域に対応する対応領域における各セルCに対応する領域に付されている色の判定、色の判定された対応領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を繰り返し実施している(図12のS108〜S144)。
【0195】
これにより、特定のエッジ画像に基づいて二次元コードの領域を検出できなかったとしても、別のエッジ画像に基づいて検出されることが期待でき、その結果、原画像における二次元コードの検出精度を高めることができる。
また、この繰り返しの過程では、特定のエッジ画像について新たに抽出され、かつ、有効と判定された候補領域が、先に参照されたエッジ画像について抽出され、かつ、有効と判定された抽出済み候補領域と、原画像の領域において一致している場合も想定される。ところが、上記構成では、このような抽出済み候補領域について、該候補領域の各セルCに対応する領域に付されている色の判定、該候補領域に特徴的なパターンが含まれているか否かの判定、および、二次元コードの領域の検出を実施しない(同図S124の「Yes」の分岐)。
【0196】
そのため、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別するに際し、本来同じものであるはずの二次元コードを繰り返し識別してしまうといった無用な処理負担をなくすことができる。
また、この繰り返しの過程では、理想的な領域形状に対して、各候補領域の縦横比および四隅の角度等の形状情報が、あらかじめ設定された誤差範囲内となるか否かを判定することによって(図15のS300〜S308)、抽出した候補領域が有効な候補領域であるか否かを判定することができる(図12のS122)。
これにより、理想的な形状に対して、誤差範囲外の形状を有する候補領域を、以降の処理対象から除外することができ、二次元コードの領域とは明らかに異なる領域等に対して、無用な処理が行われるのを防ぐことができる。
【0197】
また、上記実施形態では、原画像からエッジ画像を生成し、このエッジ画像から、二次元コードの領域の候補となる候補領域を抽出し(図12のS110)、該抽出した候補領域が有効か否かを判定したうえで(図12のS120,S122)、原画像における、有効と判定された候補領域に対応する領域から二次元コードの領域を検出して情報の識別を行っている(同図S116〜S134)。そのため、候補領域を抽出することなく二次元コードの領域を検出しようとする場合と比べて、抽出した候補領域という限定的な範囲から二次元コードの領域の検出を行うことができる。これにより、二次元コードの領域から情報の識別を行うまでに要する処理負荷および処理時間を抑えることができる。
【0198】
また、上記実施形態では、複数のエッジ画像それぞれに基づいて検出された各二次元コードの領域について、この二次元コードにてエンコードされた情報を識別することができる(図12のS134)。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域と、別のエッジ画像における抽出済み候補領域との重複度合に応じ、その重複度合が一定以上であることをもって、両候補領域が一致すると判定することができる。
【0199】
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域、および、別のエッジ画像における抽出済み候補領域のうち、一方の候補領域が他方の候補領域に包摂されていることをもって、両候補領域が一致すると判定することができる。
また、上記実施形態においては、特定のエッジ画像から抽出され、かつ、有効と判定された候補領域における1以上の頂点が、抽出済み候補領域におけるいずれかの頂点から一定範囲内に位置していることをもって、両候補領域が一致すると判定することもできる。
【0200】
また、上記実施形態においては、テンプレートで規定される規則に従って候補領域を抽出することができるため、このテンプレートと共に規則を変更することにより、任意の規則に従って形成された二次元コードの領域として検出できるようにすることができる。
また、上記実施形態においては、二次元コードの各セルCに付された色に基づいて、二次元コードで示される情報を識別することができる(図12のS132〜S134)。
【0201】
また、上記実施形態では、画像の生成(具体的には撮影)状態により、二次元コードにおける各セルCのうち、一部のセルCに対応する領域が欠けてしまっていたとしても、そのセルに本来付されるべき色を着色規則に従って推定し(図17のS452)、その色に基づいて情報を識別することができるため、情報の識別そのものができなくなってしまうことを防止することができる。
【0202】
また、上記実施形態では、二次元コードにおける各セルCに付されている色を、色空間におけるいずれの判定領域(成分領域)に含まれているかにより判定することができる(図17のS410)。
また、この構成においては、各ピクセルの色判定を行う際に、二次元コードの領域を、ラスタスキャンによって順番に走査して色判定処理を行い(図17のS410)、各セルCの領域における各行に位置するピクセルについて、一定数以上が判定領域に含まれると判定された場合(図17のS408の「Yes」の分岐)に、該当セルCの領域におけるその行の残りのピクセルに対して色判定処理を省略することができる。
【0203】
これによって、各セルCの領域における各行のピクセルの全てに対して色判定処理を行う場合と比較して、各ピクセルの色判定処理を高速に行うことができる。
また、この構成においては、各セルCの色を判定するに際し、多くのセルCに付された色がいずれの判定領域にも含まれず、情報の識別そのものができなくなるような場合であっても、そのようなことを防止できるように構成されている。
【0204】
具体的には、複数の色それぞれに対応する判定領域のいずれにも含まれていないと判定したセルが一定数以上存在する場合に(図17のS440「Yes」の分岐)、判定領域を一定領域だけ拡げる、または、変移させたうえで、再度、各セルに付されている色を判定している(同図S444〜S438)。
この構成であれば、画像の生成条件が悪く、適切に色の判定ができない場合であっても、判定領域を拡げることで判定の感度を上げて再度色を判定する、または、判定領域を色の分布に応じた適切な位置まで変移させて再度色を判定することにより、色の判定確率を高めることができる。
【0205】
(5)変形例
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
例えば、上記実施形態においては、二次元コードリーダ1が単体の装置により構成されている場合を例示したが、この二次元コードリーダ1は、複数の装置が協調して動作するシステムとして構成してもよい。
【0206】
また、上記実施形態では、着色規則に従って付されるべき色の候補を選出し、その中から最も確からしい単一の色を、着色規則に従って本来付されるべき色と推定しているが、こうして色の候補を選出した段階で、これら候補のいずれかをユーザに選択させることとしてもよい。
また、候補として選出した色それぞれについて情報の識別までも行うようにし、そうして識別した情報の中からいずれかをユーザに選択させることとしてもよい。この場合、図17のS452では何らの処理も行わず、S454にて候補の色それぞれを、該当するセルCに付された色と判定する。そして、図12のS134では、セルCに付された色として判定された色が複数存在していれば、各色について、または、各色の組合せに基づいて情報を識別し、そうして識別した情報の中から、いずれかをユーザに選択させる、といった構成を考えることができる。
【0207】
また、上記実施形態において、情報識別処理を、入力装置74を介したユーザーの操作入力(指示情報)をトリガとして行われる一連の処理として説明したが、この構成に限らない。
例えば、トリガがなくても情報識別処理を繰り返し実行して、常に、撮影画像に対して識別処理を実行する構成とするなど、他の構成としてもよい。
【0208】
また、上記実施形態において、二次元コードリーダ1は、専用のプログラムをCPU60によって実行することで、エンコード情報作成処理、エンコード処理、および、情報識別処理に必要な各機能を実現する構成としたが、この構成に限らない。例えば、処理の一部を半導体集積回路等のハードウェアに置き換えて、ハードウェアとソフトウェアとの双方によって各機能を実現する構成としてもよいし、可能であれば、処理の全てまたは略全てをハードウェアに置き換えて、ハードウェア主体で各機能を実現する構成としてもよい。
【0209】
(6)本発明との対応関係
以上説明した実施形態において、図4のS19が本発明におけるエンコード情報設定部であり、同図S21,23が本発明におけるエンコード情報記憶部であり、図8のS39が本発明における情報群入力部であり、同図S43が本発明におけるエンコード部である。
また、図12のS102が本発明における画像取得部であり、同図S108(図14のS200〜S212)が本発明における成分変換部であり、同図S110が本発明における領域抽出部であり、同図S120が本発明における候補領域判定部であり、同図S128が本発明におけるパターン判定部である。
【0210】
また、図12のS130が本発明における領域検出部であり、同図S108〜S144(特にS108,S142,S144)が本発明における繰り返し実施部であり、同図S124が本発明における一致判定部であり、同図S134が本発明における情報識別部である。
また、図17におけるS452が本発明における色推定部であり、同図S410、S438およびS454が本発明における色判定部である。
【符号の説明】
【0211】
1…エンコード機能付き二次元コードリーダ、60…CPU、62…RAM、64…ROM、66…I/F、68…バス、70…記憶装置、72…表示装置、73…印刷装置、74…入力装置、76…カメラ、78…NIC、110…セパレータ、120…フレーム、C…セル。
【特許請求の範囲】
【請求項1】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードであって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のa個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、
前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち色の認識率が比較的高いものが優先して各セルに付されていることを特徴とする二次元コード。
【請求項2】
前記p×qに配列されたセルは、あらかじめ定められた色が付されたセパレータで分けられており、
前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち、前記セパレータに付された色とセルに付される色との組み合わせに対して、色の認識率が比較的高いものが優先して各セルに付されていることを特徴とする請求項1に記載の二次元コード。
【請求項3】
前記セパレータに付された色は白色であり、
前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色が優先して各セルに付されていることを特徴とする請求項2に記載の二次元コード。
【請求項4】
前記aが2であり、前記bが24以下である場合において、
前記各セル群における2個のセルには、白色および黄色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されていることを特徴とする請求項3に記載の二次元コード。
【請求項5】
前記p×qに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有することを特徴とする請求項3又は請求項4に記載の二次元コード。
【請求項6】
前記セパレータに付された色は黒色であり、
前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも緑色及び黒色を除く残りの色が優先して各セルに付されていることを特徴とする請求項2に記載の二次元コード。
【請求項7】
前記aが2であり、前記bが24以下である場合において、
前記各セル群における2個のセルには、黒色および緑色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されていることを特徴とする請求項6に記載の二次元コード。
【請求項8】
前記各セル群は、前記aが2以上の場合において、行方向または列方向うち一方向に連続する各a個のセルからなることを特徴とする請求項1乃至請求項7のいずれか1項に記載の二次元コード。
【請求項9】
前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含むことを特徴とする請求項8に記載の二次元コード。
【請求項10】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、
前記二次元コードで示すべき情報群を入力する情報群入力部と、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えており、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定することを特徴とするエンコード装置。
【請求項11】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、
前記二次元コードで示すべき情報群を入力する情報群入力部、および、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実現される処理をコンピュータに実行させるためのプログラムを含んでおり、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定することを特徴とするエンコードプログラム。
【請求項12】
請求項1乃至請求項9のいずれか1項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、
該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、
該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、
前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、
前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、
該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、
該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、
前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えており、
前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定することを特徴とする二次元コードリーダ。
【請求項13】
前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、
特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域(以降「抽出済み候補領域」という)と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えており、
前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させることを特徴とする請求項12に記載の二次元コードリーダ。
【請求項1】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードであって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群には、各セル群のa個のセルに対して、各セル群で示すべき情報に対応する色がそれぞれ付されており、
前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち色の認識率が比較的高いものが優先して各セルに付されていることを特徴とする二次元コード。
【請求項2】
前記p×qに配列されたセルは、あらかじめ定められた色が付されたセパレータで分けられており、
前記各セル群で示すべき情報の種類に対応する色として、前記b種類の色のうち、前記セパレータに付された色とセルに付される色との組み合わせに対して、色の認識率が比較的高いものが優先して各セルに付されていることを特徴とする請求項1に記載の二次元コード。
【請求項3】
前記セパレータに付された色は白色であり、
前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも黄色及び白色を除く残りの色が優先して各セルに付されていることを特徴とする請求項2に記載の二次元コード。
【請求項4】
前記aが2であり、前記bが24以下である場合において、
前記各セル群における2個のセルには、白色および黄色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されていることを特徴とする請求項3に記載の二次元コード。
【請求項5】
前記p×qに配列されたセルおよび前記セパレータの領域を囲む黒色の枠領域を有することを特徴とする請求項3又は請求項4に記載の二次元コード。
【請求項6】
前記セパレータに付された色は黒色であり、
前記d種類の色が、赤色、緑色、青色、シアン色、マゼンタ色、黄色、白色、黒色を含む場合において、前記各セル群のa個のセルには、各セル群の示すべき情報に対応する色として、少なくとも緑色及び黒色を除く残りの色が優先して各セルに付されていることを特徴とする請求項2に記載の二次元コード。
【請求項7】
前記aが2であり、前記bが24以下である場合において、
前記各セル群における2個のセルには、黒色および緑色を除く残りの色のうちのいずれか4色における、各セル群の示すべき情報に対応する色がそれぞれ付されていることを特徴とする請求項6に記載の二次元コード。
【請求項8】
前記各セル群は、前記aが2以上の場合において、行方向または列方向うち一方向に連続する各a個のセルからなることを特徴とする請求項1乃至請求項7のいずれか1項に記載の二次元コード。
【請求項9】
前記複数のセル群は、該複数のセル群の配列方向を識別するための色が付された方向識別用のセル群を含むことを特徴とする請求項8に記載の二次元コード。
【請求項10】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うエンコード装置であって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部と、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部と、
前記二次元コードで示すべき情報群を入力する情報群入力部と、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部と、を備えており、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定することを特徴とするエンコード装置。
【請求項11】
p×q(1≦p,1≦q)にセルが配列されてなる二次元コードを用いた情報のエンコードを行うためのエンコードプログラムであって、
前記p×qに配列されたセルを、それぞれa個(1≦a<(p+q))のセルからなる複数のセル群に分けた場合における各セル群のa個のセルで示すべき情報の種類に対応する各セルの色を前記情報の種類毎にそれぞれ設定するエンコード情報設定部、
前記情報の各種類と、前記エンコード情報設定部で設定された前記情報の各種類にそれぞれ対応する各セル群のa個のセルに設定する色との関係を示すエンコード情報を記憶するエンコード情報記憶部、
前記二次元コードで示すべき情報群を入力する情報群入力部、および、
前記エンコード情報記憶部によって記憶されたエンコード情報に基づき、前記二次元コードの各セル群のa個のセルに対して、各セル群にて示すべき情報の種類に対応するa個のセルの色を設定することで前記情報群の各情報をエンコードするエンコード部として実現される処理をコンピュータに実行させるためのプログラムを含んでおり、
前記エンコード情報設定部は、前記各セル群で示すべき情報の種類数をb(2≦b)、b種類の情報を前記各セル群で示すのに必要な色の種類数をc(2≦c)、前記セルに付すことが可能な色の種類数をd(d≦b)とした場合において、前記各セルの境界領域となるセパレータの色と、前記各セル群で示すべき情報の種類数bとに基づき、前記d種類の色のうち、色の認識率が比較的高い色を優先して用いて前記情報の各種類に対応するセル群のa個のセルの色を設定することを特徴とするエンコードプログラム。
【請求項12】
請求項1乃至請求項9のいずれか1項に記載の二次元コードの領域を複数含む領域が撮影されてなる画像を取得する画像取得部と、
該画像取得部により取得された画像を、該画像に含まれるエッジ成分の分布を示すエッジ画像に変換する成分変換部と、
該成分変換部により変換されたエッジ画像から、あらかじめ定められた規則に従って形成されている領域を前記二次元コードの領域からなる候補領域として抽出する領域抽出部と、
前記二次元コードの形状に係る形状情報に基づき、前記領域抽出部で抽出された候補領域が有効な候補領域であるか否かを判定する候補領域判定部と、
前記画像取得部により取得された画像における、前記候補領域判定部により有効と判定された候補領域に対応する対応領域それぞれについて、該対応領域における前記二次元コードの各セルに対応する領域に付されている色を判定する色判定部と、
該色判定部の判定結果に基づき、前記対応領域を形成する要素に、前記二次元コードの領域を規定する特徴的なパターンが含まれているか否かを判定するパターン判定部と、
該パターン判定部により特徴的なパターンが含まれていると判定された対応領域を、前記二次元コードの領域として検出することにより、前記画像に含まれる複数の二次元コードの領域を検出可能な領域検出部と、
前記二次元コードの領域における各セルの領域に、前記色判定部が判定した色が付されているものとして、各セルの領域に付された色または色の組合せに基づいて該二次元コードの領域において示される情報を識別する情報識別部と、を備えており、
前記色判定部は、前記二次元コードの領域における各セルの領域についてピクセル毎に順次色を判定し、所定数の有効な色の判定結果を得たときに、色の判定処理が未処理の残りのピクセルについて色の判定処理を省略し、前記所定数の有効な色の判定結果に基づき各セルの領域に付された色を判定することを特徴とする二次元コードリーダ。
【請求項13】
前記成分変換部による画像のエッジ画像への変換を、複数種類の変換条件のそれぞれについて順に実施させると共に、各変換条件について変換されたエッジ画像それぞれに対し、前記領域抽出部による候補領域の抽出、前記候補領域判定部による有効な候補領域の判定、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンの判定、および、前記領域検出部による二次元コードの領域の検出、を繰り返し実施させる繰り返し実施処理を行う繰り返し実施部と、
特定の前記エッジ画像に対して、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域それぞれが、別のエッジ画像について前記領域抽出部が抽出し、かつ、前記候補領域判定部が有効と判定した候補領域(以降「抽出済み候補領域」という)と一致するか否かを、両方の候補領域に基づいて判定する一致判定部と、を備えており、
前記繰り返し実施部は、前記色判定部による前記対応領域の各セルに対応する領域に付されている色の判定、前記パターン判定部による特徴的なパターンを有しているか否かの判定、および、前記領域検出部による二次元コードの領域の検出、を、前記領域抽出部により抽出され、かつ、前記候補領域判定部により有効と判定された候補領域のうち、前記一致判定部により前記抽出済み候補領域と一致しないと判定された候補領域についてのみ実施させることを特徴とする請求項12に記載の二次元コードリーダ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2012−78973(P2012−78973A)
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願番号】特願2010−221971(P2010−221971)
【出願日】平成22年9月30日(2010.9.30)
【出願人】(306040388)株式会社シフト (8)
【Fターム(参考)】
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願日】平成22年9月30日(2010.9.30)
【出願人】(306040388)株式会社シフト (8)
【Fターム(参考)】
[ Back to top ]