(57)【要約】画像の各セルの階調値から当該セルの色が白か黒かを決定する場合、当該セルの階調値が白あるいは黒に十分偏っている場合には、閾値との比較で決定するが、当該セルの階調値がグレーゾーンにあるときは、当該セルの周囲にあるセルのようすから当該セルの色を決定する。すなわち、当該セルの階調値がグレーで、周囲のセルが全て黒である場合には、当該セルは白であると判断し、周囲のセルが全て白である場合には、当該セルは黒であると判断する。
2004093433.tif 000002
【特許請求の範囲】
【請求項１】
データをセル化して２次元に配置した２次元コードの認識において、
注目セル上の座標を検出する座標検出過程と、
検出した座標の階調値を求める階調値検出過程と、
検出した階調値から注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項２】
データをセル化して２次元に配置した２次元コードの認識において、
注目セルの階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムの中で、ある一定値以上かつ最も明側に有る階調値を求める第１の階調値検出過程と、
ヒストグラムの中で、ある一定値以上かつ最も暗側にある階調値を求める第２の階調値検出過程と、
前記第１及び第２の階調値検出過程で求めた階調値の中央を所定の閾値とする閾値検出過程と、
注目セルの階調値と前記閾値とを比較し、注目セルの種類を決定すること、
を特徴とする２次元コード認識方法。
【請求項３】
注目セルと隣接セルの階調値とを比較する階調値比較過程と、
階調値比較過程結果に基づいて注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項４】
注目セルと隣接セルの階調値とを比較する階調値比較過程と、
隣接セルと閾値とを比較する隣接セル閾値比較過程と、
階調値比較過程かつ／または隣接セル閾値比較過程により、隣接セルの種類を決定する隣接セル決定過程と、
隣接するセルがすべて同じ種類、または、ある一定個数以上同じ種類であれば、注目セルを隣接セルと異なる種類に決定すること、
を特徴とする２次元コード認識方法。
【請求項５】
前記隣接セルは、
ｘ方向かつｙ方向に４つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項６】
前記隣接セルは、
ｘ方向かつｙ方向に８つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項７】
セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲内にあるセルのみに作用させることを特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項８】
セル値決定過程は、
前記ヒストグラム作成過程及び前記閾値検出過程において検出した閾値に対し、
閾値を含み、かつ、明側と暗側の所定の閾値まで一定の領域範囲にあるセルのみに作用させることを特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項９】
セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲外にあるセルを選択し、
選択したセルを閾値と比較してセル値を決定すること、
を特徴とする２次元コード認識方法。
【請求項１０】
データをセル化して２次元に配置した２次元コードの認識において、
セルの座標値を検出する座標値検出過程と、
検出した座標上の階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムから閾値を求める閾値検出過程と、
閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、
階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、
階調値が領域範囲の外にあるセルを選択する領域外セル選択過程と、
前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類を決定するセル値決定過程と、
前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、
隣接するセルが全て同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、
隣接するセルがすべて同じ種類でなければ、注目セルを閾値と比較して競るの種類を決定する第２のセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項１１】
カメラから画像を入力し、コードの認識を行う認識装置において、
コードらしさを判定する複数手段を有する前処理手段を設け、
前記前処理手段の判定結果が否である場合に入力画像の更新処理を即時実行すること、
を特徴とするコード認識装置。
【請求項１２】
前記前処理手段は、
１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行すること、
を特徴とするコード認識装置。
【請求項１３】
前記前処理手段は、
画像の小領域に対し、画素階調値分散、画素黒画素率、白黒エッジ数の１つ以上の結果に基づいて２次元コードであるか否かを判定すること、
を特徴とする２次元コード認識装置。
【請求項１４】
前記前処理手段は、
画像の小領域に対し、画素階調値分散、白黒エッジ数、ライン相関の１つ以上の結果に基づいて１次元コードであるか否かを判定すること、
を特徴とするコード認識装置。
【請求項１５】
カメラから画像を入力し、コード認識を行う認識装置において、
該カメラの露出時間が該カメラの１フレームの周期を超えないこと、
を特徴とするコード認識装置。
【請求項１６】
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
前記ヒストグラム作成過程の結果を用いて暗側のレベル範囲領域を決定する黒セルレベル決定過程とを有し、
前記黒セルレベル決定過程で求めた黒セルと非黒セルの連続長を用いてコード境界を検出すること、
を特徴とする２次元コード認識方法。
【発明の詳細な説明】
【技術分野】  本発明は、スキャナやＣＣＤカメラ等の光学読み取り装置から入力した２次元コード画像を、読み取り認識処理する２次元コード認識方法と認識装置に関する。
【背景技術】  従来の２次元コード読み取り装置では、光学読み取り装置から入力した２次元コード画像を２値化処理し、２値化した画像を用いて認識処理を行う（特許文献１の図１４や、特許文献２の図１参照）。
光学機器より読み取った画像データを２値データに変換した後、認識処理を行うには、ある一定値以上の光学解像度がなければ、データの歪みによる影響から認識精度が低下すると言った問題がある。例えば、４方もしくは８方を種類の異なるセルに囲まれた孤立セル（２次元コードにおいて、黒い点や白い点を構成している１つの升目のことをセルという）は、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、異なる値に変換される。このような問題点は、小型カメラを内蔵した携帯端末装置にて、内蔵小型カメラを使用して２次元コードを読み取る場合、光学装置が小さいことから、取り込める光量も少ない故、顕著な課題となる。
また、２値化処理を行わずに認識処理を進めたとしても、セルの値を決定する際に、単純２値化の手法を用いたのでは、上記の問題を解決することはできない。
更に、認識対象の２次元コードに対して、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たり表示できる画像の枚数が低下することで、ユーザインターフェースの機能が低下していた。また、このような場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、カメラの１フレームの画像データ読み出し時間を超えて、複数フレームに渡って画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームに渡って多重露光することで、動きに対してはボケた画像が撮影され、その結果、認識性能が低下するという問題があった。
【特許文献１】特願平６−０４２５８７号明細書（特開平７−２５４０３７号公報）
【特許文献２】特願平８−３４１３５４号明細書（特開平１０−１８７８６８号公報）
４方向もしくは８方向を種類の異なるセル（白のセルと黒のセルなど、階調値の異なるセル）に囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、単純２値化の手法を用いただけでは、セルの値を正確に変換できない問題が生じていた。
【発明の開示】
本発明の課題は、光学解像度が低い場合やピントのずれ等が発生したとしても、セルの値を正確に変換し、認識精度を落とすことなく、２次元コードの読み取りが可能な２次元コード読み取り方法を提供することである。
更に、本発明の課題は、単位時間当たりの認識処理速度を向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上し、また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することである。
そして、これらの課題は、データをセル化して２次元に配置した２次元コードの認識において、２次元マトリックス上のセルの座標値を検出する座標値検出過程と、検出した座標上の階調値を求める階調値検出過程と、画像の色成分の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、ヒストグラムから閾値を求める閾値検出過程と、閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、階調値が領域範囲の外に有るセルを選択する領域外セル選択過程と、前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類（白または黒）を決定するセル値決定過程と、前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、隣接するセルがすべて同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、隣接するセルが全て同じ種類でなければ、注目セルを閾値と比較してセルの種類を決定する第２のセル値決定過程とを有することを特徴とした２次元コード認識方法により達成される。
【図面の簡単な説明】  図１は、本発明における２次元コード認識方法の処理ブロックを示す図である。
図２は、セルの判別のための閾値の決定方法を説明する図である。
図３は、４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その１）である。
図４は、４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その２）である。
図５は、４近傍隣接セル及び８近傍隣接セルを説明する図である。
図６は、本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
図７は、ＱＲコードの認識処理フローである。
図８は、本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
図９は、図８のステップＳ２０３の詳細なフローを示す図である。
図１０は、図９のステップＳ３０４の詳細なフローを示す図である。
図１１は、図９のステップＳ３０７の詳細なフローを示す図である。
図１２は、図９のステップＳ３０８の詳細フローを示す図である。
図１３は、本発明の実施形態に従った前処理について説明する図である。
図１４は、本発明の実施形態に従った前処理の別の形態の説明図である。
図１５は、前処理の流れを示すフローチャートである。
図１６は、本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
図１７は、本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その１）である。
図１８は、本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その２）である。
【発明を実施するための最良の形態】  図１は、本発明における２次元コード認識方法の処理ブロックを示す図である。
同図において、１０１において画像の読み取りを行い、光電変換部である１０２において、光電変換を行う。１０３のＡ／Ｄ変換部においては、アナログ信号をデジタル信号に変換する。２次元コード認識処理部である１０４では、２次元コードの認識処理を行い、データ文字出力部１０５において、２次元コードの認識結果から得られたデータ文字を出力する。
なお、本実施形態では、特には、携帯電話やＰＤＡ等の携帯端末を対象装置とする。この種の装置では、写真撮影のためのカメラを内蔵したものが普及しているが、昨今、このカメラを利用して２次元バーコードを読み取り、認識したテキストデータを装置内に取り込み、テキスト入力を簡易化させる技術が提唱されている。
光学機器より読み取った２次元のコード画像において、１つのセルは複数個の画素によって構成される。そのため、個々のセルが、どの種類（白もしくは黒）に属するかを決定する必要がある。まず、コード画像のセルの座標値を求め、セルの階調成分を求める。座標値はセルの中心とする。次に、セルの階調成分の閾値処理等により、どの種類に属するかを決定する。
次に、セルがどの種類に属するかを判別するための閾値を決定する。
図２は、セルの判別のための閾値の決定方法を説明する図である。
光の照射量が少ない場合や、センサ感度のレンジが低い場合等（階調値のレンジ幅が狭い場合）、固定閾値（例えば、全部の階調を２５５個の階調値で表すとした場合、閾値を中間の１２８に設定する）による変換方式では、セルの値を正確に変換することができない。例えば、光の照射量の少ない場合には、階調値のレンジは全体的に低いレベルに下がり、“かすれ”や“つぶれ”が発生する。２次元コードは白黒２値で表現されたものが多く、そのため入力画像のヒストグラムは明領域と暗領域に２つの山が出来る（図２参照）。その山の間の中央の位置を閾値とすることで、“かすれ”や“つぶれ”のない最適な変換処理を行うことが可能となる。
図３及び図４は、４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図である。
４方向もしくは８方向の種類の異なるセルに囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、隣接セルの影響により階調値が引っ張られ、閾値を用いた２値化の手法だけでは、セルの値を正確に変換できない。例えば、周辺を黒セルで囲まれた白セルは、周辺の黒セルの影響により階調値が引き下げられ、閾値の値によっては、黒セルと誤判別する場合がある。そこで図３に示すように、注目セルと隣接するセルの階調値との比較を取り、階調値の差がある一定以上であれば隣接セルと異なる値に変換する。
隣接セルが白黒両方の値を持つときには（孤立点ではない）、隣接セルの影響は少ない。隣接セルがすべて同一の値のときのみ、孤立点とみなして変換処理を行う。
８点近傍の隣接セルの影響は、水平垂直方向の影響が大きく、斜め方向の影響は小さい。しかし、図４に示すように、左側の隣接セルのみ白で、その他はすべて黒の場合には、注目セルの階調値は黒方向に引き下げられる。そこで８点近傍を用いる場合には、隣接セルすべてが同じ値ではなくても、例えば、８つの近傍隣接セルの内、７つが同じ種類である場合には、孤立点と同様の処理を行う。
すなわち、図３左においては、中心セルの周囲の４つの隣接セルの階調値がそれぞれ３１、４０、３１、２８であるので、閾値を１２８とした場合、これらは黒であると判断される。このとき、中心セルの階調値が閾値以下であっても、隣接セルが全て黒であり、中心セルと隣接セルの階調値の差がある一定以上である場合には、中心セルは白とする。図３右においては、４近傍隣接セルの階調値がそれぞれ、２３１、２４０、２４０、２２８であり、閾値を１２８とすると、全て白と判断される。ここで、中心セルの階調値が１４３で閾値より大きいとしたとき、周りのセルが全て白であり、周りのセルとの階調値の差が一定値以上であれば、中心セルは黒であると判断する。
図４左においては、８近傍隣接セルが全て黒である場合、中心セルの階調値が閾値以下であっても、隣接セルが全て黒で（閾値以下で）、かつ、中心セルと隣接セルとの階調値の差がある一定値である場合には、中心セルは白と判断する。図４右においては、８近傍隣接セルの内、７つが黒で、１つが白となっている。この場合にも、中心セルと閾値以下の隣接セルの階調値を比較し、差が一定値以上であれば、中心セルは白とする。逆に白に中心セルが囲まれた場合にも、同様にして、中心セルを黒とする。
以上、周囲を異なる種類のセルに囲まれた場合であっても、正確に変換処理を行うことが可能である。
図５は、４近傍隣接セル及び８近傍隣接セルを説明する図である。
図５に示すように、４近傍の隣接セルは、中心セルの水平垂直方向に隣接する４つのセルを表す。また、８近傍の隣接セルは、４近傍に更に斜め４方向を加えた隣接セルを表す。
前述したように、８近傍の斜め方向のセルは４近傍のセルと比較し、中心セルからの距離が遠いため、中心セルの階調値に与える影響は小さい。
図６は、本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
図６に示すように、階調値のヒストグラムにおいて、閾値を中心として、一定範囲を設定し、セルの階調値がこの一定範囲内に入っているか否かを判断することによって、セルの種類の決定の仕方を変える。
図６に示すように、領域範囲の中になるセルは、前述したように、隣接セルの値と比較してセルの値を決定する。一定の領域外にあるセルは、閾値との比較により白と黒に分別する。閾値からある一定範囲のグレイゾーンを設定することで、隣接セルの影響を受けていると思われるセルと、影響を受けていないと思われるセルとに分別することができる。
図６では、閾値を中心として、ある一定範囲の領域を設定しているが、これにより、弧立セル、もしくは隣接セルの多くが注目セルと異なる値である場合、注目セルの階調値は異なる方向に引っ張られるため、閾値周辺の値となる。閾値からある一定範囲の領域を設定することで、隣接セルの影響を受けるセルと、影響を受けないセルとに分別することができる。
そして、領域範囲の外にあるセルは、閾値と比較してセルの値を決定する。隣接セルの影響を受けるセルと受けないセルに分別して処理を行うことで、誤りのない正確なセルの値を求めることが可能である。
以上をまとめる。
２次元マトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。次に、検出した座標上のセルの階調値を求める。次に、セルの階調成分のヒストグラムを作成し、閾値を決定する。閾値を中心としてある一定幅の領域を設け、隣接セルの影響を受けるセルと、影響を受けないセルとに分別する。そして、領域内のセルは、隣接セルと比較してセルの値を決定する。領域外のセルは、閾値と比較してセルの値を決定する。
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
更に、本発明の実施形態では、以下のような手段を施す。
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下し、ユーザインターフェースの機能が低下していたという問題点に対し、以下のようにする。
対象画像にコードが含まれるか認識の可能性を評価する前処理手段を設け、前処理手段の判定結果で対象がコードと判定できた場合のみ、実際の認識処理を実施する。この結果、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、更に、表示できる画像の枚数が向上することでユーザインターフェースの機能を向上する。
また、従来では、１次元コードと２次元コードを対象とする認識の場合には、対象のコードをユーザが判断し、ユーザが認識処理自体を切り替えて実施していた。前記前処理手段で１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行することで、認識処理の自動切り替えを行う。
２次元コードは白黒ドットが５０％前後の比率で、かつ、２次元に分布している特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、画素黒画素率、白黒エッジ数（縦横）の１つ以上の特徴から２次元コード領域である評価を行う前処理が可能となる。
１次元コードはある長さを持つ縦線が複数の本数組合わさって構成される特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、白黒エッジ数（横）、ライン相関の１つ以上の特徴から１次元コード領域である評価を行う前処理が可能となる。
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、センサの１フレームの画像データの読み出し時間を超えて、複数フレームの画像を多重露光（一般にロングシャッタと呼ぶ）することで階調性を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きに対してはぶれた画像が撮影され、その結果、コードの認識性能が低下していた。この問題に対しては、以下の通りとする。
カメラの撮影時間をカメラのデータ読み出し時間以内に限定することで、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供する。
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出することが出来るように構成されていた。
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより双方の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色の付いた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。この問題に対しては、以下の通りとする。
入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。その山の暗側のレベル範囲領域を決定する黒セルレベル決定過程により閾値を決定する。決定した閾値でセル値を求め、黒セルと非黒セルの連続長を用いて、コード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
以下、より具体的に説明する。
ここでは、２次元コードの例としてＱＲコードを例にとって説明する。他の２次元コードに関しても、同様の処理を行うことが出来る。ＱＲコード認識の詳細は、ＪＩＳ規格“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”を参照する。
図７は、ＱＲコードの認識処理フローである。
ステップＳ１０１において、黒／白セルの認識を行う。本発明の処理の多くは、このステップＳ１０１の詳細に関わる。ステップＳ１０２においては、ＱＲコードに含まれている形式情報の復号を行う。形式情報は、ＱＲコードの決められた位置に符号化されて記述されているＱＲコードの型番号及びマスクの種類である。これをステップＳ１０２では、復号する。ステップＳ１０３では、読み取った形式情報から型番を決定し、ステップＳ１０４においては、マスク処理の解除を行う。マスク処理とは、２次元コードであるＱＲコードを生成する場合、情報を単に符号化しただけでは、２次元コードとした場合、２次元面に配置される黒セルと白セルの配分が白側あるいは黒側に偏ってしまう。このとき、予め定めれた幾つかのマスクの内の１つを２次元コードに重畳してやり、黒セルと白セルの分布が均一になるようにするものである。
ステップＳ１０５においては、マスク処理を解除して得られた２次元コードからデータ及び誤り訂正コード語の復元を行う。ステップＳ１０６においては、誤り訂正コード語を使用することによって、復元されたデータに誤りがあるか否かを判断する。ステップＳ１０６において、誤りがあると判断された場合には、ステップＳ１０７において、誤り訂正を行い、誤りがないと判断された場合にはそのまま捨てＳ１０８に進む。ステップＳ１０８においては、データコード語の復号を行い、ステップＳ１０９において、復号されたデータコード語を出力して、処理を終了する。
図８は、本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
ステップＳ２０１において、光学機器より入力された画像から、２次元のマトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。セルの座標値の計算方法に関しては、“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”に記載の手法を用いることとする。
ステップＳ２０２において、検出した座標上のセルの階調値を求める。
ステップＳ２０３において、セルの値を決定する。
図９は、図８のステップＳ２０３の詳細なフローを示す図である。
ステップＳ３０１において、セルの階調成分の頻度を求め、ヒストグラムを作成する。コード領域に含まれる画素の階調成分からヒストグラムを作成しても良い。
ステップＳ３０２において、閾値を決定する。ヒストグラムの左側（暗）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の低い領域のピーク位置を求める。同様に右側（明）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の高い領域のピーク位置を求める。そして、２つのピーク位置の中間を求め、閾値とする（図２参照）。
ステップＳ３０３において、領域範囲を設定する。
例えば、図２のヒストグラムにおいてｘ軸に着目し、階調値の低い領域にできたピークと閾値との間をｍ分割し、閾値からｎ／ｍ離れた位置を求める範囲とする。同様にして、階調値の高い領域においても、閾値からｎ／ｍ離れた位置を求める範囲とする。なお、ｎはｍを超えない値とする。
ステップＳ３０４において、領域範囲内にあるセルと、領域範囲外にあるセルとに分別する。
次に、ステップＳ３０５〜Ｓ３０９において、２次元コードに格納されたセルの変換処理を行う。以下にパラメータの設定を行う。
ａ）ｄａｔａ［ｉ］：セルの階調値
ｂ）ｉ：セル番号
ｃ）ｎ：セルの総個数
ｄ）ｆｌａｇ［ｉ］：領域内か領域外かの判別  １：領域外  ０：領域内
ｄ）のパラメータは、ステップＳ３０４において求める。
ステップＳ３０５において、セル全てに対して変換処理を行ったか判別する。
ステップＳ３０６において、ｆｌａｇ［ｉ］の値により、２つの処理に分別する。ｆｌａｇ［ｉ］が１であれば、ステップＳ３０７のセルの決定方法１に進む。ｆｌａｇ［ｉ］が０であれば、ステップＳ３０８のセルの決定方法２に進む。
ステップＳ３０７に進んだセルは、ヒストグラム上の領域範囲外に有るセルで、閾値と比較してセルの値を決定する。ステップＳ３０８に進んだセルは、ヒストグラム上の領域範囲内にあるセルで、隣接セルと比較してセルの値を決定する。
ステップＳ３０９において、セル番号を１つ進め、ステップＳ３０５に進む。
全てのセルに対して変換処理を行えば、処理を終了する。
図１０は、図９のステップＳ３０４の詳細なフローを示す図である。
同図のフローでは、個々のセルが、領域範囲内にあるか領域範囲外にあるかを判別する。全てのセルに対して判別を行い、ｆｌａｇ［ｉ］の値を設定する。以下にパラメータの設定を行う。他のパラメータに関してはａ）〜ｄ）と同様である。
ｅ）ｔｈｒｅｓｈ１：領域範囲  階調値が低い領域の閾値
ｆ）ｔｈｒｅｓｈ２：領域範囲  階調値が高い領域の閾値
ステップＳ４０１において、セル番号を初期化する。
ステップＳ４０２において、セルすべてに対してｆｌａｇ［ｉ］を求めたかを判別する。
ステップＳ４０３において、セルの階調値を比較し、領域範囲の内にあるか外にあるかを判別する。
ステップＳ４０４において、領域範囲の中に有ればｆｌａｇ［ｉ］に０を代入する。
ステップＳ４０５において、領域範囲の外に有ればｆｌａｇ［ｉ］に１を代入する。
ステップＳ４０６において、セル番号を１つ進め、次に進む。
全てのセルに対してｆｌａｇ［ｉ］の値を求めれば、処理を終了する。
図１１は、図９のステップＳ３０７の詳細なフローを示す図である。
図１１の処理を行うセルは、領域範囲外にあるセルであり、閾値と比較してセルの値を決定する。
ステップＳ５０１において、階調値と閾値の値を比較する。
ステップＳ５０２において、階調値が閾値よりも小さければ、セルの値を黒（０）とする。
ステップＳ５０３において、階調値が閾値よりも大きければ、セルの値を白（２５５）とする。
セルの値は黒を０、白を２５５としたが、その他の値を用いてもかまわない。
図１２は、図９のステップＳ３０８の詳細フローを示す図である。
この処理を行うセルは、領域範囲内にあるセルであり、隣接セルと比較してセルの値を決定する。
なお、各パラメータは以下の通りである。
ｊ：隣接セル番号
ｋ：隣接セルの個数
４近傍ではｋ＝４
８近傍ではｋ＝８
ｃｏｕｎｔ＿ｂ：隣接セルの黒の個数
ｃｏｕｎｔ＿ｗ：隣接セルの白の個数
ｎｄａｔａ［ｉ］：隣接セルの階調値
ｒｅｖ＿ｔｈｒｅｓｈ：隣接セルがこの個数以上あれば、隣接セルと異なる値に中心セルの種類を決定する。
ステップＳ６０１において、パラメータの初期化を行う。
ステップＳ６０２において、隣接セル全ての値を求めたか判別を行う。
ステップＳ６０３において、隣接セルの階調値（ｎｄａｔａ［ｊ］）が閾値を超えているかを判別する。
閾値以下であれば、Ｓ６０４において黒のカウントを１つ進める。
閾値以上であれば、Ｓ６０５において白のカウントを１つ進める。
ステップＳ６０６で隣接セルの参照個所を１つ進め、全ての隣接セルを決定すれば次の処理に進む。
ステップＳ６０７において、隣接セルが閾値以上個数黒であるかを判別する。
ステップＳ６０８において、閾値以上個数黒であれば、注目セルを白の値に決定し、処理を終了する。
ステップＳ６０９において、隣接セルが閾値以上個数白であれば注目セルを黒の値に決定し、処理を終了する。ステップＳ６１１において、どちらにも属さなければ、注目セルを閾値と比較して、セルの値を決定する。閾値以下であれば黒とし、閾値以上であれば白とする。
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
図１３は、本発明の実施形態に従った前処理について説明する図である。
認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に、画像１枚の撮影時間に比較して認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下することでユーザインターフェースの機能が低下していた。
対象画像に２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できる。
図１３においては、コード認識を開始すると、認識用画像をステップＳ７００において取得する。ステップＳ７０１では、プレビュー画像を作成し、プレビューをユーザに提示する。取得された画像は、ステップＳ７０２において、前処理され、ステップＳ７０３において、画像にコードが含まれているか否かを判断する。コードが含まれていないと判断された場合には、再び、認識用画像の取得を行う。ステップＳ７０３でコードが含まれていると判断された場合には、ステップＳ７０４において、２次元コード認識処理を行う。ステップＳ７０５では、デコードに成功したか否かを判断する。失敗した場合には、再び、認識用画像の取得を行う。デコードに成功した場合には、ステップＳ７０６において、デコード結果を出力して、コード認識を終了する。
撮影した画像に対して、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像に２次元コードが存在するものと判断し、認識処理を実施する。
前処理：撮影画像の小領域（Ｘ×Ｙ画素）に対し、
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横方向）＞γ
の条件を満足する場合に２次元コード領域と判定する。なお、α、β１、β２、γは、予め実験的に求めておく。
図１４は、本発明の実施形態に従った前処理の別の形態の説明図である。
なお、同図において、図１３と同じステップには同じ符号を付し、説明を省略する。
更に、従来では、１次元コードと２次元コードを対象とする場合には、対象のコードをユーザが判断し、ユーザが認識処理を切り替えて実施していた。対象画像に１次元と２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が１次元、２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できるとともに、１次元と２次元コードに対して自動の認識処理が実現できる。
撮影した画像に対し、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像にコードが存在するものと判断し、認識処理を実施する。
前処理：
撮影画像の小領域（Ｘ×Ｙ画素）に対し、
２次元コード
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横共）＞γ
１次元コード
・画素の階調値分散（コントラスト）＞α
・白黒エッジ数（横）＞θ
・ライン相関＝相関ピーク位置がライン間で同一
の場合に２次元、１次元コード領域と判定
図１３の場合と同様に、α、β１、β２、γ、θ等は、実験的に最適な値を設定しておく。
図１５は、前処理の流れを示すフローチャートである。
まず、ステップＳ８００において、画素値の階調値分散が範囲外か否かを判断し、範囲外の場合には、ステップＳ８０７でコード無し結果出力を行い前処理を終了する。ステップＳ８０１では、横エッジ数を計算し、範囲外の時には、ステップＳ８０７へ、範囲内の時には、ステップＳ８０２において縦エッジ数を検出する。ステップＳ８０２において、縦エッジ数が範囲外の場合には、ステップＳ８０４に進む。縦エッジ数が範囲内の時は、ステップＳ８０３において、黒画素率を検出し、範囲外の時は、ステップＳ８０７に進み、範囲内の時は、ステップＳ８０４に進む。ステップＳ８０４では、ライン間相関を取り、ステップＳ８０５において、コードがあるか否かを判断する。ステップＳ８０５で、コード無しと判断された場合には、ステップＳ８０７に進む。ステップＳ８０５で、コード有りと判断された場合には、ステップＳ８０６において、１次元コードか２次元コードかの判定結果を出力し、処理を終了する。
図１６は、本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
従来の場合、認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所では、センサ感度を擬似的に向上させるため、センサの１枚の画像データの読み出し時間を超えて、複数フレームの画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きによってボケた画像が撮影され、その結果、認識性能が低下していた（図１６参照：従来の露光時間制御）。
本発明の実施形態においては、カメラの露光時間をカメラの１フレームの駆動時間以内に限定することで（図１６参照：本発明の露光時間制御）、暗い場所でも認識に適した動きに追従出来るボケのない画像データを撮影することで、認識性能が向上した認識装置を提供する。
図１７及び図１８は、本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図である。
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出する事が出来るように構成されていた。
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより階調値の双峰形状の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色のついた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。
図１７に示すように、入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。そこで、その山の暗側のレベル範囲領域を決定する、前述したような黒セルレベルの決定方法（図２において、閾値を黒セルレベルに設定する）により閾値を決定する。決定した閾値でセル値をもとめ、黒セルと非黒セルの連続長を用いてコード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
図１８では、２次元コードの境界部分の階調値と認識されたセルの関係を示している。従来例では境界と判定されない場合でも、本発明により、境界の判定が正しく行うことが出来る。検出された境界を連結して、矩形領域を切り出すことで、２次元領域の抽出を正しく行うことが出来る。
【産業上の利用可能性】  本発明により、光学解像度が低い場合やピントのずれ等が発生した場合においても、セルの値を正確に変換することが可能であり、認識精度を落とすことなく、２次元コードの読み取りが可能となる。
本発明の認識方法を用いることで、認識精度の高い２次元コード読み取り装置を提供することが可能である。
更に、単位時間当たりの認識処理速度を前処理の判定により向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上する。また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することが可能である。
【図１】
2004093433.tif 000003
【図２】
2004093433.tif 000004
【図３】
2004093433.tif 000005
【図４】
2004093433.tif 000006
【図５】
2004093433.tif 000007
【図６】
2004093433.tif 000008
【図７】
2004093433.tif 000009
【図８】
2004093433.tif 000010
【図９】
2004093433.tif 000011
【図１０】
2004093433.tif 000012
【図１１】
2004093433.tif 000013
【図１２】
2004093433.tif 000014
【図１３】
2004093433.tif 000015
【図１４】
2004093433.tif 000016
【図１５】
2004093433.tif 000017
【図１６】
2004093433.tif 000018
【図１７】
2004093433.tif 000019
【図１８】
2004093433.tif 000020
【手続補正書】
【提出日】平成17年3月14日(2005.3.14)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】    明細書
【特許請求の範囲】
【請求項１】  データをセル化して２次元に配置した２次元コードの認識において、
注目セル上の座標を検出する座標検出過程と、
検出した座標の階調値を求める階調値検出過程と、
検出した階調値から注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項２】  データをセル化して２次元に配置した２次元コードの認識において、
注目セルの階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムの中で、ある一定値以上かつ最も明側に有る階調値を求める第１の階調値検出過程と、
ヒストグラムの中で、ある一定値以上かつ最も暗側にある階調値を求める第２の階調値検出過程と、
前記第１及び第２の階調値検出過程で求めた階調値の中央を所定の閾値とする閾値検出過程と、
注目セルの階調値と前記閾値とを比較し、注目セルの種類を決定すること、
を特徴とする２次元コード認識方法。
【請求項３】  注目セルと隣接セルの階調値とを比較する階調値比較過程と、
階調値比較過程結果に基づいて注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項４】  注目セルと隣接セルの階調値とを比較する階調値比較過程と、
隣接セルと閾値とを比較する隣接セル閾値比較過程と、
階調値比較過程かつ／または隣接セル閾値比較過程により、隣接セルの種類を決定する隣接セル決定過程と、
隣接するセルがすべて同じ種類、または、ある一定個数以上同じ種類であれば、注目セルを隣接セルと異なる種類に決定すること、
を特徴とする２次元コード認識方法。
【請求項５】  前記隣接セルは、
ｘ方向かつｙ方向に４つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項６】  前記隣接セルは、
ｘ方向かつｙ方向に８つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項７】  セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲内にあるセルのみに作用させることを特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項８】  セル値決定過程は、
前記ヒストグラム作成過程及び前記閾値検出過程において検出した閾値に対し、
閾値を含み、かつ、明側と暗側の所定の閾値まで一定の領域範囲にあるセルのみに作用させることを特徴とする請求項２に記載の２次元コード認識方法。
【請求項９】  セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲外にあるセルを選択し、
選択したセルを閾値と比較してセル値を決定すること、
を特徴とする請求項３に記載の２次元コード認識方法。
【請求項１０】  データをセル化して２次元に配置した２次元コードの認識において、
セルの座標値を検出する座標値検出過程と、
検出した座標上の階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムから閾値を求める閾値検出過程と、
閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、
階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、
階調値が領域範囲の外にあるセルを選択する領域外セル選択過程と、
前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類を決定するセル値決定過程と、
前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、
隣接するセルが全て同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、
隣接するセルがすべて同じ種類でなければ、注目セルを閾値と比較して競るの種類を決定する第２のセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項１１】  カメラから画像を入力し、コードの認識を行う認識装置において、
コードらしさを判定する複数手段を有する前処理手段を設け、
前記前処理手段の判定結果が否である場合に入力画像の更新処理を即時実行すること、
を特徴とするコード認識装置。
【請求項１２】  前記前処理手段は、
１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行すること、
を特徴とするコード認識装置。
【請求項１３】  前記前処理手段は、
画像の小領域に対し、画素階調値分散、画素黒画素率、白黒エッジ数の１つ以上の結果に基づいて２次元コードであるか否かを判定すること、
を特徴とする２次元コード認識装置。
【請求項１４】  前記前処理手段は、
画像の小領域に対し、画素階調値分散、白黒エッジ数、ライン相関の１つ以上の結果に基づいて１次元コードであるか否かを判定すること、
を特徴とするコード認識装置。
【請求項１５】  カメラから画像を入力し、コード認識を行う認識装置において、
該カメラの露出時間が該カメラの１フレームの周期を超えないこと、
を特徴とするコード認識装置。
【請求項１６】  画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
前記ヒストグラム作成過程の結果を用いて暗側のレベル範囲領域を決定する黒セルレベル決定過程とを有し、
前記黒セルレベル決定過程で求めた黒セルと非黒セルの連続長を用いてコード境界を検出すること、
を特徴とする２次元コード認識方法。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明は、スキャナやＣＣＤカメラ等の光学読み取り装置から入力した２次元コード画像を、読み取り認識処理する２次元コード認識方法と認識装置に関する。
【０００２】
【背景技術】
従来の２次元コード読み取り装置では、光学読み取り装置から入力した２次元コード画像を２値化処理し、２値化した画像を用いて認識処理を行う（特許文献１の図１４や、特許文献２の図１参照）。
【０００３】
光学機器より読み取った画像データを２値データに変換した後、認識処理を行うには、ある一定値以上の光学解像度がなければ、データの歪みによる影響から認識精度が低下すると言った問題がある。例えば、４方もしくは８方を種類の異なるセルに囲まれた孤立セル（２次元コードにおいて、黒い点や白い点を構成している１つの升目のことをセルという）は、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、異なる値に変換される。このような問題点は、小型カメラを内蔵した携帯端末装置にて、内蔵小型カメラを使用して２次元コードを読み取る場合、光学装置が小さいことから、取り込める光量も少ない故、顕著な課題となる。
【０００４】
また、２値化処理を行わずに認識処理を進めたとしても、セルの値を決定する際に、単純２値化の手法を用いたのでは、上記の問題を解決することはできない。
【０００５】
更に、認識対象の２次元コードに対して、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たり表示できる画像の枚数が低下することで、ユーザインターフェースの機能が低下していた。また、このような場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、カメラの１フレームの画像データ読み出し時間を超えて、複数フレームに渡って画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームに渡って多重露光することで、動きに対してはボケた画像が撮影され、その結果、認識性能が低下するという問題があった。
【０００６】
【特許文献１】  特願平６−０４２５８７号明細書（特開平７−２５４０３７号公報）
【特許文献２】  特願平８−３４１３５４号明細書（特開平１０−１８７８６８号公報）
【０００７】
４方向もしくは８方向を種類の異なるセル（白のセルと黒のセルなど、階調値の異なるセル）に囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、単純２値化の手法を用いただけでは、セルの値を正確に変換できない問題が生じていた。
【０００８】
【発明の開示】
本発明の課題は、光学解像度が低い場合やピントのずれ等が発生したとしても、セルの値を正確に変換し、認識精度を落とすことなく、２次元コードの読み取りが可能な２次元コード読み取り方法を提供することである。
【０００９】
更に、本発明の課題は、単位時間当たりの認識処理速度を向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上し、また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することである。
【００１０】
そして、これらの課題は、データをセル化して２次元に配置した２次元コードの認識において、２次元マトリックス上のセルの座標値を検出する座標値検出過程と、検出した座標上の階調値を求める階調値検出過程と、画像の色成分の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、ヒストグラムから閾値を求める閾値検出過程と、閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、階調値が領域範囲の外に有るセルを選択する領域外セル選択過程と、前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類（白または黒）を決定するセル値決定過程と、前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、隣接するセルがすべて同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、隣接するセルが全て同じ種類でなければ、注目セルを閾値と比較してセルの種類を決定する第２のセル値決定過程とを有することを特徴とした２次元コード認識方法により達成される。
【００１１】
【発明を実施するための最良の形態】
図１は、本発明における２次元コード認識方法の処理ブロックを示す図である。
【００１２】
同図において、１０１において画像の読み取りを行い、光電変換部である１０２において、光電変換を行う。１０３のＡ／Ｄ変換部においては、アナログ信号をデジタル信号に変換する。２次元コード認識処理部である１０４では、２次元コードの認識処理を行い、データ文字出力部１０５において、２次元コードの認識結果から得られたデータ文字を出力する。
【００１３】
なお、本実施形態では、特には、携帯電話やＰＤＡ等の携帯端末を対象装置とする。この種の装置では、写真撮影のためのカメラを内蔵したものが普及しているが、昨今、このカメラを利用して２次元バーコードを読み取り、認識したテキストデータを装置内に取り込み、テキスト入力を簡易化させる技術が提唱されている。
【００１４】
光学機器より読み取った２次元のコード画像において、１つのセルは複数個の画素によって構成される。そのため、個々のセルが、どの種類（白もしくは黒）に属するかを決定する必要がある。まず、コード画像のセルの座標値を求め、セルの階調成分を求める。座標値はセルの中心とする。次に、セルの階調成分の閾値処理等により、どの種類に属するかを決定する。
【００１５】
次に、セルがどの種類に属するかを判別するための閾値を決定する。
図２は、セルの判別のための閾値の決定方法を説明する図である。
光の照射量が少ない場合や、センサ感度のレンジが低い場合等（階調値のレンジ幅が狭い場合）、固定閾値（例えば、全部の階調を２５５個の階調値で表すとした場合、閾値を中間の１２８に設定する）による変換方式では、セルの値を正確に変換することができない。例えば、光の照射量の少ない場合には、階調値のレンジは全体的に低いレベルに下がり、“かすれ”や“つぶれ”が発生する。２次元コードは白黒２値で表現されたものが多く、そのため入力画像のヒストグラムは明領域と暗領域に２つの山が出来る（図２参照）。その山の間の中央の位置を閾値とすることで、“かすれ”や“つぶれ”のない最適な変換処理を行うことが可能となる。
【００１６】
図３及び図４は、４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図である。
４方向もしくは８方向の種類の異なるセルに囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、隣接セルの影響により階調値が引っ張られ、閾値を用いた２値化の手法だけでは、セルの値を正確に変換できない。例えば、周辺を黒セルで囲まれた白セルは、周辺の黒セルの影響により階調値が引き下げられ、閾値の値によっては、黒セルと誤判別する場合がある。そこで図３に示すように、注目セルと隣接するセルの階調値との比較を取り、階調値の差がある一定以上であれば隣接セルと異なる値に変換する。
【００１７】
隣接セルが白黒両方の値を持つときには（孤立点ではない）、隣接セルの影響は少ない。隣接セルがすべて同一の値のときのみ、孤立点とみなして変換処理を行う。
【００１８】
８点近傍の隣接セルの影響は、水平垂直方向の影響が大きく、斜め方向の影響は小さい。しかし、図４に示すように、左側の隣接セルのみ白で、その他はすべて黒の場合には、注目セルの階調値は黒方向に引き下げられる。そこで８点近傍を用いる場合には、隣接セルすべてが同じ値ではなくても、例えば、８つの近傍隣接セルの内、７つが同じ種類である場合には、孤立点と同様の処理を行う。
【００１９】
すなわち、図３左においては、中心セルの周囲の４つの隣接セルの階調値がそれぞれ３１、４０、３１、２８であるので、閾値を１２８とした場合、これらは黒であると判断される。このとき、中心セルの階調値が閾値以下であっても、隣接セルが全て黒であり、中心セルと隣接セルの階調値の差がある一定以上である場合には、中心セルは白とする。図３右においては、４近傍隣接セルの階調値がそれぞれ、２３１、２４０、２４０、２２８であり、閾値を１２８とすると、全て白と判断される。ここで、中心セルの階調値が１４３で閾値より大きいとしたとき、周りのセルが全て白であり、周りのセルとの階調値の差が一定値以上であれば、中心セルは黒であると判断する。
【００２０】
図４左においては、８近傍隣接セルが全て黒である場合、中心セルの階調値が閾値以下であっても、隣接セルが全て黒で（閾値以下で）、かつ、中心セルと隣接セルとの階調値の差がある一定値である場合には、中心セルは白と判断する。図４右においては、８近傍隣接セルの内、７つが黒で、１つが白となっている。この場合にも、中心セルと閾値以下の隣接セルの階調値を比較し、差が一定値以上であれば、中心セルは白とする。逆に白に中心セルが囲まれた場合にも、同様にして、中心セルを黒とする。
【００２１】
以上、周囲を異なる種類のセルに囲まれた場合であっても、正確に変換処理を行うことが可能である。
図５は、４近傍隣接セル及び８近傍隣接セルを説明する図である。
【００２２】
図５に示すように、４近傍の隣接セルは、中心セルの水平垂直方向に隣接する４つのセルを表す。また、８近傍の隣接セルは、４近傍に更に斜め４方向を加えた隣接セルを表す。
【００２３】
前述したように、８近傍の斜め方向のセルは４近傍のセルと比較し、中心セルからの距離が遠いため、中心セルの階調値に与える影響は小さい。
図６は、本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
【００２４】
図６に示すように、階調値のヒストグラムにおいて、閾値を中心として、一定範囲を設定し、セルの階調値がこの一定範囲内に入っているか否かを判断することによって、セルの種類の決定の仕方を変える。
【００２５】
図６に示すように、領域範囲の中になるセルは、前述したように、隣接セルの値と比較してセルの値を決定する。一定の領域外にあるセルは、閾値との比較により白と黒に分別する。閾値からある一定範囲のグレイゾーンを設定することで、隣接セルの影響を受けていると思われるセルと、影響を受けていないと思われるセルとに分別することができる。
【００２６】
図６では、閾値を中心として、ある一定範囲の領域を設定しているが、これにより、孤立セル、もしくは隣接セルの多くが注目セルと異なる値である場合、注目セルの階調値は異なる方向に引っ張られるため、閾値周辺の値となる。閾値からある一定範囲の領域を設定することで、隣接セルの影響を受けるセルと、影響を受けないセルとに分別することができる。
【００２７】
そして、領域範囲の外にあるセルは、閾値と比較してセルの値を決定する。隣接セルの影響を受けるセルと受けないセルに分別して処理を行うことで、誤りのない正確なセルの値を求めることが可能である。
【００２８】
以上をまとめる。
２次元マトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。次に、検出した座標上のセルの階調値を求める。次に、セルの階調成分のヒストグラムを作成し、閾値を決定する。閾値を中心としてある一定幅の領域を設け、隣接セルの影響を受けるセルと、影響を受けないセルとに分別する。そして、領域内のセルは、隣接セルと比較してセルの値を決定する。領域外のセルは、閾値と比較してセルの値を決定する。
【００２９】
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
【００３０】
更に、本発明の実施形態では、以下のような手段を施す。
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下し、ユーザインターフェースの機能が低下していたという問題点に対し、以下のようにする。
【００３１】
対象画像にコードが含まれるか認識の可能性を評価する前処理手段を設け、前処理手段の判定結果で対象がコードと判定できた場合のみ、実際の認識処理を実施する。この結果、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、更に、表示できる画像の枚数が向上することでユーザインターフェースの機能を向上する。
【００３２】
また、従来では、１次元コードと２次元コードを対象とする認識の場合には、対象のコードをユーザが判断し、ユーザが認識処理自体を切り替えて実施していた。前記前処理手段で１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行することで、認識処理の自動切り替えを行う。
【００３３】
２次元コードは白黒ドットが５０％前後の比率で、かつ、２次元に分布している特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、画素黒画素率、白黒エッジ数（縦横）の１つ以上の特徴から２次元コード領域である評価を行う前処理が可能となる。
【００３４】
１次元コードはある長さを持つ縦線が複数の本数組合わさって構成される特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、白黒エッジ数（横）、ライン相関の１つ以上の特徴から１次元コード領域である評価を行う前処理が可能となる。
【００３５】
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、センサの１フレームの画像データの読み出し時間を超えて、複数フレームの画像を多重露光（一般にロングシャッタと呼ぶ）することで階調性を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きに対してはぶれた画像が撮影され、その結果、コードの認識性能が低下していた。この問題に対しては、以下の通りとする。
【００３６】
カメラの撮影時間をカメラのデータ読み出し時間以内に限定することで、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供する。
【００３７】
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出することが出来るように構成されていた。
【００３８】
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより双方の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色の付いた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。この問題に対しては、以下の通りとする。
【００３９】
入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。その山の暗側のレベル範囲領域を決定する黒セルレベル決定過程により閾値を決定する。決定した閾値でセル値を求め、黒セルと非黒セルの連続長を用いて、コード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
【００４０】
以下、より具体的に説明する。
ここでは、２次元コードの例としてＱＲコードを例にとって説明する。他の２次元コードに関しても、同様の処理を行うことが出来る。ＱＲコード認識の詳細は、ＪＩＳ規格“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”を参照する。
【００４１】
図７は、ＱＲコードの認識処理フローである。
ステップＳ１０１において、黒／白セルの認識を行う。本発明の処理の多くは、このステップＳ１０１の詳細に関わる。ステップＳ１０２においては、ＱＲコードに含まれている形式情報の復号を行う。形式情報は、ＱＲコードの決められた位置に符号化されて記述されているＱＲコードの型番号及びマスクの種類である。これをステップＳ１０２では、復号する。ステップＳ１０３では、読み取った形式情報から型番を決定し、ステップＳ１０４においては、マスク処理の解除を行う。マスク処理とは、２次元コードであるＱＲコードを生成する場合、情報を単に符号化しただけでは、２次元コードとした場合、２次元面に配置される黒セルと白セルの配分が白側あるいは黒側に偏ってしまう。このとき、予め定めれた幾つかのマスクの内の１つを２次元コードに重畳してやり、黒セルと白セルの分布が均一になるようにするものである。
【００４２】
ステップＳ１０５においては、マスク処理を解除して得られた２次元コードからデータ及び誤り訂正コード語の復元を行う。ステップＳ１０６においては、誤り訂正コード語を使用することによって、復元されたデータに誤りがあるか否かを判断する。ステップＳ１０６において、誤りがあると判断された場合には、ステップＳ１０７において、誤り訂正を行い、誤りがないと判断された場合にはそのまま捨てＳ１０８に進む。ステップＳ１０８においては、データコード語の復号を行い、ステップＳ１０９において、復号されたデータコード語を出力して、処理を終了する。
【００４３】
図８は、本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
ステップＳ２０１において、光学機器より入力された画像から、２次元のマトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。セルの座標値の計算方法に関しては、“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”に記載の手法を用いることとする。
【００４４】
ステップＳ２０２において、検出した座標上のセルの階調値を求める。
ステップＳ２０３において、セルの値を決定する。
図９は、図８のステップＳ２０３の詳細なフローを示す図である。
【００４５】
ステップＳ３０１において、セルの階調成分の頻度を求め、ヒストグラムを作成する。コード領域に含まれる画素の階調成分からヒストグラムを作成しても良い。
【００４６】
ステップＳ３０２において、閾値を決定する。ヒストグラムの左側（暗）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の低い領域のピーク位置を求める。同様に右側（明）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の高い領域のピーク位置を求める。そして、２つのピーク位置の中間を求め、閾値とする（図２参照）。
【００４７】
ステップＳ３０３において、領域範囲を設定する。
例えば、図２のヒストグラムにおいてｘ軸に着目し、階調値の低い領域にできたピークと閾値との間をｍ分割し、閾値からｎ／ｍ離れた位置を求める範囲とする。同様にして、階調値の高い領域においても、閾値からｎ／ｍ離れた位置を求める範囲とする。なお、ｎはｍを超えない値とする。
【００４８】
ステップＳ３０４において、領域範囲内にあるセルと、領域範囲外にあるセルとに分別する。
次に、ステップＳ３０５〜Ｓ３０９において、２次元コードに格納されたセルの変換処理を行う。以下にパラメータの設定を行う。
ａ）data[i]：セルの階調値
ｂ）i：セル番号
ｃ）ｎ：セルの総個数
ｄ）flag[i]：領域内か領域外かの判別  １：領域外  ０：領域内
ｄ）のパラメータは、ステップＳ３０４において求める。
【００４９】
ステップＳ３０５において、セル全てに対して変換処理を行ったか判別する。
ステップＳ３０６において、flag[i]の値により、２つの処理に分別する。flag[i]が１であれば、ステップＳ３０７のセルの決定方法１に進む。flag[i] が０であれば、ステップＳ３０８のセルの決定方法２に進む。
【００５０】
ステップＳ３０７に進んだセルは、ヒストグラム上の領域範囲外に有るセルで、閾値と比較してセルの値を決定する。ステップＳ３０８に進んだセルは、ヒストグラム上の領域範囲内にあるセルで、隣接セルと比較してセルの値を決定する。
ステップＳ３０９において、セル番号を１つ進め、ステップＳ３０５に進む。
全てのセルに対して変換処理を行えば、処理を終了する。
【００５１】
図１０は、図９のステップＳ３０４の詳細なフローを示す図である。
同図のフローでは、個々のセルが、領域範囲内にあるか領域範囲外にあるかを判別する。全てのセルに対して判別を行い、flag[i]の値を設定する。以下 にパラメータの設定を行う。他のパラメータに関してはａ）〜ｄ）と同様である。
ｅ）thresh1：領域範囲  階調値が低い領域の閾値
ｆ）thresh2：領域範囲  階調値が高い領域の閾値
ステップＳ４０１において、セル番号を初期化する。
ステップＳ４０２において、セルすべてに対してflag[i]を求めたかを判別す る。
ステップＳ４０３において、セルの階調値を比較し、領域範囲の内にあるか外にあるかを判別する。
ステップＳ４０４において、領域範囲の中に有ればflag[i]に０を代入する。
ステップＳ４０５において、領域範囲の外に有ればflag[i]に１を代入する。
ステップＳ４０６において、セル番号を１つ進め、次に進む。
【００５２】
全てのセルに対してflag[i]の値を求めれば、処理を終了する。
図１１は、図９のステップＳ３０７の詳細なフローを示す図である。
図１１の処理を行うセルは、領域範囲外にあるセルであり、閾値と比較してセルの値を決定する。
ステップＳ５０１において、階調値と閾値の値を比較する。
ステップＳ５０２において、階調値が閾値よりも小さければ、セルの値を黒  （０）とする。
ステップＳ５０３において、階調値が閾値よりも大きければ、セルの値を白  （２５５）とする。
【００５３】
セルの値は黒を０、白を２５５としたが、その他の値を用いてもかまわない。
図１２は、図９のステップＳ３０８の詳細フローを示す図である。
この処理を行うセルは、領域範囲内にあるセルであり、隣接セルと比較してセルの値を決定する。
【００５４】
なお、各パラメータは以下の通りである。
ｊ：隣接セル番号
ｋ：隣接セルの個数
４近傍ではｋ＝４
８近傍ではｋ＝８
count ｂ：隣接セルの黒の個数
count ｗ：隣接セルの白の個数
ndata[i]：隣接セルの階調値
rev thresh：隣接セルがこの個数以上あれば、隣接セルと異なる値に中心セルの種類を決定する。
ステップＳ６０１において、パラメータの初期化を行う。
ステップＳ６０２において、隣接セル全ての値を求めたか判別を行う。
ステップＳ６０３において、隣接セルの階調値（ndata[j]）が閾値を超えているかを判別する。
【００５５】
閾値以下であれば、Ｓ６０４において黒のカウントを１つ進める。
閾値以上であれば、Ｓ６０５において白のカウントを１つ進める。
ステップＳ６０６で隣接セルの参照個所を１つ進め、全ての隣接セルを決定すれば次の処理に進む。
ステップＳ６０７において、隣接セルが閾値以上個数黒であるかを判別する。
ステップＳ６０８において、閾値以上個数黒であれば、注目セルを白の値に決定し、処理を終了する。
ステップＳ６０９において、隣接セルが閾値以上個数白であれば注目セルを黒の値に決定し、処理を終了する。ステップＳ６１１において、どちらにも属さなければ、注目セルを閾値と比較して、セルの値を決定する。閾値以下であれば黒とし、閾値以上であれば白とする。
【００５６】
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
【００５７】
図１３は、本発明の実施形態に従った前処理について説明する図である。
認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に、画像１枚の撮影時間に比較して認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下することでユーザインターフェースの機能が低下していた。
【００５８】
対象画像に２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できる。
【００５９】
図１３においては、コード認識を開始すると、認識用画像をステップＳ７００において取得する。ステップＳ７０１では、プレビュー画像を作成し、プレビューをユーザに提示する。取得された画像は、ステップＳ７０２において、前処理され、ステップＳ７０３において、画像にコードが含まれているか否かを判断する。コードが含まれていないと判断された場合には、再び、認識用画像の取得を行う。ステップＳ７０３でコードが含まれていると判断された場合には、ステップＳ７０４において、２次元コード認識処理を行う。ステップＳ７０５では、デコードに成功したか否かを判断する。失敗した場合には、再び、認識用画像の取得を行う。デコードに成功した場合には、ステップＳ７０６において、デコード結果を出力して、コード認識を終了する。
【００６０】
撮影した画像に対して、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像に２次元コードが存在するものと判断し、認識処理を実施する。
【００６１】
前処理：撮影画像の小領域（Ｘ×Ｙ画素）に対し、
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横方向）＞γ
の条件を満足する場合に２次元コード領域と判定する。なお、α、β１、β２、γは、予め実験的に求めておく。
【００６２】
図１４は、本発明の実施形態に従った前処理の別の形態の説明図である。
なお、同図において、図１３と同じステップには同じ符号を付し、説明を省略する。
【００６３】
更に、従来では、１次元コードと２次元コードを対象とする場合には、対象のコードをユーザが判断し、ユーザが認識処理を切り替えて実施していた。対象画像に１次元と２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が１次元、２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できるとともに、１次元と２次元コードに対して自動の認識処理が実現できる。
【００６４】
撮影した画像に対し、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像にコードが存在するものと判断し、認識処理を実施する。
【００６５】
前処理：
撮影画像の小領域（Ｘ×Ｙ画素）に対し、
２次元コード
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横共）＞γ
１次元コード
・画素の階調値分散（コントラスト）＞α
・白黒エッジ数（横）＞θ
・ライン相関＝相関ピーク位置がライン間で同一
の場合に２次元、１次元コード領域と判定
図１３の場合と同様に、α、β１、β２、γ、θ等は、実験的に最適な値を設定しておく。
【００６６】
図１５は、前処理の流れを示すフローチャートである。
まず、ステップＳ８００において、画素値の階調値分散が範囲外か否かを判断し、範囲外の場合には、ステップＳ８０７でコード無し結果出力を行い前処理を終了する。ステップＳ８０１では、横エッジ数を計算し、範囲外の時には、ステップＳ８０７へ、範囲内の時には、ステップＳ８０２において縦エッジ数を検出する。ステップＳ８０２において、縦エッジ数が範囲外の場合には、ステップＳ８０４に進む。縦エッジ数が範囲内の時は、ステップＳ８０３において、黒画素率を検出し、範囲外の時は、ステップＳ８０７に進み、範囲内の時は、ステップＳ８０４に進む。ステップＳ８０４では、ライン間相関を取り、ステップＳ８０５において、コードがあるか否かを判断する。ステップＳ８０５で、コード無しと判断された場合には、ステップＳ８０７に進む。ステップＳ８０５で、コード有りと判断された場合には、ステップＳ８０６において、１次元コードか２次元コードかの判定結果を出力し、処理を終了する。
【００６７】
図１６は、本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
従来の場合、認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所では、センサ感度を擬似的に向上させるため、センサの１枚の画像データの読み出し時間を超えて、複数フレームの画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きによってボケた画像が撮影され、その結果、認識性能が低下していた（図１６参照：従来の露光時間制御）。
【００６８】
本発明の実施形態においては、カメラの露光時間をカメラの１フレームの駆動時間以内に限定することで（図１６参照：本発明の露光時間制御）、暗い場所でも認識に適した動きに追従出来るボケのない画像データを撮影することで、認識性能が向上した認識装置を提供する。
【００６９】
図１７及び図１８は、本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図である。
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出する事が出来るように構成されていた。
【００７０】
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより階調値の双峰形状の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色のついた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。
【００７１】
図１７に示すように、入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。そこで、その山の暗側のレベル範囲領域を決定する、前述したような黒セルレベルの決定方法（図２において、閾値を黒セルレベルに設定する）により閾値を決定する。決定した閾値でセル値をもとめ、黒セルと非黒セルの連続長を用いてコード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
【００７２】
図１８では、２次元コードの境界部分の階調値と認識されたセルの関係を示している。従来例では境界と判定されない場合でも、本発明により、境界の判定が正しく行うことが出来る。検出された境界を連結して、矩形領域を切り出すことで、２次元領域の抽出を正しく行うことが出来る。
【００７３】
【産業上の利用可能性】
本発明により、光学解像度が低い場合やピントのずれ等が発生した場合においても、セルの値を正確に変換することが可能であり、認識精度を落とすことなく、２次元コードの読み取りが可能となる。
【００７４】
本発明の認識方法を用いることで、認識精度の高い２次元コード読み取り装置を提供することが可能である。
更に、単位時間当たりの認識処理速度を前処理の判定により向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上する。また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することが可能である。
【図面の簡単な説明】
【図１】
本発明における２次元コード認識方法の処理ブロックを示す図である。
【図２】
セルの判別のための閾値の決定方法を説明する図である。
【図３】
４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その１）である。
【図４】
４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その２）である。
【図５】
４近傍隣接セル及び８近傍隣接セルを説明する図である。
【図６】
本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
【図７】
ＱＲコードの認識処理フローである。
【図８】
本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
【図９】
図８のステップＳ２０３の詳細なフローを示す図である。
【図１０】
図９のステップＳ３０４の詳細なフローを示す図である。
【図１１】
図９のステップＳ３０７の詳細なフローを示す図である。
【図１２】
図９のステップＳ３０８の詳細フローを示す図である。
【図１３】
本発明の実施形態に従った前処理について説明する図である。
【図１４】
本発明の実施形態に従った前処理の別の形態の説明図である。
【図１５】
前処理の流れを示すフローチャートである。
【図１６】
本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
【図１７】
本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その１）である。
【図１８】
本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その２）である。
【手続補正書】
【提出日】平成17年7月4日(2005.7.4)
【手続補正１】
【補正対象書類名】手続補正書
【補正対象項目名】手続補正１
【補正方法】変更
【補正の内容】
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】明細書
【技術分野】
【０００１】
本発明は、スキャナやＣＣＤカメラ等の光学読み取り装置から入力した２次元コード画像を、読み取り認識処理する２次元コード認識方法と認識装置に関する。
【背景技術】
【０００２】
従来の２次元コード読み取り装置では、光学読み取り装置から入力した２次元コード画像を２値化処理し、２値化した画像を用いて認識処理を行う（特許文献１の図１４や、特許文献２の図１参照）。
【０００３】
光学機器より読み取った画像データを２値データに変換した後、認識処理を行うには、ある一定値以上の光学解像度がなければ、データの歪みによる影響から認識精度が低下すると言った問題がある。例えば、４方もしくは８方を種類の異なるセルに囲まれた孤立セル（２次元コードにおいて、黒い点や白い点を構成している１つの升目のことをセルという）は、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、異なる値に変換される。このような問題点は、小型カメラを内蔵した携帯端末装置にて、内蔵小型カメラを使用して２次元コードを読み取る場合、光学装置が小さいことから、取り込める光量も少ない故、顕著な課題となる。
【０００４】
また、２値化処理を行わずに認識処理を進めたとしても、セルの値を決定する際に、単純２値化の手法を用いたのでは、上記の問題を解決することはできない。
更に、認識対象の２次元コードに対して、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たり表示できる画像の枚数が低下することで、ユーザインターフェースの機能が低下していた。また、このような場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、カメラの１フレームの画像データ読み出し時間を超えて、複数フレームに渡って画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームに渡って多重露光することで、動きに対してはボケた画像が撮影され、その結果、認識性能が低下するという問題があった。
【特許文献１】  特願平６−０４２５８７号明細書（特開平７−２５４０３７号公報）
【特許文献２】  特願平８−３４１３５４号明細書（特開平１０−１８７８６８号公報）
【０００４】
４方向もしくは８方向を種類の異なるセル（白のセルと黒のセルなど、階調値の異なるセル）に囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、階調値が隣接セルに引っ張られるため、単純２値化の手法を用いただけでは、セルの値を正確に変換できない問題が生じていた。
【発明の開示】
【０００５】
本発明の課題は、光学解像度が低い場合やピントのずれ等が発生したとしても、セルの値を正確に変換し、認識精度を落とすことなく、２次元コードの読み取りが可能な２次元コード読み取り方法を提供することである。
【０００６】
更に、本発明の課題は、単位時間当たりの認識処理速度を向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上し、また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することである。
【０００７】
そして、これらの課題は、データをセル化して２次元に配置した２次元コードの認識において、２次元マトリックス上のセルの座標値を検出する座標値検出過程と、検出した座標上の階調値を求める階調値検出過程と、画像の色成分の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、ヒストグラムから閾値を求める閾値検出過程と、閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、階調値が領域範囲の外に有るセルを選択する領域外セル選択過程と、前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類（白または黒）を決定するセル値決定過程と、前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、隣接するセルがすべて同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、隣接するセルが全て同じ種類でなければ、注目セルを閾値と比較してセルの種類を決定する第２のセル値決定過程とを有することを特徴とした２次元コード認識方法により達成される。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明における２次元コード認識方法の処理ブロックを示す図である。
同図において、１０１において画像の読み取りを行い、光電変換部である１０２において、光電変換を行う。１０３のＡ／Ｄ変換部においては、アナログ信号をデジタル信号に変換する。２次元コード認識処理部である１０４では、２次元コードの認識処理を行い、データ文字出力部１０５において、２次元コードの認識結果から得られたデータ文字を出力する。
【０００９】
なお、本実施形態では、特には、携帯電話やＰＤＡ等の携帯端末を対象装置とする。この種の装置では、写真撮影のためのカメラを内蔵したものが普及しているが、昨今、このカメラを利用して２次元バーコードを読み取り、認識したテキストデータを装置内に取り込み、テキスト入力を簡易化させる技術が提唱されている。
【００１０】
光学機器より読み取った２次元のコード画像において、１つのセルは複数個の画素によって構成される。そのため、個々のセルが、どの種類（白もしくは黒）に属するかを決定する必要がある。まず、コード画像のセルの座標値を求め、セルの階調成分を求める。座標値はセルの中心とする。次に、セルの階調成分の閾値処理等により、どの種類に属するかを決定する。
【００１１】
次に、セルがどの種類に属するかを判別するための閾値を決定する。
図２は、セルの判別のための閾値の決定方法を説明する図である。
光の照射量が少ない場合や、センサ感度のレンジが低い場合等（階調値のレンジ幅が狭い場合）、固定閾値（例えば、全部の階調を２５５個の階調値で表すとした場合、閾値を中間の１２８に設定する）による変換方式では、セルの値を正確に変換することができない。例えば、光の照射量の少ない場合には、階調値のレンジは全体的に低いレベルに下がり、“かすれ”や“つぶれ”が発生する。２次元コードは白黒２値で表現されたものが多く、そのため入力画像のヒストグラムは明領域と暗領域に２つの山が出来る（図２参照）。その山の間の中央の位置を閾値とすることで、“かすれ”や“つぶれ”のない最適な変換処理を行うことが可能となる。
【００１２】
図３及び図４は、４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図である。
４方向もしくは８方向の種類の異なるセルに囲まれた孤立セルは、光学解像度が低い場合やピントのずれ等が発生した場合に、隣接セルの影響により階調値が引っ張られ、閾値を用いた２値化の手法だけでは、セルの値を正確に変換できない。例えば、周辺を黒セルで囲まれた白セルは、周辺の黒セルの影響により階調値が引き下げられ、閾値の値によっては、黒セルと誤判別する場合がある。そこで図３に示すように、注目セルと隣接するセルの階調値との比較を取り、階調値の差がある一定以上であれば隣接セルと異なる値に変換する。
【００１３】
隣接セルが白黒両方の値を持つときには（孤立点ではない）、隣接セルの影響は少ない。隣接セルがすべて同一の値のときのみ、孤立点とみなして変換処理を行う。
８点近傍の隣接セルの影響は、水平垂直方向の影響が大きく、斜め方向の影響は小さい。しかし、図４に示すように、左側の隣接セルのみ白で、その他はすべて黒の場合には、注目セルの階調値は黒方向に引き下げられる。そこで８点近傍を用いる場合には、隣接セルすべてが同じ値ではなくても、例えば、８つの近傍隣接セルの内、７つが同じ種類である場合には、孤立点と同様の処理を行う。
【００１４】
すなわち、図３左においては、中心セルの周囲の４つの隣接セルの階調値がそれぞれ３１、４０、３１、２８であるので、閾値を１２８とした場合、これらは黒であると判断される。このとき、中心セルの階調値が閾値以下であっても、隣接セルが全て黒であり、中心セルと隣接セルの階調値の差がある一定以上である場合には、中心セルは白とする。図３右においては、４近傍隣接セルの階調値がそれぞれ、２３１、２４０、２４０、２２８であり、閾値を１２８とすると、全て白と判断される。ここで、中心セルの階調値が１４３で閾値より大きいとしたとき、周りのセルが全て白であり、周りのセルとの階調値の差が一定値以上であれば、中心セルは黒であると判断する。
【００１５】
図４左においては、８近傍隣接セルが全て黒である場合、中心セルの階調値が閾値以下であっても、隣接セルが全て黒で（閾値以下で）、かつ、中心セルと隣接セルとの階調値の差がある一定値である場合には、中心セルは白と判断する。図４右においては、８近傍隣接セルの内、７つが黒で、１つが白となっている。この場合にも、中心セルと閾値以下の隣接セルの階調値を比較し、差が一定値以上であれば、中心セルは白とする。逆に白に中心セルが囲まれた場合にも、同様にして、中心セルを黒とする。
【００１６】
以上、周囲を異なる種類のセルに囲まれた場合であっても、正確に変換処理を行うことが可能である。
図５は、４近傍隣接セル及び８近傍隣接セルを説明する図である。
【００１７】
図５に示すように、４近傍の隣接セルは、中心セルの水平垂直方向に隣接する４つのセルを表す。また、８近傍の隣接セルは、４近傍に更に斜め４方向を加えた隣接セルを表す。
【００１８】
前述したように、８近傍の斜め方向のセルは４近傍のセルと比較し、中心セルからの距離が遠いため、中心セルの階調値に与える影響は小さい。
図６は、本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
【００１９】
図６に示すように、階調値のヒストグラムにおいて、閾値を中心として、一定範囲を設定し、セルの階調値がこの一定範囲内に入っているか否かを判断することによって、セルの種類の決定の仕方を変える。
【００２０】
図６に示すように、領域範囲の中になるセルは、前述したように、隣接セルの値と比較してセルの値を決定する。一定の領域外にあるセルは、閾値との比較により白と黒に分別する。閾値からある一定範囲のグレイゾーンを設定することで、隣接セルの影響を受けていると思われるセルと、影響を受けていないと思われるセルとに分別することができる。
【００２１】
図６では、閾値を中心として、ある一定範囲の領域を設定しているが、これにより、孤立セル、もしくは隣接セルの多くが注目セルと異なる値である場合、注目セルの階調値は異なる方向に引っ張られるため、閾値周辺の値となる。閾値からある一定範囲の領域を設定することで、隣接セルの影響を受けるセルと、影響を受けないセルとに分別することができる。
【００２２】
そして、領域範囲の外にあるセルは、閾値と比較してセルの値を決定する。隣接セルの影響を受けるセルと受けないセルに分別して処理を行うことで、誤りのない正確なセルの値を求めることが可能である。
【００２３】
以上をまとめる。
２次元マトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。次に、検出した座標上のセルの階調値を求める。次に、セルの階調成分のヒストグラムを作成し、閾値を決定する。閾値を中心としてある一定幅の領域を設け、隣接セルの影響を受けるセルと、影響を受けないセルとに分別する。そして、領域内のセルは、隣接セルと比較してセルの値を決定する。領域外のセルは、閾値と比較してセルの値を決定する。
【００２４】
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
【００２５】
更に、本発明の実施形態では、以下のような手段を施す。
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し認識を行う場合、一般に画像１枚の撮影時間に比較し、認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下し、ユーザインターフェースの機能が低下していたという問題点に対し、以下のようにする。
【００２６】
対象画像にコードが含まれるか認識の可能性を評価する前処理手段を設け、前処理手段の判定結果で対象がコードと判定できた場合のみ、実際の認識処理を実施する。この結果、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、更に、表示できる画像の枚数が向上することでユーザインターフェースの機能を向上する。
【００２７】
また、従来では、１次元コードと２次元コードを対象とする認識の場合には、対象のコードをユーザが判断し、ユーザが認識処理自体を切り替えて実施していた。前記前処理手段で１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行することで、認識処理の自動切り替えを行う。
【００２８】
２次元コードは白黒ドットが５０％前後の比率で、かつ、２次元に分布している特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、画素黒画素率、白黒エッジ数（縦横）の１つ以上の特徴から２次元コード領域である評価を行う前処理が可能となる。
【００２９】
１次元コードはある長さを持つ縦線が複数の本数組合わさって構成される特徴がある。そこで、画像の小領域（Ｘ、Ｙ）に対し、画素階調値分散、白黒エッジ数（横）、ライン相関の１つ以上の特徴から１次元コード領域である評価を行う前処理が可能となる。
【００３０】
認識対象のコードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所ではセンサ感度を擬似的に向上させるため、センサの１フレームの画像データの読み出し時間を超えて、複数フレームの画像を多重露光（一般にロングシャッタと呼ぶ）することで階調性を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きに対してはぶれた画像が撮影され、その結果、コードの認識性能が低下していた。この問題に対しては、以下の通りとする。
【００３１】
カメラの撮影時間をカメラのデータ読み出し時間以内に限定することで、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供する。
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出することが出来るように構成されていた。
【００３２】
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより双方の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色の付いた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。この問題に対しては、以下の通りとする。
【００３３】
入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。その山の暗側のレベル範囲領域を決定する黒セルレベル決定過程により閾値を決定する。決定した閾値でセル値を求め、黒セルと非黒セルの連続長を用いて、コード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
【００３４】
以下、より具体的に説明する。
ここでは、２次元コードの例としてＱＲコードを例にとって説明する。他の２次元コードに関しても、同様の処理を行うことが出来る。ＱＲコード認識の詳細は、ＪＩＳ規格“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”を参照する。
【００３５】
図７は、ＱＲコードの認識処理フローである。
ステップＳ１０１において、黒／白セルの認識を行う。本発明の処理の多くは、このステップＳ１０１の詳細に関わる。ステップＳ１０２においては、ＱＲコードに含まれている形式情報の復号を行う。形式情報は、ＱＲコードの決められた位置に符号化されて記述されているＱＲコードの型番号及びマスクの種類である。これをステップＳ１０２では、復号する。ステップＳ１０３では、読み取った形式情報から型番を決定し、ステップＳ１０４においては、マスク処理の解除を行う。マスク処理とは、２次元コードであるＱＲコードを生成する場合、情報を単に符号化しただけでは、２次元コードとした場合、２次元面に配置される黒セルと白セルの配分が白側あるいは黒側に偏ってしまう。このとき、予め定めれた幾つかのマスクの内の１つを２次元コードに重畳してやり、黒セルと白セルの分布が均一になるようにするものである。
【００３６】
ステップＳ１０５においては、マスク処理を解除して得られた２次元コードからデータ及び誤り訂正コード語の復元を行う。ステップＳ１０６においては、誤り訂正コード語を使用することによって、復元されたデータに誤りがあるか否かを判断する。ステップＳ１０６において、誤りがあると判断された場合には、ステップＳ１０７において、誤り訂正を行い、誤りがないと判断された場合にはそのまま捨てＳ１０８に進む。ステップＳ１０８においては、データコード語の復号を行い、ステップＳ１０９において、復号されたデータコード語を出力して、処理を終了する。
【００３７】
図８は、本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
ステップＳ２０１において、光学機器より入力された画像から、２次元のマトリックス上にパターンとして配置されたセルの値を求めるため、まず画像メモリ空間上のセルの座標値を検出する。セルの座標値の計算方法に関しては、“ＪＩＳ  Ｘ  ０５１０：２次元コードシンボル−ＱＲコード−基本仕様  解説”に記載の手法を用いることとする。
【００３８】
ステップＳ２０２において、検出した座標上のセルの階調値を求める。
ステップＳ２０３において、セルの値を決定する。
図９は、図８のステップＳ２０３の詳細なフローを示す図である。
【００３９】
ステップＳ３０１において、セルの階調成分の頻度を求め、ヒストグラムを作成する。コード領域に含まれる画素の階調成分からヒストグラムを作成しても良い。
ステップＳ３０２において、閾値を決定する。ヒストグラムの左側（暗）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の低い領域のピーク位置を求める。同様に右側（明）から走査していき、頻度がある一定値以上となる階調成分を検出し、階調成分の高い領域のピーク位置を求める。そして、２つのピーク位置の中間を求め、閾値とする（図２参照）。
【００４０】
ステップＳ３０３において、領域範囲を設定する。
例えば、図２のヒストグラムにおいてｘ軸に着目し、階調値の低い領域にできたピークと閾値との間をｍ分割し、閾値からｎ／ｍ離れた位置を求める範囲とする。同様にして、階調値の高い領域においても、閾値からｎ／ｍ離れた位置を求める範囲とする。なお、ｎはｍを超えない値とする。
【００４１】
ステップＳ３０４において、領域範囲内にあるセルと、領域範囲外にあるセルとに分別する。
次に、ステップＳ３０５〜Ｓ３０９において、２次元コードに格納されたセルの変換処理を行う。以下にパラメータの設定を行う。
ａ）data[i]：セルの階調値
ｂ）i：セル番号
ｃ）ｎ：セルの総個数
ｄ）flag[i]：領域内か領域外かの判別  １：領域外  ０：領域内
ｄ）のパラメータは、ステップＳ３０４において求める。
【００４２】
ステップＳ３０５において、セル全てに対して変換処理を行ったか判別する。
ステップＳ３０６において、flag[i]の値により、２つの処理に分別する。flag[i]が１であれば、ステップＳ３０７のセルの決定方法１に進む。flag[i] が０であれば、ステップＳ３０８のセルの決定方法２に進む。
【００４３】
ステップＳ３０７に進んだセルは、ヒストグラム上の領域範囲外に有るセルで、閾値と比較してセルの値を決定する。ステップＳ３０８に進んだセルは、ヒストグラム上の領域範囲内にあるセルで、隣接セルと比較してセルの値を決定する。
ステップＳ３０９において、セル番号を１つ進め、ステップＳ３０５に進む。
全てのセルに対して変換処理を行えば、処理を終了する。
【００４４】
図１０は、図９のステップＳ３０４の詳細なフローを示す図である。
同図のフローでは、個々のセルが、領域範囲内にあるか領域範囲外にあるかを判別する。全てのセルに対して判別を行い、flag[i]の値を設定する。以下 にパラメータの設定を行う。他のパラメータに関してはａ）〜ｄ）と同様である。
ｅ）thresh1：領域範囲  階調値が低い領域の閾値
ｆ）thresh2：領域範囲  階調値が高い領域の閾値
ステップＳ４０１において、セル番号を初期化する。
ステップＳ４０２において、セルすべてに対してflag[i]を求めたかを判別す る。
ステップＳ４０３において、セルの階調値を比較し、領域範囲の内にあるか外にあるかを判別する。
ステップＳ４０４において、領域範囲の中に有ればflag[i]に０を代入する。
ステップＳ４０５において、領域範囲の外に有ればflag[i]に１を代入する。
ステップＳ４０６において、セル番号を１つ進め、次に進む。
【００４５】
全てのセルに対してflag[i]の値を求めれば、処理を終了する。
図１１は、図９のステップＳ３０７の詳細なフローを示す図である。
図１１の処理を行うセルは、領域範囲外にあるセルであり、閾値と比較してセルの値を決定する。
ステップＳ５０１において、階調値と閾値の値を比較する。
ステップＳ５０２において、階調値が閾値よりも小さければ、セルの値を黒  （０）とする。
ステップＳ５０３において、階調値が閾値よりも大きければ、セルの値を白  （２５５）とする。
【００４６】
セルの値は黒を０、白を２５５としたが、その他の値を用いてもかまわない。
図１２は、図９のステップＳ３０８の詳細フローを示す図である。
この処理を行うセルは、領域範囲内にあるセルであり、隣接セルと比較してセルの値を決定する。
【００４７】
なお、各パラメータは以下の通りである。
ｊ：隣接セル番号
ｋ：隣接セルの個数
４近傍ではｋ＝４
８近傍ではｋ＝８
count ｂ：隣接セルの黒の個数
count ｗ：隣接セルの白の個数
ndata[i]：隣接セルの階調値
rev thresh：隣接セルがこの個数以上あれば、隣接セルと異なる値に中心セルの種類を決定する。
ステップＳ６０１において、パラメータの初期化を行う。
ステップＳ６０２において、隣接セル全ての値を求めたか判別を行う。
ステップＳ６０３において、隣接セルの階調値（ndata[j]）が閾値を超えているかを判別する。
【００４８】
閾値以下であれば、Ｓ６０４において黒のカウントを１つ進める。
閾値以上であれば、Ｓ６０５において白のカウントを１つ進める。
ステップＳ６０６で隣接セルの参照個所を１つ進め、全ての隣接セルを決定すれば次の処理に進む。
ステップＳ６０７において、隣接セルが閾値以上個数黒であるかを判別する。
ステップＳ６０８において、閾値以上個数黒であれば、注目セルを白の値に決定し、処理を終了する。
ステップＳ６０９において、隣接セルが閾値以上個数白であれば注目セルを黒の値に決定し、処理を終了する。ステップＳ６１１において、どちらにも属さなければ、注目セルを閾値と比較して、セルの値を決定する。閾値以下であれば黒とし、閾値以上であれば白とする。
【００４９】
以上の処理を行うことで、光学解像度が低い場合やピントのずれ等が発生した場合であっても、セルの値を正確に変換処理し、認識精度を落とすことなく２次元コードの読み取りが可能となる。
【００５０】
図１３は、本発明の実施形態に従った前処理について説明する図である。
認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、一般に、画像１枚の撮影時間に比較して認識処理に要する時間が長く、その結果、単位時間当たりに表示できる画像の枚数が低下することでユーザインターフェースの機能が低下していた。
【００５１】
対象画像に２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できる。
【００５２】
図１３においては、コード認識を開始すると、認識用画像をステップＳ７００において取得する。ステップＳ７０１では、プレビュー画像を作成し、プレビューをユーザに提示する。取得された画像は、ステップＳ７０２において、前処理され、ステップＳ７０３において、画像にコードが含まれているか否かを判断する。コードが含まれていないと判断された場合には、再び、認識用画像の取得を行う。ステップＳ７０３でコードが含まれていると判断された場合には、ステップＳ７０４において、２次元コード認識処理を行う。ステップＳ７０５では、デコードに成功したか否かを判断する。失敗した場合には、再び、認識用画像の取得を行う。デコードに成功した場合には、ステップＳ７０６において、デコード結果を出力して、コード認識を終了する。
【００５３】
撮影した画像に対して、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像に２次元コードが存在するものと判断し、認識処理を実施する。
前処理：撮影画像の小領域（Ｘ×Ｙ画素）に対し、
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横方向）＞γ
の条件を満足する場合に２次元コード領域と判定する。なお、α、β１、β２、γは、予め実験的に求めておく。
【００５４】
図１４は、本発明の実施形態に従った前処理の別の形態の説明図である。
なお、同図において、図１３と同じステップには同じ符号を付し、説明を省略する。
更に、従来では、１次元コードと２次元コードを対象とする場合には、対象のコードをユーザが判断し、ユーザが認識処理を切り替えて実施していた。対象画像に１次元と２次元コードが含まれるか否かを評価する前処理手段を設け、前処理手段の判定結果で対象が１次元、２次元コードと判定できた場合にのみ、実際の認識処理を実施することで、単位時間当たりの認識試行回数を増加させ、単位時間当たりの認識処理速度が見かけ上向上し、表示できる画像の枚数も向上し、ユーザインターフェースの機能を向上できるとともに、１次元と２次元コードに対して自動の認識処理が実現できる。
【００５５】
撮影した画像に対し、前処理として以下の処理を行い、それらの条件を満足した場合のみ、対象の画像にコードが存在するものと判断し、認識処理を実施する。
前処理：
撮影画像の小領域（Ｘ×Ｙ画素）に対し、
２次元コード
・画素の階調値分散（コントラスト）＞α
・β１＜画素の黒画素率＜β２
・白黒エッジ数（縦横共）＞γ
１次元コード
・画素の階調値分散（コントラスト）＞α
・白黒エッジ数（横）＞θ
・ライン相関＝相関ピーク位置がライン間で同一
の場合に２次元、１次元コード領域と判定
図１３の場合と同様に、α、β１、β２、γ、θ等は、実験的に最適な値を設定しておく。
【００５６】
図１５は、前処理の流れを示すフローチャートである。
まず、ステップＳ８００において、画素値の階調値分散が範囲外か否かを判断し、範囲外の場合には、ステップＳ８０７でコード無し結果出力を行い前処理を終了する。ステップＳ８０１では、横エッジ数を計算し、範囲外の時には、ステップＳ８０７へ、範囲内の時には、ステップＳ８０２において縦エッジ数を検出する。ステップＳ８０２において、縦エッジ数が範囲外の場合には、ステップＳ８０４に進む。縦エッジ数が範囲内の時は、ステップＳ８０３において、黒画素率を検出し、範囲外の時は、ステップＳ８０７に進み、範囲内の時は、ステップＳ８０４に進む。ステップＳ８０４では、ライン間相関を取り、ステップＳ８０５において、コードがあるか否かを判断する。ステップＳ８０５で、コード無しと判断された場合には、ステップＳ８０７に進む。ステップＳ８０５で、コード有りと判断された場合には、ステップＳ８０６において、１次元コードか２次元コードかの判定結果を出力し、処理を終了する。
【００５７】
図１６は、本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
従来の場合、認識対象の２次元コードに対し、カメラ付きの認識装置を移動させながら、画像を撮影し、認識を行う場合、画像の撮影は静止画像の撮影制御方法を用い、特に、暗い場所では、センサ感度を擬似的に向上させるため、センサの１枚の画像データの読み出し時間を超えて、複数フレームの画像を多重露光（ロングシャッター）することで、階調を確保した画像の撮影を行っていた。一方、複数フレームを多重露光することで、動きによってボケた画像が撮影され、その結果、認識性能が低下していた（図１６参照：従来の露光時間制御）。
【００５８】
本発明の実施形態においては、カメラの露光時間をカメラの１フレームの駆動時間以内に限定することで（図１６参照：本発明の露光時間制御）、暗い場所でも認識に適した動きに追従出来るボケのない画像データを撮影することで、認識性能が向上した認識装置を提供する。
【００５９】
図１７及び図１８は、本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図である。
２次元コードは白と黒のセルと、２次元コードの境界を示すＮセル分の白セルをもって構成されていた。２次元コードの領域を抽出するためには、黒セルに続くＮセル分の白セルを検出し、検出した境界を連結した矩形部分を２次元コード領域として抽出する事が出来るように構成されていた。
【００６０】
一方、２次元コードはユーザには意味のない白黒のセルの集合のため、デザイン上の観点から境界領域の周りを色で囲むなどの印刷を行って使用されていた。単純固定閾値やヒストグラムにより階調値の双峰形状の山のピークを求め、決定した閾値でセルの白黒セルを決定すると、色のついた境界領域の外側の部分も黒セルとなり、境界の判定時に２次元コードの領域を抽出できない場合があった。
【００６１】
図１７に示すように、入力画像のヒストグラムで暗領域、明領域、背景の中間領域と３つの山が出来る。そこで、その山の暗側のレベル範囲領域を決定する、前述したような黒セルレベルの決定方法（図２において、閾値を黒セルレベルに設定する）により閾値を決定する。決定した閾値でセル値をもとめ、黒セルと非黒セルの連続長を用いてコード境界を検出することで、２次元コードの抽出を正しく行うことが出来る。
【００６２】
図１８では、２次元コードの境界部分の階調値と認識されたセルの関係を示している。従来例では境界と判定されない場合でも、本発明により、境界の判定が正しく行うことが出来る。検出された境界を連結して、矩形領域を切り出すことで、２次元領域の抽出を正しく行うことが出来る。
【産業上の利用可能性】
【００６３】
本発明により、光学解像度が低い場合やピントのずれ等が発生した場合においても、セルの値を正確に変換することが可能であり、認識精度を落とすことなく、２次元コードの読み取りが可能となる。
【００６４】
本発明の認識方法を用いることで、認識精度の高い２次元コード読み取り装置を提供することが可能である。
更に、単位時間当たりの認識処理速度を前処理の判定により向上することで、表示できる画像の枚数が向上し、ユーザインターフェースの機能を向上する。また、暗い場所でも認識に適した画像データを撮影することで、認識性能が向上した認識装置を提供することが可能である。
【図面の簡単な説明】
【００６５】
【図１】
本発明における２次元コード認識方法の処理ブロックを示す図である。
【図２】
セルの判別のための閾値の決定方法を説明する図である。
【図３】
４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その１）である。
【図４】
４近傍もしくは８近傍隣接セルとの比較によるセルの種類の決定方法を説明する図（その２）である。
【図５】
４近傍隣接セル及び８近傍隣接セルを説明する図である。
【図６】
本発明の実施形態に従ったセルの種類の決定方法を説明する図である。
【図７】
ＱＲコードの認識処理フローである。
【図８】
本発明の実施形態に従った２次元コード認識方法のフローを示す図である。
【図９】
図８のステップＳ２０３の詳細なフローを示す図である。
【図１０】
図９のステップＳ３０４の詳細なフローを示す図である。
【図１１】
図９のステップＳ３０７の詳細なフローを示す図である。
【図１２】
図９のステップＳ３０８の詳細フローを示す図である。
【図１３】
本発明の実施形態に従った前処理について説明する図である。
【図１４】
本発明の実施形態に従った前処理の別の形態の説明図である。
【図１５】
前処理の流れを示すフローチャートである。
【図１６】
本発明の実施形態に従った画像撮影時の露光時間制御方法を説明する図である。
【図１７】
本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その１）である。
【図１８】
本発明の実施形態に従った２次元コードと背景色の分離方法を説明する図（その２）である。
【手続補正２】
【補正対象書類名】手続補正書
【補正対象項目名】手続補正２
【補正方法】追加
【補正の内容】
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データをセル化して２次元に配置した２次元コードの認識において、
注目セル上の座標を検出する座標検出過程と、
検出した座標の階調値を求める階調値検出過程と、
検出した階調値から注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項２】
データをセル化して２次元に配置した２次元コードの認識において、
注目セルの階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムの中で、ある一定値以上かつ最も明側に有る階調値を求める第１の階調値検出過程と、
ヒストグラムの中で、ある一定値以上かつ最も暗側にある階調値を求める第２の階調値検出過程と、
前記第１及び第２の階調値検出過程で求めた階調値の中央を所定の閾値とする閾値検出過程と、
注目セルの階調値と前記閾値とを比較し、注目セルの種類を決定すること、
を特徴とする２次元コード認識方法。
【請求項３】
注目セルと隣接セルの階調値とを比較する階調値比較過程と、
階調値比較過程結果に基づいて注目セルの値を決定するセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項４】
注目セルと隣接セルの階調値とを比較する階調値比較過程と、
隣接セルと閾値とを比較する隣接セル閾値比較過程と、
階調値比較過程かつ／または隣接セル閾値比較過程により、隣接セルの種類を決定する隣接セル決定過程と、
隣接するセルがすべて同じ種類、または、ある一定個数以上同じ種類であれば、注目セルを隣接セルと異なる種類に決定すること、
を特徴とする２次元コード認識方法。
【請求項５】
前記隣接セルは、
ｘ方向かつｙ方向に４つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項６】
前記隣接セルは、
ｘ方向かつｙ方向に８つのセルを選択すること、
を特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項７】
セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲内にあるセルのみに作用させることを特徴とする請求項３または４に記載の２次元コード認識方法。
【請求項８】
セル値決定過程は、
前記ヒストグラム作成過程及び前記閾値検出過程において検出した閾値に対し、
閾値を含み、かつ、明側と暗側の所定の閾値まで一定の領域範囲にあるセルのみに作用させることを特徴とする請求項２に記載の２次元コード認識方法。
【請求項９】
セル値決定過程は、
前記一定の領域範囲に対して階調値が範囲外にあるセルを選択し、
選択したセルを閾値と比較してセル値を決定すること、
を特徴とする請求項３に記載の２次元コード認識方法。
【請求項１０】
データをセル化して２次元に配置した２次元コードの認識において、
セルの座標値を検出する座標値検出過程と、
検出した座標上の階調値を求める階調値検出過程と、
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
ヒストグラムから閾値を求める閾値検出過程と、
閾値からある一定の距離を求め、閾値から一定の距離までを指定領域とする領域範囲決定過程と、
階調値が領域範囲の内に有るセルを選択する領域内セル選択過程と、
階調値が領域範囲の外にあるセルを選択する領域外セル選択過程と、
前記領域外セル選択過程において選択したセルを、階調値と閾値とを比較した結果から、セルの種類を決定するセル値決定過程と、
前記領域内セル選択過程において選択したセルを、注目セルに隣接するセルの階調値を検出する隣接セル階調値検出過程と、
隣接するセルが全て同じ種類で有れば、注目セルを隣接セルと異なる種類に決定する第１のセル値決定過程と、
隣接するセルがすべて同じ種類でなければ、注目セルを閾値と比較して競るの種類を決定する第２のセル値決定過程と、
を有することを特徴とする２次元コード認識方法。
【請求項１１】
カメラから画像を入力し、コードの認識を行う認識装置において、
コードらしさを判定する複数手段を有する前処理手段を設け、
前記前処理手段の判定結果が否である場合に入力画像の更新処理を即時実行すること、を特徴とするコード認識装置。
【請求項１２】
前記前処理手段は、
１次元と２次元コード領域の画像特徴を判定し、判定結果により１次元と２次元コードの認識処理を実行すること、
を特徴とするコード認識装置。
【請求項１３】
前記前処理手段は、
画像の小領域に対し、画素階調値分散、画素黒画素率、白黒エッジ数の１つ以上の結果に基づいて２次元コードであるか否かを判定すること、
を特徴とする２次元コード認識装置。
【請求項１４】
前記前処理手段は、
画像の小領域に対し、画素階調値分散、白黒エッジ数、ライン相関の１つ以上の結果に基づいて１次元コードであるか否かを判定すること、
を特徴とするコード認識装置。
【請求項１５】
カメラから画像を入力し、コード認識を行う認識装置において、
該カメラの露出時間が該カメラの１フレームの周期を超えないこと、
を特徴とするコード認識装置。
【請求項１６】
画像の階調値の頻度を求めてヒストグラムを作成するヒストグラム作成過程と、
前記ヒストグラム作成過程の結果を用いて暗側のレベル範囲領域を決定する黒セルレベル決定過程とを有し、
前記黒セルレベル決定過程で求めた黒セルと非黒セルの連続長を用いてコード境界を検出すること、
を特徴とする２次元コード認識方法。
【国際調査報告】
2004093433.tif 000021
2004093433.tif 000022
2004093433.tif 000023
2004093433.tif 000024
2004093433.tif 000025
2004093433.tif 000026