(57)【要約】【課題】読取の失敗が起こる頻度を削減して、安定した読取処理を実行する。【解決手段】モデルメモリ２５には、画像上の２次元コードのファインダパターンを検出するためのモデルが複数種登録される。コントローラ２では、カメラ３から２次元コードの画像を入力すると、入力画像上のファインダパターンを検出する処理と、検出された２次元コードを復号する処理とを、読取に成功するまでモデルを順に選択しながら繰り返し実行する。いずれのモデルを用いてもコードを読み取りできなかった場合には、処理対象の画像を用いて新たなモデルを追加登録し、再度、そのモデルを用いて読取処理を実行する。【選択図】　図２
2004021736.tif 000002
【特許請求の範囲】
【請求項１】
２次元コードを撮像して得られた画像に対し、所定のモデルを用いて前記画像上の２次元コードを検出してそのコードが示す情報を読み取る読取処理を実行する方法において、
複数種のモデルを登録しておき、２次元コードの読取に成功するまで、登録されたモデルを順に選択して前記読取処理を繰り返すことを特徴とする２次元コード読取方法。
【請求項２】
２次元コードを撮像して得られた画像に対し、所定のモデルを用いて前記画像上の２次元コードを検出してそのコードが示す情報を読み取る読取処理を実行する方法において、
２次元コードの読取に失敗したとき、その処理対象の画像を用いて新たなモデルを登録した後、前記処理対象の画像に対し、前記新たに登録されたモデルを用いた読取処理を実行することを特徴とする２次元コード読取方法。
【請求項３】
請求項２に記載された２次元コード読取方法において、
複数種のモデルが登録されている状態下において、２次元コードの読取に成功するまで、登録されたモデルを登録順に選択して読取処理を繰り返すことを特徴とする２次元コード読取方法。
【請求項４】
請求項２に記載された２次元コード読取方法において、
複数種のモデルが登録されている状態下において、２次元コードの読取に成功するまで、登録されたモデルを読取処理に用いられた頻度の高い順に選択して読取処理を繰り返すことを特徴とする２次元コード読取方法。
【請求項５】
請求項１〜４のいずれかに記載された２次元コード読取方法において、
登録された各モデルについて、それぞれそのモデルが読取処理に用いられた頻度を示す情報を出力するようにした２次元コード読取方法。
【請求項６】
２次元コードを含む画像を入力する画像入力手段と、
２次元コードのモデルを複数種登録することが可能なモデルメモリと、
前記モデルメモリに登録されたいずれかのモデルを選択し、前記画像入力手段が入力した画像上の２次元コードを前記選択されたモデルを用いて検出する検出手段と、
前記検出手段により検出された２次元コードが示す情報を読み取る情報読取手段とを具備して成る２次元コード読取装置。
【請求項７】
前記検出手段は、前記入力された画像に対し、前記モデルメモリに登録されたモデルを登録順に選択して２次元コードの検出処理を実行することが可能に設定されて成る請求項６に記載された２次元コード読取装置。
【請求項８】
前記検出手段は、前記入力された画像に対し、前記モデルメモリに登録されたモデルを読取処理に用いられた頻度の高い順に選択して２次元コードの検出処理を実行することが可能に設定されて成る請求項６に記載された２次元コード読取装置。
【請求項９】
２次元コードを含む画像を入力する画像入力手段と、
２次元コードのモデルを複数種登録することが可能なモデルメモリと、
前記モデルメモリに登録されたいずれかのモデルを選択し、前記画像入力手段が入力した画像上の２次元コードを前記選択されたモデルを用いて検出する検出手段と、
前記検出手段により検出された２次元コードが示す情報を読み取る情報読取手段と、
２次元コードの読取に失敗したとき、その処理対象の画像上のファインダパターンを指定するためのデータ入力を受け付ける指定データ入力手段と、
前記データ入力により指定されたファインダパターンを含む画像を新たなモデルとして前記モデルメモリに追加登録する追加登録手段とを具備して成る２次元コード読取装置。
【請求項１０】
前記検出手段は、前記追加登録手段による登録処理が行われた後、この追加登録されたモデルを選択して前記処理に失敗した画像上の２次元コードを検出する請求項９に記載された２次元コード読取装置。
【請求項１１】
請求項６または９に記載された２次元コード読取装置であって、
前記モデルメモリに登録された各モデルについて、それぞれそのモデルが読取処理に用いられた頻度を示す情報を出力する使用頻度出力手段を具備して成る２次元コード読取装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、所定の情報が格納された２次元コードを含む画像を処理して、画像上の２次元コードからこのコードの示す情報を読み取る方法、およびこの方法を実施するための装置に関連する。
【０００２】
【従来の技術】
２次元コードは、「セル」と呼ばれる情報格納領域が２次元配列された白黒のパターンであって、バーコードよりも多数の情報を格納することができるコードとして着目されている。この２次元コードには、「ファインダパターン」と呼ばれる位置決め用のパターンが含まれている。
【０００３】
図９は、代表的な２次元コードであるデータマトリクスを示す。データマトリクスは、直交する２辺にコードの方向を示すＬ字状のファインダパターン３０が形成されている。このような２次元コードを読み取る際には、まず画像上のファインダパターン３０を検出することでコードに対応する画像領域を認識する必要がある。
【０００４】
画像上の２次元コードを検出する従来の方法としては、前記画像のエッジを抽出した上で、その中からファインダパターンに対応するエッジを抽出する方法（以下、この方法を「エッジ抽出方法」と呼ぶ。）や、画像上にあらかじめ登録されたファインダパターンのモデルを走査して相関演算を行い、相関値の高い位置をファインダパターンの位置として検出する方法（以下、この方法を「相関サーチ方法」と呼ぶ。）がある。
【０００５】
ここで２次元コードの読取処理の手順について、前記図９のデータマトリクスを例に簡単に説明する。まず前記したエッジ抽出方法または相関サーチ方法によりファインダパターン３０を検出すると、つぎにこのファインダパターン３０に対向する位置にあるタイミングパターン３１を検出する。タイミングパターン３１は、白いセルと黒いセル（以下、それぞれを「白セル」「黒セル」という。）とが交互に配列されたパターンであって、垂直，水平の２方向におけるタイミングパターン３１の配列に基づき、その他のセルの位置を特定することができる。
【０００６】
タイミングパターン３１により各セルの位置が特定されると、各セルが白黒いずれのセルであるかをその濃度に基づいて判別し、その判別結果に応じて各セルに格納されたデータを復号するデコード処理が実行される。なお、このデコード処理では、セルの白黒状態を判別する際に生じた誤りなどを訂正する処理（誤り訂正処理）が行われるので、高精度の読取を行うことができる。
なお、上記の処理方法は、データマトリクスに限らず、ＱＲコードなどの他の規格の２次元コードについても同様である。
【０００７】
ところで近年、金属面の表面に直接コードをマーキングする方法（「ダイレクトマーキング」と呼ばれる。）が開発されたことから、電子部品のような小さな対象物にも２次元コードを簡単に記すことが可能となっている。このダイレクトマーキングの方法には、黒セルに対応する位置にレーザー光を照射するレーザーマーキングと、ピンを刺す方法によって黒セルをマーキングする刻印マーキングとがある。これらいずれのマーキング方法でも、黒セルがドットとして表されるため、図１０に示すように、本来、直線状のパターンとして表されるファインダパターン３０が、ドットが連続する非直線状のパターンとして表現される。このようなファインダパターンでは、エッジ抽出方法を適用するのは困難であるため、もう一方の相関サーチ方法が適用される割合が高くなっている。
【０００８】
【発明が解決しようとする課題】
ダイレクトマーキングでは、マーキング装置の性能や部品の消耗などによって、ドットのパターンにばらつきが生じることがある。
たとえば、刻印マーキングを行う場合、図１１（１）に示すように、ピンの先端部の摩耗によってドットの径が大きくなる可能性がある。またマーキングの位置決め機構の精度によっては、図１１（２）に示すように、ドットの位置が不揃いになることがある。さらにレーザマーキングを行う場合にレーザ光の出力状態が不安定になると、図１１（３）に示すように、ドットの濃度にばらつきが生じることがある。
【０００９】
従来の２次元コード読取装置では、ファインダパターンの検出のためのモデルは１種類しか登録されていないため、上記のように、ドットのマーキング状態にばらつきが生じると、ファインダパターンの検出が困難となり、読取に失敗するケースが多発する虞がある。
【００１０】
また実際に２次元コードが使用される現場では、コードの大きさやマトリクスサイズ（縦横のセルの数）の異なる複数種の２次元コードが使用される場合がある。このような場合に、ファインダパターンのモデルが１種類であると、コードの種類が代わる毎に、モデルを登録し直す必要があり、実用に耐えられなくなる。
【００１１】
この発明は上記問題点に着目してなされたもので、処理対象の２次元コードのマーキング状態にばらつきがあったり、マーキング状態がしだいに変化したり、コードの大きさやマトリクスサイズの異なる複数種のコードが処理対象となる場合など、処理対象の２次元コードの状態が一定にならない場合において、読取の失敗が起こる頻度を削減して、安定した処理を行うことを、目的とする。
【００１２】
さらにこの発明は、対応するモデルがないために読取に失敗した２次元コードに対しても、再度の読取処理により情報を読み取ることができるようにすることを、目的とする。
【００１３】
【課題を解決するための手段】
この発明は、２次元コードを撮像して得られた画像に対し、所定のモデルを用いて前記画像上の２次元コードを検出してそのコードが示す情報を読み取る読取処理を実行する２次元コード読取方法に適用される。
前記モデルは、各２次元コードに共通するパターンについての基準画像であって、標準的な２次元コードの画像から抽出することができる。このモデルには少なくともファインダパターンの画像を含む必要があるが、これにタイミングパターンの画像を加えてもよい。また２次元コード全体を含む画像をモデルとして登録しても良いが、この場合には、このモデルから各コードに共通する部分（たとえばファインダパターン）を取り出して２次元コードの検出処理を行う必要がある。
【００１４】
「モデルにより画像上の２次元コードを検出する処理」では、前記した相関サーチ方法により、処理対象の画像上でモデルとの相関が高い位置を検出し、その検出結果に基づき２次元コードに対応する画像領域を特定する。前記の読取処理では、この２次元コードを検出するステップを行った後に、検出した２次元コード内の各セルの位置を特定して白黒状態を判別するステップ、前記の判別結果に基づいて各セルのデータを復号し、コンピュータで解読可能な順序に並べるステップなどを、実行することになる。
【００１５】
この発明にかかる第１の２次元コード読取方法では、複数種のモデルを登録しておき、２次元コードの読取に成功するまで、登録されたモデルを順に選択して前記読取処理を繰り返すようにしている。
この方法によれば、たとえばコードの大きさやマトリクスサイズが異なる複数種の２次元コードを処理対象とする場合に、これらのコード毎にモデルを登録することができる。このようにすれば、処理対象の２次元コードに適合するモデルが選択されたときに、検出処理および２次元コードの読取処理に成功するようになるから、処理対象の２次元コードが切り換えられた場合でも、支障なく対応することが可能となる。
【００１６】
また前記図１１に示したように、２次元コードのマーキング状態にばらつきが生じる可能性がある場合には、想定されるばらつきの範囲に応じて複数のモデルを登録しておくことにより、各２次元コードに適合したモデルを用いて、情報を読み取ることができる。ただし、２次元コード内のセルの状態がコードの読取が不可能な状態にまで変化している場合は、この限りではない。
【００１７】
なお、モデルの選択は、各モデルの登録された順序、または過去の読取処理に用いられた頻度の順に基づいて行うことができる。特に同じ状態のコードを続けて処理するケースが多い場合に読取処理に用いられた頻度の高い順に各モデルを選択するようにすれば、２次元コードの検出を効率良く行うことができ、読取処理を高速化することができる。
【００１８】
つぎにこの発明にかかる第２の２次元コード読取方法では、２次元コードの読取に失敗したとき、その処理対象の画像を用いて新たなモデルを登録した後、前記処理対象の画像に対し、前記新たに登録されたモデルを用いた読取処理を実行するようにしている。
【００１９】
読取処理の失敗は、処理対象の２次元コードが登録されたモデルに適合していない場合に生じる。たとえば前記したように２次元コードにばらつきが生じた場合や、処理対象の２次元コードが傾いた状態で撮像されたり、上下反転した状態で撮像されるなど、画像上の２次元コードの向きが変動した場合に、登録されたモデルによる２次元コードの検出に失敗し、データの読取りが不可能となることがある。
【００２０】
また２次元コードの検出に成功しても、その検出に誤りがあれば、読取に失敗することがある。たとえば画像上のキズなど本来のファインダパターンではない部分がファインダパターンとして検出されたり、処理対象がモデルとは異なる種類の２次元コードに代わったためにコードの一部しか検出できなかった場合などには、処理対象のセルを正しく特定できなくなり、情報を読み取ることが不可能となる。
【００２１】
新たなモデルを登録する処理では、たとえば失敗した処理の対象となった画像を表示して、その画像上のファインダパターンを指定する操作を受け付け、その指定に応じてモデルとなる画像を切り出して登録することができる。この第２の方法では、登録されたモデルを用いて、再度、処理対象の画像に対する２次元コードの検出処理を行うので、大半の場合、２次元コードを検出することができる。よって登録されたモデルに適合しない２次元コードであっても、前記のモデルの追加登録処理と再度の読取処理とによって情報の読取を成功させることができる。さらにこのコードと同じ状態の２次元コードが処理対象となった場合には、前記追加登録されたモデルを選択することによって、同様に読取処理を成功させることができる。
【００２２】
この第２の方法では、複数種のモデルが登録されている状態下において、２次元コードの読取に成功するまで、登録されたモデルを登録順に選択して検出処理を繰り返すことができる。このようにすれば、登録されたモデルに適合する２次元コードであれば、モデルの選択を繰り返すことによりそのコードを検出して読取処理を行うことができ、読取精度を大幅に向上することができる。
【００２３】
また前記モデルの選択は、読み取り処理に用いられた頻度の高い順に行うようにしてもよい。このような選択基準を設定すれば、工場の組立ラインなどで同じ状態の２次元コードを連続的に処理する場合には、モデルの選択にかかる時間を短縮して２次元コードを速やかに検出することができるので、高速の読取処理により処理効率を向上することができる。また２次元コードの状態が一時的に変化した場合も、この変化したコードに対する処理が終了した後に後続のコードが元の状態に復帰すると、元のモデルを速やかに呼び出して２次元コードを検出することが可能となる。
さらに前記頻度を規準にした選択を実行する前に、まず前回の処理で使用したモデルを選択するようにすれば、処理対象の２次元コードの状態が安定している場合の読取処理をより効率良く行うことができる。
【００２４】
さらに第１，第２の２次元コード読取方法では、登録された各モデルについて、それぞれそのモデルが読取処理に用いられた頻度を示す情報を出力することができる。たとえば、各モデルに該当する画像をその使用頻度を示す情報とともに一覧表示することができる。またはモデルの選択を受け付け、選択されたモデルについての使用頻度のみを表示するようにしてもよい。また使用頻度は過去に成功したすべての読取処理から求めても良いが、所定回数分の読取処理を行う都度、その期間内におけるモデルの使用頻度を求めて出力するようにしてもよい。
このような方法によれば、各モデルの使用頻度から、処理対象の２次元コードの状態を把握することができるから、コードのマーキング状態の適否やマーキング状態のばらつきの傾向などを判断することができる。また前記の判断結果をマーキング装置の保守に反映させるなどの対応をとることにより、２次元コードを読取可能な品質に維持して、読取が不可能な「不良コード」の発生を防止することができる。
【００２５】
つぎにこの発明にかかる第１の２次元コード読取装置は、２次元コードを含む画像を入力する画像入力手段と、２次元コードのモデルを複数種登録することが可能なモデルメモリと、前記モデルメモリに登録されたいずれかのモデルを選択し、画像入力手段が入力した画像上の２次元コードを前記選択されたモデルを用いて検出する検出手段と、前記検出手段により検出された２次元コードが示す情報を読み取る情報読取手段とを備えている。
【００２６】
上記２次元コード読取装置は、コンピュータを制御主体とするもので、前記画像入力手段は、カメラ，スキャナのような画像生成手段からの画像を前記コンピュータに入力するインターフェースとして構成することができる。さらに画像生成手段からの画像がアナログ画像である場合には、画像入力手段には、Ａ／Ｄ変換回路を含ませることができる。
【００２７】
モデルメモリは、前記コンピュータの具備するメモリの一領域に設けることができる。検出手段，情報読取手段は、いずれも前記コンピュータにその手段の処理を実行するためのプログラムを組み込むことにより設定することができる。
【００２８】
上記の２次元コード読取装置によれば、モデルメモリに登録されたモデルのいずれかに適合する２次元コードであれば、読取処理を行うことが可能であるので、コードのマーキング状態にばらつきが生じたり、種類の異なる複数のコードを処理する場合にも、対応することが可能となる。
【００２９】
なお、上記の装置では、検出手段に選択させるモデルをユーザーの選択操作によって指定することができる。この場合、つぎの指定が行われるまで前回の選択結果を保持するようにすれば、同種の２次元コードを連続して処理する場合のコード検出処理の効率を向上することができる。
【００３０】
上記装置の好ましい態様では、検出手段は、前記入力された画像に対し、モデルメモリに登録されたモデルを登録順に選択して２次元コードの検出処理を実行することが可能に設定される。このようにすれば、処理対象の２次元コードに適合するモデルが登録されている場合には、装置内で自動的にモデルを選択して読取処理を成功させることができるので、精度の高い読取処理を行うことができる。
【００３１】
また上記装置の他の好ましい態様では、検出手段は、前記入力された画像に対し、モデルメモリに登録されたモデルを読取処理に用いられた頻度の高い順に選択して２次元コードの検出処理を実行することが可能に設定される。このようにすれば、同じ状態の２次元コードを連続的に処理する場合の検出効率を向上することができ、高速の読取処理を行うことが可能となる。
【００３２】
なお、この２次元コード読取装置において、モデルの選択について、前記登録順に選択する方法と読取処理に用いられた頻度の高い順に選択する方法との両方を実行できるようにして、選択操作に応じていずれかの方法を設定するようにすれば、装置の利便性を大幅に高めることができる。
【００３３】
さらにこの発明にかかる第２の２次元コード読取装置は、前記第１の装置と同様の画像入力手段，モデルメモリ，検出手段，情報読取手段を備えるとともに、２次元コードの読取に失敗したとき、その処理対象の画像上のファインダパターンを指定するデータ入力を受け付ける指定データ入力手段と、前記データ入力手段により指定されたファインダパターンを含む画像を新たなモデルとして前記モデルメモリに追加登録する追加登録手段を具備している。
【００３４】
前記指定データ入力手段は、たとえば失敗した処理の対象となった画像を表示して、その画像上のファインダパターンを指定する操作を受け付ける手段であり、画像表示用のモニタや指定操作のためのコンソール，キーボードなどを含むものとすることができる。追加登録手段は、検出手段や情報読取手段と同様に、コンピュータにプログラムを組み込むことにより設定されるもので、前記指定に基づいてファインダパターンを含む画像を切り出し、その画像をモデルメモリに追加登録するモデルとして設定することができる。
【００３５】
上記構成の２次元コード読取装置によれば、適合するモデルがないために検出処理または読取処理に失敗した場合には、その処理対象の画像そのものを用いて新たなモデルを登録することができる。よってこの追加登録後に、前記処理に失敗した画像を再度処理すれば、２次元コードの読取処理を成功させることができる。さらにこの後に同様の２次元コードを処理する必要が生じた場合にも、前記追加登録されたモデルによって読取処理を成功させることができる。
【００３６】
上記装置の好ましい態様では、前記検出手段は、追加登録手段による登録処理が行われた後、この追加登録されたモデルを選択して前記処理に失敗した画像上の２次元パターンを検出するようにしている。このようにすれば、追加登録後に直ちに２次元コードの検出を成功させて、読取処理を実行することができる。
【００３７】
さらに前記第１，第２の２次元コード読取装置には、モデルメモリに登録された各モデルについて、それぞれそのモデルが読取処理に用いられた頻度を示す情報を出力する使用頻度出力手段を具備させることができる。この使用頻度出力手段は、前記方法の発明について説明した形態の表示データを表示する表示手段として構成することができる。また同様の表示を他の装置で行わせるために、その装置に各モデルの使用頻度を示す情報を伝送する通信手段として構成することもできる。
【００３８】
前記第１，第２の２次元コード読取装置には、前記画像入力手段にカメラ，スキャナなどの画像生成手段を接続して使用することができる。あるいは、この画像生成手段を一体化した装置として構成することもできる。
【００３９】
上記の２次元コード読取装置を、所定の対象物にダイレクトマーキングされた２次元コードを読み取る用途に使用する場合、マーキング装置の性能やその低下などによって、黒セルに相当するドットの状態が変化しても、処理対象の２次元コードに応じたモデルを用いて情報の読取を成功させることができ、読取精度を大幅に向上することができる。
【００４０】
【発明の実施の形態】
図１は、この発明にかかる２次元コード読取装置（以下では、「２次元コードリーダ」と呼ぶ。）の使用状態を示す。
この２次元コードリーダ１は、プリント配線基板の組立製造ラインにおける情報管理システムに組み込まれるもので、コンピュータが内蔵されたコントローラ２と、このコントローラ２にケーブル接続されるディジタルカメラ３（以下、単に「カメラ３」という。）とを基本構成とする。なお、コントローラ２の前面には、カメラ接続用のコネクタ８ａが２つ設けられるほか、モニタ４，コンソール５（いずれも図２に示す。）を接続するためのコネクタ８ｂ，８ｃなどが設けられる。
【００４１】
この実施例にかかる２次元コードリーダ１は、部品６の表面にダイレクトマーキングされた２次元コード７を読み取る目的で設置されるもので、前記カメラ３は、部品の搬送用コンベア１０（以下、単に「コンベア１０」という。）の上方に設置される。コントローラ２は、このコンベア１０の近傍位置に設置されており、パーソナルコンピュータ，プログラマブルコントローラなどによる上位システム９（図２に示す。）に接続される。コントローラ２は、この上位システム９からのコマンドを受けてカメラ３を作動して前記２次元コード７を撮像させた後、その画像上の２次元コードに格納されたデータをコンピュータで処理可能なデータ形式に変換するデコード処理を実行する。
【００４２】
前記コントローラ２で最終的に得られた読取データは、上位システム９に送信される。なお前記２次元コード７には、部品の種類，部品番号，部品の搬送先，部品が組み付けられる基板の番号など、組立処理に必要な種々の情報が格納される。上位システム９は、これらの情報を用いて、前記コンベア１０の経路を切り替えたり、図示しない組立ロボットにコマンドを送るなどの制御を実行する。
【００４３】
図２は、前記コントローラ２の電気構成を示す。
このコントローラ２は、ＣＰＵ２１，メインメモリ２２，入出力制御部２３，画像処理部２４，モデルメモリ２５，画像メモリ２６などを主要構成として含む。前記したカメラ３，モニタ４，コンソール５は、それぞれインターフェース回路２０３，２０４，２０５を介して入出力制御部２３に接続される。またＣＰＵ２１は、通信インターフェース回路２０１を介して、前記上位システム９とデータやコマンドのやりとりを実行する。
【００４４】
前記入出力制御部２３および画像処理部２４は、ＣＰＵバス２７を介してＣＰＵ２１に接続されるとともに、画像バス２８を介して相互に画像データをやりとりできるように構成されている。カメラ３から出力された画像は、入出力制御部２３から画像処理部２４に提供されて、画像メモリ２６に格納される。画像処理部２４は、この画像メモリ２６に格納された画像をＣＰＵ２１からの指示に応じて読み出して、入出力制御部２３に提供する。
【００４５】
入出力制御部２３は、モニタ４に対し、前記画像処理部２４から提供された画像およびカメラ３から入力したリアルタイムの画像を切り替えて表示させることができる。また入出力制御部２３は、ＣＰＵ２１や画像処理部２４から、後記するモデル登録用の画面や使用頻度の表示画面などを生成するのに必要な画像やデータの提供を受け、生成した画面を前記モニタ４に表示させる。
【００４６】
メインメモリ２２は、ＣＰＵ２１の動作に必要なプログラムを格納するほか、処理の過程で生じたデータを一時保存するなどの目的で使用される。
モデルメモリ２５は、２次元コードのファインダパターンの検出に使用されるモデルを登録するためのもので、画像メモリ２６とともに画像処理部２４に接続される。この実施例では、読取処理に先立ち、カメラ３により得た２次元コードの基準画像を用いて、相関サーチのためのモデルを登録するようにしている。
【００４７】
画像処理部２４は、画像処理専用のプロセッサやディジタル演算回路を具備するもので、モデルメモリ２５へのモデル登録を行う。また読取処理時には、登録されたモデルを用いた相関サーチにより、デコード処理の対象となる２次元コードを検出するようにしている。
【００４８】
この実施例の２次元コードリーダ１は、前記コンベア１０上に搬送される部品６の２次元コード７を順に読み取って出力する必要があるため、コントローラ２は、カメラ３を作動させて２次元コード７の画像を取り込む処理と、その画像の２次元コードを読み取る処理とを、高速で繰り返し実行するように設定されている。このような状態下では、図示しないマーキング装置の性能や部品の消耗などの要因により、搬送される部品の２次元コードのマーキング状態にばらつきが生じたり、マーキング状態がしだいに変化するなどして、読取が困難な状態になることがある。また搬送される部品が傾くなどして画像上の２次元コードの向きが変化した場合にも、読取が困難になることがある。
【００４９】
この実施例のコントローラ２は、上記の問題に対処するために、モデルメモリ２５内のモデルによる相関サーチに失敗した場合、または相関サーチには成功したがデコード処理に失敗した場合には、その処理対象の画像を用いて相関サーチのための新たなモデルを設定し、これをモデルメモリ２５に追加登録するようにしている。さらにこのような処理によりモデルメモリ２５に複数のモデルが登録された場合には、これらのモデルを順に選択して読取処理を実行するようにしている。
【００５０】
図３は、はじめてモデルを登録する際にモニタ４に表示される画面の推移を示すもので、以下、この図３の流れに沿って、モデル登録処理の詳細を説明する。なお、図中、「モデル０」とは、登録番号０番のモデルのことである。
図３（１）は、登録されているモデルを一覧表示するための画面であり、各モデルのインデックスを表示するための表示領域３５（以下、「インデックス領域３５」という。）が並べて表示される。なお、ここではモデルが未登録であるため、いずれのインデックス領域も空白の状態にある。
【００５１】
登録のための一連の操作は前記コンソール５によって行われる。まずユーザーが登録番号０番に対応するインデックス領域３５を選択して登録開始操作を行うと、画面は、図３（２）に示すように、２次元コードの表示画面に切り換えられる。
【００５２】
ここで表示される２次元コードは、あらかじめカメラ３により所定の２次元コードを撮像して得た画像であって、画像メモリ２６から呼び出されたものである。なお、この実施例の画像メモリ２６には、複数枚の画像を蓄積することが可能であり、図３（２）の画面では、ユーザーの選択操作に応じて、画像メモリ２６内の画像を順に呼び出して表示させることができる。また、カメラ３により現在撮像されている２次元コードの画像を表示させることもできる。
【００５３】
ユーザーは、所望の画像が呼び出されるまで選択操作を行った後、確定操作を行う。この確定操作に応じて、モニタの適所に、図３（３）に示すような選択用ウィンドウ３６が表示される。このウィンドウ３６は、登録対象のモデルに対応するマトリクスサイズを選択するためのものである。
【００５４】
前記選択ウィンドウ３６内において、所定のマトリクスサイズが選択されると、前記モニタ４には、図３（４）に示すように、ファインダパターンを指定するためのカーソルが現れる。図示例の２次元コードは、データマトリクスであるので、３個のカーソル３７ａ，３７ｂ，３７ｃが順に表示される。ユーザーは、これらのカーソル３７ａ，３７ｂ，３７ｃを、それぞれＬ字型のファインダパターンの３個の端点付近に位置決めして確定させる。
【００５５】
図３（５）は、各カーソル３７ａ，３７ｂ，３７ｃの位置決めが終了した時点での画面である。この状態下でユーザーが登録を確定するための操作を行うと、コントローラ２内部では、ＣＰＵ２１の指令を受けた画像処理部２４によりモデルの登録処理が行われる。この結果、モニタ４には、図３（６）に示すように、モデルの一覧表示画面が再表示される。図示例では、前記の登録処理に基づき、前記登録番号０番に対応するインデックス領域３５に、登録されたモデルの縮小画像が表示されている。この後も、図３（２）〜（５）と同様の処理を繰り返すことにより、モデルメモリ２５に複数のモデルを登録することができる。
【００５６】
なお前記モデルを登録する際には、画像処理部２４は、前記カーソル３７ａ，３７ｂ，３７ｃにより指定された３点の座標位置に基づき、２次元コード全体を含む所定大きさの画像を切り出し、これをモデルとして設定する。モデルメモリ２５には、前記モデルとともに、前記３点の指定点の座標，選択用ウィンドウ３６において選択されたマトリクスサイズなどが、登録番号（０，１，２・・・）に対応づけて登録される。さらにこの実施例では、各モデルについて、それぞれ読出処理でそのモデルが使用された頻度をモデルメモリ２５に記憶するようにしている。
【００５７】
図４は、上記２次元コードリーダ１を使用するユーザーが実行する手順（ＳＴ１０１〜１０５）を示す。
まず装置導入時には、カメラ３やコントローラ２を適所に位置決めし、コントローラ２にモニタ４やコンソール５を接続する。この設置が完了すると、ＳＴ１０１では、前記図３に示した手順で最初のモデルを登録する処理が実行される。
【００５８】
モデルの登録が完了すると、ユーザーは、コンソール５で設定終了操作などを行うことにより、コントローラ２の設定を終了し、読取処理を開始させる（ＳＴ１０２）。なお、このＳＴ１０２の読取処理は、つぎの図５に示すコントローラ２の手順に対応するもので、読取処理に成功している間は、ＳＴ１０２，１０３，１０４のループが繰り返し実行されるようになる。
【００５９】
一方、上記のループにおいて、コントローラ２が読取処理に失敗して読取エラーを出力すると、上位システム９の制御によって前記コンベア１０が停止し、読取処理が中止される。これによりＳＴ１０３が「ＹＥＳ」となってＳＴ１０５に進む。
ＳＴ１０５では、ユーザーは、読取処理に失敗した際の処理画像（以下、「エラー画像」と呼ぶ。）を呼び出し、前記初期登録時と同じ手順でこのエラー画像から２次元コードを含む画像を抽出し、これを新たなモデルとして追加登録する。追加登録が完了すると、ＳＴ１０２に戻り、再度、前記エラー画像に対する読取処理を実行する。
【００６０】
図５は、前記コントローラ２において、１つの２次元コードに対する読取処理の手順（ＳＴ１〜１７）を示す。なお、以下の説明において、特に主体を限定しないステップは、ＣＰＵ２１により実行されるものである。
まず上位システム９からの読取開始信号が入力されると、前記カメラ３を駆動して処理対象の２次元コードを撮像させる。カメラ３からの画像は、前記したように、入出力制御部２３から画像処理部２４に渡された後、画像メモリ２６に格納される（ＳＴ１〜３）。
【００６１】
つぎのＳＴ４，５は、画像処理部２４の行う処理であって、ＳＴ４では、モデルメモリ２５に登録されたモデルの中から前回の読取処理で使用したモデルを選択する（第１番目の読取処理の際には最初のモデルを選択すればよい。）。そして続くＳＴ５では、画像メモリ２６に格納された最新の画像に対し、前記選択したモデルを用いた相関サーチを行って、ファインダパターンを検出する。なお、この相関サーチでは、モデル全体を用いたサーチを行うのではなく、前記３個の指定点の座標位置に基づきＬ字状のドットパターンを抽出し、このドットパターンを用いたマッチング処理を実行する。
【００６２】
この検出処理に成功すると、ＳＴ６が「ＹＥＳ」となり、ＳＴ７のデコード処理に進む。図６は、このデコード処理の具体的な手順を示すもので、図中のＳＴ７１〜７３は画像処理部２４により、ＳＴ７４，７５はＣＰＵ２１により、それぞれ実行される。
【００６３】
まずＳＴ７１では、タイミングパターンを検出し、続くＳＴ７１では、その検出結果に基づき、コード内部の各セルの位置を抽出する。そして各セル毎に、抽出位置における濃度値から、セルが白であるか黒であるかの判定を実行する（ＳＴ７３）。この判定処理により、各セルのデータが復号されるが、さらにつぎのＳＴ７４では、画像上のノイズにより生じた復号処理の誤りを訂正する誤り訂正処理が行われる。そして最終的に各セルに対応するデータ値が決定すると、ＳＴ７５では、これらのデータを、上位システム９に出力する際の最終形式のデータに編集する処理を行う（たとえば各データをセルの並び順序に配列する。）。
【００６４】
上記一連のデコード処理が支障なく実行されると、図５のＳＴ８が「ＹＥＳ」となり、ＳＴ９において、前記選択されたモデルの使用頻度を更新する処理を行う。この後、ＳＴ１０で、前記読取データを上位システム９に出力し、処理を終了する。
【００６５】
一方、ファインダパターンの検出処理またはデコード処理に失敗した場合には、ＳＴ６またはＳＴ８が「ＮＯ」となってＳＴ１１に進む。ＳＴ１１は、画像処理部２４により実行されるもので、前記ＳＴ４で選択したモデルを選択対象から除外し、さらにつぎのＳＴ１２において、モデルメモリ２５内に、前記除外されたモデル以外のモデルがあるかどうかをチェックする。この判定が「ＹＥＳ」となると、ＳＴ１４に進み、画像処理部２４により残りのモデルの中から使用頻度が最大となるモデルが選択される。この後はＳＴ５に戻り、新たに選択したモデルを用いて、再度、ファインダパターンの検出処理が実行される。
【００６６】
このようにして登録されているいずれかのモデルを選択したときに、ファインダパターンの検出処理およびデコード処理に成功すると、前記したＳＴ９，１０のステップが実行されて処理終了となる。一方、登録されたいずれのモデルを用いても、コードを読み取ることができなかった場合には、最後のモデルの選択後のＳＴ１２が「ＮＯ」となる。ＣＰＵ２１は、この判定を受けて、ＳＴ１３に進み、上位システム９に読取エラーを出力する。
【００６７】
この読取エラーを受けた上位システム９が読取処理を中止すると、ユーザーは、前記図４のＳＴ１０５に示したモデル追加登録処理を実行する。この追加登録の確定操作に応じて、コントローラ２には、コンソール５から読取再開信号が入力される。この信号入力によりＳＴ１５が「ＹＥＳ」となると、画像処理部２４は、ＣＰＵ２１からの指令に応じて、前記エラー画像を処理対象の画像として選択する。さらにつぎのＳＴ１７では、前記モデルメモリ２５から追加登録したモデルを選択する。
【００６８】
この後はＳＴ５に進んで、追加登録されたモデルによりエラー画像上のファインダパターンを検出する。この場合のモデルは、処理対象のエラー画像そのものから抽出されたものであるから、ファインダパターンの検出は、大半において成功する。この後、ＳＴ７のデコード処理が行われ、これが成功すると、ＳＴ９，１０のステップが順に実行されて、処理終了となる。
【００６９】
なお、エラー画像上の２次元コードの状態が読取不可能なレベルまで劣化している場合には、ファインダパターンの検出に成功しても、その後のデコード処理で失敗が起こる。エラー画像については、既に前回の処理においてすべてのモデルが使用されているから、ＳＴ１１で追加登録されたモデルが除外された後のＳＴ１２の判定は「ＮＯ」となり、ＳＴ１３において再度の読取エラーが出力される。
ただしモデルを登録する際には、前記図３に示したように、ユーザー自身が画像の状態を確認しながら設定を行うから、劣化が著しい画像が追加登録処理の対象とされるケースは稀であり、再度の読取エラーが出力される頻度はきわめて少ないと考えられる。
【００７０】
上記図５の手順によれば、２次元コードのマーキング状態のばらつきが少ない場合には、毎時の読取処理においては、前回の処理で使用されたモデルが第１に選択されるので、１回の相関サーチ処理でファインダパターンを検出することができ、続くデコード処理も成功させることができる。よって各２次元コードを高速で読み取ることができる。
【００７１】
この状態下で、たとえば２次元コードの向きが変化した画像が取り込まれてファインダパターンの検出に失敗すると、読取エラーとなって処理が中止される。しかしながらこの実施例では、エラー画像そのものを用いてモデルの追加登録を行った上で、エラー画像を再処理するので、一旦は読出に失敗した２次元コードの情報を、再試行時には高い精度で読み取ることができる。またつぎに取り込まれる画像の２次元コードが元の向きに戻った場合には、まず前回の追加登録されたモデルが選択されることによってファインダパターンの検出に失敗するが、つぎに使用頻度順に基づき前々回使用のモデルが選択されることによって、速やかにファインダパターンを検出することができる。このように２次元コードの状態が一時的に変動しても、そのコードを読み取ることが可能となり、さらに２次元コードの状態が元の状態に復帰したときには、速やかに元のモデルに切り換えて高速の読取処理を再開させることができる。
【００７２】
また処理対象の２次元コードの状態が徐々に変化してこれまでのモデルでは対応できなくなったり、異なる種類の２次元コードに処理対象が切り換えられた場合にも、読取処理に失敗した後にモデルの追加登録処理を行うことにより、２次元コードを読み取ることができるようになる。さらにこの後も同じ状態の２次元コードを処理する場合には、引き続き、追加登録されたモデルが使用されることになり、高速の読取処理を行うことができる。
【００７３】
従来の２次元コードリーダでは、登録できるモデルは１種類に限られていたため、２次元コードの状態が変動してモデルに適合できなくなると、そのコードの読取は不可能となり、部品が無駄になるという問題があった。
これに対し、この実施例の２次元コードリーダ１によれば、２次元コードの状態が大きくばらついたり、経時変化によりモデルに適合しない状態に変動しても、各コードを精度良く読み取ることができるから、部品が無駄になる頻度を大幅に減らすことができる。
【００７４】
また上記の実施例によれば、同じ種類の２次元コードを一定期間処理した後に、２次元コードの状態やコードの種類が変わって、それまでのモデルでは対応できなくなった場合には、複数回の読取処理が行われるために読取処理の時間が通常よりも長くなる。したがって上位システム９などで毎回の読取処理時間を監視するようにすれば、処理対象の２次元コードが変動したことを容易に判別することができる。
【００７５】
さらにこの実施例では、登録された各モデルについて、それぞれ所定期間の読取処理でそのモデルが使用された頻度をモニタ４に表示できるようにしている。図７は、この表示例を示すもので、前記モデル登録時と同様にモデルの一覧が表示される。さらにこの表示画面では、モデルの選択操作を受け付けて、選択されたモデルの使用頻度を示す情報を表示（図示例ではパーセント表示）するようにしている。
【００７６】
このような表示によれば、過去の読取処理におけるモデルの使用状況に基づき、処理対象の２次元コードのマーキング状態の変化の傾向などを判別することができる。さらにその判別結果をマーキング装置の保守に反映させるようにすれば、２次元コードの品質が読取不可能な状態にまで劣化するのを防止することができ、安定した読取処理を行うことができる。
【００７７】
なお、前記図５の手順は、同種類の２次元コードを続けて処理する場合には有効であるが、種々の２次元コードをランダムな順序で処理するような場合には、モデルの選択にかかる優先順位をはずして、各モデルを登録順に選択するようにしてもよい。
【００７８】
図８は、モデルメモリに登録されたモデルを、モデル番号の順に選択した場合の手順を、ＳＴ２１〜３３のステップで示す。図中のｉは、選択するモデルを特定するためのカウンタであり、読取開始信号の入力に応じてｉを初期値の０に設定した後、ｉをインクリメントすることで選択対象を切り換えるようにしている（ＳＴ２２，２５，３３）。またｉがモデルの登録数ｉｍａｘに達しても２次元コードを読み取ることができなかった場合は、読取エラーが出力される（ＳＴ３１，３２）。モデルの選択以外の手順については、図５と同様であるので、詳細な説明は省略する。
【００７９】
なお、この実施例の２次元コードリーダ１では、モデルの選択について、各モデルを使用頻度順に選択する方法と各モデルを登録順に選択する方法とを、コンソール５の操作により切り替えできるようにしている。したがってユーザーは、使用目的や２次元コードのばらつき状態などに応じた選択方法を設定して使用することができる。
【００８０】
また上記実施例では、処理対象の２次元コードとしてデータマトリクスを示したが、これに限らず、ＱＲコードなど、他の規格の２次元コードについても、同様の方法で読取を行うことができる。また複数種の規格のコードを取り混ぜて処理することが要求される場合にも、各規格毎に設定したモデルを登録することによって対応することができる。
【００８１】
【発明の効果】
この発明によれば、２次元コードのマーキング状態にばらつきがあったり、マーキング状態がしだいに変化したり、複数種の２次元コードを処理対象とするなど、処理対象の２次元コードの状態が一定にならない場合でも、各２次元コードに応じたモデルを選択することにより、読取の失敗が起こる頻度を削減し、読取処理を安定して行うことができる。
【００８２】
またこの発明によれば、対応するモデルがないために読取処理を実行できなかった２次元コードについても、その処理対象の画像を用いて新たなモデルを追加登録することによって読取を行うことができ、読取精度を大幅に向上することができる。
【図面の簡単な説明】
【図１】この発明が適用された２次元コードリーダの外観および使用状態を示す図である。
【図２】２次元コードリーダの電気構成を示すブロック図である。
【図３】モデル登録時のモニタの表示画面の推移を示す説明図である。
【図４】ユーザーによる装置使用手順を示すフローチャートである。
【図５】読取処理にかかるコントローラの処理手順を示すフローチャートである。
【図６】デコード処理の詳細な手順を示すフローチャートである。
【図７】モデルの使用頻度の表示画面を示す説明図である。
【図８】読取処理にかかるコントローラの処理手順の他の例を示すフローチャートである。
【図９】代表的な２次元コードであるデータマトリクスを示す説明図である。
【図１０】ダイレクトマーキングによる２次元コードの例を示す説明図である。
【図１１】２次元コードのドットパターンにばらつきが生じる事例を示す説明図である。
【符号の説明】
１　２次元コードリーダ
２　コントローラ
３　カメラ
４　モニタ
５　コンソール
７　２次元コード
２１　ＣＰＵ
２２　メインメモリ
２３　入出力制御部
２４　画像処理部
２６　画像メモリ
２０３　カメラインターフェース
【図１】
2004021736.tif 000003
【図２】
2004021736.tif 000004
【図３】
2004021736.tif 000005
【図４】
2004021736.tif 000006
【図５】
2004021736.tif 000007
【図６】
2004021736.tif 000008
【図７】
2004021736.tif 000009
【図８】
2004021736.tif 000010
【図９】
2004021736.tif 000011
【図１０】
2004021736.tif 000012
【図１１】
2004021736.tif 000013