(57)【要約】【課題】  読取対象の光学情報コードの明るさに応じた調整処理を行えるようにして、読取精度を向上することを目的とする。【解決手段】  トリガ信号が入力されると、最適化処理部１１１は、撮像制御部１０８おいよび照明制御部１０９を制御してワークＷを撮像する。撮像素子１０１からの画素データは、ディジタル変換後、画像メモリ１１３および最適化処理部１１１に入力される。最適化処理部１１１は、各画素データを取り込みながら、所定大きさの領域単位に切り分けて処理し、２次元コードの特徴を最も良く反映した領域を抽出する。そして、この領域における画像データを用いてシャッタ速度を調整する。【選択図】  図４
2006163858.tif 000002
【特許請求の範囲】
【請求項１】
読取対象の光学情報コードを照明するための照明装置と、前記光学情報コードを撮像するための撮像装置と、撮像装置により生成された画像データを処理して前記光学情報コードをデコードする読取手段と、前記画像データが読取に適した状態になるように撮像条件および照明条件の少なくとも一方を調整する調整手段とを具備し、
前記調整手段は、前記撮像装置が出力する画像データに複数の領域を設定して、領域毎にその領域における明るさの変動幅を抽出し、この変動幅が所定値以上となる少なくとも一つの領域の画像データを用いて前記調整処理を実行することを特徴とする光学情報コード読取装置。
【請求項２】
前記撮像装置は各画素の画像データを前記調整手段にシリアル出力する機能を具備し、前記調整手段は、前記撮像装置から出力される画像データを順に取り込みながら、所定数の画素にかかる画像データを取り込む毎に、これらの画素から成る領域における前記明るさの変動幅を抽出する請求項１に記載された光学情報コード読取装置。
【請求項３】
前記撮像手段は指定された画素の画像データを出力する機能を具備し、前記調整手段は、前記撮像装置に対し、前記複数の領域に対応する画素を順に指定して各領域の画像データを出力させ、その領域毎に前記明るさの変動幅を抽出する請求項１に記載された光学情報コード読取装置。
【請求項４】
前記調整手段は、前記各領域につき、隣り合う画素間での明るさの差を抽出する処理と、前記明るさの差を積算する処理とを実行した後、前記明るさの差の積算値が最も大きい領域を抽出し、この領域における明るさの極大値に基づき前記調整処理を実行する請求項１〜３のいずれかに記載された光学情報コード読取装置。
【請求項５】
前記調整手段は、前記撮像装置から出力される画像データの明るさが所定の数値範囲内にあるか否かを判別する処理を実行し、前記画像データの明るさが前記数値範囲外であると判別したとき、前記撮像装置のシャッタ速度を所定の条件に基づき調整する請求項１〜４のいずれかに記載された光学情報コード読取装置。
【請求項６】
前記調整手段は、読取処理を指示するトリガ信号の入力に応じて前記撮像装置を駆動した後、前記複数の領域の中の少なくとも１つの領域における明るさの変動幅が所定のしきい値を上回るまで前記調整処理を実行するとともに、その調整された条件下で前記撮像装置を再駆動し、
前記読取手段は、前記調整手段の調整処理が終了したことを条件として、その時点における最新の画像データを用いて前記読取処理を実行する請求項１〜５のいずれかに記載された光学情報コード読取装置。
【請求項７】
前記トリガ信号を入力するための操作部がさらに設けられ、
前記調整手段は、前記調整処理に使用される領域における明るさの極大値および極小値を用いて前記撮像装置の合焦状態の適否を判別する手段を含んでおり、この手段により合焦状態が適切でないと判別されたとき、前記撮像装置を再駆動し、合焦状態が適切であると判別されたとき、調整処理を終了することを特徴とする請求項６に記載された光学情報コード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バーコードや２次元コードなどの光学情報コード（以下、単に「コード」という場合もある。）を撮像し、生成された画像中のコードに対する画像処理を行って、そのコードにエンコードされた情報を読み取る装置（以下、「光学情報コード読取装置」という。）に関する。特にこの発明は、生成された画像を用いて、撮像条件や照明条件が読取処理に最適な条件になるように調整する機能を具備する光学情報コード読取装置に関する。
【背景技術】
【０００２】
一般的な光学情報コード読取装置は、ＣＣＤやＭＯＳなどの撮像素子を含む撮像部やＬＥＤなどを含む照明部を有し、トリガ信号に応じて画像を生成して、その画像中の光学情報コードをデコードする処理を実行する。
【０００３】
この種の装置において、読取精度を確保するには、シャッタ速度などの撮像条件や照明強度などの照明条件が適切になるように調整する必要がある。特に、レーザー光や刻印機による打刻処理によりワークの表面に直接マーキングされた光学情報コードを読み取る場合には、ワークの表面状態やマーキングの方法によって反射率や反射光の進行方向等が変動するので、画像の明暗状態の変動も激しくなる。このため、撮像条件や照明条件の調整についても、ワークの種類やマーキング方法に応じた個別・具体的な調整が必要となる。
【０００４】
上記の調整処理は、従来はユーザーの手動操作により行われることが多かったが、設定に時間がかかる上、人によって設定状態が異なるものになるため、自動的に調整することが提案されている。たとえば、ＡＥＣ（オート  エクスポージャ  コントロール）、ＡＧＣ（オートゲインコントロール）など、シャッタ速度を自動調整するための方法を採用することができる。
【０００５】
具体的な調節処理を開示したものとして、下記の特許文献１がある。この特許文献１には、光学情報コードを撮像する処理と、生成された画像から画素レベルの所定の特徴を抽出する処理と、抽出された特徴に基づいてシャッタ速度を調整する処理とを複数サイクル繰り返して、シャッタ速度を最適化することが記載されている。
【０００６】
【特許文献１】特開２００４−１９４１７２  公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の特許文献１では、前記画像から明るさの最大レベルを抽出し、その最大レベルが所定の数値範囲に入るまでシャッタ速度を調整している。しかしながら、この方法では、光学情報コードの背景の一部に反射率の高い部分（ワークのエッジ、段差など）があると、その部分の明るさに基づいた調整が行われ、コード部分の明るさが最適化されない可能性がある。
【０００８】
この発明は上記の問題点に着目してなされたもので、読取対象の光学情報コードの明るさに応じた調整処理を行えるようにして、読取精度を向上することを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る「光学情報コード」は、視覚認識が可能であり、所定の情報がエンコードされたパターンを含むシンボルと考えることができる。代表的な光学情報コードとして、バーコードや２次元コードをあげることができる。また、この明細書では、光学情報コードが示す視覚認識可能な情報（たとえば白黒の配列状態）を「光学情報」という。
【００１０】
この発明に係る光学情報コード読取装置は、読取対象の光学情報コードを照明するための照明装置と、前記光学情報コードを撮像するための撮像装置と、撮像装置により生成された画像データを処理して前記光学情報コードをデコードする読取手段と、前記画像データが読取に適した状態になるように撮像条件および照明条件の少なくとも一方を調整する調整手段とを具備する。前記調整手段は、前記撮像装置が出力する画像データに複数の領域を設定して、領域毎にその領域における明るさの変動幅を抽出し、この変動幅が所定値以上となる少なくとも一つの領域の画像データを用いて前記調整処理を実行する。
【００１１】
上記の構成において、照明装置、撮像装置、読取手段、および調整手段は、それぞれ同一の筐体内に組み込むことができるが、これに限らず、たとえば照明装置および撮像装置をセンサヘッドとして独立させることもできる。また調整手段までをセンサヘッドに含めてもよい。また、この発明に係る光学情報コード読取装置には、前記読取手段によりデコードされた情報を表示または外部に出力する手段を設けるのが望ましい。
【００１２】
照明装置は、ＬＥＤなどの光源を具備するほか、この光源の点灯・消灯を制御する回路を含めることができる。また、この照明装置は、照明光量を変動可能なものであるのが望ましい。さらに、この照明装置は、照明の方向や照明色を変更できるように構成することもできる。
【００１３】
撮像装置は、ＣＣＤやＭＯＳなどの撮像素子やレンズなどを含むもので、光学情報コードを撮像し、調整処理や読取処理用の画像を生成することができる。また、この撮像装置には、前記撮像素子を駆動する駆動回路や、撮像素子から出力されたアナログ画像信号をディジタル変換するＡ／Ｄ変換回路を含めることができる。
読取手段は、この撮像装置により生成された画像データを取り込んで、その画像中の光学情報コードにエンコードされた情報をデコードする処理などを実行する。この読取手段は、上記各種処理のためのプログラムが格納されたコンピュータにより構成することができるが、これに限らず、一部の処理を専用の演算回路に実行させることもできる。なお、このコンピュータに付属するメモリには、処理対象の画像を格納することができる。
【００１４】
前記調整手段も、読取手段が組み込まれているコンピュータ内に設定することができるが、専用の演算回路として構成する方が望ましい。撮像装置から出力される画像データがメモリに入力されている間に同じ画像データを順次取り込みながら処理することにより、調整処理にかかる時間を短縮できるからである。また、画像データがメモリに格納されるのとほぼ同じタイミングで調整の必要があるか否かを判別することができるから、調整する必要がなければ、直ちに読取処理を開始することができる。なお、この発明においては、撮像装置に対しては、シャッタ速度、出力ゲイン、絞りのうちの少なくとも１つを調整することができる。また、照明装置に対しては、照明強度、照明方向、照明色のうちの少なくとも１つを調整することができる。
【００１５】
上記の調整手段が設定する領域の大きさは任意に設定することができるが、光学情報コードを表す画素が含まれるように領域が設定されたときに、そのコードの明暗の変化パターンが十分に含まれる大きさにするのが望ましい。たとえば、２次元コードであれば、複数のセルを横切る大きさに設定し、バーコードであれば、複数本のバーを横切る大きさに設定するとよい。なお、上記の領域は、水平方向または垂直方向に沿う方向に沿う一次元の領域としてもよいが、これに限らず、水平、垂直の各方向にそれぞれ所定の大きさを持つ２次元の領域としてもよい。また、各領域の大きさは均一にしてもよいが、これに限らず、コードの存在する可能性の高い領域を他の領域より大きくするなど、場所によって領域の大きさを変動させるようにしてもよい。
【００１６】
「領域における明るさの変動幅」としては、たとえば、領域内の明るさの最大値と最小値との差分絶対値を求めることができる。また領域内における明るさの変化に複数のピークが存在する場合には、これらピークの明るさの平均値と谷間部分の明るさの平均値とを求め、これらの平均値の差を求めてもよい。または、各ピークの高さの総和を求めてもよい。また、後記するように、隣り合う画素毎に明るさの差を求め、これらの差を積算する方法により、明るさの変動幅を求めることもできる。
【００１７】
たとえば、２次元コードやバーコードなどの白黒の配列状態から構成された光学情報コードを処理対象とする場合、このコードを表す画素が含まれる位置に設定された領域には、明暗の変化が現れると考えられる。したがって、光学情報コードを表す画素が含まれる領域では、コードの背景部分のみが含まれる領域よりも、明るさの変動幅が大きくなると考えられる。この発明では、この点に着目して、明るさの変動幅が所定値以上の領域の画像データを用いて撮像条件や照明条件を調整するので、光学情報コードにおける明るさを反映した調整が可能となる。
【００１８】
なお、調整処理に用いる領域は、明るさの変動幅が最大になる一領域としてもよいが、これに限らず、たとえば明るさの変動幅が所定値以上となる領域が複数あれば、これらの領域の画像データを用いて調整を行うこともできる。複数の領域の画像データを使用する場合には、たとえば領域毎に明るさの最大値または極大値を抽出した後、これらの値の平均値に基づいた調整処理を行ってもよい。
【００１９】
この発明の一態様に係る光学情報コード読取装置として、前記撮像装置に、各画素の画像データを前記調整手段にシリアル出力する機能を設け、前記調整手段を、前記撮像装置から出力される画像データを順に取り込みながら、所定数の画素にかかる画像データを取り込む毎に、これらの画素から成る領域における前記明るさの変動幅を抽出するように構成してもよい。
この態様では、ＣＣＤなどのシリアル出力タイプの撮像素子を撮像装置に含め、この撮像素子から出力される画像データを用いて、上記の領域毎に前記明るさの変動幅を抽出する処理を、画像の格納とほぼ同時に行うことが可能となる。
【００２０】
また、他の態様として、前記撮像装置に指定された画素の画像データを出力する機能を設け、前記調整手段を、撮像装置に対し、前記複数の領域に対応する画素を順に指定して各領域の画像データを出力させ、領域毎に前記明るさの変動幅を抽出するように構成してもよい。
この態様では、たとえば、ＭＯＳなどのランダムアクセス可能な撮像素子を撮像装置に含めることができる。この場合にも、各領域の画像データを順に読み出しながら上記の領域毎に前記明るさの変動幅を抽出する処理を、画像の格納とほぼ同時に行うことができる。しかも、領域指定により任意の画素の画像データを読み出せるから、各領域を間隔をあけて設定することにより、処理データの容量を減らすことが可能となり、より高速の調整処理を行うことができる。また、領域の位置や大きさを変えることができるから、読取対象のコードの大きさ等に応じて領域を調整することができる。
【００２１】
この発明では、好ましい態様に係る光学情報コード読取装置（上記２つの態様のいずれかの構成を含めることができる。）として、前記調整手段を、前記各領域につき、隣り合う画素間での明るさの差を抽出する処理と、前記明るさの差を積算する処理とを実行した後、前記明るさの差を積算値が最も大きい領域を抽出し、この領域における明るさの極大値に基づき前記調整処理を実行するように、構成することができる。
【００２２】
上記の態様によれば、明暗が変化する境界部分では、隣り合う画素間の明るさの差が大きくなる。光学情報コードの明暗が変化する部分に設定された領域では、前記明るさの差の積算値は大きくなると考えられる。他方、背景部分などの明るさの変化が小さい部分に設定された領域では、たとえその部分が周囲より明るくとも、明るさの差の積算値は小さくなると考えられる。
このように、撮像装置の視野に光学情報コードが含まれていることを前提とすれば、明るさの差の積算値が最も大きい領域にはコードを示す画素が含まれている可能性がきわめて高い。したがって、この積算値が最も大きい領域における明るさの極大値に基づく調整処理を行うことにより、光学情報コードの読取に適した調整処理を実行することができる。
【００２３】
さらに前記調整手段を、撮像装置から出力される画像データの明るさが所定の数値範囲内にあるか否かを判別する処理を実行し、前記画像データの明るさが前記数値範囲外であると判別したとき、前記撮像装置のシャッタ速度を所定の条件に基づき調整するように、構成してもよい。
【００２４】
上記において、画像データの明るさの数値範囲は、光学情報コードの読取処理が可能な明るさのレベルに基づき設定することができる。言い換えれば、明るさレベルが飽和状態にあるような画像や、明るさレベルがきわめて低く、明暗を識別できない画像など、コードの存在を認識することが困難な明るさレベルが除外されるような数値範囲を設定することができる。
上記の態様によれば、コードの読取に支障があるような明るさレベルの画像に対しては、シャッタ速度を大幅に変更する調整を行うことができるから、明るさが適切なレベルに調整されるまでの時間を短くすることができる。
【００２５】
さらに前記調整手段は、読取処理を指示するトリガ信号の入力に応じて前記撮像装置を駆動した後、前記複数の領域のうちの少なくとも一つの領域における明るさの変動幅が所定のしきい値を上回るまで前記調整処理を実行するとともに、その調整された条件下で前記撮像装置を再駆動するように構成することができる。この場合、読取手段は、前記調整手段の調整処理が終了したことを条件として、その時点における最新の画像データを用いて前記読取処理を実行することができる。
【００２６】
上記の態様において、トリガ信号は、ユーザーの操作に応じて、または外部機器やワーク検出用のセンサから入力することができる。また、「調整処理に使用される領域」とは明るさの変動幅が所定値以上となる領域のことであり、「所定のしきい値」は、適切な明るさの光学情報コードで抽出される明るさの変動幅に基づいて設定することができる。
この態様によれば、トリガ信号が入力されると、撮像処理と調整処理とを複数サイクル繰り返した後、画像中のコードの明るさが適切になった時点で調整処理を終了し、その時点における最新の画像データを用いて読取処理を実行することができる。なお、「最新の画像データ」は、最後の調整処理が行われた後、その調整された条件下での撮像処理で得られた画像データと考えることができる。
【００２７】
さらに上記態様の光学情報コード読取装置には、トリガ信号を入力するための操作部を設けてもよい。この場合の前記調整手段は、調整処理に使用される領域における明るさの極大値および極小値を用いて前記撮像装置の合焦状態の適否を判別する手段を含んでおり、この手段により合焦状態が適切でないと判別されたとき、前記撮像装置を再駆動し、合焦状態が適切であると判別されたとき、調整処理を終了する。
【００２８】
上記態様の光学情報コード読取装置は、いわゆる「手持ち式のコードリーダ」に該当すると考えることができ、操作部は、読取操作を指示するためのものと考えることができる。すなわち、ユーザーが照明装置や撮像装置を含む読取ヘッドをワークにかざして操作部を操作することにより、所定サイクル分の撮像処理と調整処理とが実行され、調整後の画像を用いた読取処理が行われると考えることができる。
【００２９】
この態様では、明るさの変動量が適切であることに加え、合焦状態が適切であることを読取処理の開始要件としている。コードリーダの設置位置が適切でない場合には、明るさレベルには問題はなくとも、合焦状態が適切でないために明暗の切り分けに不備が生じ、デコードに失敗する可能性がある。このように合焦状態が適切でない場合には、調整処理を行わずに再度の撮像処理が行われる。この間にユーザーがコードリーダの設置位置を調整して合焦状態が適切になれば、調整処理を終了し、読取処理を行うことが可能となる。
なお、合焦状態の適否は、たとえば前記領域における明るさの極大値から極小値までの傾きを用いて判別することができる。また極大値や極小値が複数ある場合には、隣り合う極大値と極小値との間の傾きを求めた上で、これらの平均値を求めることができる。
【発明の効果】
【００３０】
この発明によれば、画像中の光学情報コードの明るさに基づいて撮像条件や照明条件を調整することができるので、コードの読取に適した条件を設定して撮像を行うことができる。したがって、コードの背景の一部に強い反射光によるノイズが生じていても、その影響を受けずに読取処理を行うことができ、読取処理の精度を高めることができる。
【発明を実施するための最良の形態】
【００３１】
図１および図２は、この発明が適用された手持ち式の２次元コードリーダの外観を示すもので、図１は２次元コードリーダの背面側の構成を、図２は２次元コードリーダの前面側の構成を、それぞれ示す。
【００３２】
この２次元コードリーダ１の本体を構成するケース体１０には、前面の上半分に読取窓１１が設けられるとともに、背面の上方位置に液晶パネル１２ａによるモニタ部１２が設けられる。ケース１０の下半分は、前面側を後退させることにより握り部１３として機能する。また、ケース１０の両側面には、読取開始を指示するための操作ボタン１４が設けられる。
【００３３】
ケース体１０の内部には、つぎに説明する光学系のほか、種々の回路が搭載された基板（図示せず。）が配備される。この基板は、上位機器（図４に示す。）にコード１５を介して接続される。このコード１５には、入出力ラインや電源ラインが含まれており、ケース体１０の下端部から引き出されて上位機器に接続される。
【００３４】
図３は、前記２次元コードリーダ１に組み込まれる光学系の構成を示す。
この光学系は、前記読取窓１１の後方に配備されるもので、撮像素子１０１、撮像用レンズ１０２、ミラー１０３、面発光型の照明器１０４、ＬＥＤランプ１０５などにより構成される。なお、図中のＷは、２次元コードが付されたワークである。
【００３５】
面発光型の照明器１０４は、その照射面が前記読取窓１１の窓面に平行になるように配備される。この照明器１０４の内部には、複数種の色彩毎のチップＬＥＤ（図示せず。）が配列されている。これらのＬＥＤの点灯位置や点灯数を調整することによって、照明色や照明強度を切り替えることができる。
【００３６】
ＬＥＤランプ１０５は、前記ワークＷに斜光照明を施すためのもので、前記照明器１０４から所定距離離れた場所に、光軸を所定角度傾けて配備される。なお、この例では、ＬＥＤランプ１０５を１個しか示していないが、勿論、複数のＬＥＤランプ１０５を配備することができる。また、これらのＬＥＤランプ１０５の光軸をそれぞれ異なる方向に向けて配備することもできる。
【００３７】
上記において、照明器１０４またはＬＥＤランプ１０５から照射された光は、ワークＷの上面で反射した後、ミラー１０３および撮像用レンズ１０２を介して撮像素子１０１に導かれる。撮像素子１０１は、この反射光の受光状態下で作動して、２次元コードを含むワークＷの画像を生成する。生成された画像は、前記回路上の処理回路に与えられて、後記する調整処理や読取処理が実行される。
【００３８】
図４は、前記２次元コードリーダ１に設定された機能を示す。
この２次元コードリーダ１には、撮像制御部１０８、照明制御部１０９、Ａ／Ｄ変換部１１０、最適化処理部１１１、表示処理部１１２、画像メモリ１１３、画像処理部１１４、デコード処理部１１５、入出力処理部１１６、出力部１１７などが設けられる。このうち、画像処理部１１４、デコード処理部１１５、入出力処理部１１６は、マイクロコンピュータのＣＰＵに設定される機能であり、その他は、それぞれ専用の回路により構成される。なお、図中のトリガ信号は、前記操作スイッチ１４の操作により生じる信号である。またこの図４では、前記照明器１０４に内蔵されるチップＬＥＤおよび斜光照明用のＬＥＤランプ１０５を、複数の光源１０７として示す。
【００３９】
この実施例の撮像素子１０１はＣＣＤであり、撮像制御部１０８からの駆動信号に応じて各画素の画像データをシリアル出力する。これらの画像データはＡ／Ｄ変換部１１０でディジタル変換された後、画像メモリ１１３に格納されるとともに、最適化処理部１１１に与えられる。また、各光源１１７は、それぞれ照明制御部１０９からの駆動信号に応じてオン／オフ動作する。
【００４０】
前記画像処理部１１４は、画像メモリ１１３に格納された画像から２次元コードのパターンを抽出した後、２値化処理などによりコード中の白セルと黒セルとを切り分け、各セルが表す光学情報を符号化する。デコード処理部１１５は、この符号化されたデータ配列を一定の単位（たとえば８ビット）毎に切り分けるなどして、２次元コードの光学情報をデコードする。デコード後のデータ（以下、「読取データ」という。）は、入出力処理部１１６から出力部１１７に与えられた後、上位機器２に出力される。
【００４１】
表示処理部１１２は、前記モニタ部１２に、読取対象の２次元コードの画像や前記読取データなどを表示させるためのものである。この表示処理のタイミングや表示するデータの内容は、前記ＣＰＵの図示しない機能により制御される。
【００４２】
前記操作スイッチ１４の操作によるトリガ信号は、撮像制御部１０８、照明制御部１０９、最適化処理部１１１、入出力処理部１１６などに与えられる。
撮像制御部１０８、照明制御部１０９、および最適化処理部１１１は、このトリガ信号に応じて後記する画像取得処理を実行し、読取処理に適した画像を取得する。一方、入出力処理部１１６は、前記トリガ信号を受けると、デコード処理部１１５から読取データが渡されるまで待機する。読取データを受け取ると、入出力処理部１１６は、前記出力部１１７を用いてこの読取データを上位機器２に出力する。
【００４３】
以下では、前記画像処理部１１４およびデコード処理部１１５により実行される一連の処理を「読取処理」という。前記最適化処理部１１１は、前記トリガ信号を受けて最初の撮像処理を行った後、生成された画像を用いてシャッタ速度や照明強度などを調整する。以後、撮像処理および調整処理を所定サイクル実行することにより、読取に適した画像が生成されると、読取処理が開始される。
【００４４】
ここで、前記最適化処理部１１１が実行する調整処理の概要を説明する。
前記撮像素子１０１で出力され、Ａ／Ｄ変換部１１０でディジタル変換された各画素の明るさデータ（以下、「画素データ」という。）は、最適化処理部１１１に順次入力される。最適化処理部１１１では、各画素データを取り込みながら、これらを複数の領域に切り分け、その中から２次元コードの特徴を最も良く反映した領域を１つ抽出する。そしてこの抽出した領域の画像データを用いて撮像条件や照明条件を調整するようにしている。
【００４５】
図５は、２次元コードの画像に対する領域の設定例を示す。この実施例の処理対象画像２００は、横方向（ｘ軸方向）に６４０画素、縦方向（ｙ軸方向）に４８０画素の大きさを有するもので、各画素データは、ｘ軸方向に沿って順に出力される。最適化処理部１１１は、これらの画素データを取り込みながら、６４画素ずつに切り分けて演算を実行するようにしている。具体的には、隣合う画素間での明るさの差を求める差分演算と、前記明るさの差の総和を求める積算演算とが領域毎に実行される。
【００４６】
上記の処理は、６４個の画素がｘ軸方向に沿って１次元配列された領域を、前記画像上に４８００個（ｘ軸方向に１０個、ｙ軸方向に４８０個となる。）設定し、これらの領域毎に、その領域内の明るさの変動幅を抽出する処理に相当する。
【００４７】
図５には、背景部分および２次元コード２０１の部分にそれぞれ設定された領域Ａ，Ｂが示されている。これらの領域Ａ，Ｂについて、領域内の一部における明るさの分布状態を図示すると、それぞれ図６（１）（２）のようになる。なお、図６（１）（２）および後記する図８では、図示の便宜のため、１つのセルの幅が５画素に相当するものとする。
【００４８】
２次元コードが存在しない背景部分の明るさをほぼ均一と考えると、図６（１）に示すように、この背景部分に設定された領域Ａにおける明るさは殆ど変化しない。したがって、隣り合う画素間の差はきわめて小さなものになり、その積算値も０に近くなると考えることができる。
【００４９】
一方、２次元コードの部分では、白セルと黒セルとの境界部分で明るさに大きな変動が生じる。したがって、２次元コード上に設定された領域Ｂでは、図６（２）に示すように、前記境界部分にかかる画素間で明るさの差が大きくなり、その差が前記積算値に反映される。
【００５０】
上記の原理に基づき、この実施例では、前記４８００個の領域の中から前記差の積算値が最大となる領域を、前記２次元コードの特徴を最も良く反映した領域として抽出する。そして、この領域の画像データを用いて撮像素子１０１のシャッタ速度を調整するようにしている。
【００５１】
シャッタ速度の調整は、明るさの極大値（以下、「ピーク」という。）を用いて行われる。たとえば、画像データが８ビット構成である場合には、図７に示すように、領域内の各ピークの平均値（以下、「ピーク平均値」という。）が２５５階調付近になるようにシャッタ速度を調整する。
【００５２】
ただし、この調整前のピークが２５５階調に近い場合には、撮像素子１０１に光が入りすぎてハレーションが生じている可能性がある。また、光が全く入射していない状態下でも、撮像素子１０１からは３０階調程度の信号が出力されるので、画像の明るさが３０階調に近い場合には、明暗を殆ど識別できない状態（以下、これを「暗状態」という。）となる。このような点に鑑み、この実施例では、調整前の画像中の最小の明るさが２５０階調以上の場合には、シャッタ速度を現在の１／４倍に設定して露光時間を短縮し、前記調整前の画像中の最大の明るさが３５階調以下の場合には、シャッタ速度を現在の４倍に設定して露光時間を長くするようにしている。
【００５３】
また、シャッタ速度の調整により画像の明るさが適切になっても、焦点が２次元コードに正しく合わせられていない場合には、コードの読取精度が低下する。そこでこの実施例では、シャッタ速度の調整後の画像についても、前記領域毎に明るさの変動幅を抽出し、その変動幅が最大になる領域における明るさの極小値（以下、「ボトム」という。）と前記ピークとを用いて合焦状態の適否を判別している。具体的には、図８に示すように、ボトム（●印の部分）からピーク（○印の部分）までの明るさ変化の傾きを求め、その傾きが所定のしきい値以上であれば、合焦状態は適切であると判断する。
【００５４】
なお、この実施例の２次元コードリーダ１では、手持ち式であることを考慮して、焦点の調整処理をユーザーに委ねることにしている。すなわち、合焦状態が適切であれば、その時点の画像を用いた読取処理が開始されるが、合焦状態が適切でない場合には、読取処理を実行せずに再度撮像が行われる。この間にユーザーが２次元コードリーダ１の位置を調整し、焦点が正しく合わせられると、再撮像により得られた画像を用いて読取処理を実行することができる。
【００５５】
図９は、前記最適化処理部１１１の主要な機能にかかる構成を示すもので、差分回路１２１、積算回路１２２、比較回路１２３、ピーク検出回路１２４、ボトム検出回路１２５、第２の差分回路１２６、２個の除算回路１２７，１２８，第２の比較回路１２９などが含まれる。また、図中の最上段のカウンタ１３０は、１領域を構成する画素を計数するためのもので、その計数値Ｃ１は０〜６４の範囲で変化する。その右のカウンタ１３１は、処理した領域の数を計数するためのもので、その計数値Ｃ２は０〜４８００の範囲で変化する。
【００５６】
前記画像を構成する各画素データによるデータ列（以下、「画素データ列」という。）は、カウンタ１３０および差分回路１２１に与えられる。また、この画素データ列は、差分回路１２１の前段に設けられた遅延回路１３２で１画素分遅延される。差分回路１２１は、この遅延回路１３２が保持した１つ前の画素データと現時点で入力した画素データとの差を算出する。
【００５７】
積算回路１２２には、前記演算結果の正負を判別するための比較回路や、負の演算結果を正に転換するための回路など（いずれも図示せず。）が含まれており、これらの回路により前記差分回路１２１で検出された差の絶対値を積算する。この積算処理は、カウンタ１３０の計数値Ｃ１に基づき、６４画素単位で行われる。６４画素目の積算が終了すると、その積算値が後段に出力されるとともに、回路内の保持値がクリアされ、新たな積算が開始される。このような動作により、前記４８００個の領域毎に明るさの変動幅が抽出される。
【００５８】
前記比較回路１２３は、積算回路１２２により求められた領域毎の明るさの変動幅を順に取り込んで、これを先に処理した領域の変動幅と比較する。ここでは、大きい方の値が選択され、その値およびその値に対応するカウンタＣ２の値が、図示しないレジスタに保存される。なお、この比較処理は、前記カウンタの計数値Ｃ２が「２」となった時点からスタートするもので、１回目の処理では、前段の遅延回路１３３に保持された１つ前の積算値（最初の領域における明るさの変動幅）との比較処理が行われる。その後は、前記レジスタに保持されている変動幅との比較処理が行われる。
【００５９】
比較回路１２３は、最終的に各領域の明るさの変動幅のうちの最大値（以下、「最大変動幅」という。）を抽出し、この最大変動幅に対応する計数値Ｃ２、すなわち最大変動幅を得たときの領域の位置を出力する。以下、この計数値Ｃ２により示される領域を「処理対象領域」という。
【００６０】
つぎに、ピーク検出回路１２４は、前記差分回路１２１からの毎時の出力値を微分するなどして、明るさのピークを検出する。ピーク検出回路１２４の後段には、検出されたピークの数を計数するためのカウンタ１３４が設けられている。
【００６１】
除算回路１２７は、各ピークの加算値をカウンタの計数値Ｃ３で割る演算により、前記ピーク平均値を算出する。この平均値の算出は、第４のカウンタ１３５の計数値Ｃ４がカウントアップする毎に行われる。このカウンタ１３５は、前記差分回路１２１からの出力を計数するもので、前記カウンタ１３０と同様に、６４画素毎にカウントアップされる。よって、除算回路１２７からは、領域毎のピーク平均値が出力される。このピーク平均値は、図示しない選択回路に与えられ、前記処理対象領域のピーク平均値が選択される。このピーク平均値が前記シャッタ速度の調整に使用される。
【００６２】
ボトム検出回路１２５は、前記差分回路１２１からの出力値に対し、ピーク検出回路１２４と同様の処理を行うことにより、明るさのボトムを検出する。
前記カウンタ１３５の計数値Ｃ４は、このボトム検出回路１２５や前記ピーク検出回路１２４による検出が行われる都度、その検出位置を示すデータとしてレジスタ等に保持される。第２の差分回路１２６は、ピーク検出回路１２４で検出されたピークの値、ボトム検出回路１２４で検出されたボトムの値、ならびにこれらの検出位置を入力し、ピークとボトムとを検出された順に組み合わせ、これらの値の差を求める。つぎの除算回路１２８では、差分回路１２６からの出力値をピーク−ボトム間の距離で割る演算により、ピーク−ボトム間の明るさ変化の傾きを抽出する。なお、ピーク−ボトム間の距離は、カウンタＣ４が示す検出位置により求められる。また、除算回路１２８には、ピーク−ボトムの組み合わせ毎に得られた明るさ変化の傾きを、領域毎に平均化するための回路も含まれる。
【００６３】
上記の差分回路１２６や除算回路１２８も、カウンタ１３５のカウントアップに応じて、領域毎に演算を実行する。比較回路１２９は、除算回路１２８からの出力のうち、処理対象領域に対応するものを取り込んで、これを所定のしきい値と比較する。この比較出力が前記合焦状態の適否を示すことになる。
【００６４】
なお、この図９には示していないが、最適化処理部１１１には、上記のほか、画素データ列を取り込んで、画像全体における明るさの最大値や最小値を検出する回路や、これらの検出値から前記ハレーションや暗状態を判別する回路が設けられる。撮像素子１０１が動作して画素データ列が出力されると、最適化処理部１１１の全ての回路が動作して、前記変動幅の最大位置におけるピーク平均値を算出する処理、合焦状態の適否を判別する処理、ハレーションや暗状態の発生の有無を判別する処理がそれぞれ並列して実行される。これらの処理結果は、図示しない制御回路に与えられる。制御回路は、各処理結果が示す値を所定の順序でしきい値と比較し、その比較結果に基づいていずれかの値を選択する。そして、その選択した値とその値が示すデータ種とに基づく調整処理を実行する。
【００６５】
図１０は、前記最適化処理部１１１がトリガ信号の入力に応じて実行する処理の内容を、フローチャート形式で表したものである。なお、図中の「Ｓ．Ｓ」は、シャッタ速度の略であり、「ＳＴ」は、ステップ（ＳＴＥＰ）の略である。以下、この図１０に基づき、最適化処理部１１１により実行される調整処理の詳細を説明する。
【００６６】
まず、前記トリガ信号が入力されると、最適化処理部１１１は、前記撮像制御部１０８および照明制御部１０９にそれぞれシャッタ速度および照明強度の初期値を与え、２次元コードの撮像を行わせる（ＳＴ１０１→ＳＴ１０２）。この撮像処理により、前記したように、領域毎の明るさの変動幅が抽出された後、最大変動幅および処理対象領域が特定され、その処理対象領域におけるピーク平均値、合焦状態の適否判別結果、ハレーションや暗状態の有無の判別結果などが生成される。
【００６７】
ここで前記処理対象領域における最大変動幅（比較回路１２３からの出力）が所定のしきい値以上であれば、この処理対象領域のピーク平均値を用いてシャッタ速度が調整される（ＳＴ１０３→ＳＴ１０４）。その後は、調整されたシャッタ速度に基づいて２回目の撮像処理が実行される（ＳＴ１０５）。
【００６８】
この２回目の撮像処理でも、最適化処理部１１１の各回路は最初の撮像時と同様に動作する。ここで、明るさの最大変動幅がしきい値以上であれば、その時点での画像をモニタ部１２に表示する（ＳＴ１０６→ＳＴ１０７）。なお、この表示制御は、最適化処理部１１１からの連絡を受けたＣＰＵにより実行される。
さらに前記ＳＴ１０５の撮像処理で得られた画像に対する合焦状態の判別結果が適切であれば、ＣＰＵに終了信号が出力され、処理終了となる。
【００６９】
なお、１回目の撮像処理で得られた画像における最大変動幅が前記しきい値を下回っている場合には、画像全体における明るさの最小値や最大値に基づいた調整が行われる。最小値が２５０階調以上であれば、ハレーションが生じているとみなされて、シャッタ速度が現在値の１／４に調整される（ＳＴ１１０→ＳＴ１１２）。また前記最大値が３５階調以下であれば、暗状態であるとみなされて、シャッタ速度が現在値の４倍に設定される（ＳＴ１１１→ＳＴ１１３）。
【００７０】
一方、前記最大値や最小値が３５〜２５０階調の範囲にある場合には、シャッタ速度は変更されずに照明強度が調整される（ＳＴ１１０→ＳＴ１１１→ＳＴ１１４）。この調整処理では、たとえば、前記最大値が所定の基準レベルになるように、消灯中の所定数の光源を点灯、または点灯中の所定数の光源を消灯させる。
最大変動幅が十分でない場合には、上記のような調整が行われた後、その調整された条件に基づき再度の撮像処理が実行される（ＳＴ１０２）。この撮像により最大変動幅が前記しきい値以上になれば、ＳＴ１０４以下の処理が実行される。
【００７１】
また、ＳＴ１０５の撮像処理で得られた画像に対する合焦状態が適切でない旨が判断されている場合には、ＣＰＵへの終了信号は出力されずに再び撮像処理が行われる（ＳＴ１０８→ＳＴ１０２）。さらに、新たに生成された画像を用いて、再び上記した流れによる調整処理が実行される。
なお、この実施例では、前記比較回路１２９からの出力が合焦状態が適切である旨を示すことのほか、処理対象領域のピーク平均値が所定値以上であることを、合焦状態が良好であると判別する条件に加えている。
【００７２】
さらに、この画像取得処理では、ユーザーが不用意に２次元コードリーダ１の位置を動かした場合にも対応できるようにしている。すなわち、シャッタ速度が調整された後の撮像処理（ＳＴ１０５）時に２次元コードリーダ１の位置が変更され、撮像領域内に２次元コードが含まれない状態になると、この時点で得た画像における最大変動幅がしきい値に満たない状態となり、再度、撮像処理が行われる（ＳＴ１０６→ＳＴ１０２）。この場合にも、新たな画像が生成された後に、最初の撮像時と同様の調整処理が実行される。
【００７３】
よって、合焦状態が適切でない場合や、２次元コードが視野に含まれなくなった場合には、ユーザーが２次元コードリーダ１の位置を調整することにより、画像が適正化される。なお、ＳＴ１０７で表示された画像は、つぎにこのＳＴ１０７が実行されるまで保持されるので、ユーザーは、合焦状態の適否を画面上で確認しながら調整操作を行うことができる。
【００７４】
図１１は、前記２次元コードリーダ１で実行される一連の処理の流れを示す。
電源供給により起動すると、まず前記モニタ部１２の画面がオン設定される（ＳＴ１）。この後、トリガ信号が入力されると、前記図１０に示した画像取得処理が実行される（ＳＴ２→ＳＴ３）。この処理が終了し、明るさや合焦状態が適切な画像が生成されると、前記画像処理部１１４およびデコード処理部１１５による読取処理が実行される（ＳＴ４）。
【００７５】
この読取処理において、光学情報の読取に成功すると、取得した読取データがモニタ部１２に表示されるとともに、前記上位機器２に出力される（ＳＴ５→ＳＴ１２）。
一方、読取処理に失敗した場合には、再度のトリガ信号に応じて照明の変更が行われる（ＳＴ５→ＳＴ６→ＳＴ７）。照明変更後は、再びＳＴ３の画像取得処理が実行される。
【００７６】
なお、ＳＴ７の照明変更処理では、たとえば前記照明器１０４による拡散照明をＬＥＤランプ１０５による遮光照明に切り替えたり、照明器１０４による照明色を変更するなどの処理が行われる。
【００７７】
また、起動後、所定の時間（ｔ秒）が経過してもトリガ信号が入力されなかった場合には、モニタ部１２の画面が消灯される（ＳＴ２→ＳＴ８→ＳＴ９）。また、読取失敗後、所定の時間が経過してもトリガ信号が入力されなかった場合には、モニタ部１２にエラーメッセージなどを表示し、ＳＴ２に戻ってトリガ信号に待機する。なお、図１０には示していないが、ＳＴ９の画面消灯後にトリガ信号が入力された場合には、画面は再びオン状態に設定される。
【００７８】
上記構成の２次元コードリーダ１によれば、ユーザーが前記読取窓１１をワークＷ側に向けて操作スイッチ１４を操作すると、撮像処理およびシャッタ速度などの調整処理が所定サイクル実行され、読取処理に適した画像が生成される。調整処理の大半は、前記画素データ列を取り込む過程で進行する。画素データ列が画像メモリ１１３に格納された後は、シャッタ速度や照明を調整する程度の処理が行われるだけであるから、きわめて短い時間で終了する。よって、画像メモリ１１３に格納されたデータを用いて調整を行う方法と比較すると、処理時間が格段に短縮される。
【００７９】
さらに、前記図１０の処理によれば、照明状態や合焦状態が良好であれば、２回の撮像処理で読取に適した画像を得ることができ、処理時間をより一層短縮することができる。
【００８０】
なお、図１０のＳＴ１０１で設定する初期値には、あらかじめ標準設定されたものを使用しても良いが、直前に調整された値を使用するようにしてもよい。この場合には、最初の撮像処理（ＳＴ１０２）で得た画像につき、最大変動幅が前記しきい値以上であり、かつピーク平均値が所定のレベル以上であれば、シャッタ速度の調整を行わずに読取処理に移行するようにしてもよい。
【００８１】
上記の設定によれば、２次元コードリーダ１を手持ちせずに所定位置に固定し、同種のワークに対する読取処理を続けて実行する場合の処理を高速化できる。すなわち、最初のワークに対する撮像条件や照明条件を適切な状態に設定できれば、以後のワークについてはほぼ同様の条件を適用することができ、１つのワークに対する処理時間を大幅に短縮することが可能となる。
【００８２】
なお、上記の実施例では、主としてシャッタ速度の調整により画像の明るさを調整するようにしたが、これに代えて、撮像素子１０１からの出力ゲインを調整してもよい。または、図示しない絞りの調整によって、明るさを調整するようにしてもよい。
【００８３】
また、上記の実施例では、撮像素子１０１としてＣＣＤを使用したが、これに代えて、ＭＯＳなどのランダムアクセスが可能な撮像素子を用いてもよい。この場合には、図１２に示すように、処理対象画像２００上に所定間隔おきに領域２０を設定し、これらの領域２０に対応する画素データを順に読み出しながら各領域の明るさの変動幅を求めることができる。よって、処理データの容量を削減でき、調整処理にかかる時間を大幅に短縮することができる。また、この方法を使用する場合には、各画素が１次元配列された領域に限らず、２次元配列された領域を処理することが容易になる。
勿論、調整処理の後は、その最終の調整に基づく撮像を行って、２次元コードの全体画像を取得し、読取処理を行うのが望ましい。
【図面の簡単な説明】
【００８４】
【図１】この発明の一実施例にかかる２次元コードリーダの背面側の構成を示す斜視図である。
【図２】２次元コードリーダの前面側の構成を示す斜視図である。
【図３】２次元コードリーダの光学系の構成を示す説明図である。
【図４】２次元コードリーダの機能ブロック図である。
【図５】処理対象画像に対する領域の設定例を示す説明図である。
【図６】図５の領域Ａ，Ｂにおける明るさの分布状態を示す説明図である。
【図７】シャッタ速度の調整方法を示す説明図である。
【図８】合焦状態の適否判別に用いるパラメータの抽出例を示す説明図である。
【図９】最適化処理部の主要構成を示すブロック図である。
【図１０】画像取得処理の流れを示すフローチャートである。
【図１１】２次元コードリーダにおける処理の流れを示すフローチャートである。
【図１２】処理対象画像に対する領域設定の他の例を示す説明図である。
【符号の説明】
【００８５】
１  ２次元コードリーダ
１４  操作スイッチ
１０１  撮像素子
１０７  光源
１０８  撮像制御部
１０９  照明制御部
１１１  最適化処理部
１１３  画像メモリ
１１４  画像処理部
１１５  デコード処理部
１１６  入出力処理部
２００  処理対象画像
２０１  ２次元コード
Ｗ  ワーク
【図１】
2006163858.tif 000003
【図２】
2006163858.tif 000004
【図３】
2006163858.tif 000005
【図４】
2006163858.tif 000006
【図５】
2006163858.tif 000007
【図６】
2006163858.tif 000008
【図７】
2006163858.tif 000009
【図８】
2006163858.tif 000010
【図９】
2006163858.tif 000011
【図１０】
2006163858.tif 000012
【図１１】
2006163858.tif 000013
【図１２】
2006163858.tif 000014