(57)【特許請求の範囲】
【請求項１】
読み取ったコードのカラー画像データを複数の色プレーンの色成分に分割するステップと、
各色プレーンの任意の位置から矩形領域を抽出する抽出ステップと、
各色プレーンの矩形領域内に含まれているコードの特徴量を算出する算出ステップと、
該特徴量に基づいて１つの色プレーンを選択する選択ステップと、
選択された色プレーンの色成分データに基づいてコードを認識する認識ステップとを含み、
該算出ステップは、該矩形領域内の画素値のばらつきを特徴量として算出し、該選択ステップは、該ばらつきが所定の範囲内で最大となる矩形領域を有する色プレーンを選択することを特徴とする、コード認識方法。
【請求項２】
該算出ステップは、該矩形領域内の画素値の最小値を特徴量として算出し、該選択ステップは、該最小値が所定の範囲内で最小となる矩形領域を有する色プレーンを選択することを特徴とする、請求項１記載のコード認識方法。
【請求項３】
該算出ステップは、該矩形領域内の白画素と黒画素の比率を特徴量として算出し、該選択ステップは、該比率が基準値を含む所定の範囲内にあり、且つ、該基準値に最も近い値になるブロックを有するプレーンを選択することを特徴とする、請求項１又は２項記載のコード認識方法。
【請求項４】
該算出ステップは、該矩形領域内の水平ライン及び垂直ライン内の画素値の変化点の個数を特徴量として算出し、該選択ステップは、該個数が所定の範囲内にあり、且つ、最大となるブロックを有するプレーンを選択することを特徴とする、請求項１〜３のいずれか１項記載のコード認識方法。
【請求項５】
該算出ステップは、該矩形領域内の特定の水平ライン間及び垂直ライン間の相関を特徴量として算出し、該選択ステップは、該相関が所定の範囲内にあり、且つ、最大となるブロックを有するプレーンを選択することを特徴とする、請求項１〜４のいずれか１項記載のコード認識方法。
【請求項６】
コンピュータに、請求項１〜５のいずれか１項記載のコード認識方法の各ステップを実行させる手順を含むことを特徴とする、プログラム。
【請求項７】
読み取ったコードのカラー画像データを複数の色プレーンの色成分に分割する手段と、
各色プレーンの任意の位置から矩形領域を抽出する抽出手段と、
各色プレーンの矩形領域内に含まれているコードの特徴量を算出する算出手段と、
該特徴量に基づいて１つの色プレーンを選択する選択手段と、
選択された色プレーンの色成分データに基づいてコードを認識する認識手段とを備え、
該算出手段は、該矩形領域内の画素値のばらつきを特徴量として算出し、該選択手段は、該ばらつきが所定の範囲内で最大となる矩形領域を有する色プレーンを選択することを特徴とする、電子装置。
【請求項８】
該算出手段は、該矩形領域内の画素値の最小値を特徴量として算出し、該選択手段は、該最小値が所定の範囲内で最小となる矩形領域を有する色プレーンを選択することを特徴とする、請求項７記載の電子装置。
【請求項９】
該算出手段は、該矩形領域内の白画素と黒画素の比率を特徴量として算出し、該選択手段は、該比率が基準値を含む所定の範囲内にあり、且つ、基準値に最も近い値になるブロックを有するプレーンを選択することを特徴とする、請求項７又は８記載の電子装置。
【請求項１０】
該算出手段は、該矩形領域内の水平ライン及び垂直ライン内の画素値の変化点の個数を特徴量として算出し、該選択手段は、該個数が所定の範囲内にあり、且つ、最大となるブロックを有するプレーンを選択することを特徴とする、請求項７〜９のいずれか１項記載の電子装置。
【請求項１１】
該算出手段は、該矩形領域内の特定の水平ライン間及び垂直ライン間の相関を特徴量として算出し、該選択手段は、該相関が所定の範囲内にあり、且つ、最大となるブロックを有するプレーンを選択することを特徴とする、請求項７〜１０のいずれか１項記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード認識方法及び装置、電子装置、プログラム及び記憶媒体に係り、特に画像データに含まれる一次元コードや二次元コードを認識するコード認識方法及び装置、電子装置、プログラム及びコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【０００２】
図１は、一次元バーコードと二次元コードの一例を示す図である。近年、従来の一次元バーコードよりも多くの情報を埋め込むことができる二次元コードの普及が進んでいる。二次元コードでは、コード全体の二次元配列データを読み取らないとコードを認識できない。このため、二次元コードの読取りには、デジタルカメラやイメージスキャナのような画像読取装置が用いられる。【０００３】
二次元コードの普及に伴い、単一の画像読取装置を用いて一次元コード及び二次元コードの両方を自動的に認識する方法が提案されている。特許文献１では、読み取ったコードの画像データを矩形ブロックに区切り、随時走査しながら所定の条件を満たす、一次元又は二次元コードを含むブロックを特定してコードの認識を行う方法が提案されている。しかし、これらのコード認識方法は、従来より広く使用されている黒色で印刷されたコードを認識対象としており、認識に使用する画像データも単一、即ち、グレイスケールの色プレーンを使用することが前提となっている。【０００４】
二次元コードの普及に伴い、デザイン性の観点等から、黒色以外の色で印刷されたコードの使用が増加している。しかし、従来のコード認識方法は、認識対象のコートが黒色であるという前提に合わせて単一（グレイスケール）の色プレーン画像を用いてコードの認識を行うため、黒色以外の色で作成されたコードの認識は難しい。【０００５】
グレイスケールの色プレーンを使用して黒色以外の色で印刷されたコードを認識する場合の問題についてより具体的に説明する。グレイスケール（Ｙ）と赤（Ｒ）、緑（Ｇ）、青（Ｂ）の各色プレーンの階調値は、一般に次の関係にある。【０００６】
Ｙ ＝ ０.２９９ × Ｒ ＋ ０.５８７ × Ｇ ＋ ０.１１４ × Ｂ
通常、コードは黒(Ｒ ＝ Ｇ ＝ Ｂ ＝ ０)、背景は白(Ｒ ＝ Ｇ ＝ Ｂ ＝ ２５５)で印刷されるため、Ｙでのコードと背景の階調差は２５５となる。ここで、コードが赤（Ｒ ＝ ２５５、Ｇ ＝ Ｂ ＝ ０）で印刷されている場合、コードのＹへの寄与は２９％（Ｙ ＝ ７６）となり、Ｙでのコードと背景の階調差は１７９と低下する。このように階調差が低下する分、コードを正確に認識することは難しくなる。
【特許文献１】特開２００５−１７３６４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このように、従来のコード認識方法は、読み取り対象となるコードが黒色であるという前提で考えられているため、黒色以外の色のコードを正確に認識することは難しいという問題があった。【０００８】
しかし、従来のコード認識方法は、黒色で印刷される一次元バーコードの認識から始まり二次元コードの認識へと発展してきたため、黒色以外の色のコードが読み取り対象になることは想定されておらず、従来は、黒色以外の色のコードを認識するための認識技術自体が提案されていなかった。【０００９】
そこで、本発明は、コードの色にかかわらずコードを正確に認識可能とすることのできるコード認識方法及び装置、電子装置、プログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題は、読み取ったコードのカラー画像データを複数の色プレーンの色成分に分割するステップと、１つの色プレーンを選択する選択ステップと、選択された色プレーンの色成分データに基づいてコードを認識する認識ステップとを含むことを特徴とするコード認識方法によって達成できる。【００１１】
上記の課題は、読み取ったコードのカラー画像データを複数の色プレーンの色成分に分割する手段と、１つの色プレーンを選択する選択手段と、選択された色プレーンの色成分データに基づいてコードを認識する認識手段とを備えたことを特徴とするコード認識方法によっても達成できる。【００１２】
上記の課題は、コードを読み取る画像読み取り装置と、上記の如きコード認識装置とを備えたことを特徴とする電子装置によっても達成できる。【００１３】
上記の課題は、コンピュータを、上記の如きコード認識装置として動作させる手順を含むことを特徴とするプログラムによっても達成できる。【００１４】
上記の課題は、コンピュータを、上記の如き電子装置として動作させる手順を含むことを特徴とするプログラムによっても達成できる。【００１５】
上記の課題は、上記の如きプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体によっても達成できる。
【発明の効果】
【００１６】
本発明によれば、コードの色にかかわらずコードを正確に認識可能とすることのできるコード認識方法及び装置、電子装置、プログラム及び記憶媒体を実現できる。
【図面の簡単な説明】
【００１７】
【図１】一次元バーコードと二次元コードの一例を示す図である。
【図２】本発明になる電子装置の一実施例の要部を示すブロック図である。
【図３】本発明の一実施例の動作を説明するフローチャートである。
【図４】ブロックの抽出を説明する図である。
【図５】ブロックの特徴量の算出を二次元コードについてより詳細に説明するフローチャートである。
【図６】一次元コードの水平方向エッジ数及び垂直方向エッジ数を説明する図である。
【図７】二次元コードの水平方向エッジ数及び垂直方向エッジ数を説明する図である。
【図８】ブロックの特徴量の算出を一次元コードについてより詳細に説明するフローチャートである。
【図９】一次元コードの水平ライン間相関及び垂直ライン間相関を説明する図である。
【図１０】二次元コードの水平ライン間相関及び垂直ライン間相関を説明する図である。
【図１１】コードと他の情報が重ね合わされている場合のコード認識を説明する図である。
【図１２】本発明になるコード認識装置の他の実施例を説明するブロック図である。
【符号の説明】
【００１８】
１      電子装置
９      画像読取装置
１０      ＣＰＵ
１１      ＲＯＭ
１２      ＲＡＭ
１３      通信インタフェース
１４      記憶装置
１５      入出力装置
１６      媒体ドライブ
１８      情報提供者
１９      ネットワーク
２０      記録媒体
３１      二次元コード
４１      一次元コード
５１      コード認識装置
【発明を実施するための最良の形態】
【００１９】
本発明では、読み取ったコードの画像データを複数の色プレーンの色成分に分割し、選択された色プレーンの色成分データに基づいてコードを認識する。選択される色プレーンは、予め決められていても、コード内の領域の特徴量が大きい、或いは、階調値が小さい色プレーンを自動的に選択するようにしても良い。特に後者の場合、色プレーンによって画像特徴が異なるコードであっても確実に、且つ、正確に認識可能となる。又、特徴量に基づいて、コードが一次元コードであるか二次元コードであるかの判断を行うようにしても良い。【００２０】
読み取りの対象となるコードに使用される色が予めわかっている場合には、分割される色プレーンの数は２以上であれば良い。【００２１】
他方、読み取りの対象となるコードに使用される色が予めわかっていない場合には、分割される色プレーンの数を３以上、好ましくは少なくとも三原色の色プレーンを用いることで、確実にコードの認識を行うことが可能である。この場合、読み取ったコードの色に適した色プレーンを自動的に選択して認識処理を行うことが可能となるため、どのような色のコードであっても確実に、且つ、正確に認識可能となる。【００２２】
以下に、本発明になるコード認識方法及び装置、電子装置、プログラム及び記憶媒体の各実施例を、図２以降と共に説明する。
【実施例】
【００２３】
図２は、本発明になる電子装置の一実施例の要部を示すブロック図である。図１に示す電子装置１は、バス１７により接続された画像読取装置９、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２、通信インタフェース１３、記憶装置１４、入出力装置１５及び媒体ドライブ１６を有する。【００２４】
電子装置の本実施例は、本発明になるコード認識方法及び装置、プログラム及び記憶媒体の一実施例を採用する。【００２５】
画像読取装置９は、デジタルカメラやイメージスキャナで構成されている。ＣＰＵ１０は、電子装置１の全体の制御を司る。ＲＯＭ１１は、ＣＰＵ１０が実行するプログラムやデータを格納する。ＲＡＭ１２は、ＣＰＵ１０がプログラムを実行する際のワークエリアやデータ格納エリアを提供する。通信インタフェース１３は、ネットワーク１９を介して情報提供者１８と接続可能である。情報提供者１８は、他の電子装置やその記憶装置であっても良い。記憶装置１４は、半導体記憶装置、磁気記憶装置（例えば、磁気ディスク装置）、光記憶装置（例えば、光ディスク装置）や光磁気記憶装置（例えば、光磁気ディスク装置）等で構成されている。入出力装置１５は、キーボード等で構成された入力部と、液晶表示パネル等で構成された出力部とを含む。媒体ドライブ１６は、ディスク等の可搬記録媒体２０に対して情報の書き込み及び／又は読み出しを行う。ＲＯＭ１１は電子装置のリード可能な記憶装置を構成し、ＲＡＭ１２、記憶装置１４及び記録媒体２０をロードされた媒体ドライブ１６は、電子装置１のリード／ライト可能な記憶部を構成する。【００２６】
電子装置１は、デスクトップ型のパーソナルコンピュータ、ラップトップ型（可搬型）のパーソナルコンピュータやＰＤＡ等の情報処理装置であっても、携帯電話等の通信装置であっても良い。尚、電子装置１が携帯電話の場合には、通信インタフェース１３は、移動通信ネットワークを介して基地局やその先の相手側携帯電話と通信を行う送受信部である。【００２７】
コード認識装置の本実施例は、電子装置１内の少なくともＣＰＵ１０により構成される。コード認識方法及びプログラムの本実施例は、ＣＰＵ１０により実行される。記憶媒体の本実施例は、プログラムの本実施例を格納したコンピュータ読み取り可能な記憶媒体により構成される。コンピュータ読み取り可能な記憶媒体は、リード可能な記憶部により構成可能であり、例えば記録媒体２０により構成される。尚、プログラムの本実施例は、情報提供者１８からネットワーク１９及び通信インタフェース１３を介して電子装置１内のリード／ライト可能な記憶部に格納されるものであっても良い。【００２８】
一次元コード又は二次元コードを認識する場合、コードは画像読み取り装置９により周知の方法で読み取られて、その画像データはリード／ライト可能な記憶部に格納される。この場合、読み取り対象のコードは、紙等の媒体に印刷されたものであっても、表示画面に表示されたものであっても良い。尚、コードはデジタルカメラ等の画像読取装置９により読み取られるので、コードのみの画像を読み取ることは難しく、通常、読み取られたコードの画像データは、コードの画像に関する画像データと、コードの周囲にある背景の画像に関する画像データとからなる。【００２９】
図３は、本実施例の動作を説明するフローチャートである。同図に示す処理は、コードが読み取られてその画像データがリード／ライト可能な記憶部に格納されるとＣＰＵ１０により実行される。ここでは、説明の便宜上、二次元カラーコードが読み取られてそのカラー画像データがリード／ライト可能な記憶部に格納されているものとする。図３において、ステップＳ１は、リード／ライト可能な記憶部に格納されているカラー画像データを任意の複数の色成分に分割して色成分毎に色プレーンを作成する。本実施例では、説明の便宜上、カラー画像データが赤（Ｒ）、緑（Ｇ）及び青（Ｂ）の３原色の色成分に分割されて、Ｒプレーン、Ｇプレーン及びＢプレーンが作成されるものとする。【００３０】
ステップＳ２は、ステップＳ１で作成した各色プレーンにおいて、画像の任意の位置から画像を順次走査して着目する矩形領域（以下、ブロックと言う）を順番に抽出する。ブロックは、画像の左上隅から左右の主走査方向に走査して上下の副走査方向に走査を進めることで選択したり、画像の中央から周辺部に向かって走査して選択することが可能であり、走査の開始位置及び走査方向は特に限定されない。読み取ったコードの画像を短時間で検出するためにも、コードが存在する可能性の高い画像中の位置から走査を開始してブロックを抽出することが望ましい。【００３１】
図４は、ブロックの抽出を説明する図である。同図は、説明の便宜上、読み取られた二次元カラーコード３１が赤色である場合を示す。図４の中央部分は、各Ｒ，Ｇ，Ｂプレーン３１Ｒ，３１Ｇ，３１Ｂにおいて、一例として画像の中央から着目するブロック３１１Ｒ，３１１Ｇ，３１１Ｂが抽出された状態を示す。読み取られた二次元カラーコード３１は赤色であるため、各画素が２５６の階調レベル（例えば、「２５５」が最も高い輝度、「０」が最も低い輝度を示す）で表される場合、一例としてＲプレーン３１Ｒにおけるブロック３１１Ｒ内の画素データの最小値は「２５５」、Ｇプレーン３１Ｇにおけるブロック３１１Ｇ内の画素データの最小値は「０」、Ｂプレーン３１Ｂにおけるブロック３１１Ｂ内の画素データの最小値は「１０」である。【００３２】
ステップＳ３は、抽出したブロック内に含まれている二次元カラーコードのコード部分の特徴量を算出する。抽出したブロック内のコード部分と背景部分の判別については後述する。ここでは、Ｒプレーン３１Ｒにおけるブロック３１１Ｒ内の画素データの最小値、Ｇプレーン３１Ｇにおけるブロック３１１Ｇ内の画素データの最小値、及びＢプレーン３１Ｂにおけるブロック３１１Ｂ内の画素データの最小値を用いてコード部分の特徴量を算出する。画素データの最小値が小さいということは、画素データが示す画素の輝度が低い、即ち、画素が暗く、通常は画素の輝度が高い背景とのコントラスト差を大きくすることができることを意味する。【００３３】
一次元コード及び二次元コードは共に、例えば白と黒の組み合わせのようにコントラスト差が大きい２色の色を用いて印刷されている。通常、背景色に白を用いてコードが印刷されることが多いため、コードの色がより暗い、即ち、画素値がより小さい方が背景色とのコントラスト差が大きくなり、コードが一元コードであるか二次元コードであるかの判別及びコード認識を精度良く行うことが可能になる。【００３４】
ステップＳ４は、ステップＳ３で算出した特徴量をＲ，Ｇ，Ｂプレーン３１Ｒ，３１Ｇ，３１Ｂ間で比較し、特徴量が強く発現している色プレーンを以後の処理用として選択する。この例では、特徴量が最も強く発現している、即ち、ブロック３１１Ｒ，３１１Ｇ，３１１Ｂ内の画素データのうち、最小値が最も小さいＧプレーン３１Ｇを選択する。二次元カラーコードは、赤色なので、この場合はＲプレーン３１Ｒには特徴量が現れなくなる一方、Ｇ，Ｂプレーン３１Ｇ，３１Ｂには特徴量が現れる。ここでは、最もコントラストの高い画像データを使用するために、特徴量の大きい方のＧプレーン３１Ｇを選択する。【００３５】
ステップＳ５は、選択されたＧプレーン３１Ｇの二次元コード３１の画像データを用いて一次元コードと二次元コードの判別やコード内容の認識等の認識処理を行う。特徴量の最も大きなＧプレーン３１Ｇの画像データを用いて認識処理を行うので、認識処理をより高精度に行うことが可能となる。【００３６】
尚、ステップＳ４における色プレーンの選択は、特徴量の最も大きな色プレーンを選択する方法に限定されるものではない。例えば、抽出したブロックの画素データの最小値が所定値以下のＲ，Ｇ，Ｂプレーン３１Ｒ，３１Ｇ，３１Ｂのうち、予め設定された優先順位が最も高い色プレーンを選択するようにしても良い。このように色プレーンを選択すると、例えば赤色の２次元コードの上に青色の文字等が書かれていても、Ｂプレーン３１Ｂを選択してステップＳ５の認識処理に用いることで、青色の文字等の影響を受けることなく高精度の認識処理を行うことが可能となる。ただし、この場合は、優先順位の高い順にＢ，Ｇ，Ｒプレーン３１Ｂ，３１Ｇ，３１Ｒが予め設定されており、抽出したブロックの画素データの最小値が例えば「１５」以下の色プレーンのうちで優先順位の最も高い色プレーンを選択するものとする。このように、カラーコードの状態やステップＳ５の認識処理で行う処理に応じて、ステップＳ４における色プレーンの選択基準を選定すれば良い。【００３７】
ステップＳ５の認識処理では、読み取り対象のカラーコードが二次元カラーコードであることが予めわかっていれば、ステップＳ４で選択された色プレーンの画像データを用いてコード内容を周知の方法で認識することができる。又、読み取り対象のカラーコードが一次元カラーコードであるか二次元カラーコードであるかが予めわかっていない場合には、ステップＳ４で選択された色プレーンの画像データを用いて読み取られたカラーコードが一次元カラーコードであるか二次元カラーコードであるかの判定を行ってから、そのコード内容を認識することもできる。【００３８】
図５は、図３に示すステップＳ３におけるブロックの特徴量の算出を二次元コードについてより詳細に説明するフローチャートである。図５中、図３と同一ステップには同一符号を付し、その説明は省略する。【００３９】
図５において、ステップＳ３１は、読み取られたコードから抽出されたブロックの特徴量を上記の如く算出する。ステップＳ３２は、例えば画素値の最小値が最も小さいＧプレーン３１Ｇについて、抽出したブロック３１１Ｇの画素値の標準偏差ＳＤが閾値ＳＤｃより大きいか否かを判定する。一次元コード及び二次元コードは共に、例えば白と黒の組み合わせのようにコントラスト差が大きい２色の色を用いて印刷されている。又、コード部分（コード内の領域）では、２色の色の占める面積比が１：１に近い。このため、コード部分では、画素値のばらつき（又は、標準偏差）が背景部分での画素値のばらつき（又は、標準偏差）より大きいという特徴が有る。このように、コード部分と背景部分とでは、画素値の標準偏差ＳＤが異なるので、閾値ＳＤｃより標準偏差ＳＤが大きければコード部分であることが判別できる。又、コントラスト差がより大きい程、コードが一元コードであるか二次元コードであるかの判別及びコード認識を精度良く行うことが可能になる。従って、ブロック内の画素値の標準偏差ＳＤが閾値ＳＤｃより大きく、且つ、そのような標準偏差ＳＤのうち最大の標準偏差ＳＤを有するブロックの色プレーンを選択することで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００４０】
ステップＳ３２の判定結果がＹＥＳであると、ステップＳ３３は、例えば抽出したブロック３１１Ｇの水平方向エッジ数Ｈｅが閾値Ｅｍｉｎより大きく、且つ、垂直方向エッジ数Ｖｅが閾値Ｅｍｉｎより大きいか否かを判定する。【００４１】
一次元コードは、異なった太さや間隔をもつ平行な直線（バー）の組合せによってデータを表現するコードである。バーに垂直な直線上の画素を取り出した場合、コード部分のどこを切り出してもバーの画素値の変化点（エッジ）が取り出した直線上に含まれるバーの数に対応した数だけ存在するが、バーに平行な直線上の画素を取り出した場合はエッジが存在しないという特徴を有する。他方、二次元コードは、二次元に配置した明暗ドット（セル）の組み合わせによってデータを表現するコードである。セルは、コード部分ではできるだけ一様に配置されるように構成されている。セルの配列に平行及び垂直な直線上の画素を取り出した場合、コード部分のどこを切り出しても、水平及び垂直な直線上のどちらにも同様に画素値の変化点が存在するという特徴を有する。従って、水平及び垂直ライン内のエッジ数が所定の範囲内にあり、且つ、最大となるブロックを有する色プレーンを選択することで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００４２】
図６は、一次元コードの水平方向エッジ数Ｈｅ及び垂直方向エッジ数Ｖｅを説明する図であり、図７は、二次元コードの水平方向エッジ数Ｈｅ及び垂直方向エッジ数Ｖｅを説明する図である。水平方向エッジ数Ｈｅとは、抽出したブロック内のコード部分を水平方向に走査した場合に横切るパターンのエッジ（即ち、画素値の変化点）であり、垂直方向エッジ数Ｖｅとは、抽出したブロック内のコード部分を垂直方向に走査した場合に横切るパターンのエッジ（即ち、画素値の変化点）である。図６及び図７において、上部はコード全体を示し、下部は抽出されたブロックと水平方向エッジ数Ｈｅ及び垂直方向エッジ数Ｖｅを示す。図６からもわかるように、一次元コードの場合は、水平方向エッジ数Ｈｅが波線で示すどの垂直方向位置で走査しても全て「１０」で同じであり、且つ、垂直方向エッジ数Ｖｅが波線で示すどの水平方向位置で走査しても全て「０」である。他方、図７からもわかるように、二次元コードの場合は、水平方向エッジ数Ｈｅが波線で示す位置により「４」、「６」、「７」と異なり、且つ、垂直方向エッジ数Ｖｅが波線で示す位置により「７」、「２」、「４」と異なる。二次元コードの場合、所定サイズのブロック内の水平方向エッジ数Ｈｅ及び垂直方向エッジ数Ｖｅがいずれも所定の閾値Ｅｍｉｎより大きいようにコードパターンが構成されているので、ステップＳ３３により一次元コードと二次元コードとが判別できる。【００４３】
ステップＳ３３の判定結果がＹＥＳであると、ステップＳ３４は、抽出したブロックの黒画素率ＢＰｒが下限閾値ＢＰｍｉｎより大きく、且つ、上限閾値ＢＰｍａｘより小さいか否かを判定する。ここで、下限閾値ＢＰｍｉｎと上限閾値ＢＰｍａｘの間の範囲に、黒画素率ＢＰｒの基準値ＢＰＲが含まれるものとする。又、黒画素率ＢＰｒとは、対象となる色プレーンの画素値が小さい（例えば、輝度値が最小の）画素の、画素値が大きい（例えば、輝度値が最大の）画素に対する比率を言う。一次元コード及び二次元コードは共に、例えば白と黒の組み合わせのようなコントラスト差が大きい２色の色を用いて印刷されている。背景部分が白画素でコード部分が黒画素であるものとすると、特に二次元コード部分では、これらの白画素と黒画素の面積比が基準値（例えば、５０％）を含む所定の範囲（例えば、５０%±１０％）内になるようにコードパターンが予め構成されている。このように、コード部分と背景部分とでは、黒画素率が異なるので、黒画素率ＢＰｒが下限閾値ＢＰｍｉｎ（>ＢＰＲ）より大きく、且つ、上限閾値ＢＰｍａｘ（<ＢＰＲ）より小さければコード部分、即ち、二次元コードのコード部分であることが（ステップＳ３３の判定結果がＹＥＳであるため）判別できる。従って、ブロック内の黒画素の比率（又は、白画素の比率）が基準値を含む所定の範囲内になり、且つ、基準値に最も近いブロックを有する色プレーンを選択することで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００４４】
ステップＳ３２，Ｓ３３，Ｓ３４のいずれかの判定結果がＮＯであると、ステップＳ３５は抽出したブロックに二次元コードは無いと判断し、処理はステップＳ２へ戻り次のブロックを抽出する。他方、ステップＳ３４の判定結果がＹＥＳであると、ステップＳ３６は抽出したブロックに二次元コードがあると判断し、処理はステップＳ４へ進む。この場合、ステップＳ３６において読み取られたカラーコードは二次元カラーコードであることが判断されているので、ステップＳ５では、ステップＳ４で選択された色プレーンの画像データを用いて二次元コードのコード内容を周知の方法で認識すれば良い。【００４５】
尚、所定数のブロックを抽出した後も処理がステップＳ３５へ進む場合には、例えばエラーメッセージを入出力部１５へ出力しても、図８と共に後述する一次元コードがあるか否かの判断を行うようにしても良い。【００４６】
図８は、図３に示すステップＳ３におけるブロックの特徴量の算出を一次元コードについてより詳細に説明するフローチャートである。図８中、図３と同一ステップには同一符号を付し、その説明は省略する。【００４７】
図８において、ステップＳ３０１は、読み取られたコードから抽出されたブロックの特徴量を上記の如く算出する。ステップＳ３０２は、例えば画素値の最小値が最も小さいＧプレーン３１Ｇについて、抽出したブロック３１１Ｇの画素値の標準偏差ＳＤが閾値ＳＤｃより大きいか否かを判定する。コード部分と背景部分とでは、画素値の標準偏差ＳＤが異なるので、閾値ＳＤｃより標準偏差ＳＤが大きければコード部分であることが判別できる。ステップＳ３０２の判定結果がＹＥＳであると、ステップＳ３０３は、例えば抽出したブロック３１１Ｇの水平方向エッジ数Ｈｅが閾値Ｅｍｉｎより大きいか、或いは、垂直方向エッジ数Ｖｅが閾値Ｅｍｉｎより大きいか否かを判定する。図６及び図７と共に説明したように、一次元コードの場合は垂直方向エッジ数Ｖｅが「０」なので、ステップＳ３０３により抽出したブロック内に一次元コードのコード部分があるか否かを判定することができる。【００４８】
ステップＳ３０３の判定結果がＹＥＳであると、ステップＳ３０４は、抽出したブロックの水平ライン間相関Ｈｓが閾値Ｓｍｉｎより大きいか、或いは、垂直ライン間相関Ｖｓが閾値Ｓｍｉｎより大きいか否かを判定する。【００４９】
一次元コードは、コード部分でバーに垂直な直線とその近傍の平行直線との間で相互相関を取った場合は極めて強い相関を示すが、バーに平行な直線とその近傍の平行直線との間で相互相関を取った場合には相関が殆ど無いという特を有する。他方、二次元コードは、セルの配列に平行及び垂直な直線とその近傍の平行直線との間で相互相関を取った場合、特に明確な相関が無いという特徴を有する。又、文字や写真等が印刷されている背景部分の場合も、一次元コード程強い相関を示すことは無い。従って、ブロック内の特定の水平ライン間の相関及び特定の垂直ライン間の相関が所定の範囲内にあり、且つ、最大となるブロックを有する色プレーンを選択することで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００５０】
図９は、一次元コードの水平ライン間相関Ｈｓ及び垂直ライン間相関Ｖｓを説明する図であり、図１０は、二次元コードの水平ライン間相関Ｈｓ及び垂直ライン間相関Ｖｓを説明する図である。水平ライン間相関Ｈｓとは、抽出したブロック内のコード部分を水平方向に走査した場合に横切るパターンの相関であり、垂直ライン間相関Ｖｓとは、抽出したブロック内のコード部分を垂直方向に走査した場合に横切るパターンの相関である。図９及び図１０において、上部はコード全体を示し、下部は抽出されたブロックと水平ライン間相関Ｈｓ及び垂直ライン間相関Ｖｓを示す。図９からもわかるように、一次元コードの場合は、水平ライン間相関Ｈｓが一点鎖線で示すどの垂直方向位置で走査しても大きく、且つ、垂直ライン間相関Ｖｓが一点鎖線で示すどの水平方向位置で走査しても無い。他方、図１０からもわかるように、二次元コードの場合は、水平ライン間相関Ｈｓが一点鎖線で示すどの位置で走査しても小さく、且つ、垂直ライン間相関Ｖｓが一点鎖線で示すどの位置で走査しても小さい。一次元コードの場合、ブロック内の水平ライン間相関Ｈｓが大きくなるようにコードパターンが構成されているので、水平ライン間相関Ｈｓ又は垂直ライン間相関Ｖｓが閾値Ｓｍｉｎより大きければ、一次元コードのコード部分であることが（ステップＳ３０３の判定結果がＹＥＳであるため）判別できる。【００５１】
ステップＳ３０２，Ｓ３０３，Ｓ３０４のいずれかの判定結果がＮＯであると、ステップＳ３０５は抽出したブロックに一次元コードは無いと判断し、処理はステップＳ２へ戻り次のブロックを抽出する。他方、ステップＳ３０４の判定結果がＹＥＳであると、ステップＳ３０６は抽出したブロックに一次元コードがあると判断し、処理はステップＳ４へ進む。この場合、ステップＳ３０６において読み取られたカラーコードは一次元カラーコードであることが判断されているので、ステップＳ５では、ステップＳ４で選択された色プレーンの画像データを用いて一次元コードのコード内容を周知の方法で認識すれば良い。【００５２】
尚、所定数のブロックを抽出した後も処理がステップＳ３０５へ進む場合には、例えばエラーメッセージを入出力部１５へ出力しても、図５と共に説明した二次元コードがあるか否かの判断を行うようにしても良い。【００５３】
読み取り対象のコードが二次元コードであることがわかっている場合には、図５の処理のみを行えば良く、読み取り対象のコードが一次元コードであることがわかっている場合には、図８の処理のみを行えば良い。【００５４】
又、読み取り対象のコードが一次元コードであるか二次元コードであるかわからない場合には、図５の処理を行ってステップＳ３５が所定回数行われるとステップＳ３の処理を図８に示すステップＳ３の処理に切り替えるようにしても、図８の処理を行ってステップＳ３０５が所定回数行われるとステップＳ３の処理を図５に示すステップＳ３の処理に切り替えるようにしても良い。更に、図５に示すステップＳ３と図８に示すステップＳ３の処理を並行して行うようにすることも可能である。  一次元コード及び二次元コードのコード部分には、背景部分とは異なる特徴量が複数存在するので、これらの特徴量を複数組み合わせて色プレーンの選択を行うことで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００５５】
図１１は、コードと他の情報が重ね合わされている場合のコード認識を説明する図である。同図は、説明の便宜上、読み取られた一次元カラーコード４１が黒色であり、且つ、コード部分の上に赤色の文字「ＦＵＪＩＴＳＵ」が書かれている場合を示す。図１１の中央部分は、各Ｒ，Ｇ，Ｂプレーン４１Ｒ，４１Ｇ，４１Ｂにおいて、一例として画像の中央より右よりの部分から着目するブロック４１１Ｒ，４１１Ｇ，４１１Ｂが抽出された状態を示す。読み取られた一次元カラーコード４１のコード部分の上には文字が書かれているため、一例としてＲプレーン４１Ｒにおけるブロック４１１Ｒ内の画素データの水平ライン間相関Ｈｓは「０.９０」、Ｇプレーン４１Ｇにおけるブロック４１１Ｇ内の画素データの水平ライン間相関Ｈｓは「０.２０」、Ｂプレーン４１Ｂにおけるブロック４１１Ｂ内の画素データの水平ライン間相関Ｈｓは「０.２０」である。【００５６】
この場合、図３に示すステップＳ３は、抽出したブロック内に含まれている一次元カラーコードのコード部分の特徴量として、上記水平ライン間相関Ｈｓを算出する。又、ステップＳ４における色プレーンの選択は、この場合は特徴量の最も大きな色プレーンを選択する方法を採用する。例えば、抽出したブロックの画素データの水平ライン間相関Ｈｓが所定値以上のＲ，Ｇ，Ｂプレーン４１Ｒ，４１Ｇ，４１Ｂのうち、予め設定された優先順位が最も高い色プレーンを選択するようにしても良い。このように色プレーンを選択すると、黒色の一次元コードの上に赤色の文字等が書かれていても、Ｒプレーン４１Ｒを選択してステップＳ５の認識処理に用いることで、赤色の文字等の影響を受けることなく高精度の認識処理を行うことが可能となる。ただし、この場合は、優先順位の高い順にＲ，Ｇ，Ｂプレーン４１Ｒ，４１Ｇ，４１Ｂが予め設定されており、抽出したブロックの画素データの水平ライン間相関Ｈｓが例えば「０.８５」以上の色プレーンのうちで優先順位の最も高い色プレーンを選択するものとする。このように、カラーコードの状態やステップＳ５の認識処理で行う処理に応じて、ステップＳ４における色プレーンの選択基準を選定すれば良い。【００５７】
図１２は、本発明になるコード認識装置の他の実施例を説明するブロック図である。上記実施例では、コード認識装置がソフトウェアにより構成されているが、本実施例では、コード認識装置がハードウェアにより構成されている。【００５８】
図１２に示すコード認識装置５１は、画像読み取り部６１、画像データ生成部６２、コード判定部６３、色プレーン選択部６４、コード認識処理部６５及び認識結果出力部６６を有する。【００５９】
画像読み取り部６１は、デジタルカメラ等からなり、図２に示す画像読み取り装置９に相当する。画像データ生成部６２は、図３に示すステップＳ１及びＳ２の処理を行う。コード判定部６３は、図３に示すステップＳ３の処理を行う。色プレーン選択部６４は、図３に示すステップＳ４の処理を行う。コード認識処理部６５は、図３に示すステップＳ５の処理を行う。認識結果出力部６６は、コード認識処理部６５により得られた認識結果を、コード認識装置５１の外部へ出力するためのインタフェースを構成する。【００６０】
尚、画像データ生成部６２、コード判定部６３、色プレーン選択部６４及びコード認識処理部６５のうち、３つ以下の部分が行う処理をソフトウェア処理により実現しても良いことは、言うまでもない。【００６１】
上述の如く、本発明では、コードを読み取って入力されたカラー画像データから任意の複数の色成分毎の色プレーンを作成した後、各色プレーンの画像データを矩形ブロック単位に区切って、ブロック毎にコードの特徴量の算出を行い、特徴量からコードの有無とその種類を判別する。色プレーン毎のコードの特徴量を比較し、例えば特徴量が最も強く発現している色プレーンを用いてコードの有無とその種類を判別すると共に、コード認識を行う。これにより、黒以外の色のコードを処理する場合にも、コードの判別及び認識に適した色プレーンを選択して処理を行うことが可能なため、精度良く、且つ、高速にコードの認識処理を行うことが可能である。【００６２】
精度良く、且つ、高速にコードの認識処理を行うために、ブロック内の画素値のばらつきが所定の範囲内で最大になるブロックを有する色プレーンを選択したり、ブロック内の白又は黒画素の比率が所定の範囲内になるブロックを有する色プレーンを選択したり、ブロック内の水平及び垂直ライン内のエッジ数が所定の範囲内になるブロックを有する色プレーンを選択したり、ブロック内の特定の水平ライン間の相関及び垂直ライン間の相関が所定の範囲内になるブロックを有する色プレーンを選択したりすることができる。【００６３】
このように、一次元コード及び二次元コードのコード部分には、背景部分と異なる特徴量が複数存在するので、これらの特徴量を複数組み合わせて色プレーンの選択を行うことで、コードが一元コードであるか二次元コードであるかの判別及びコード認識を更に精度良く行うことができる。【００６４】
以上説明したように、本発明によれば、読み取られたコードの色に適した色プレーンを自動的に選択して認識処理を行うことが可能となるため、どのような色で作成されたコードでも確実に認識可能となる。
【産業上の利用可能性】
【００６５】
本発明は、読み取り対象のコードの色にかかわらず、コードが一元コードであるか二次元コードであるかの判別及びコード認識に適用可能である。【００６６】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図１】
0004653215.tif 000002
【図２】
0004653215.tif 000003
【図３】
0004653215.tif 000004
【図４】
0004653215.tif 000005
【図５】
0004653215.tif 000006
【図６】
0004653215.tif 000007
【図７】
0004653215.tif 000008
【図８】
0004653215.tif 000009
【図９】
0004653215.tif 000010
【図１０】
0004653215.tif 000011
【図１１】
0004653215.tif 000012
【図１２】
0004653215.tif 000013