説明

光学的情報読取方法

【課題】 区画領域内に含まれる情報コードがバーコードか2次元コードかを解読前に区別できるようにし、短時間で高精度に情報コードを光学的に読取るようにする。
【解決手段】 制御回路は、次のような処理を行う。すなわち情報コードが存在する区画領域を推定する(S3)。そして、推定された存在区画領域の少なくとも1つを検査区画として設定する(S4)。検査区画内を当該検査区画の中心位置を中心として検査対象画素データ群を回転させて検査区画全体を検査する(S8〜S11)。そして、評価点数が最小の画素データ群の傾き角度が誤差範囲内に揃っている検査区画の数が所定個数以上の場合バーコードとして判別する。

【発明の詳細な説明】
【技術分野】
【0001】
明暗パターンからなる情報コードを光学的に読取る光学的情報読取方法に関する。
【背景技術】
【0002】
この種の光学的情報読取方法を使用した構成の一例が、本願出願人により出願された特許文献1および2に開示されている。これらの先行技術文献に開示されているように、2次元画像センサを使用して読取対象領域から輝度レベル情報を含む画素データを取込み、取込まれた画素データを複数の領域に区画し、情報コードが存在する区画領域を推定する技術が確立されている。
【0003】
具体的には特許文献1によれば、情報コードの概略的な存在領域(区画領域)を推定した後、情報コードの正確な位置を検出してデータ解読をしているため、データ解読終了するまでに要する時間を短縮することができるようになる。また特許文献2によれば、読取用の照明の点灯を不要として読取対象領域に情報コードが高い確率で存在することを推定できるようになる。
【特許文献1】特開2000−353210号公報
【特許文献2】特開2000−304594号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、情報コードが読取対象領域に存在することを、さらに短時間で高精度に解読する試みが本出願の発明者らによりなされている。さらに短時間で高精度に検出するための1つの方法として、前記区画領域に存在する情報コードが、2次元コードかバーコードかを予め区別しその後解読する方法が考えられている。このようにして2次元コードかバーコードかを区別した後、それぞれの情報コードの解読アルゴリズムを適用して解読すれば素早く解読できるようになるためである。
【0005】
本発明は、上記事情に鑑みてなされたもので、その目的は、区画領域内に含まれる情報コードがバーコードか2次元コードかを解読前に区別できるようにし、短時間で高精度に情報コードを光学的に読取ることを可能とした光学的情報読取方法を提供することにある。
【課題を解決するための手段】
【0006】
請求項1記載の発明によれば、次のように作用する。すなわち、情報コードが存在する区画領域を推定する。そして、推定された存在区画領域のうち少なくとも1つの区画領域を検査区画として設定する。そして、設定された検査区画内の画素データについて直線状に検査対象画素データを設定する。そして、検査対象画素データの輝度レベルに基づいて当該輝度レベルの最大値および最小値,並びに検査区域内における明暗パターンの明暗変化数を算出する。
【0007】
そして、明暗パターンの明暗変化数および輝度レベルの最大値および最小値の差を乗じ第1の評価点数として算出する。そして、前回の直線状の検査対象画素データ群と検査区画内で交差するように次回の直線状の検査対象画素データ群を設定する。そして、次回の直線状の検査対象画素データ群について連続する画素データの輝度レベルに基づいて当該画素データの輝度レベルの極値および検査区域内における明暗パターンの明暗変化数を算出する。そして、明暗パターンの明暗変化数および輝度レベルの極値差を乗じ第2の評価点数として算出する。
【0008】
そして、設定された検査区画全体を検査するように第n(nは2以上の整数)の評価点数まで算出する。そして、第1ないし第nの評価点数のうち極大値もしくは極小値が取得される検査対象画素データ群を特定する。そして、極大値もしくは極小値が取得される検査対象画素データ群を特定する。この特定された検査対象画素データ群および取得された極大値もしくは極小値に基づいて区画領域に含まれることが推定される情報コードをバーコードであると区別する。これにより、より高精度に情報コードを区別できるようになる。
【0009】
請求項2記載の発明によれば、第1ないし第nの評価点数のうちの極大値および極小値を取得し、当該極大値が取得される検査対象画素データ群および極小値が取得される検査対象画素データ群が交差する角度を特定し、交差角度算出過程において算出された算出角度が90度もしくは90度に近接する値となる場合に、区画領域に含まれることが推定される情報コードをバーコードであると区別する。これにより、さらに高精度に情報コードを区別できるようになる。
【0010】
請求項3記載の発明によれば、極大極小特定過程において極小値が取得された直線状の検査対象画素データ群に対し垂直な角度もしくは垂直に近い角度をなす画素データ群をバーコードの読取対象画素データ群として設定するため、改めて読取対象画素データ群を設定しなおす必要がなくなり、より素早く読取りすることができるようになる。
請求項4記載の発明のように、検査対象設定過程において設定された直線状の検査対象画素データ群,および次回検査対象設定過程の次回の直線状の検査対象画素データ群のなす角度は90度の整数分の1に予め設定された角度であることが望ましい。この場合、90度の整数分の1に設定された角度で行うことにより、直角角度をなす検査対象画素データ群についてそれぞれの評価点数を得ることができるようになる。
【0011】
請求項5記載の発明のように、次回検査対象設定過程では、前回の直線状の検査対象画素データと検査区画内の中心位置で交差するように次回の直線状の検査対象画素データ群を設定することが望ましい。この場合、検査区画全体を検査するときに検査区画全体を網羅して検査できるようになる。
請求項6記載の発明によれば、検査区画設定過程では、前記区画領域を複数個結合して検査区画として設定することを特徴としている。このような処理を行うことによりたとえ1つの区画領域に明点もしくは暗点が埋まったとしても、複数個結合することにより検査区画として適合させることができるようになる。
【0012】
請求項7記載の発明は、検査区画設定過程では、区画領域を縦横に同一個数結合して検査区画として設定することを特徴としている。前述発明に比較してさらに検査区画として適合しやすくなる。
また、請求項8記載の発明は、検査対象設定過程において設定された直線状の検査対象画素データ群,および前記次回検査対象設定過程の次回の直線状の検査対象画素データ群のなす角度として、複数の異なる所定の角度が予め設定され、次回検査対象設定過程では、検査対象設定過程において設定された直線状の検査対象画素データ群と異なる所定の角度のうち大きな第1角度で前記検査区画内で交差するように次回の直線状の検査対象画素データ群を設定し、繰返し過程では、設定された検査区画全体を検査するように第nの評価点数まで算出し、極大極小特定過程では、前記第1ないし第nの評価点数のうち極大値もしくは極小値が取得される第1の検査対象画素データ群を特定し、極大極小特定過程において特定された第1の検査対象画素データ群を中心として第1角度より小さい第2角度だけ回転させた直線状の第2の検査対象画素データ群を前記第1の検査対象画素データ群の周辺に設定する第2の検査対象設定過程と、第2の検査対象画素データ群の輝度レベルに基づいて当該輝度レベルの極値,および検査区域内における明暗パターンの明暗変化数を算出する第2の明暗変化数算出過程と、第2の検査対象画素データ群について明暗パターンの明暗変化数および前記輝度レベルの極値差に基づいて詳細評価点数を算出する第2の評価点数算出過程と、第2の評価点数算出過程で算出される詳細評価点数に基づいて前記区画領域に含まれることが推定される前記情報コードをバーコードであると区別する第2の区別過程とを備えたことを特徴としている。このような発明によれば、詳細評価点数に基づいてバーコードであることを区別することができるとともに、バーコードのより詳細で正確な傾き角度を算出できるようになる。
【0013】
請求項9記載の発明によれば、極大極小特定過程では、第1ないし第nの評価点数のうちで極小値が取得される検査対象画素データ群を特定するため、評価点数の極大値を取得する方法に比較して検査対象画素データ群をより高精度に特定できるようになる。
【発明を実施するための最良の形態】
【0014】
以下、本発明を、情報コードの一種であるQRコード(2次元コード)およびバーコード(1次元コード)を読取るための情報コード読取装置に適用した場合の一実施形態について、図1ないし図9を参照しながら説明する。尚、本実施形態においては、ハンディタイプの情報コード読取装置についてその実施形態を示すが、これは定置式のものであっても良い。
【0015】
図1は、情報コード読取装置の構成を概略的に示している。この情報コード読取装置1は、二次電池等の電池2を駆動源としている。この情報コード読取装置1は、制御回路3、メモリ4、トリガスイッチ5、操作スイッチ6、LED7、ブザー8、液晶表示器9、通信インタフェイス10、同期信号発生回路11、アドレス発生回路12、照射部13、結像手段14、2次元画像センサ15、増幅回路16、A/D変換回路17、特定比検出回路18を備えている。
【0016】
照射部13は、例えばリング状のフレームに複数のLEDが配置されて構成されるもので、制御回路3の制御に基づいて画像取込対象領域Xに光を照射する。結像手段14は、例えばレンズにより構成されており、画像取込対象領域Xに反射した光を2次元画像センサ15に結像する。2次元画像センサ15は、例えばCCDやCMOSイメージセンサにより構成されており、同期信号発生回路11が発生した同期信号に基づいて2次元画像センサ15に結像した光を光電変換し、当該変換された画素信号を増幅回路16に与える。
【0017】
この画素信号は、同期信号発生回路11が発生した同期信号に基づいて増幅回路16、A/D変換回路17を通じてメモリ4内の画像メモリ4aにシリアルデータの画素データとして記憶されるようになっている。このとき、画像メモリ4aに記憶される画素データは、例えば8ビット(256段階)の輝度データ(明度データ:輝度情報)を含む画像データである。
【0018】
尚、アドレス発生回路12は、同期信号発生回路11から同期信号が与えられるようになっており、同期信号が与えられることによりメモリ4のアドレスを指定するアドレス指定信号をメモリ4に与える。このとき、制御回路3はこの画素データを取込み画像メモリ4aの指定されたアドレスに画素データを順次記憶させるようになっている。
また、制御回路3は、画像メモリ4aの画素データについて、記憶された輝度レベルに基づいて白黒変化数を算出するようになっている。この白黒変化数とは、連続する画素データについて「白点」から「黒点」に変化する数、および「黒点」から「白点」に変化する数を合算した数を示している。このとき、画像データの輝度レベルから白黒変化数を算出する1つの方法として、水平方向や垂直方向に連続する画素データの輝度レベルについて1次微分値および2次微分値をそれぞれ取得し、これらの微分値に基づいて白黒変化数として算出する方法がある。また、水平方向や垂直方向に連続する画素データの輝度レベルのある所定のしきい値を基準として白黒変化数を算出する方法がある。
【0019】
上記構成の作用について図2ないし図9をも参照しながら説明する。
本実施形態においては、横(水平方向)640画素×縦(垂直方向)480画素の画素データが画像メモリ4aに記憶されることとして以下の説明を行う。また、情報コードPとして、バーコードB(図2参照)もしくは2次元コードH(図3参照)が読取対象領域Xに表示されているものとして以下の説明を行う。
【0020】
図4および図5は、制御回路3が情報コードを読取るときに行われる動作をフローチャートにより示している。まず、画素データが画像メモリ4aに取込まれると、制御回路3は、これらの画素データについて例えばマトリックス状に区画する(ステップS2)。この場合、図2(b)および図3(b)に示すように、例えば水平方向32画素×垂直方向32画素の正方矩形状に画素データを分割するように区画する(区画領域K参照)。
【0021】
次に、制御回路3は、この区画された画素データに基づいて情報コードPが存在する区画領域Kを推定する(ステップS3)。具体的には、次のように推定する。すなわち、水平方向および垂直方向に直線状の検査対象画素データを各区画領域K毎に設定し、この検査対象画素データについて評価点数((白黒変化数)×(輝度レベルの最大値および最小値差))を算出する。このとき一般に、白黒点からなる情報コードPの場合、この評価点数が大きくなり、絵画など明暗のはっきりしない画像の場合には評価点数が小さくなる。また、情報コードPが図2(b)に示すようなバーコードBの場合であっても、例えば、バーコードBが横向きになっており、検査対象画素データ群が黒点もしくは白点のみからなる場合には評価点数が小さくなる。
【0022】
このため、制御回路3がそれぞれの区画領域Kについて水平方向および垂直方向に評価点数を算出し、この評価点数が所定のしきい値以上となった場合に検査した区画領域Kに情報コードPが存在すると推定する。特に制御回路3は、水平方向および垂直方向に評価点数を算出した結果、何れかの方向の評価点数が所定のしきい値以上となった場合に、情報コードPが検査した区画領域Kに存在すると推定すると良い。この場合、バーコードBのバーB1もしくはスペースB2が水平方向もしくは垂直方向にほぼ一致するようになったとしてもバーコードBの存在を推定できる。尚、存在領域の推定方法については、本出願人により先に出願された特開2002−304594号公報や特開2000−353210号公報に開示された方法であっても良い。
【0023】
以下、例えば図2に示すバーコードBもしくは図3に示す2次元コードHを読取る場合、図2もしくは図3に太線枠で示した存在区画領域WにバーコードBもしくは2次元コードHが存在推定されたものと仮定して以下説明を行う。
次に、制御回路3は、全ての存在区画領域Wを検査区画として検査していないことを条件として、推定された存在区画領域Wのうちの少なくとも1つを検査区画として設定する(ステップS4AおよびS4)。またステップS4において、存在区画領域Wのうちの中心に近い区画領域K1を検査区画として設定すると良い。言い換えると、存在区画領域Wのうちの白黒変化する画素が含まれる率が一番高い区画領域K1を検査区画として設定することが望ましい。具体的には、存在区画領域Wを水平方向および垂直方向に2等分した部分付近の区画領域Kを検査区画として設定する。このとき、バーコードBのバーB1やスペースB2、もしくは2次元コードHの白セルH1および黒セルH2が複数個検査区画に含まれることになるため高確率および高精度に検出できるようになる。
【0024】
また、特に区画領域K全体のそれぞれの評価点数(もしくは白黒変化数)が所定数よりも少ない場合(すなわち、バーコードBのバーB1やスペースB2もしくは2次元コードHの白セルH1および黒セルH2が単独で1つの区画領域Kに対して埋まってしまっているような場合(図6(b)参照))においては、図6(c)に示すように、存在区画領域Wのうちの複数個結合した区画領域Kを1つの検査区画K1として設定しても良い。
【0025】
この場合、図6(c)に示すように、特に水平方向および垂直方向に並設された同一個数(例えば2個)だけ結合した区画領域Kを1つの検査区画K1として設定することが望ましい。このような場合、図6(b)に示すように、バーコードBのバーB1やスペースB2もしくは2次元コードHの白セルH1および黒セルH2が単独で1つの区画領域Kに対して埋まってしまっているような場合であっても検査区画K1として適用させることができるようになる。
【0026】
制御回路3は、設定された検査区画K1に対して検査対象画素データ群G0を水平直線状に設定する(ステップS5)。図2(a)および図3(a)には、検査対象画素データ群G0〜G7を直線で示している。尚、初期設定された検査対象画素データ群を図2の符号G0により示している。
このとき水平方向を傾き角度0度とし垂直方向を傾き角度90度と定義する。制御回路3は、設定された検査対象画素データ群G0の画素データについて輝度レベルの最大値および最小値(極大値および極小値:極値)と白黒変化数(明暗変化数)とを算出する(ステップS6)。さらに、制御回路3は、輝度レベルの最大値および最小値の差(極値差)と白黒変化数とを乗じて評価点数として算出する(ステップS7)。
【0027】
この後、図2(a)および図3(a)に示すように、制御回路3は、検査区画K1の中心位置Cを中心として検査対象画素データ群G0を回転させ検査対象画素データ群G1〜G4を設定し、検査区画K1全体を検査し終わる(すなわち360度回転させて略検査区画K1を埋める)まで、輝度レベルの極値、白黒変化数、評価点数を算出する(ステップS8〜S11)。
【0028】
初期状態から検査区画K1の中心位置Cを中心に検査対象画素データ群G0を回転させる場合、90度の整数分の1(例えば90/4=22.5度)だけ回転させた検査対象画素データ群G1を設定し、後のステップS10〜S11において各データを算出するようにすると良い。この場合、次回の直線状の検査対象画素データ群G1と前回の直線状の検査対象画素データ群G0とを中心位置Cで交差させるようにすると、検査区画K1全体を検査するときに検査区画K1全体を網羅しやすくなる。図8(a)は、バーコードを含む画像データについて傾き角度θに対する評価点数を検査したときの結果を示している。また、図8(b)は、2次元コードを含む画像データについて傾き角度θに対する評価点数を検査したときの結果を示している。この結果から明らかなように、バーコードBを含む画像データの場合には、評価点数の極大値および極小値の差が大きく、2次元コードHを含む画像データの場合には、評価点数の極大値および極小値の差が小さい。したがって、次のような処理を行うことにより、画像データ中に含まれる情報コードPが2次元コードHかバーコードBかを区別することができるようになる。
【0029】
制御回路3は、ステップS8〜S11において検査区画K1全体を含むように検査対象画素データ群G0〜G4として検査した後、これらの検査対象画素データ群G0〜G4の中で白黒変化数が所定値(例えば0もしくは1)と同値もしくは所定値よりも少ない検査対象画素データ群が存在するか否かを判定する(ステップS12)。すなわち、存在区画領域W中に情報コードPが存在することが推定されており、且つ、白黒変化数が所定値(例えば1もしくは0)と同値もしくは所定値よりも少ない検査対象画素データ群が存在する場合には、図5に示すステップS13以降のステップ(微小角度回転:詳細角度特定処理)に移る。
【0030】
以下、微小角度回転させて詳細角度を特定する処理について説明を行う。尚、微小角度回転させて詳細角度を特定する理由は、バーコードBのより正確な傾き角度を算出できるようにするためである。また、バーコードBの読取対象角度をより読取りしやすい角度(「バー」や「スペース」の長手方向に対して垂直方向の角度)を把握することで読取性能を向上させるためである。
【0031】
ステップS13において、制御回路3は、白黒変化数が最小となる直線状の第1の検査対象画素データ群を中心として微小角度だけ回転させた直線状の検査対象画素データ群を設定する(ステップS13)。具体的には、バーコードBの例を図7(b)に示すように、白黒変化数が最小として得られる画素データ群は、検査対象画素データ群G3である。この場合、白黒変化数が最小(=0)として得られた第1の検査対象画素データ群G3に対して、正もしくは負方向に微小角度だけ回転させて得られる第2の検査対象画素データ群G31〜G34を設定する。この微小角度としては、例えば1度〜2度程度の角度で設定する。この後、制御回路3は、第2の検査対象画素データ群G31〜G34に対してそれぞれ輝度レベルの最大値および最小値(極値)と白黒変化数とを算出する(ステップS14)。
【0032】
次に、制御回路3は、輝度レベルの最大値および最小値の差(すなわち極値差)と白黒変化数を乗じて評価点数として算出する(ステップS15)。さらに、制御回路3は、第2の検査対象画素データ群G31〜G34に対して垂直な角度をとる直線状の第3の検査対象画素データ群を設定する(ステップS16)。次に、制御回路3は、第3の検査対象画素データ群のうちで輝度レベルの極値と白黒変化数を算出する(ステップS17)。次に、制御回路3は、輝度レベルの極値差と白黒変化数を乗じて評価点数(本発明の詳細評価点数に相当)として算出する(ステップS18)。
【0033】
次に、制御回路3は、第1の検査対象画素データ群を回転させて得られる周辺の画素データ群について検査対象とした(ステップS19:YES)ことを条件として、ステップS20以降の処理を行う。逆に、第1の検査対象画素データ群を回転させて得られる周辺の画素データ群について検査対象としていなければステップS13〜S19の処理を繰り返す。このようにして、第1の検査対象画素データ群G3の周辺に位置する直線状のそれぞれの検査対象画素データ群G31〜G34に対して評価点数を算出する。図7に示す具体例の場合には、検査対象画素データ群G3およびG32の評価点数が極小値となる。
【0034】
次に、制御回路3は、評価点数が極小(最小)の検査対象画素データ群G3およびG32に対して垂直(90度)な角度となる検査対象画素データ群G7およびG72の傾き角度θをその検査区画K1の読取対象角度として設定する(ステップS20)。次に、制御回路3は、傾き角度θが誤差範囲内(例えば15度以内)に揃っている検査区画K1の個数が所定個数(例えば4〜9個)以上であるか否かを判定する(ステップS21)。制御回路3は、ステップS21において条件を満たす検査区画K1の個数が所定個数以上ある場合にバーコードBとして判別する(ステップS24)。このとき、制御回路3は、バーコードBとして判別されると、傾き角度θの平均角度を読取対象角度として設定し(ステップS25)、バーコードを光学的に読取る(解読する)(ステップS26)。
【0035】
ステップS21において、NOと判定されると、制御回路3は、推定された存在区画領域Wのうち検査していない区画領域Kが他に存在するか否かを判定し(ステップS21A)、他に存在していれば、ステップS4Aに戻って処理を繰り返す。次に制御回路3は、ステップS21Aにおいて、推定された存在区画領域Wのうち検査していない区画領域Kが他に存在していなければ、バーコードB以外の情報コード(例えば、スタックドバーコード、2次元コード)とみなし(ステップS22)、バーコードB以外のそれぞれの情報コードPの読取アルゴリズムを適用して解読する(ステップS23)。このような処理が行われることにより、2次元コードHとバーコードBとを信頼性よく区別できるようになる。
【0036】
尚、本実施形態のバーコードとは、図9(b)に示すように、一般的なバーコードと称されるリニアバーコードB(一次元コード)を指している。具体的には、リニアバーコードBとは、iTF、CODE39、CODE128、EAN13、EAN8、UPCE、NW−7等のバーコードを称している。図9(c)に示すようなスタックドバーコードSB(PDF417、MicroPDF417等)や、図9(a)および図9(d)に示すような二次元コードH(QRコード、DataMatrixコード、Veriコード、Maxiコード)等も情報コードPとして適用できるが、本実施形態においてはこれらの図9(b)に示すリニアバーコードBと、図9(a)、図9(c)および図9(d)に示すスタックドバーコードSBおよび2次元コードHとの区別を行うことができるようになる。
【0037】
尚、一般に、リニアバーコードBと称されるバーコードの場合、明パターンたる直線状の白パターン(「スペースB2」)や直線状の暗パターンたる黒パターン(「バーB1」)が縞状に組み合わされて形成される。情報コード読取装置1がこのバーコードBを読取る場合、これらのバーB1、スペースB2のそれぞれの長手方向に対して垂直方向に解読対象画素データを設定して解読することが望ましい。これは、バーコードBを高精度に解読できるためである。したがって、例えば、バーコードBが2次元的に傾いた状態で2次元画像センサ15により画像取込みされると、解読対象画素データを「バー」の長手方向に対して垂直方向に設定して解読することにより高精度に解読できるようになる。
【0038】
このような第1の実施形態で説明した処理を制御回路3が行うことにより次のような作用効果を奏する。すなわち「バー」(暗パターン)や「スペース」(明パターン)を検出するため、情報コードPが存在すると推定される存在区画領域W中の区画領域K1について直線状の検査対象画素データ群G0〜G7を設定し、これらの検査対象画素データ群G0〜G7の輝度レベルに基づいてその極値と明暗変化数を算出し、これらの値を乗ずることにより評価点数を算出する。例えば、検査対象画素データ群G0〜G7がバーコードBの「バー」の長手方向に一致した場合、輝度レベルはほぼ一定で極小となるとともに明暗変化数(白黒変化数)も0となる。例えば、検査対象画素データ群の長手方向がバーコードBのスペースB2の長手方向に一致した場合、輝度レベルはほぼ一定で極大となるが明暗変化数が0となる。すなわち、検査対象画素データ群G0〜G7の延びる方向がバーコードBのバーB1やスペースB2の長手方向に略一致する方向である場合、評価点数は低くなる。
【0039】
逆に、例えば検査対象画素データ群G0〜G7の延びる方向がバーコードBのバーB1やスペースB2の長手方向に対して垂直な方向である場合、輝度レベルの極値差は大きくなるとともに明暗変化数も大きくなる。したがって評価点数は高くなる。すなわち、検査対象画素データ群G0〜G7がバーコードBのバーB1やスペースB2の長手方向に対して垂直方向に近づけば評価点数が高く、バーコードBのバーB1やスペースB2の長手方向に対して平行方向に近づけば評価点数が低くなる。
【0040】
したがって、バーコードBに対して、直線状に検査対象画素データ群G0を設定し、この直線状の検査対象画素データ群G0を例えば回転させて検査区画K1全体を検査対象画素データ群G0〜G7により検査し、それぞれ評価点数を算出すると、評価点数が極大値をとる直線状の検査対象画素データ群G7と、評価点数が極小値をとる直線状の検査対象画素データ群G3が現れる。
【0041】
他方、QRコード等の2次元コードHの場合、図3(b)に示すように、明パターンたる例えば矩形状の白セルH1と、暗パターンたる例えば矩形状の黒セルH2とが矩形枠内に組み合わされて構成されているのが一般的である。したがって、前述したような評価方法を用い、直線状の検査対象画素データ群G0〜G7を設定して検査区画K1全体を検査するように評価点数を算出した場合、2次元コードHの白セルH1と黒セルH2とは一般に無秩序に組み合わされているため、たとえ検査区画K1全体を検査するように算出したとしても評価点数に差が見られない(図8参照)。
【0042】
したがって、制御回路3が、これらの評価点数のうち極大値もしくは極小値が取得される検査対象画素データ群G3、G7を特定することに基づいて、この検査対象画素データ群に基づいて存在区画領域Wに含まれることが推定される情報コードPをバーコードBであると区別することができる。したがって、バーコードBか2次元コードHかを解読前に区別できるようになり、短時間で高精度に情報コードPを光学的に読取ることができるようになる。
【0043】
(他の実施形態)
本発明は、上記実施形態に限定されるものではなく、例えば、以下に示す変形もしくは拡張が可能である。
情報コードPの一種であるバーコードBの一例として黒色のバーB1、白色のスペースB2からなる白黒パターンを例として示したが、これに限定されるものではなく、例えばカラーコード等にも適用可能である。
【0044】
ステップS8からS11において検査対象画素データ群G0〜G7を90度の4分の1となる角度で回転させた実施形態を示したが、これに限定されるものではなく、どのような角度で回転させても良い。検査対象画素データ群G0〜G7のうちのある画素データ群に対して90度に近接するような角度を取得できるように回転角度を設定することが望ましいが、どのような角度で検査対象画素データ群を回転させるようにしても良い。
【0045】
傾き角度θが誤差範囲内に揃っている傾き角度θを対象としてその平均角度を読取対象角度として設定した実施形態を示したが、これに限定されるものではなく、評価点数の極小値が取得された直線状の検査対象画素データ群G3に対し垂直な角度もしくは垂直に近い角度をなす検査対象画素データ群G7をバーコードBの読取対象画素データ群として設定するようにしても良い。
【0046】
上述実施形態の制御方法に代えて、次のような制御方法でも良い。すなわち、制御回路3が、検査対象画素データ群G0〜G7を設定し当該検査対象画素データ群G0〜G7を検査区画K1全体を検査するようにした後、その評価点数の極大値および極小値を取得し当該極大値および極小値が取得される検査対象画素データ群G3およびG7が交差する角度を特定し、この角度が90度もしくは90度に近接する値となることを条件として、区画領域K1に含まれることが推定される情報コードPをバーコードBと区別するようにしても良い。これにより上述実施形態とほぼ同様の作用効果が得られる。また、さらに詳細な角度を求めて算出するようにしても良い。
【図面の簡単な説明】
【0047】
【図1】本発明の第1の実施形態を示す概略的なブロック構成図
【図2】(a)検査区画内における画像データを模式的に示す図(バーコードの場合)、(b)情報コードの存在推定領域を模式的に示す図(バーコードの場合)
【図3】(a)検査区画内における画像データを模式的に示す図(2次元コードの場合)、(b)情報コードの存在推定領域を模式的に示す図(2次元コードの場合)
【図4】動作を示すフローチャート(その1)
【図5】動作を示すフローチャート(その2)
【図6】(a)区画領域が細かい場合の図2(b)相当図、(b)区画領域に含まれる画像データを模式的に示す図、(c)区画領域を縦横に同一個数結合して検査区画として設定したことを表す図
【図7】(a)〜(c)検査対象画素データ群を細かい角度で回転させた状態を模式的に表す図
【図8】評価点数対傾き角度を示す図((a)バーコードの場合、(b)2次元コードの場合)
【図9】(a)〜(d)バーコードおよび2次元コードの一例を示す図
【符号の説明】
【0048】
図面中、1は情報コード読取装置、2は電池、3は制御回路を示す。

