(57)【要約】【課題】  解読処理を行う前に、一次元バーコードとその他を区別することにより処理の迅速化を図る。【解決手段】  制御回路は、黒画素群が直線状に配列されているか否かを判定し、直線状に配列されている（Ｓ２５：ＹＥＳ）ことを条件として、これらの黒画素群の延長方向に対して垂直な複数の垂線を設定し（Ｓ２７）、これらの垂線に対応した輝度レベルパターンが相似している（Ｓ２９：ＹＥＳ）ことを条件として一次元バーコードであると判定し（Ｓ３０）、一次元バーコード解読用アルゴリズムを適用して解読処理を行う。【選択図】  図２
2006330906.tif 000002
【特許請求の範囲】
【請求項１】
明パターンおよび暗パターンが組み合わされてなる情報コードを含む二次元画像を撮像する撮像手段と、この撮像手段により撮像された前記二次元画像に基づいて前記情報コードを解読する解読手段とを有する情報コード読取装置において、
前記撮像手段により撮像された前記二次元画像に含まれる明パターンもしくは暗パターンに交差するように複数の互いに平行な検査線を設定する検査線設定手段と、
この検査線設定手段により設定された検査線に沿って変化する輝度レベルパターンを前記複数の検査線毎に各々検出する輝度レベル検出手段と、
この輝度レベル検出手段により検出された前記複数の検査線の輝度レベルパターンを互いに比較し、相似していると判定した場合には前記情報コードを一次元バーコードと判別する一次元バーコード判別手段とを備え、
前記解読手段は、前記一次元バーコード判別手段による判別結果に基づいて前記情報コードを解読することを特徴とする情報コード読取装置。
【請求項２】
前記検査線設定手段は、前記二次元画像内の明領域と暗領域との境界線を検出し、その検出した境界線が直線状になっていることを条件として前記境界線と直交し且つ互いに所定距離だけ離間した複数の検査線を設定することを特徴とする請求項１記載の情報コード読取装置。
【請求項３】
前記検査線設定手段は、前記二次元画像内の明領域と暗領域との境界に位置する１つの明暗境界点を特定し、この特定した明暗境界点を始点として前記境界を辿ることにより前記境界線を検出することを特徴とする請求項２記載の情報コード読取装置。
【請求項４】
前記撮像手段により撮像された二次元画像に含まれる前記情報コードの存在領域を推定する推定手段を備え、
前記検査線設定手段は、前記推定手段により推定された前記情報コードの存在領域において概略的な中心位置を算出すると共に前記情報コードの概略的な傾き角度を算出し、この算出した中心位置を前記傾き角度で通過する中心線を設定し、この中心線上に前記始点となる明暗境界点を設定することを特徴とする請求項３記載の情報コード読取装置。
【請求項５】
前記輝度レベル検出手段は、前記解読手段が解読対象とする各種の一次元バーコードの中で、１コードワードを構成する明パターンおよび暗パターンの数が最大のものを特定し、その最大数を最小検出パターン数として設定し、前記各検査線毎に少なくとも前記最小検出パターン数の明パターンおよび暗パターンに対応した輝度レベルからなる輝度レベルパターンを検出することを特徴とする請求項１ないし４の何れかに記載の情報コード読取装置。
【請求項６】
前記一次元バーコード判別手段は、前記複数の検査線の輝度レベルパターンについてそれぞれ輝度レベルの極値点間の距離を求め、前記検査線の相互間において、対応する極値点間の距離の比が所定の範囲内にあることを条件として、前記複数の検査線の輝度レベルパターンが互いに相似していると判定することを特徴とする請求項１ないし５の何れかに記載の情報コード読取装置。
【請求項７】
明パターンおよび暗パターンが組み合わされてなる情報コードを含む二次元画像から前記情報コードを解読する情報コード読取方法において、
前記二次元画像に含まれる明パターンもしくは暗パターンに交差するように複数の互いに平行な検査線を設定する検査線設定過程と、
この検査線設定過程により設定された各検査線に沿ってそれぞれ輝度レベルパターンを検出する輝度レベルパターン検出過程と、
この輝度レベルパターン検出過程により検出された複数の検査線の輝度レベルパターンを互いに比較し、相似していると判定した場合に前記情報コードを一次元バーコードと判別する一次元バーコード判別過程と、
この一次元バーコード判別過程による判別結果に基づいて前記情報コードを解読する解読過程とを備えたことを特徴とする情報コード読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報コードを光学的に読み取る情報コード読取装置および情報コード読取方法に関する。
【背景技術】
【０００２】
情報コード読取装置は、明パターンおよび暗パターンが組み合わされてなる情報コードを含む二次元画像を撮像し、その撮像した二次元画像内に含まれる情報コードを解読する機能を有している。この種の情報コード読取装置が、例えば特許文献１や特許文献２に開示されている。
【０００３】
特許文献１に開示されている情報コード読取方法では、二次元画像をマトリクス状に分割して検査区域を設定し、各検査区域において主走査線に沿った明暗パターンに基づいて明暗変化を検出している。そして、その明暗変化点数を所定値と比較し、所定値以上の検査区域と所定値未満の検査区域の配列表を作成し、画像領域中央に近く且つ面積も大きい検査区域群を情報コードの存在領域として推定している。この方法によれば、推定した存在領域に基づいて情報コードを解読処理できるため、解読が完了するまでに要する時間を短縮することができる。特許文献２にも、同様の存在領域の推定方法が開示されている。
【特許文献１】特開２０００−３５３２１０
【特許文献２】特開２００２−３０４５９４
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年、１台の端末で一次元バーコードと二次元コードの双方を読み取り可能な情報コード読取装置が開発されている。情報コードは多種多様に規格化されており、これらの情報コードの種類を判別した後に解読処理を行う必要がある。しかしながら、上記特許文献１や特許文献２に記載された技術では、解読処理を行うときに、ある種の情報コード（例えばＤａｔａＭａｔｒｉｘコード）であることを仮定して解読処理を実行するため、情報コードの設定を誤った場合には、解読処理を完了することができない。その結果、再び他の種類の情報コードであることを仮定して解読処理を行う必要があり、解読完了までの処理が膨大なものとなり処理時間が長くなる虞がある。
【０００５】
本発明は、上記事情に鑑みてなされたもので、その目的は、一次元バーコードと二次元コードの双方を１台の端末で読み取り可能な装置において、解読処理の迅速化を図ることができる情報コード読取装置および情報コード読取方法を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１記載の発明によれば、検査線設定手段は、撮像手段により撮像された二次元画像に含まれる明パターンもしくは暗パターンに交差するように複数の互いに平行な検査線を設定し、輝度レベル検出手段は、検査線設定手段により設定された検査線に沿って変化する輝度レベルパターンを複数の検査線毎に各々検出し、一次元バーコード判別手段は、輝度レベル検出手段により検出された複数の検査線の輝度レベルパターンを互いに比較し、相似していると判定した場合には情報コードを一次元バーコードと判別し、解読手段は、一次元バーコード判別手段による判別結果に基づいて情報コードを解読するため、解読手段が解読処理を行う前に一次元バーコードが二次元画像に含まれているか否かを判別することができる。これにより、情報コードが一次元バーコードであるかその他の情報コードであるかを判別することなく解読処理するのに比較して処理を迅速化することができる。
【０００７】
請求項２記載の発明によれば、検査線設定手段は、二次元画像内の明領域と暗領域との境界線を検出し、その検出した境界線が直線状になっていることを条件として境界線と直交し且つ互いに所定距離だけ離間した複数の検査線を設定するため、明パターンもしくは暗パターンに対して確実に交差するように検査線を設定することができる。
【０００８】
請求項３記載の発明によれば、検査線設定手段は、二次元画像内の明領域と暗領域との境界に位置する１つの明暗境界点を特定し、この特定した明暗境界点を始点として境界を辿ることにより境界線を検出するため、境界から離間して他の明領域もしくは暗領域が存在したとしても、これらの明領域もしくは暗領域を誤検出することなく境界線を検出することができる。
【０００９】
請求項４記載の発明によれば、推定手段は、撮像手段により撮像された二次元画像に含まれる情報コードの存在領域を推定し、検査線設定手段は、推定手段により推定された情報コードの存在領域において概略的な中心位置を算出すると共に情報コードの概略的な傾き角度を算出し当該算出した中心位置を傾き角度で通過するように中心線を設定し、この中心線上に始点となる明暗境界点を設定するため、明暗境界点を確実に設定することができるようになる。
【００１０】
請求項５記載の発明によれば、輝度レベル検出手段は、解読手段が解読対象とする各種の一次元バーコードの中で、１コードワードを構成する明パターンおよび暗パターンの数が最大のものを特定し、その最大数を最小検出パターン数として設定し、各検査線毎に少なくとも最小検出パターン数の明パターンおよび暗パターンに対応した輝度レベルからなる輝度レベルパターンを検出するため、解読対象としている一次元バーコードの輝度レベルパターンを確実に検出することができると共に、全てのコードワードに対応した輝度レベルパターンを検出する必要がなくなり処理を迅速化することができる。
【００１１】
請求項６記載の発明によれば、一次元バーコード判別手段は、複数の検査線の輝度レベルパターンについてそれぞれ輝度レベルの極値点間の距離を求め、検査線の相互間において、対応する極値点間の距離の比が所定の範囲内にあることを条件として、複数の検査線の輝度レベルパターンが互いに相似していると判定するため、相似しているか否かを簡単に判定できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を、情報コードの一種である一次元バーコードおよびＱＲコード（二次元コード）を光学的に読取可能に構成された情報コード読取装置に適用した場合の一実施形態について、図１ないし図７を参照しながら説明する。
図３は、情報コード読取装置の電気的なブロック構成を概略的に示している。この情報コード読取装置１は、二次電池等の電池２を駆動源としており、画像取込対象領域Ｘに表示された情報コードＰ（図７参照）により表現された情報を解読して光学的に読取る機能を備えている。
【００１３】
この情報コード読取装置１は、ＣＰＵ等からなる制御回路３、メモリ４、トリガスイッチ５、操作スイッチ６、ＬＥＤ７、ブザー８、液晶表示器９、通信インタフェイス１０、同期信号発生回路１１、アドレス発生回路１２、照射部１３、結像手段１４、二次元画像センサ１５、増幅回路１６、Ａ／Ｄ変換回路１７、特定比検出回路１８を備えている。
メモリ４は、画像メモリ４およびプログラム記憶領域やワークメモリを備えている。尚、制御回路３は、解読手段、検査線設定手段、輝度レベル検出手段、一次元バーコード判別手段、推定手段としての機能を備えている。また、二次元画像センサ１５は、エリアセンサにより構成されており、撮像手段として機能する。
【００１４】
照射部１３は、例えばリング状のフレームに複数のＬＥＤ（図示せず）が配置されてなるもので、制御回路３の制御に基づいて画像取込対象領域Ｘに光を照射する。結像手段１４は、例えばレンズにより構成されており、画像取込対象領域Ｘに反射した光を二次元画像センサ１５に結像する。二次元画像センサ１５は、例えばＣＣＤやＣＭＯＳイメージセンサにより構成されており二次元画像を撮像する機能を備え、同期信号発生回路１１が発生した同期信号に基づいて二次元画像センサ１５に結像した光を光電変換し、当該変換された画素信号を増幅回路１６に与える。
【００１５】
この画素信号は、同期信号発生回路１１が発生した同期信号に基づいて増幅回路１６、Ａ／Ｄ変換回路１７を通じてメモリ４内の画像メモリ４ａにシリアルデータの画像データとして記憶されるようになっている。このとき、画像メモリ４ａに記憶される画像データは、例えば８ビット（２５６段階）の輝度データ（明度データ：輝度情報）を含む画像データである。
【００１６】
尚、アドレス発生回路１２は、同期信号発生回路１１から同期信号が与えられるようになっており、同期信号が与えられることによりメモリ４のアドレスを指定するアドレス指定信号をメモリ４に与える。このとき、制御回路３はこの画像データを取込み画像メモリ４ａの指定されたアドレスに画像データを順次記憶させるようになっている。
【００１７】
また、制御回路３は、画像メモリ４ａの画素データについて、記憶された輝度レベルに基づいて輝度レベルが所定値より高い白画素（明点に相当）、および輝度レベルが所定値より低い黒画素（暗点に相当）に２値化するようになっている。また、制御回路３は、記憶された輝度レベルに基づいて白黒変化数（明暗変化点数に相当）を算出するようになっている。この白黒変化数とは、水平方向もしくは垂直方向に連続して隣接する画素データについて「白画素」から「黒画素」に変化する数、および「黒画素」から「白画素」に変化する数をある領域毎に合算した数を示している。
このとき、画像データの輝度レベルから白黒変化数を算出する方法の１つとして、水平方向や垂直方向に連続する画素データの輝度レベルについて１次微分値および２次微分値をそれぞれ取得し、これらの微分値に基づいて白黒変化数として算出する方法がある。
【００１８】
上記構成の作用について図１ないし図７を参照しながら説明する。
本実施形態においては、横（水平方向）６４０画素×縦（垂直方向）４８０画素についての画素データが画像メモリ４ａに記憶されることとして以下の説明を行う。また、情報コード読取装置１は、一次元バーコードＢ（図７（ａ）参照）や二次元コードＨ（図７（ｂ）参照）の双方の情報コードＰを読取可能に構成されているものとして以下の説明を行う。
【００１９】
図１および図２は、制御回路３が情報コードを光学的に読取るときに行う処理をフローチャートにより概略的に示している。まず、制御回路３は、二次元画像を撮像し（ステップＳ１）、画素の輝度レベルのデータを画像メモリ４ａに取込むと、これらの画素データについて例えばマトリックス状の区画領域Ｋ（図４参照）に区画する（ステップＳ２）。この場合、図４に示すように、例えば水平方向３２画素×垂直方向３２画素の正方形状に区画する。
【００２０】
次に、制御回路３は、画素データに基づいて情報コードＰが存在する区画領域Ｋを推定存在領域Ｋｂとして推定する（ステップＳ３）。存在領域の推定方法については、本実施形態の特徴とは特に関係しないためその詳細説明を省略するが、先に出願された特許文献１もしくは特許文献２の推定方法を適用できる。すると、推定存在領域Ｋｂを特定することができる。
【００２１】
次に、制御回路３は、推定された推定存在領域Ｋｂの中心線Ｃ（図４参照））を設定する（ステップＳ４）。この中心線Ｃの設定は、例えば以下のように行うことが望ましい。すなわち、制御回路３は、情報コードＰの存在が推定された推定存在領域Ｋｂを構成するそれぞれの区画領域Ｋについて、二次元画像の水平方向および垂直方向の白黒変化数(「白画素」から「黒画素」もしくは「黒画素」から「白画素」に変化する点数）をそれぞれ算出する。
【００２２】
この後、制御回路３は、推定存在領域Ｋｂを構成する区画領域Ｋのうち、水平方向および垂直方向の白黒変化数の比が所定範囲内となる区画領域Ｋを推定存在領域Ｋｂとして改めて選定すると良い。すなわち、一次元バーコードＢの場合には、「バー」の長手方向や「スペース」の長手方向がある傾き角度θで傾いていたときには、推定存在領域Ｋｂにおいて白黒変化点数の比をそれぞれ算出したとしても偏りが生じる。
【００２３】
例えば一次元バーコードＢが４５度の傾き角度θで傾いている場合には、白黒変化数は水平方向：垂直方向＝１：１となり、その比は１付近に偏る傾向がある。例えば、推定存在領域Ｋｂの中に存在する情報コードが２次元コードである場合には偏りを生じることなく混沌としている。したがって、この段階で一次元バーコードＢであるか否かを高確率で判別できる。
【００２４】
そして制御回路３は、これらの水平方向および垂直方向の白黒変化数の比から区画領域Ｋ内で黒画素が連続する部分（黒画素群：一次元バーコードＢの場合「バー」：暗パターンに相当）もしくは白画素が連続する部分（白画素群：一次元バーコードＢの場合「スペース」：明パターンに相当）の概略的な傾き角度θを検出する。
【００２５】
具体的には、「バー」や「スペース」の長手方向が二次元画像の垂直方向に沿って延設されているときには、水平方向の白黒変化数が多く垂直方向の白黒変化数が０となる。この場合、傾き角度θに対応する「比」を（垂直方向の白黒変化数）÷（水平方向の白黒変化数）と定義すると比は０となる。このため、傾き角度θは０度と設定される。
【００２６】
また、「バー」や「スペース」の長手方向が水平方向に沿って延設されるときには、垂直方向の白黒変化数が多くなり水平方向の白黒変化数が０となる。この場合、比が無限に大きくなるため傾き角度θは９０度と設定される。また、これらの白黒変化数と共に、補助的に区画領域Ｋ内で斜め方向に白黒変化数を算出しこれらの情報から概略的な傾き角度θを算出しても良い。このとき、中心線Ｃの角度の必要な精度に応じて、区画領域Ｋ内に対して水平方向および垂直方向にそれぞれ複数の白黒変化数を設定しても良い。これにより、傾き角度θを精度良く算出することができる。
【００２７】
次に、制御回路３は、情報コードＰの存在が推定された区画領域Ｋについて当該算出された傾き角度θの平均値を算出することにより、黒画素群もしくは白画素群の概略的な傾き角度θや、その垂直方向の概略的な傾き角度θを算出することができる。制御回路３は、例えばこの算出された傾きの平均値の垂直方向の角度を中心線Ｃの角度として設定する。
【００２８】
そして、制御回路３は、推定される区画領域Ｋ（すなわち推定存在領域Ｋｂ）のうちの水平方向の最外部に位置する２つの区画領域Ｋ間の中心に位置すると共に垂直方向の最外部に位置する２つの区画領域Ｋ間の概略中心に位置する中心部Ｋａ（概略的な中心位置に相当）を通過点とする中心線Ｃを設定する。
【００２９】
尚、図４の例では、推定存在領域Ｋｂのうち、垂直方向および水平方向について区画領域Ｋの最大個数が奇数個となるように情報コードＰの存在が推定されている（垂直方向５個、水平方向９個）ため、推定される区画領域Ｋのうちの中央に位置する区画領域Ｋの中心部Ｋａを通過点とするように中心線Ｃを設定すると良い。
【００３０】
この場合、情報コードＰが、垂直方向および水平方向共に最大個数が偶数個の区画領域Ｋに対して存在が推定される場合には、推定存在領域Ｋｂのうち、中央の４つの区画領域Ｋの交差する交差部分に相当する中心部Ｋａを通過点とする中心線Ｃを設定すると良い。これにより、推定存在領域Ｋｂの概略中心を通過点とした中心線Ｃを設定することができる。この中心線Ｃは、推定存在領域Ｋｂの中心部Ｋａを確実に通過することになり、しかも、黒画素群（バーＢ１）もしくは白画素群（スペースＢ２）に対して確実に交差するように設定されるようになる。
【００３１】
次に、制御回路３は、推定存在領域Ｋｂのうち一方の端点側（例えば、図４中の水平方向左側）から他方の端点側（例えば、図４中の水平方向右側）に向けて中心線Ｃ上に沿って明領域と暗領域との境界に位置する１つの明暗境界点としての黒画素を探索する（ステップＳ５）。すると、制御回路３は、推定存在領域Ｋｂ内においてその周縁部に黒画素を明暗境界点として特定することができる。このとき、制御回路３は、推定存在領域Ｋｂの中心部Ｋａを確実に通過すると共に黒画素群（バーＢ１）および白画素群（スペースＢ２）に対して確実に交差するように中心線Ｃを設定しているため黒画素（境界点）を素早く確実に検出できる。
【００３２】
図５は、制御回路が画素を探索するときの手順を概略的に示している。この図５に示すように、制御回路３は、中心線Ｃ上に沿って黒画素を探索すると黒画素（始点）を位置Ａ１に探索して特定した後、垂直上方向に予め定められた所定画素数だけ対象（明暗点検出対象）を移動する（ステップＳ６）。この所定画素数は、最初に探索された黒画素の位置Ａ１から所定距離以上離間することなく境界線Ｚを辿るように予め設定された画素数であり、この場合例えば１画素である。
【００３３】
図５において、位置Ａ２が第１位置に相当する。このとき、制御回路３は、この位置Ａ２の画素が白画素であるか黒画素であるかを判定する（ステップＳ７）。この場合、位置Ａ２においては白画素であるため（ステップＳ７：白画素）、制御回路３は、この位置Ａ２から図中水平方向右側に向けて黒画素を探索する（ステップＳ８）。
【００３４】
このとき制御回路３は、水平方向に所定画素（例えば１画素）ごとに対象を移動するたびに順次黒画素であるか白画素であるか判定するが、黒画素を位置Ａ３に探索すると、位置Ａ２から位置Ａ３に至るまでの距離（画素数）を算出する（ステップＳ９）。図５の例では、移動距離が１画素と算出される。
【００３５】
制御回路３は、算出された移動距離が予め定められた限界値（例えば１０画素）より大となる場合には（ステップＳ１０：ＹＥＳ）、始点の位置Ａ１に戻り（ステップＳ１１）、図２に示す処理ルーチンに進む。すなわち、処理が黒画素群の境界に沿って長手方向の端部に至ると水平方向に黒画素を探索しても発見できないか、もしくは次の暗パターン（一次元バーコードの「バー」）に対応する黒画素を探索してしまうため移動距離が長くなる。この場合に備えて移動距離の限界値を設けている。
【００３６】
制御回路３は、移動距離が予め定められた限界値以下の場合には（ステップＳ１０：ＮＯ）、ステップＳ６に戻り処理を繰り返す。すると、制御回路３は、図５において位置Ａ３、Ａ５、…の黒画素を明暗境界点として探索することができる。
【００３７】
他方、図示していないが、仮にステップＳ７において検出した画素が黒画素であった場合について説明する。制御回路３は、ステップＳ６において垂直上方向に所定画素だけ対象を移動させたときに、検出された画素が黒画素であった場合には（ステップＳ７：黒画素）、図中水平方向左側に向けて１画素毎に白画素を探索し（ステップＳ１２）、白画素が探索された時点でその画素から１画素戻ることにより（ステップＳ１３）、左端側の境界に位置する黒画素を探索する。
【００３８】
制御回路３は、黒画素が探索されると、移動距離（画素数）を算出し（ステップＳ１４）、移動距離が限界値より大となる場合には（ステップＳ１５：ＹＥＳ）、ステップＳ１１に移行するが、移動距離が限界値以下の場合には（ステップＳ１５：ＮＯ）、ステップＳ６に戻り処理を繰り返す。これにより、制御回路３は、始点Ａ１から垂直上方向の画素について、水平方向左端側境界に位置する黒画素を探索できる。
【００３９】
制御回路３は、これらのことを始点Ａ１から垂直下方向の画素についても繰り返し処理を行う（ステップＳ１１、Ｓ１６〜Ｓ２４）。すなわち、制御回路３は、ステップＳ１１において始点Ａ１に戻ると、垂直下方向に所定画素だけ対象（明暗点検出対象）を移動させる。制御回路３は、この検出された位置Ａｒ１が黒画素であるとすると、水平左方向に白画素を探索する（ステップＳ１８）。このとき制御回路３は、１画素毎に検出対象画素を位置Ａｒ２、Ａｒ３…に順次移動させて白画素であるか否かを判定するが、図５において位置Ａｒ３の白画素を探索すると、１画素戻る（ステップＳ１９）。
【００４０】
このとき、制御回路３は、この位置Ａｒ２が黒画素であることを確認した後（ステップＳ１９ａ）、黒画素の位置Ａｒ２を特定する。尚、位置Ａｒ２が黒画素でない場合には（ステップＳ１９ａ：ＮＯ）、白画素が集合していると判定し、ステップＳ１９に移行し、さらに１画素戻って判定処理を繰り返す。これは、水平方向左端側境界の黒画素の位置を特定するために行われる。
【００４１】
次に、黒画素の位置Ａｒ２が特定されると、制御回路３は、前述と同様に位置Ａｒ１から位置Ａｒ２までの距離を算出し（ステップＳ２０）、移動距離が所定の限界値より大であるか否かを判定する（ステップＳ２１）。これは、黒画素群の長手方向の垂直方向下側端部を検出するために行われる。すなわち、制御回路３は、移動距離が限界値より大きいと判定したときには、黒画素を検出することができないか、もしくは他のパターンの黒画素を検出することになるため、黒画素群の長手方向の垂直方向下側端部を検出したと判定し、ステップＳ２５に移行する。
【００４２】
他方、仮にステップＳ１７において検出された画素が白画素であった場合について説明する。制御回路３は、ステップＳ１６において垂直下方向に所定画素だけ対象（明暗点検出対象）を移動させたときに、ステップＳ１７において白画素であることを検出すると、水平右方向に向けて黒画素を探索する（ステップＳ２２）。
【００４３】
制御回路３は、水平右方向に向けて１画素毎に黒画素を探索するが、黒画素が探索された後、その位置と基準位置Ａｒ１との距離を算出する。制御回路３は、この距離が限界値より大きいときには、前述説明と同様に垂直方向端部に達したと判定し、ステップＳ２５に移行するが、移動距離が限界値以下のときには（ステップＳ２４：ＮＯ）、ステップＳ１６に移行し処理を繰り返す。
【００４４】
制御回路３は、ステップＳ２５に移行すると、探索された黒画素群の延長方向が直線状になっているか否かを判定する（ステップＳ２５）。すなわち、黒画素が境界点として所定個数以上検出されていると共に黒画素群が実質的に直線に沿って存在しているか否かを判定する。具体的には、制御回路３は、すべての黒画素からの距離が最短となるような直線を設定しこの直線からの黒画素の距離がある所定範囲内に収まっているか否かを判定するようにすると良い。
【００４５】
制御回路３は、ステップＳ２５において探索された黒画素群の延長方向が直線状になっていないと判定した場合には、一次元バーコードではないと判定し（ステップＳ２６）、その他の情報コードＰの解読処理（例えば、二次元コードの解読処理）に移行して終了する。制御回路３は、探索された黒画素群の延長方向が直線状になっていると判定した場合には（ステップＳ２５：ＹＥＳ）、例えば直線状の黒画素群の延長方向の傾き角度θを検出した後、当該黒画素群の延長方向に対してその延長方向に対して垂直方向となる複数の垂線Ｈ１〜Ｈｎ（検査線に相当）を設定する（ステップＳ２７）。この垂線Ｈ１〜Ｈｎは、互いに平行に設定されている。尚、制御回路３は、ステップＳ２６において一次元バーコードではないと判定したときに複数の垂線Ｈ１〜Ｈｎを設定することなくその他の情報コードＰの解読処理に移行するため、この場合にはさらに処理を迅速化することができる。
【００４６】
直線状の黒画素群の延長方向に対して複数の垂線を設定する理由は、取込まれた二次元画像に含まれる情報コードＰが一次元バーコードＢであるか否かを確実に判定するためである。一般に一次元バーコードＢは、図７（ａ）に示すように、直線状の「バーＢ１（黒画素群：暗パターン）」や「スペースＢ２（白画素群：明パターン）」が縞状に組み合わされて構成されている。
【００４７】
解読時には、制御回路３は、一次元バーコードＢのバーＢ１やスペースＢ２の長手方向に対して垂直方向に一次元的に解読して読取ることになるが、バーＢ１やスペースＢ２の長手方向に解読位置をずらしたとして同一の結果となるように解読する必要がある。しかし、撮像された二次元画像の傾斜等により例えば図６（ｂ）に示すように、メモリ４内に二次元画像の掲載面が傾斜した傾斜状態で撮像されることがある。この場合でも、制御回路３は、同一結果となるように解読する必要がある。
【００４８】
そこで、本実施形態においては、制御回路３が複数の垂線Ｈ１〜Ｈｎを設定し（ステップＳ２７）、輝度レベルパターンを検出し（ステップＳ２８）、これらの輝度レベルパターンが相似しているか否かを判定し（ステップＳ２９）、相似していることを条件として一次元バーコードであると判定した後（ステップＳ３０）、一次元バーコードＢの解読アルゴリズムを適用し解読処理を行うようにする。
【００４９】
尚、制御回路３が、ステップＳ２９において相似していないと判定すると、一次元バーコードＢではないと判定する（ステップＳ３１）。制御回路３は一次元バーコードＢではないと判定すると、その他の情報コードＰ（例えば、二次元コード：図７（ｂ）のデータマトリックスコードやＱＲコード等参照）の解読アルゴリズムを適用するようにして解読処理を行う。
【００５０】
制御回路３が複数の垂線Ｈ１〜Ｈｎを設定するときには、次のように設定することが望ましい。制御回路３は、ステップＳ２５において探索された境界に位置する黒画素群の延長方向が直線状になっていると判定すると、これらの黒画素群の両端部側を結合した線分（直線部分）を所定距離（例えば３画素分の距離）毎に離間した画素を通過点（他の明暗境界点に相当）とすると共に、算出された傾き角度θに基づいて互いに平行な垂線Ｈ１〜Ｈｎを検査線として設定することが望ましい。具体的には、図５に示すように、制御回路３は、位置Ａ１、Ａ３、Ａ５…の黒画素による境界点を所定距離毎に離間した画素を通過点とするため、例えば３画素だけ離間した位置Ａ１、Ａ７、…を通過点とした垂線Ｈ１〜Ｈｎを設定することができる。
【００５１】
またその他にも、次のようにしても良い。制御回路３は、ステップＳ２５において探索された黒画素群の延長方向が直線状に配列されていると判定すると、これらの黒画素群を結合した線分の端部間の長さを検出し当該長さを所定数（例えば５）に分割した分割点を通過点とすると共に、算出された傾き角度θに基づいて互いに平行な垂線Ｈ１〜Ｈｎを設定する。このように垂線Ｈ１〜Ｈｎを設定することにより、より効率的に垂線を設定することができ一次元バーコードであるか否かを確実に判別できる。
【００５２】
制御回路３は、ステップＳ２７において複数の垂線Ｈ１〜Ｈｎを設定し、ステップＳ２８においてこれらの複数の垂線Ｈ１〜Ｈｎに沿って輝度レベルパターンＪ１、Ｊ２…を検出し、ステップＳ２９において当該複数の輝度レベルパターンが相似しているか否かを判定するが、このとき制御回路３は以下の処理を行うことが望ましい。
【００５３】
図６（ａ）は、複数の垂線に沿った輝度レベルの検出波形（輝度レベルパターン）の一例を、設定された垂線Ｈ１〜Ｈｎ毎の輝度レベルの変化信号として示している。制御回路３は、図６（ａ）に示すように、ある垂線Ｈ１に対応する輝度レベルパターンＪ１について、ある基準位置（例えば黒画素Ａ１の位置：図６（ａ）において輝度レベルの極小となる位置）から輝度レベルの極大値が取得される画素の位置（白画素の位置）までの距離Ｘ１、Ｘ３、Ｘ５…を検出すると共に、前記基準位置から輝度レベルの他の極小値が取得される画素の位置（黒画素の位置）までの距離Ｘ２、Ｘ４、Ｘ６…を検出する。
【００５４】
次に、制御回路３は、ある垂線Ｈ２に対応する輝度レベルパターンＪ２について、前述と同一の基準位置から輝度レベルの極大値（白画素方向の極値)が取得される画素の位置までの距離Ｙ１、Ｙ３、Ｙ５…を検出すると共に、当該基準位置から輝度レベルの極小値（黒画素方向の極値）が取得される画素の位置までの距離Ｙ２、Ｙ４、Ｙ６…を検出する。
【００５５】
次に、制御回路３は、同一位置における２つの輝度レベルパターン間の極大値の比と、同一位置における２つの輝度レベルパターン間の極小値の比とを算出する。すなわち、図６（ａ）において、制御回路３は、比Ｙ１／Ｘ１、Ｙ２／Ｘ２、Ｙ３／Ｘ３、…を算出する。
【００５６】
このとき制御回路３が、情報コード読取装置１が検出対象とする複数の一次元バーコード（所謂上述の種類の一次元バーコード）のうち１コードワードを構成するバーＢ１およびスペースＢ２の数が最大のものを特定しその最大数を最小検出パターン数として設定し、各垂線Ｈ１〜Ｈｎ毎に最小検出パターン数のバーＢ１およびスペースＢ２に対応した輝度レベルパターンＪ１〜Ｊｎを検出するようにすることが望ましい。
【００５７】
以下、この説明を行う。一次元バーコードＢは、現在使用可能なコードの種類が多い。例えば、ＣＯＤＥ３９、ＮＷ７、ＣＯＤＥ１２８、ＩＴＦコード、所謂ＰＯＳコード（ＥＡＮ−８、ＥＡＮ−１３、ＵＰＣ−Ａ、ＵＰＣ−Ｅ）、ＲＳＳコード、およびこれらのコンポジットコードである。
【００５８】
コードワードとは内部データを構成する単位を示しており、前述した一次元バーコードの場合、１コードワードについて、バーＢ１、スペースＢ２の本数（パターン数もしくはモジュール数とも称する）が次のように規定されている。ＣＯＤＥ３９（９本＋１本（スペース））、ＮＷ７（７本＋１本（スペース））、ＣＯＤＥ１２８（６本）、ＩＴＦコード（１０本）、ＰＯＳコード（４本）、ＲＳＳコード（８本）と規定されている。
【００５９】
情報コード読取装置１は、その仕様に応じて解読可能な一次元バーコードの種類が異なる場合もある。したがって、これらの一次元バーコードの種類に応じてコードワードの設定を変更して解読する必要があるが、一次元バーコード判定用の輝度レベルパターンの比を一次元バーコードを構成する全てのコードワードについて算出していると、処理の迅速化を阻害する要因となるため、全てのコードワードについて処理する必要はない。
【００６０】
したがって、処理を迅速化するため、制御回路３は、１コードワード分の輝度レベルパターンのみに対応する比を算出することが望ましい。また、１コードワード分の輝度レベルパターンのみを検出する場合、前述した全ての一次元バーコードの種類に適用するためには、１コードワードが最大１０本のモジュールで構成されているため、制御回路３は、輝度レベルのそれぞれ１０個の極大極小値に対応する位置までの距離Ｘ１〜Ｘ１０、位置までの距離Ｙ１〜Ｙ１０の情報を取得し、比を算出するようにすると良い。
【００６１】
制御回路３は、これらの比Ｙ１／Ｘ１、Ｙ２／Ｘ２、Ｙ３／Ｘ３、…が、ある所定範囲内（例えば、０．９〜１．１）に入っていることを条件として輝度レベルパターンが相似していると判定する。このようにして相似であるか否かを判定することが望ましい。これにより、相似しているか否かを簡単に判定することができる。この後、制御回路３は、情報コードＰの種類に応じた解読アルゴリズムを適用した解読処理を行い、処理結果を出力するが、この処理に特徴はないため、当該説明を省略する。
【００６２】
本実施形態によれば次に示す作用効果を奏する。二次元画像センサ１５により二次元画像を撮像する。次の処理は、制御回路３が行う処理である。撮像された二次元画像を矩形状に区画する。区画領域Ｋについて情報コードＰの存在領域を推定する。情報コードＰの存在が推定される推定存在領域Ｋｂのうちの各区画領域Ｋについて水平方向および垂直方向の白黒変化数をそれぞれ検出する。これらの白黒変化数の比から区画領域Ｋ内の黒画素群もしくは白画素群の傾き角度θやその垂直方向の角度を各区画領域Ｋの傾き角度θを概略的に算出する。各区画領域Ｋの傾き角度θの平均値を算出し、この値を中心線Ｃの概略的な傾き角度θとして算出する。次に、推定される区画領域Ｋのうちの中央に位置する区画領域Ｋの中心点Ｋａを概略的な中心位置として設定し、当該中心点Ｋａを通過点とすると共に算出された概略的な傾き角度θの中心線Ｃを設定する。
【００６３】
中心線Ｃに沿って推定された区画領域Ｋについて黒画素を探索する。最初の黒画素Ａ１を探索した後、垂直方向に所定画素だけ対象を移動し、この位置Ａ２の画素が白画素であるか黒画素であるか判定する。この位置Ａ２の画素が白画素であるか黒画素であるかに応じて処理を変更し、当該位置Ａ２から水平方向に位置する黒画素の位置Ａ３間までの移動距離を算出する。この移動距離が、限界値より大きい場合には、この位置を黒画素群の長手方向の端点の位置とする。
【００６４】
これらの処理を垂直上下方向で行い、探索された黒画素が直線状であるか否かを判定し、直線状であることを条件として、これらの黒画素群の延設される直線方向に対して複数の垂線Ｈ１〜Ｈｎを設定するとともに、これらの複数の垂線Ｈ１〜Ｈｎに沿って輝度レベルパターンＪ１、Ｊ２…を設定する。輝度レベルパターンＪ１、Ｊ２…が相似していると判定された場合に、一次元バーコードＢであると判定し、一次元バーコードＢの解読アルゴリズムを適用して解読処理を行う。
【００６５】
要するに、制御回路３は、情報コードＰを構成するバーＢ１に交差するように複数の互いに平行な垂線Ｈ１〜Ｈｎ（検査線）を設定し、これらの垂線Ｈ１〜Ｈｎに沿って情報コードＰの輝度レベルパターンＪ１、Ｊ２…を複数検出し、検出された情報コードＰの複数の輝度レベルパターンＪ１、Ｊ２…が互いに相似していると判定された場合に情報コードＰが一次元バーコードＢであることを判定し、一次元バーコードＢの解読アルゴリズムを適用して解読処理を行っている。
【００６６】
したがって、撮像された二次元画像に含まれる情報コードＰが、一次元バーコードＢであるか、その他の情報コードＰであるかを判定してから解読処理を行っているため、処理を迅速化することができる。
【００６７】
尚、黒画素群Ａ１、Ａ３、Ａ５、Ａｒ１、Ａｒ４、Ａｒ７…が、直線性判別処理により直線状でないと判別されたときには、制御回路３は一次元バーコードではないと即座に判別することができ、処理の迅速性を向上することができる。
【００６８】
（他の実施形態）
本発明は、上記実施形態に限定されるものではなく、例えば、以下に示す変形もしくは拡張が可能である。尚、本発明を実現できれば、前述実施形態で説明した処理を必要に応じて省いても良い。
境界点を検出して垂線Ｈ１〜Ｈｎを設定するようにしたが、黒画素群および白画素群の連続する連続部を検出しこの連続部の長手方向の垂直方向に検査線（垂線Ｈ１〜Ｈｎ）を設定するようにしても良い。
【００６９】
黒画素Ａ２…、Ａｒ１…、を探索する処理は、最初に探索された黒画素Ａ１から離間した位置に探索すればどのように探索しても良い。また、最初に探索された黒画素Ａ１から中心線Ｃの垂直方向に向けて離間して少なくとも２つ以上黒画素を明暗境界点として検出するように各種所定値を設定すれば良い。この場合に直線状であるか否かを判別することができ、前述実施形態と略同様の作用効果を得ることができる。
【００７０】
一次元バーコードＢ（情報コードＰ）は、カラーコードでも良い。スペースＢ２を構成する白画素を境界点として適用しても良い。
区画領域Ｋを設定して情報コードＰの存在領域を推定した後、中心線Ｃを設定してから黒画素および白画素の境界に位置する黒画素を検出するようにしたが、区画処理、推定処理、中心線設定処理は必要に応じて設ければよい。
黒画素Ａ１…、Ａｒ１…が直線状になっているか否かを判定した後、複数の垂線Ｈ１〜Ｈｎを設定するようにしたが、この直線判定処理は必要に応じて設ければ良い。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態に係る情報コード読取装置の動作を概略的に示すフローチャート（その１）
【図２】情報コード読取装置の動作を概略的に示すフローチャート（その２）
【図３】電気的構成を概略的に示すブロック図
【図４】情報コードの存在の推定領域と中心線を概略的に示す図
【図５】境界点から中心線の垂直方向に向けて境界点を検出する際の動作説明図
【図６】（ａ）（ｂ）複数の垂線上の輝度レベルパターンの輝度レベルと位置との対応を示す図
【図７】情報コードの一例を示す図（（ａ）一次元バーコードの一例、（ｂ）二次元コードの一例）
【符号の説明】
【００７２】
図面中、１は情報コード読取装置、３は制御回路（解読手段、検査線設定手段、輝度レベル検出手段、一次元バーコード判別手段）、１５は二次元画像センサ（撮像手段）、Ｂは一次元バーコード、Ｈは２次元コード、Ｐは情報コードを示す。
【図１】
2006330906.tif 000003
【図２】
2006330906.tif 000004
【図３】
2006330906.tif 000005
【図４】
2006330906.tif 000006
【図５】
2006330906.tif 000007
【図６】
2006330906.tif 000008
【図７】
2006330906.tif 000009