(57)【要約】【課題】２次元モードに対する読取処理に失敗したとき、その読取失敗の原因を詳細に判別し、その判別結果をユーザーに報知できるようにする。【解決手段】コントローラ２は、２次元コード７をカメラ３に撮像させる処理と、得られた画像上の２次元コードを読み取る処理とを繰り返し実行し、読取結果を出力する。またコントローラ２は、この読取処理に失敗したとき、読取処理におけるファインダパターンの抽出数に基づき、読取失敗の原因を判別し、その判別結果を示すコメント情報をモニタに表示する。【選択図】  図２
2005018649.tif 000002
【特許請求の範囲】
【請求項１】
２次元コードを撮像対象とした画像から前記２次元コードに含まれる特定のパターンを抽出した後、抽出された特定のパターンを基準とする所定大きさの画像領域にデコード処理を施して、前記２次元コードが表す光学情報を読み取る方法において、
前記光学情報を読み取ることができない読取失敗が生じたとき、前記特定のパターンの抽出数に基づき前記読取失敗の原因を判別し、その判別結果を出力することを特徴とする２次元コードの読取方法。
【請求項２】
請求項１に記載された方法において、
前記特定のパターンの抽出数がゼロより大きいとき、前記抽出数をゼロより大きい所定のしきい値と比較し、前記抽出数が前記しきい値を下回るときは２次元コードの状態が前記読取失敗の原因であると判別し、前記抽出数が前記しきい値を上回るときは２次元コードの背景の状態が前記読取失敗の原因であると判別する２次元コードの読取方法。
【請求項３】
請求項１に記載された方法において、
前記特定パターンの抽出数がゼロのとき、前記画像の明るさを所定の数値範囲と比較し、前記明るさが前記数値範囲内にあれば撮像時の２次元コードの位置が前記読取失敗の原因であると判別し、前記明るさが前記数値範囲外にあれば２次元コードに対する照明の状態が前記読取失敗の原因であると判別する２次元コードの読取方法。
【請求項４】
請求項１〜３のいずれかに記載された方法において、
前記判別結果の出力として、前記読取失敗の原因を示す情報を表示することを特徴とする２次元コードの読取方法。
【請求項５】
２次元コードを撮像対象とした画像を取得する画像取得手段と、
前記取得した画像から２次元コードに含まれる特定のパターンを抽出する特定パターン抽出手段と、
前記特定パターン抽出手段により抽出された特定のパターンを基準に所定大きさの処理対象領域を設定し、その領域内の画像を用いたデコード処理を実行するデコード処理手段と、
前記デコード処理手段によりデコードされた情報の内容を示す読取データを出力する読取データ出力手段と、
前記読取データ出力手段が読取データを出力できない読取失敗が生じたとき、前記特定パターンの抽出数に基づき前記読取失敗の原因を判別する判別手段と、
前記判別手段による判別結果を出力する出力手段とを具備して成る２次元コード読取装置。
【請求項６】
前記判別手段は、前記特定のパターンの抽出数がゼロより大きいとき、前記抽出数をゼロより大きい所定のしきい値と比較し、前記抽出数が前記しきい値を下回るときは２次元コードの状態が前記読取失敗の原因であると判別し、前記抽出数が前記しきい値を上回るときは２次元コードの背景の状態が前記読取失敗の原因であると判別する請求項５に記載された２次元コード読取装置。
【請求項７】
前記判別手段は、前記特定のパターンの抽出数がゼロのとき、前記画像の明るさを所定の数値範囲と比較し、前記明るさが前記数値範囲内にあれば撮像時の２次元コードの位置が前記読取失敗の原因であると判別し、前記明るさが前記数値範囲外にあれば２次元コードに対する照明の状態が前記読取失敗の原因であると判別する請求項５に記載された２次元コード読取装置。
【請求項８】
請求項５〜７のいずれかに記載された装置であって、
前記出力手段は、前記判別手段が判別した原因を示す情報を表示する表示手段を含んで成る２次元コード読取装置。
【請求項９】
２次元コードを撮像対象とした画像を取得する画像取得手段と、
前記取得した画像から２次元コードに含まれる特定のパターンを抽出する特定パターン抽出手段と、
前記特定パターン抽出手段により抽出された特定のパターンを基準に所定大きさの処理対象領域を設定し、その領域内の画像を用いたデコード処理を実行するデコード処理手段と、
前記デコード処理手段によりデコードされた情報の内容を示す読取データを出力する読取データ出力手段と、
前記読取データ出力手段が読取データを出力できない読取失敗が生じたとき、前記特定パターン抽出手段により抽出された特定のパターンの数を出力する抽出数出力手段とを具備して成る２次元コード読取装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、所定の情報がエンコードされた２次元コードを撮像し、生成された画像中の２次元コードに対する画像処理を行って、その２次元コードが表示する情報の内容を読み取る技術に関連する。なお、この明細書では、２次元コードが表す視覚認識可能な情報（一般に、白および黒のセルの配列パターンとして現れる。）を「光学情報」という。
【０００２】
【従来の技術】
２次元コードは、「セル」と呼ばれる白または黒の小領域を２次元配列したコードである。各セルは光学情報の最小単位を表すもので、具体的な情報を構成するセルのほか、２次元コードの位置や向きを識別するためのファインダパターンを構成するセルや、コード内の各セルを切り分けて識別するためのタイミングパターンを構成するセルを含む。
【０００３】
図８（１）（２）は、それぞれ代表的な２次元コードであるデータマトリクスとＱＲコードとを示す。データマトリクスは、直交する２辺にコードの方向を示すＬ字状のファインダパターン４０が形成され、他の直交する２辺に同じくＬ字状のタイミングパターン４１が形成される。ファインダパターン４０は、黒いセルを配列することで構成され、タイミングパターン４１は、白いセルと黒いセルとが交互に配列された構成をとる（以下、白いセルを「白セル」、黒いセルを「黒セル」という。）。
【０００４】
一方、ＱＲコードには、矩形状の３個の位置決めシンボル４２ａ，４２ｂ，４２ｃによるファインダパターン４２が設けられる。各位置決めシンボル４２ａ，４２ｂ，４２ｃは、複数の黒セルによる矩形パターンの周囲に白セルの枠を配置し、さらにその外側に黒セルの枠を配置して成る。これら位置決めシンボル４２ａ，４２ｂ，４２ｃは、それぞれコードの頂点に対応する位置に配備され、それぞれのシンボル４２ａ，４２ｂ，４２ｃの内側の角部を結ぶように、白セルと黒セルとが交互に配列されたＬ字型のタイミングパターン４３が形成される。
なお、データマトリクス、ＱＲコードのいずれにおいても、図示の白セルと黒セルとの関係は、背景の状態によって逆転することがある。
【０００５】
上記のような２次元コードを読み取る際には、まずエッジ抽出処理やパターンマッチング処理などによる画像処理により、画像上のファインダパターン４０，４２を抽出してコードの位置および向きを認識する。つぎに、抽出されたファインダパターン４０，４２に基づき、タイミングパターン４１，４３を抽出する。
【０００６】
前記タイミングパターン４１，４３により囲まれた領域は、光学情報の具体的な内容がエンコードされた領域である（以下、この領域のことを「情報表示領域」という。）。前記タイミングパターン４１，４３が抽出されると、つぎはそのパターン内の白セルと黒セルとの配列に基づき、情報表示領域内の各セルの位置を特定する。そして、２値化処理などによって各セルが白黒いずれのセルであるかを判別し、その判別結果に応じて各セルが表す光学情報を符号化する。さらに、文字など１単位分の情報を表すセルのグループ（シンボルキャラクタ）毎に、各セルのコードを配列することにより、前記光学情報をデコードする。また、このデコードにおいては、セルの白黒状態を判別する際に生じた誤りを訂正する処理（誤り訂正処理）も実行される。以下では、前記タイミングパターンの抽出から光学情報のデコードを完了するまでの処理を「デコード処理」と呼ぶ。
【０００７】
なお、上記の読取処理では、本来、ファインダパターンは１個しか抽出されないはずであるが、２次元コードの背景にファインダパターンの形状に似たノイズ（模様や影などによる。）があると、これらのノイズがファインダパターンの候補として抽出される場合がある。このようなノイズに対応するために、従来の２次元コード読取装置では、抽出されたファインダパターンの候補毎にデコード処理を実行し、いずれかのファインダパターンについてデコードに成功したとき、そのデコードされた情報の内容を示す読取データを出力するようにしている。
【０００８】
【発明が解決しようとする課題】
従来の２次元コード読取装置を用いた読取処理では、導入時に、装置の設置位置、照明状態、カメラの視野に対するワークの送り込み位置などを調整してから読取処理を開始するようにしている。しかしながら、これらの調整が悪いと、光学情報の読取に失敗することがある（以下、この失敗を「読取失敗」という。）。また、調整が適正であっても、ワーク上の２次元コードのマーキング状態が悪かったり、２次元コードの背景に前記したノイズがあるために、光学情報の読取に失敗する場合がある。
【０００９】
しかしながら、従来の読取処理においては、読取失敗が起こっても、その失敗がどのような原因によるものかを示す情報がないため、ユーザーは試行錯誤で原因を究明しなければならなかった。このため、導入時の設定に手間がかかり、本格的な読取処理の開始が遅れてしまう、という不具合がある。
【００１０】
下記の特許文献１には、光学情報の読取処理において、デコード処理に失敗したときにその原因を解析し、その解析結果に基づいて読取エラーの原因やその対処方法を報知することが記載されている。
【００１１】
【特許文献１】
特開２００２−２３６８７０号  公報
（段落［０００８］［０００９］参照。）
【００１２】
上記特許文献１では、読取処理の具体例としてバーコードに対する読取処理をあげ、画像の全体的な電圧レベル（波形）、バーの幅、コードの左右のマージンなどに基づき、読取エラーの原因を解析するようにしている（段落［００２５］〜［００３１］参照。）。しかしながら、２次元コードについては、段落［００３９］に、バーコードと同様の方法を適用できる旨が記載されているだけであり、２次元コードの読取失敗に対する具体的な処理方法については、何も示されていない。
【００１３】
この発明は、２次元コードに対する読取処理に失敗したとき、その読取失敗の原因を詳細に判別し、その判別結果をユーザーに報知できるようにすることを目的とする。
【００１４】
【課題を解決するための手段】
この発明にかかる２次元コードの読取方法は、２次元コードを撮像対象とした画像から前記２次元コードに含まれる特定のパターンを抽出した後、抽出された特定のパターンを基準とする所定大きさの画像領域にデコード処理を施して、前記２次元コードが表す光学情報を読み取るものである。この発明では、前記光学情報を読み取ることができない読取失敗が生じたとき、前記特定のパターンの抽出数に基づき前記読取失敗の原因を判別し、その判別結果を出力するようにしている。
【００１５】
上記方法において、「特定のパターン」は、読取対象の２次元コードの位置や向きを抽出するためのパターンであるのが望ましい。すなわち、既存の２次元コードにおいてファインダパターンと呼ばれているパターンを、特定のパターンとすることができる。ただし、特定のパターンはファインダパターンに限定されるものではなく、たとえば、ファインダパターンとタイミングパターンとの組み合わせを特定のパターンとしてもよい。
【００１６】
特定のパターンを抽出するための画像処理の一例として、その特定のパターンのモデルを用いたパターンマッチング処理をあげることができる。また、特定のパターンが線形のパターン、または黒セルまたは白セルが直線状に並ぶ部分を含むパターンであれば、前記画像に含まれるエッジ点を抽出した後、抽出された各エッジ点につき、濃度勾配に直交する方向に所定長さの線分を設定し、線分の重なり度合が所定の値以上となる画像領域を抽出する方法を採用することもできる。
【００１７】
特定のパターンを基準とする画像領域は、前記したタイミングパターンと情報表示領域とを含むものと考えることができる。前記デコード処理では、タイミングパターンを抽出する処理、情報表示領域内の各セルを識別して２値化する処理、２値化により符号化された情報をシンボルキャラクタ毎にまとめながらデコードする処理などを実行することができる。さらに、デコード処理では、シンボルキャラクタ毎に、個々のセルに対する識別において生じた誤りを訂正する処理を行うこともできる。
【００１８】
なお、ファインダパターンの候補が複数抽出された場合には、抽出された候補毎に順にデコード処理を実行する必要がある。この場合、ファインダパターンである可能性が高い候補から順に選択してデコード処理を行うのが望ましい。また、デコードに成功したときは、以後の候補に対する処理を打ち切るようにしてもよい。
【００１９】
つぎに、光学情報に対する読取失敗は、特定パターンの抽出の失敗によるものと、デコード処理の失敗によるものとに分けることができる。
特定パターンの抽出に失敗する原因の１つは照明状態である。すなわち、２次元コードに対する照明が明るすぎたり、暗すぎたりすると、画像上の濃度分布が一様化されてしまい、特定パターンを抽出できない状態となる。
【００２０】
また、他の原因として、撮像装置の視野内に２次元コードが正しく含まれていないことが考えられる。たとえば、撮像装置の視野に対する２次元コードの位置決めが悪く、コード全体または特定パターンを含む一部分が視野外に位置する場合や、ユーザーの手違いにより２次元コードがマーキングされていない物体が撮像された場合が、この原因に相当する。
【００２１】
デコード処理の失敗は、２次元コードによるものと、２次元コードの背景によるものとに大別することができる。前者の場合としては、たとえば、黒セルと白セルとの濃度差が小さかったり、セルの大きさが適正でない場合を考えることができる。このように２次元コードの状態に不備が生じると、タイミングパターンを抽出できなかったり、セルの白黒状態の判別時に生じた誤りが訂正可能な数を超え、デコードができない状態となる。
一方、後者の場合としては、背景に模様や影などのノイズがあり、前記特定のパターンの抽出数が増える場合を考えることができる。特定のパターンの抽出数が増えた場合、その抽出にかかる処理時間が長くなるため、デコード処理に要する時間が不足し、デコードが不可能になる可能性がある。
【００２２】
前記特定パターンの抽出に失敗した場合には、その抽出数はゼロとなる。一方、２次元コードの背景のノイズによりデコードが不可能になった場合には、所定数以上の特定パターンが抽出されると考えることができる。また、２次元コードのマーキング状態に問題がある場合には、特定のパターンの抽出数がゼロより大きく、前記ノイズによりデコードが不可能になるときの抽出数よりも少なくなると、考えることができる。
【００２３】
前記読取失敗の原因を判別する処理では、上記原理を応用して、特定パターンの抽出数に基づく判別処理を行う。たとえば、読取に失敗した時の特定のパターンの抽出数がゼロであれば、２次元コードに対する照明に不備があるか、撮像手段の視野に２次元コードが正しく含まれていなかったことが前記失敗の原因であると考えることができる。また、特定のパターンの抽出数がゼロより大きい所定数以上であれば、２次元コードの背景のノイズが読取失敗の原因であると考えることができる。また、特定のパターンの抽出数がゼロより大きく、前記所定数より小さいときは、２次元コードの状態が読取失敗の原因であると考えることができる。
【００２４】
なお、前記した特許文献１には、画像の明るさレベル、コードの幅、左右のマージンに基づき読取失敗の原因を判別することが記載されているが、読取失敗の原因を判別する処理にコード内の特定のパターンの抽出数を使用する点については、何も示されていない。
【００２５】
上記方法にかかる１番目の態様では、前記特定のパターンの抽出数がゼロより大きいときには、その抽出数をゼロより大きい所定のしきい値と比較する。そして、抽出数が前記しきい値を下回るときは２次元コードの状態が前記読取失敗の原因であると判別し、前記抽出数が前記しきい値を上回るときは２次元コードの背景の状態が前記読取失敗の原因であると判別する。
【００２６】
上記の態様において、しきい値は、前記したデコード処理の時間が不足する場合の特定のパターンの抽出数に対応させることができる。この抽出数は、１つの２次元コードの読取処理に割り当てられた時間、特定のパターンの抽出処理に必要な時間、１回分のデコード処理に必要な時間などに基づき設定することができる。
【００２７】
上記の態様によれば、デコード処理の失敗の原因が２次元コードの状態または２次元コードの背景の状態のいずれによるものかを判別し、ユーザーに明瞭に提示することができる。
【００２８】
上記方法にかかる２番目の態様では、前記特定パターンの抽出数がゼロのとき、前記画像の明るさを所定の数値範囲と比較する。そして、前記明るさが前記数値範囲内にあれば撮像時の２次元コードの位置が前記読取失敗の原因であると判別し、前記明るさが前記数値範囲外にあれば２次元コードに対する照明の状態が前記読取失敗の原因であると判別する。
【００２９】
上記の態様において、画像の明るさは、画像を構成する各画素毎の階調を平均することにより得ることができる。前記数値範囲は、画像がハレーションをおこすときの明るさや、照明されていないときの最低の明るさ（ノイズの影響のみの明るさ）に基づき設定するのが望ましい。前記明るさが数値範囲内であれば、画像の濃淡を識別することが可能であるから、画像内に特定パターンがあれば、これを抽出することができると考えられる。にもかかわらず、特定パターンの抽出数がゼロということは、撮像装置の視野内に特定パターンが含まれていない状態にあると考えることができる。
【００３０】
一方、前記明るさが数値範囲を超える場合には、照明が明るすぎると考えることができる。また、前記明るさが数値範囲を下回る場合には、照明が暗すぎると考えることができる。
よって、上記の態様によれば、読取処理の失敗が撮像時の２次元コードの位置の不備によるものなのか、または照明の不備によるものなのかを的確に判別し、その原因を提示することができる。
【００３１】
前記２次元コード読取方法の第３の態様では、判別結果の出力として、前記読取失敗の原因を示す情報を表示する。この表示情報は、前記原因をユーザーが簡単に理解できるようなコメント情報とするのが望ましい。
【００３２】
つぎに、この発明にかかる２次元コード読取装置は、２次元コードを撮像対象とした画像を取得する画像取得手段と、前記取得した画像から２次元コードに含まれる特定のパターンを抽出する特定パターン抽出手段と、前記特定パターン抽出手段により抽出された特定のパターンを基準に所定大きさの処理対象領域を設定し、その領域内の画像を用いたデコード処理を実行するデコード処理手段と、前記デコード処理手段によりデコードされた情報の内容を示す読取データを出力する読取データ出力手段と、前記読取データ出力手段が読取データを出力できない読取失敗が生じたとき、前記特定パターンの抽出数に基づき前記読取失敗の原因を判別する判別手段と、前記判別手段による判別結果を出力する判別結果出力手段とを具備する。
【００３３】
なお、この発明にかかる２次元コード読取装置は、読取に成功した場合には、必ず読取データを出力できるように構成されているので、読取データを出力できない状態をもって「読取失敗」と考えることができる。
【００３４】
画像取得手段は、少なくともカメラなどの撮像部により生成された画像を入力する入力インターフェースを具備する。また、アナログ画像信号が入力される場合には、画像取得手段には、Ａ／Ｄ変換回路を含ませるのが望ましい。
【００３５】
特定パターン抽出手段、デコード処理手段、判別手段は、それぞれ前記２次元コードの読取方法において述べた特定パターンの抽出処理、デコード処理、読取失敗の原因を判別する処理を実行する。これらの手段は、プログラムを組み込んだコンピュータにより構成することができ、また各手段を１つのコンピュータにより構成することができる。ただし、各手段とも、２次元コードの画像に対する画像処理を行う機能については、別体のコンピュータまたは画像処理専用のハードウェア回路により構成することもできる。
【００３６】
前記読取データ出力手段および判別結果出力手段は、それぞれ外部機器に対するインターフェース回路として構成することができる。また、これらの出力手段は、前記判別結果を表示する表示装置もしくは判別結果を音声出力する音声回路として構成することもできる。また、上記いずれの形態を用いる場合でも、各出力手段を一体に構成することができる。
【００３７】
上記の２次元コード読取装置によれば、前記した２次元コード読取方法に基づき、読取処理に失敗したとき、その失敗の原因を示す情報を出力することができる。
【００３８】
上記２次元コード読取装置の１番目の態様では、前記判別手段は、前記特定のパターンの抽出数がゼロより大きいとき、前記抽出数をゼロより大きい所定のしきい値と比較し、前記抽出数が前記しきい値を下回るときは２次元コードの状態が前記読取失敗の原因であると判別し、前記抽出数が前記しきい値を上回るときは２次元コードの背景の状態が前記読取失敗の原因であると判別する。
なお、この態様にかかる２次元コード読取装置では、前記しきい値として任意の数値を設定できるようにするのが望ましい。
【００３９】
また、２次元コード読取装置の２番目の態様では、前記判別手段は、前記特定のパターンの抽出数がゼロのとき、前記画像の明るさを所定の数値範囲と比較し、前記明るさが前記数値範囲内にあれば撮像時の２次元コードの位置が前記読取失敗の原因であると判別し、前記明るさが前記数値範囲外にあれば２次元コードに対する照明の状態が前記読取失敗の原因であると判別する。
【００４０】
さらに、この発明では、前記判別手段に、上記の２つの態様にかかる判別処理機能をともに具備させることができる。この場合の判別手段は、特定パターン抽出手段やデコード処理手段の処理結果に応じて、第１または第２の態様にかかる判別処理を実行することになる。すなわち、特定パターン抽出手段による特定のパターンの抽出数がゼロであったときは、第２の態様にかかる判別処理を実行する。また、前記抽出数がゼロより大きければ、デコード処理手段による処理を実行し、この処理においてデコードに失敗したとき、１番目の態様にかかる判別処理を実行することになる。
【００４１】
さらに、上記２次元コード読取装置にかかる第３の態様では、前記出力手段は、前記判別手段が判別した原因を示す情報を表示する表示手段を含むものとして構成される。このようにすれば、読取失敗が生じたとき、２次元コード読取装置自身に失敗の原因を示す情報を表示させることができるので、読取処理の現場にいるユーザーに、失敗の原因を、迅速かつ、わかりやすく知らせることができる。
【００４２】
つぎに、この発明にかかる他の２次元コード読取装置は、２次元コードを撮像対象とした画像を取得する画像取得手段と、前記取得した画像から２次元コードに含まれる特定のパターンを抽出する特定パターン抽出手段と、前記特定パターン抽出手段により抽出された特定のパターンを基準に所定大きさの処理対象領域を設定し、その領域内の画像を用いたデコード処理を実行するデコード処理手段と、前記デコード処理手段によりデコードされた情報の内容を示す読取データを出力する読取データ出力手段と、前記読取データ出力手段が読取データを出力できない読取失敗が生じたとき、前記特定パターン抽出手段により抽出された特定のパターンの数を出力する抽出数出力手段とを具備する。
【００４３】
上記において、画像取得手段、特定パターン抽出手段、デコード処理手段、読取データ出力手段は、先に記載した２次元コード読取装置と同様の構成にすることができる。抽出数出力手段は、外部機器に対するインターフェース回路とするのが望ましいが、これに加えて、抽出数を表示する表示手段または音声出力手段を含ませることもできる。
【００４４】
上記の２次元コード読取装置では、読取失敗が生じたときは、前記特定のパターンの抽出数を、読取失敗の原因を示す情報として外部機器に出力することができる。よって、外部機器側で、読取失敗の原因を判断することが可能となり、読取失敗に的確かつ速やかに対応することができる。
【００４５】
上記した各構成にかかる２次元コード読取装置は、２次元コードを撮像する撮像部（カメラ、スキャナなど）や、２次元コードの読取結果などを表示するためのモニタを接続することができる。あるいは、これら撮像部やモニタを上記した各種手段にかかる構成とともに、単一の筐体の内外に一体化することもできる。
【００４６】
上記した２次元コード読取方法および装置によれば、読取失敗が生じた場合には、その失敗の原因をユーザーに提示することができる。よって、たとえば、本格的な読取処理を開始する前の調整時に、読取失敗の原因を速やかに取り除いて適切な調整を行うことができ、設定作業の効率化をはかることができる。
【００４７】
【発明の実施の形態】
図１は、この発明にかかる２次元コード読取装置の構成を示す。図中、レンズ１０１および撮像素子（ＣＣＤ）１０２は、２次元コード７を撮像するためのもの、照明ランプ６は、処理対象の２次元コード７を照明するためのものである。
【００４８】
さらに、この２次元コード読取装置１には、撮像制御部１０４、照明制御部１０５、トリガ入力部１０６、Ａ／Ｄ変換部１０７、画像記憶部１０８、画像処理部１０９、デコード処理部１１０、判定処理部１１１、出力処理部１１２などを具備する。また、図中の１１は、この２次元コード読取装置１の動作を制御する上位システムであり、パーソナルコンピュータやプログラマブルコントローラ（ＰＬＣ）などにより構成される。また、モニタ４は、後記するように、２次元コード読取装置１の構成要素として設定することもできる。
【００４９】
トリガ入力部１０６は、上位システム１１から撮像開始を指示するトリガ信号を受け付ける。このトリガ信号は、撮像制御部１０４および照明制御部１０５に与えられる。これにより、照明ランプ６による照明の下でＣＣＤ１０２が作動し、２次元コード７が撮像される。
【００５０】
ＣＣＤ１０２からの画像信号は、Ａ／Ｄ変換部１０７においてディジタル変換された後、画像記憶部１０８に格納される。画像処理部１０９は、画像記憶部１０８に格納された画像データ（以下、「処理対象画像」という。）から２次元コード７のファインダパターンを抽出した後、その抽出結果に基づき、処理対象画像中の２次元コードの位置や傾きを判別する。また画像処理部１０９は、タイミングパターンを抽出し、その配列に基づき、コード内の各セルの位置、大きさを認識する。さらに２値化処理などにより、各セルが黒セル、白セルのいずれであるかの判別や、セルの大きさを判別する処理などを実行する。
【００５１】
デコード処理部１１０は、画像処理部１０９の処理結果に基づき、各セル毎の光学情報を符号化する。さらに、デコード処理部１１０は、これらの符号をシンボルキャラクタ毎にまとめながら、そのシンボルキャラクタの示す値（コードワード）に誤りが生じていないかどうかを判別し、誤りがある場合にはこれを訂正する。これにより、光学情報がデコードされると、そのデコード結果は出力処理部１１３に出力される。
【００５２】
判定処理部１１１は、前記画像処理部１０９やデコード処理部１１０による一連の処理において光学情報の読取に失敗したとき、その失敗の原因を判別する処理を実行する。この判別結果も出力処理部１１２に与えられる。出力処理部１１２は、デコード処理部１１０や判定処理部１１１からの処理結果を前記上位システム１１やモニタ４に出力する。
【００５３】
つぎに、図２および図３は、前記２次元コード読取装置１の具体的な構成例を示す。まず、図２は、２次元コード読取装置１の外観とその使用状態を示すものである。この実施例の２次元コード読取装置１は、プリント配線基板の組立製造ラインにおける情報管理システムに組み込まれるもので、コンピュータが内蔵されたコントローラ２と、このコントローラ２にケーブル接続されるＣＣＤカメラ３（以下、単に「カメラ３」という。）とを基本構成とする。なお、コントローラ２の前面には、カメラ接続用のコネクタ８ａが２つ設けられるほか、モニタ４，コンソール５（いずれも図３に示す。）を接続するためのコネクタ８ｂ，８ｃなどが設けられる。また、カメラ３の内部には、前記した照明ランプ６が収容されている。
【００５４】
この実施例にかかる２次元コード読取装置１は、前記プリント配線基板に実装される部品９の表面に付された２次元コード７を読み取る目的で設置される。なお、この２次元コード７のマーキングは、コンベア１０の上流において、図示しないマーキング装置により行われる。また、このマーキングは、黒セルに相当する部分にピンで孔を形成する方法や、レーザー光により黒セルを印刷する方法など、部品９に２次元コード７を直接マークする方法（ダイレクトマーキング）により行われる。
【００５５】
前記カメラ３は、部品の搬送用コンベア１０（以下、単に「コンベア１０」という。）の上方に設置される。コントローラ２は、このコンベア１０の近傍位置に設置されており、前記した上位システム１１に接続される。コントローラ２は、この上位システム１１からのコマンドを受けてカメラ３を作動させて前記２次元コード７を撮像させた後、その画像中の２次元コードが有する光学情報をデコードする。
【００５６】
前記コントローラ２で最終的に得られたデコード結果は、上位システム１１に送信される。なお前記２次元コード７には、部品の種類，部品番号，部品の搬送先，部品が組み付けられる基板の番号など、組立処理に必要な種々の情報が格納される。上位システム１１は、これらの情報を用いて、前記コンベア１０の経路を切り替えたり、図示しない組立ロボットにコマンドを送るなどの制御を実行する。
【００５７】
図３は、前記コントローラ２を中心とした２次元コード読取装置１のハードウェアブロック図を示す。この実施例のコントローラ２は、ＣＰＵ２１、メインメモリ２２、入出力制御部２３、画像処理部２４、モデルメモリ２５、画像メモリ２６などを主要構成として含む。前記したカメラ３、モニタ４、コンソール５、およびカメラ３内の照明ランプ６は、それぞれインターフェース回路２０３，２０４，２０５，２０６を介して入出力制御部２３に接続される。なお、カメラインターフェース回路２０３には、前記したＡ／Ｄ変換部１０７が含まれる。
【００５８】
またＣＰＵ２１は、通信インターフェース回路２０１を介して、前記上位システム１１とデータやコマンドのやりとりを実行する。前記図１のトリガ入力部１０６は、通信インターフェース回路２０１およびＣＰＵ２１におけるトリガ信号を受け付ける機能により構成されるものである。
【００５９】
前記入出力制御部２３および画像処理部２４は、ＣＰＵバス２７を介してＣＰＵ２１に接続されるとともに、画像バス２８を介して相互に画像データをやりとりできるように構成されている。カメラ３から出力された画像は、入出力制御部２３から画像処理部２４に提供されて、画像メモリ２６に格納される。この画像メモリ２６は、図１の画像記憶部１０８に対応する。画像処理部２４は、この画像メモリ２６に格納された画像をＣＰＵ２１からの指示に応じて読み出して、入出力制御部２３に提供する。
【００６０】
入出力制御部２３は、モニタ４に対し、前記画像処理部２４から提供された画像およびカメラ３から入力したリアルタイムの画像を切り替えて表示させることができる。また、画像の表示とともに、その画像に対する読取処理の結果を表示させることもできる。さらに、２次元コードの読取に失敗したときには、入出力制御部２３は、ＣＰＵ２１から後記するコメント情報の提供を受け、これを前記モニタ４に表示させる。また、ＣＰＵ２１は、上位システム１１に対し、コメント情報と同じ内容を示すエラーコードを出力する。
【００６１】
メインメモリ２２は、ＣＰＵ２１の動作に必要なプログラムを格納するほか、処理の過程で生じたデータを一時保存したり、コメント情報の設定テーブル（図４に示す。）や後記するしきい値ＮＭ，Ｌｍａｘ，Ｌｍｉｎを記憶するなどの目的で使用される。
【００６２】
モデルメモリ２５は、２次元コードのファインダパターンの抽出に使用するモデルを登録するためのもので、画像メモリ２６とともに画像処理部２４に接続される。画像処理部２４は、画像処理専用のプロセッサやディジタル演算回路を具備するもので、前記図１の画像処理部１０９に対応する。
【００６３】
前記メインメモリ２２には、前記図１の撮像制御部１０４、照明制御部１０５、デコード処理部１１０、判定処理部１１１、出力処理部１１２の各処理部に対応するプログラムが格納される。ＣＰＵ２１は、これらのプログラムに基づく処理を実行することにより、各処理部として機能することができる。
【００６４】
この実施例のコントローラ２は、前記コンベア１０上に搬送される各部品９に対し、カメラ３を作動させて２次元コード７の画像を取り込む処理と、その画像の２次元コードを読み取る処理とを、高速で繰り返し実行するように設定されている。なお、「読取処理」とは、２次元コードの画像をコントローラ２内に取り込んでからデコードを終了するまでの一連の処理を意味するもので、ファインダパターンの抽出処理とデコード処理とに大別される。
【００６５】
なお、この実施例のファインダパターンの抽出処理では、前記モデルメモリ２５内のモデルを処理対象画像に走査しながら相関演算を実行するパターンマッチング処理を実行する（以下では、このパターンマッチングによりファインダパターンを検索する処理を「相関サーチ」という。）。ただし、この相関サーチに代えて、画像上のエッジ点やその濃度勾配方向を利用した処理により、ファインダパターンを抽出することもできる。
【００６６】
ここで、上記のファインダパターンの抽出処理について簡単に説明する。この処理では、まず、処理対象画像に対しエッジ抽出のための微分処理を実行する。つぎに抽出された各エッジ点において、その濃度勾配方向（黒から白に向かう方向）に直交する方向に沿って所定長さの線分を設定する。
【００６７】
この処理は、刻印マーキングによる２次元コードのように、黒セルがドットのパターンとして表されるコードを処理するのに向いている。たとえば、データマトリクスのファインダパターンでは、黒セルを示すドットが所定間隔をおいてＬ字状に配列されるから、これらのドットの輪郭線上の各エッジ点に対し、ドットの接線に近似する線分を設定することができる。ここで、これらの線分の重なり度合いに着目すると、前記Ｌ字状の配列方向に沿う重なり度合いが最も大きくなると考えられる。よって、処理対象画像に設定された線分の中から、重なり度合いが所定値以上となる画像領域を抽出し、その中でファインダパターンの形状に近似する画像領域を抽出する方法により、ファインダパターンの位置や向きを特定することができる。
【００６８】
この実施例のコントローラ２では、上記の読取処理において、２次元コードの読取に失敗したとき、その失敗の原因を判別する処理を実行するようにしている。判別処理の結果は、所定のコメント情報に変換されてモニタ４に表示される。
【００６９】
図４は、前記コメント情報の設定テーブルの例を示す。この設定テーブルは、前記メインメモリ２２に格納されるもので、５つのコメント情報にそれぞれ個別の識別番号を対応づけた構成をとる。なお、以下では、各コメント情報を、その識別番号を用いて、「コメント１」「コメント２」・・・というように示す。
【００７０】
図４において、コメント１は２次元コード７に対する照明が明るすぎることを、コメント２は、前記照明が暗すぎることを、それぞれ示す。コメント３は、２次元コード７がカメラ３の視野に正しく含まれていないことを示すもので、２次元コード７全体、または少なくともファインダパターンを含む一部分が欠落している場合に適用される。
【００７１】
コメント４は、画像上の２次元コード７がデコードできない状態にあることを示す。たとえば、コントラストが足らないためにタイミングパターンを抽出できなかったときや、白セルと黒セルとの識別処理において、２次元コードのマーキング状態が悪いために訂正が不可能な数の誤りが生じたときに、このコメント４が適用されることになる。
【００７２】
コメント５は、２次元コード７の背景状態が悪いことを示す。ここで、悪い背景状態とは、凹凸や模様などにより、ファインダパターンとして誤抽出されるノイズが多い状態のことである。この実施例のように、カメラ３の視野内に２次元コード７を順次送り込んで読取処理を行う場合、毎回の読取処理には所定の割り当て時間を設定する必要がある。コメント５は、割り当て時間内にデコード処理を終了できないほどのファインダパターンの候補が抽出されたことを意味するものとなる。
【００７３】
なお、図４には示していないが、この設定テーブルには、各コメント情報に対応するエラーコードも格納される。エラーコードは上位システム１１に出力されるほか、コメント情報とともにモニタ４にも表示される。
【００７４】
図５は、前記コントローラ２において、１つの２次元コードの画像データに対する読取処理の手順（ＳＴ１〜１７）を示す。
まず上位システム１１からの読取開始信号が入力されると、前記カメラ３を駆動して処理対象の２次元コードを撮像させる。カメラ３からの画像は、前記したように、入出力制御部２３から画像処理部２４に渡された後、画像メモリ２６に格納される（ＳＴ１〜３）。
【００７５】
つぎのＳＴ４で、画像処理部２４は、前記画像メモリ２６に格納された画像に対し、モデルメモリ２５内のモデルを用いた相関サーチを行って、ファインダパターンを抽出する。なお、この相関サーチの結果は、画像処理部２４からＣＰＵ２１に伝送される。ＣＰＵ２１は、抽出されたファインダパターンの候補の数（以下、「候補数Ｎ」とする。）、およびモデルに対する各候補の類似度をメインメモリ２２に一時保存する。
【００７６】
前記候補数Ｎが０より大きい場合には、ＳＴ５が「ＹＥＳ」となってＳＴ６のデコード処理に進む。ここで、このデコード処理の具体的な手順について、図６を用いて説明する。
【００７７】
このデコード処理は、前記ＳＴ４で抽出されたファインダパターンの各候補に対し、順に行われる。なお、処理の順序は、モデルへの類似度が高いものからとなる。
【００７８】
最初のＳＴ６１では、前記ファインダパターンの候補に基づき、タイミングパターンを抽出する。つぎのＳＴ６２では、前記タイミングパターンのセルの配列状態に基づき、コード内部の各セルの位置を抽出する。ついで、ＳＴ６３では、前記タイミングパターンに囲まれる情報表示領域について、その領域内の各セル毎に濃度値を２値化するなどして、セルが白であるか黒であるかを判別し、その判別結果に基づき、各セルの表わす光学情報を符号化する。さらに、ＳＴ６４では、これらの符号を誤り訂正処理を行いつつデコードする（ＳＴ６４）。
【００７９】
なお、図６には記載していないが、前記ＳＴ６１〜６４のいずれかのステップにおいて、処理を途中で実行できない状態になった場合には、以下のステップをキャンセルしてＳＴ６５へと進む。このＳＴ６５では、上記各ステップによる処理に成功したかどうかを判別する。ここでいずれかのステップにおいて処理に失敗している場合には、ＳＴ６５が「ＮＯ」となってＳＴ６６に進み、抽出されたファインダパターンの候補すべてに対する処理を終了したかどうかをチェックする。ここで未処理の候補があれば、ＳＴ６６からＳＴ６１に戻り、つぎの候補に対し、同様に、ＳＴ６１〜６４の処理を実行することになる。
【００８０】
所定の候補に対し、ＳＴ６１〜６４の処理により情報がデコードされると、ＳＴ６５は「ＹＥＳ」となり、デコード処理を終了する。すなわち、前記所定の候補に対するデコードに成功した場合には、未処理の候補があっても、その候補に対するＳＴ６１〜６４の処理はキャンセルされることになる。
【００８１】
図５に戻って、上記図６の手順によりデコードに成功すると、ＳＴ７が「ＹＥＳ」となってＳＴ８に進む。ＳＴ８では、デコード結果を配列して最終形式の読取データを編集し、これを上位システム１１およびモニタ４に出力する。
【００８２】
一方、ファインダパターンの候補のいずれに対しても情報をデコードできなかった場合には、ＳＴ７が「ＮＯ」となり、ＳＴ９において、前記候補数Ｎを所定のしきい値ＮＭ（ＮＭ＞０）と比較する。候補数Ｎが前記しきい値ＮＭより小さい場合には、ＳＴ９からＳＴ１０に進み、前記モニタ４にコメント４を出力する。また、候補数Ｎがしきい値ＮＭ以上の値をとる場合には、ＳＴ９からＳＴ１１に進み、前記モニタ４にコメント５を出力する。
【００８３】
つぎに、前記ＳＴ４において、ファインダパターンを抽出できなかった場合には、ＳＴ５が「ＮＯ」となってＳＴ１２に進み、処理対象画像の明るさＬを算出する。なお、この算出処理は、処理対象画像中の全画素の階調を平均する方法により行われるが、これに限らず、たとえば明るさの最大値と最小値との平均値を求めてもよい。
【００８４】
つぎに、ＳＴ１３，１４では、前記明るさＬを所定のしきい値Ｌｍａｘ，Ｌｍｉｎ（Ｌｍａｘ＜Ｌｍｉｎ）と比較する。ここで明るさＬがＬｍａｘより大きい場合には、ＳＴ１３が「ＹＥＳ」となってＳＴ１７に進み、前記モニタ４にコメント１を出力するまた、明るさＬがＬｍｉｎより小さい場合には、ＳＴ１３が「ＮＯ」、ＳＴ１４が「ＹＥＳ」となってＳＴ１６に進み、前記モニタ４にコメント２を出力する。
【００８５】
前記明るさＬが、Ｌｍｉｎ≦Ｌ≦Ｌｍａｘの範囲にあれば、ＳＴ１３，１４がともに「ＮＯ」となってＳＴ１５に進み、前記モニタ５にコメント３を出力する。
【００８６】
なお、前記ＳＴ９において、候補数Ｎをしきい値ＮＭと比較する場合に、ある候補が示す２次元コードの領域内に他の候補が含まれる場合には、これらの候補を１候補とみなして候補数Ｎを減数してもよい。
【００８７】
上記図５の手順において、前記しきい値ＮＭは、ファインダパターンの抽出のためにデコード処理のための時間を確保できなくなる場合の候補数Ｎに基づき設定することができる。１つの２次元コード７の読取には、あらかじめ一定の処理時間Ｔが割り当てられるから、前記ファインダパターンの抽出処理が終了した時点の残り時間は、候補数Ｎが多くなるほど少なくなると考えられる。よって、たとえば、下記の（１）式を満たすＮの最小の値を、前記しきい値ＮＭとすることができる。
Ｔ−Ｔ１＜Ｎ×ｔ    ・・・（１）
【００８８】
上記（１）式において、Ｔ１はＮ個のファインダパターンの抽出に必要な時間に所定の余裕時間を加味した値である。またｔは、１つの候補に対するデコード処理に必要な時間である。ｔの値はコントローラ２の処理能力に応じた一定値であり、Ｔ１の値は候補数Ｎに応じて定めることができる。なお、割り当て時間Ｔは、あらかじめ所定の値に固定しておくこともできるが、これに限らず、上位システム１１やコンソール５を介して設定することもできる。
このように割り当て時間Ｔを可変設定できるようにした場合、前記しきい値ＮＭは、Ｔの値によって変動することになる。なお、割り当て時間Ｔは部品９の搬送速度に応じて設定することができる。
【００８９】
前記明るさのしきい値Ｌｍａｘ，Ｌｍｉｎの設定については、下記のようにする。
たとえば、明るさの階調を２５６階調にした装置の場合、濃淡識別のために必要な分解能が１０階調程度であることを考慮して、Ｌｍａｘを２４５階調程度に設定しておく。また、Ｌｍｉｎについては、ノイズの影響による明るさのレベルと、判別のために必要な分解能が１０階調程度であることを考慮して、５０階調程度に設定しておく。
上記の設定によれば、ハレーション現象などにより画像が明るすぎる場合には、明るさＬはＬｍａｘより大きくなる。また、２次元コードの黒セルと背景の黒とを視認できないほど画像が暗い場合には、明るさＬはＬｍｉｎより小さくなる。
【００９０】
上記図５の手順によれば、デコード処理に失敗した場合には、ファインダパターンの候補数Ｎに基づき、その失敗の原因が２次元コードにあるのか、背景にあるのかを判別することができる。また、ファインダパターンの抽出に失敗した場合には、処理対象画像の明るさに基づき、前記失敗の原因が照明にあるのか、またはカメラ３の視野に対する２次元コードの位置によるものかを、判別することができる。
【００９１】
特に、照明や２次元コードの位置に不備がある場合には、判別結果に基づき、速やかにその不備を修正することができるから、装置導入時に、照明、カメラ３の視野、２次元コードの位置などを調整する際に、調整作業を効率良く進めることができる。
【００９２】
また、２次元コードの状態に不備があると判別された場合には、デコード処理のいずれのステップで失敗が生じたかにより、不備の内容をより具体的に判別することができる。
たとえば、タイミングパターンが抽出できなかった場合には、コントラストが足りないと考えられるので、照明状態に問題があると判別することができる。また、タイミングパターンは抽出できたが、デコードができなかった場合には、２次元コードのマーキング状態に不備があると判別することができる。
【００９３】
図７（１）（２）は、前記図５の読取処理が終了したときのモニタ４における表示例を示す。図７（１）は、読取成功時の表示例であって、２次元コードの画像３１を含む処理対象画像３０が表示されるとともに、前記２次元コードから得た読取データ３２や「ＯＫ」のマーク３３などが表示されている。
【００９４】
図７（２）は、前記読取処理に失敗したときの表示例であって、読取失敗の原因の判別結果に基づくコメント情報３４（図示例ではコメント１）が、対応するエラーコード３５や「ＮＧ」のマーク３６とともに表示されている。また、この例でも処理対象画像が表示されている。ただし、画像上の２次元コードを識別できない状態にあるため、便宜上、処理対象画像３０は空白状態として図示する。
【００９５】
【発明の効果】
この発明によれば、２次元コードの読取処理に失敗したとき、その読取処理における特定パターンの抽出数に基づき失敗の原因を判別し、その判別結果をユーザーに提示することができる。したがって、ユーザーは読取失敗の原因を的確に把握することができ、失敗に対し、正確な対応をとることができる。よって、本格的な読取処理を開始する前の調整時などにおいて、照明、撮像手段の視野、２次元コードの位置などの設定条件に不備があっても、その不備を速やかに取り除いて対応することができる。
【図面の簡単な説明】
【図１】この発明が適用された２次元コード読取装置の構成を示す機能ブロック図である。
【図２】２次元コード読取装置の外観および使用状態を示す図である。
【図３】２次元コード読取装置の電気構成を示すブロック図である。
【図４】コメント情報の設定テーブルを示す図である。
【図５】読取処理の手順を示すフローチャートである。
【図６】デコード処理の詳細な手順を示すフローチャートである。
【図７】読取終了時の表示例を示す図である。
【図８】２次元コードの代表例および各コードにおけるファインダパターン，タイミングパターンを示す説明図である。
【符号の説明】
１  ２次元コード読取装置
２  コントローラ
３  カメラ
４  モニタ
７  ２次元コード
２１  ＣＰＵ
２２  メインメモリ
２３  入出力制御部
２４  画像処理部
２６  画像メモリ
【図１】
2005018649.tif 000003
【図２】
2005018649.tif 000004
【図３】
2005018649.tif 000005
【図４】
2005018649.tif 000006
【図５】
2005018649.tif 000007
【図６】
2005018649.tif 000008
【図７】
2005018649.tif 000009
【図８】
2005018649.tif 000010