【特許請求の範囲】
【請求項1】
明暗パターンからなる情報コードを光学的に読取る光学的情報読取方法であって、
2次元画像センサを使用して読取対象領域から輝度レベル情報を有する画素データを取込む取込過程と、
前記取込まれた画素データを複数の領域に区画する区画過程と、
前記区画領域のうち情報コードが存在する区画領域を推定する推定過程と、
前記推定された存在区画領域のうち少なくとも1つの区画領域を検査区画として設定する検査区画設定過程と、
前記設定された検査区画内の画素データについて直線状の検査対象画素データ群を設定する検査対象設定過程と、
前記検査対象画素データ群の輝度レベルに基づいて当該輝度レベルの極値,および前記検査区域内における明暗パターンの明暗変化数を算出する明暗変化数算出過程と、
前記明暗パターンの明暗変化数および前記輝度レベルの極値差に基づいて第1の評価点数を算出する評価点数算出過程と、
前回の前記直線状の検査対象画素データ群と前記検査区画内で交差するように次回の直線状の検査対象画素データ群を設定する次回検査対象設定過程と、
前記次回検査対象設定過程の検査対象画素データ群について連続する画素データの輝度レベルに基づいて当該画素データの輝度レベルの極値および前記検査区域内における明暗パターンの明暗変化数を算出する次回明暗変化数算出過程と、
前記次回明暗変化数算出過程の明暗パターンの明暗変化数および前記輝度レベルの極値差に基づいて第2の評価点数を算出する次回評価点数算出過程と、
前記設定された検査区画全体を検査するように前記次回検査対象設定過程から前記次回評価点数算出過程まで繰り返し第nの評価点数(nは2以上の整数)まで算出する繰返す過程と、
前記第1ないし第nの評価点数のうち極大値もしくは極小値が取得される検査対象画素データ群を特定する極大極小特定過程と、
前記特定された検査対象画素データ群および前記取得された極大値もしくは極小値に基づいて前記区画領域に含まれることが推定される前記情報コードをバーコードであると区別する区別過程とを備えたことを特徴とする光学的情報読取方法。
【請求項2】
前記第1ないし第nの評価点数のうちの極大値および極小値を取得し、当該極大値が取得される検査対象画素データ群および極小値が取得される検査対象画素データ群が交差する角度を特定する交差角度特定過程と、
前記区別過程では、前記交差角度特定過程において特定された角度が90度もしくは90度に近接する値となる場合に、前記区画領域に含まれることが推定される前記情報コードをバーコードであると区別することを特徴とする請求項1記載の光学的情報読取方法。
【請求項3】
前記極大極小特定過程において極小値が取得された直線状の検査対象画素データ群に対し垂直な角度もしくは垂直に近い角度をなす画素データ群をバーコードの読取対象画素データ群として設定する読取対象設定過程とを備えたことを特徴とする請求項1または2記載の光学的情報読取方法。
【請求項4】
前記検査対象設定過程において設定された直線状の検査対象画素データ群,および前記次回検査対象設定過程の前記次回の直線状の検査対象画素データ群のなす角度は、90度の整数分の1に予め設定された角度であることを特徴とする請求項1ないし3の何れかに記載の光学的情報読取方法。
【請求項5】
前記次回検査対象設定過程では、前記前回の直線状の検査対象画素データと前記検査区画内の中心位置で交差するように次回の直線状の検査対象画素データ群を設定することを特徴とする請求項1ないし4の何れかに記載の光学的情報読取方法。
【請求項6】
前記検査区画設定過程では、前記区画領域を複数個結合して検査区画として設定することを特徴とする請求項1ないし5の何れかに記載の光学的情報読取方法。
【請求項7】
前記検査区画設定過程では、前記区画領域を縦横に同一個数結合して検査区画として設定することを特徴とする請求項1ないし6の何れかに記載の光学的情報読取方法。
【請求項8】
前記検査対象設定過程において設定された直線状の検査対象画素データ群,および前記次回検査対象設定過程の前記次回の直線状の検査対象画素データ群のなす角度として、複数の異なる所定の角度が予め設定され、
前記次回検査対象設定過程では、前記検査対象設定過程において設定された直線状の検査対象画素データ群と前記所定の角度のうち大きな第1角度で前記検査区画内で交差するように次回の直線状の検査対象画素データ群を設定し、
前記繰返し過程では、設定された検査区画全体を検査するように第nの評価点数まで算出し、
前記極大極小特定過程では、前記第1ないし第nの評価点数のうち極大値もしくは極小値が取得される第1の検査対象画素データ群を特定し、
前記極大極小特定過程において特定された第1の検査対象画素データ群を中心として前記第1角度より小さい第2角度だけ回転させた直線状の第2の検査対象画素データ群を前記第1の検査対象画素データ群の周辺に設定する第2の検査対象設定過程と、
前記第2の検査対象画素データ群の輝度レベルに基づいて当該輝度レベルの極値,および前記検査区域内における明暗パターンの明暗変化数を算出する第2の明暗変化数算出過程と、
前記第2の検査対象画素データ群について明暗パターンの明暗変化数および前記輝度レベルの極値差に基づいて詳細評価点数を算出する第2の評価点数算出過程と、
前記第2の評価点数算出過程で算出される詳細評価点数に基づいて前記区画領域に含まれることが推定される前記情報コードをバーコードであると区別する第2の区別過程とを備えたことを特徴とする請求項1ないし7の何れかに記載の光学的情報読取方法。
【請求項9】
前記極大極小特定過程では、前記第1ないし第nの評価点数のうちで極小値が取得される検査対象画素データ群を特定することを特徴とする請求項1ないし8の何れかに記載の光学的情報読取方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate