(57)【要約】【課題】情報読取の高速化を図る。【解決手段】光学的情報読取装置において、読取対象の情報の画像を、設定されたゲイン値とシャッタ速度で画像データとして取り込み、その画像データについて明度の代表値を求め、その値から取り込んだ画像データがデコードに適さないと判断された場合に、シャッタ速度を変えずに上記明度の代表値が所定の目標値になるような新たなゲイン値を算出するゲイン値算出手段と、その手段が算出した新たなゲイン値を所定の高域閾値及び低域閾値と比較するゲイン値判定手段と、その手段の比較結果に応じて、上記新たなゲイン値が適当な値であればそのまま採用してシャッタ速度は変化させず、適当な値でなければ上記新たなゲイン値を調整すると共にそれに応じてシャッタ速度を調整して再度画像データの取り込みを行わせるゲイン値／シャッタ速度制御手段とによって露出制御を行う。【選択図】        図５
2004213331.tif 000002
【特許請求の範囲】
【請求項１】
読取対象の情報の画像を、設定されたゲイン値とシャッタ速度で画像データとして取り込む画像データ取込手段と、
該手段が取り込んだ画像データについて明度の代表値を求める測光手段と、
該手段によって求めた代表値が飽和しておらずかつ予め定めた低域閾値よりも大きい適正値か否かを判定する代表値判定手段と、
該手段が前記代表値を適正値と判定した場合に前記取り込んだ画像データをデコードするデコード手段と、
前記代表値判定手段が前記代表値を適正値でないと判定した場合に露出条件を変更し、変更後の条件で前記画像データ取り込み手段に再度画像データの取り込みを行わせる露出制御手段とを備え、
該露出制御手段が、
（ａ）前記画像データ取り込み手段のシャッタ速度を変えずに前記明度の代表値が所定の目標値になるような新たなゲイン値を算出するゲイン値算出手段
（ｂ）該手段が算出した新たなゲイン値を所定の高域閾値及び低域閾値と比較するゲイン値判定手段
（ｃ）該手段が前記新たなゲイン値が前記低域閾値以上かつ前記高域閾値以下であると判定した場合には前記シャッタ速度を変更せずに前記新たなゲイン値を前記ゲイン値として採用し、それ以外の場合には比較結果に従って前記新たなゲイン値を変更して前記ゲイン値として採用すると共にそれに応じて前記シャッタ速度を変更し、それぞれ前記ゲイン値とシャッタ速度の条件で前記画像データ取り込み手段に再度画像データの取り込みを行わせるゲイン値／シャッタ速度制御手段
を有することを特徴とする光学的情報読取装置。
【請求項２】
請求項１記載の光学的情報読取装置であって、
前記読取対象の情報を照明する照明手段を有し、
前記露出制御手段がさらに、
前記読取対象の情報の周辺の明るさを示す明るさパラメータを算出する手段と、
前記明るさパラメータが所定の閾値以上か否かを示す暗さフラグを設定する手段と、
前記明るさパラメータの値と前記暗さフラグの内容とによって前記照明手段の点灯／消灯を制御することによって正反射を防止する手段とを有することを特徴とする光学的情報読取装置。
【請求項３】
請求項１又は２記載の光学的情報読取装置であって、
前記ゲイン値算出手段は、前記代表値をＶ，前記目標値をＶｔ，前記画像データ取込手段における暗電流によるオフセットをＶ０，画像データ取り込み時のゲイン値をＧ，前記新たなゲイン値をＧ′，０＜γ１≦１の範囲で定める第１のフィードバック係数をγ１として、
Ｇ′＝（１＋γ１（Ｖｔ−Ｖ）／（Ｖｔ−Ｖ０））×Ｇ
なる式によって前記新たなゲイン値を算出し、
任意に定めた２以上の整数をｎ，０＜γ２≦１の範囲で定める第２のフィードバック係数をγ２，０＜γ３≦１の範囲で定める第３のフィードバック係数をγ３として、
前記ゲイン値／シャッタ速度制御手段は、前記新たなゲイン値が前記低域閾値より小さい値であった場合には前記新たなゲイン値をγ２×ｎ倍に変更すると共に前記シャッタ速度をγ３×（１／ｎ）倍に変更し、前記新たなゲイン値が前記高域閾値より大きい値であった場合には前記新たなゲイン値をγ２×（１／ｎ）倍に変更すると共に前記シャッタ速度をγ３×ｎ倍に変更する機能を有することを特徴とする光学的情報読取装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記録媒体に記録されたバーコードや二次元コードのような光学的パターンを始めとする光学的情報を読み取るための、バーコードスキャナ，２次元コードスキャナ，マルチコードスキャナ等の光学的情報読取装置に関し、特に、露出の制御に特徴を有する光学的情報読取装置に関する。
【０００２】
【従来の技術】
光学的情報読取装置としては、従来から、例えば太さの異なる長方形のバー（黒バー）とスペース（白バー）との平行な組み合わせにより情報を表示するバーコードを読み取るためのバーコードスキャナ、あるいはバーコードと同様な矩形領域に、バーコードを積み重ねたように、あるいは碁盤上に石を並べたように黒と白のパターンを配列して高密度の情報を表示する二次元コードの光学的パターンを読み取るための二次元コードスキャナが知られている。
さらに近年は、バーコードと二次元コードの両方を読み取ることができるマルチコードスキャナも登場し、その需要が高まっている。
【０００３】
このようなマルチコードスキャナにおいては、読み取り対象のコードの画像を取り込むために、ＣＭＯＳイメージセンサやＣＣＤイメージセンサなどの固体撮像素子を使用する場合が多い。そして、カメラで物体を撮影するように、コードの画像を撮像し、そのデータに様々な処理を加えた上で、デコードしてテキストデータやバイナリーデータ等を出力する。
また、汎用のマルチコードスキャナの使用領域は、夜間などにおける暗い場所（数ルクス）から、晴天時の屋外などの１０００００ルクスに達する場所にまで及ぶ。従って、どのような光量であってもコードの画像を適切に読み取るために、露光調節が重要である。
【０００４】
上述のような固体撮像素子では、周知のように、電子シャッタによって露出制御を行っている。図８は、ＣＭＯＳセンサにおける電子シャッタの制御タイミングを示した図である。
ＣＭＯＳセンサは、まずイメージエリアに蓄積されている無効電荷をリセットし、その後有効蓄積動作を開始する。そして、フィールド単位で蓄積した電荷を掃き出す。この掃き出しタイミングは、ＣＭＯＳセンサに搭載されたタイミングジェネレータによって制御され、その信号によって電子シャッタ速度が決定される。掃き出しタイミングでフィールド単位の電荷が掃き出されると、その電荷は、次のフィールドの電荷蓄積時間内に読み出され、１フィールド分遅延して撮像（明るさ）信号が出力されることになる。１フィールド当りの時間は３０ミリ秒が一般的である。（特許文献１参照）
【０００５】
ここで、電子シャッタ速度が遅い場合には、露出時間が長くなり、蓄積される電荷は多くなり、撮像信号レベルが高くなる。逆に電子シャッタ速度が速い場合には、露出時間が短くなり、蓄積される電荷は少なくなり、撮像信号のレベルが低くなる。
ここでは、ＣＭＯＳセンサの電子シャッタのしくみを例示したが、上記のＣＣＤセンサにおいても、フィールド画像の明るさ信号により電子シャッタの速度制御が行われることは同じである。
このような電子シャッタの露出制御は、例えば特許文献２に記載されている。
【０００６】
また、マルチコードスキャナ、あるいはバーコードスキャナには、物品のコードが貼付されている領域を照明するための光源として、ＬＥＤ（発光ダイオード）で構成された発光体が装備されている。この発光体は、上述のような暗い場所では、コード読み取りの光量不足を補う効果を有する。
しかしながら、被写体とスキャナ光学部との距離が約１００ｍｍ程度と近いために、ＬＥＤの発する光がそのまま被写体から正反射して戻ってきて、画像データの一部が空白の状態になり、画像品質やひいてはコードの読取精度を劣化させてしまうことがある。さらに、ユーザがコードにスキャナの投光口を正対するようにして使用することはよく見られる光景であるが、この場合も、上述と同様にＬＥＤの発する光がコードの画像に映りこんで、画像品質を劣化させてしまう。この正反射状態のコード画像への影響を避けるための技術としては、例えば読取信号の基準レベルが負方向に大きく変動した場合に正反射が発生したと判断して使用する投光部を切り換える手法が、特許文献３に開示されている。また、正反射による光がセンサに入射しないように光学系を設計する手法が、特許文献４及び特許文献５に開示されている。
【０００７】
【特許文献１】
特開平１０−２２４６９６号公報
【特許文献２】
特開平９−１８１９８３号公報
【特許文献３】
特開平８−１２９５９７号公報
【特許文献４】
特開平６−２１５１７０号公報
【特許文献５】
特開平１１−３２８２９８号公報
【０００８】
【発明が解決しようとする課題】
ところで、二次元コードはデコードの処理が複雑で処理に時間がかかるため、バーコードスキャナのみを使用しているユーザが、二次元コードスキャナあるいはマルチコードスキャナを利用すると、デコード処理時間を長く感じるものである。従って、二次元コードの読み取りであっても、ユーザがストレスを感じないよう迅速に、例えば３００ミリ秒以内で読み取れるようにすることが求められている。
【０００９】
ここで、読み取りの高速化には、デコードの速度のみならず、デコードに供する適当な画像データの取得にかかる時間の短縮も重要である。この点について、特許文献２に記載のようにシャッタ速度のみで露光調整をする場合、その調整が反映された画像データが出力されるまでに１フィールドの遅延が生じてしまうので、高速化には限界があった。
また、正反射の悪影響が強い場合にはデコードを正常に行うことができないため、これを防止すると共に、デコード不可と思われる場合には速やかに再読み取りを行うことが望ましい。しかし、特許文献４あるいは特許文献５に記載のようにレンズ光学系を特別な設計にするにはコストと労力がかかり、特許文献３に記載の方式では、基準レベルの判定の処理は負担が大きく、正反射の有無の判断に時間がかかるという問題があった。
この発明は、これらの問題を解決し、光学的情報読取装置において、情報読取の高速化を図ることを目的とする。
【００１０】
【課題を解決するための手段】
上記の目的を達成するため、この発明は、光学的情報読取装置において、読取対象の情報の画像を、設定されたゲイン値とシャッタ速度で画像データとして取り込む画像データ取込手段と、その手段が取り込んだ画像データについて明度の代表値を求める測光手段と、その手段によって求めた代表値が飽和しておらずかつ予め定めた低域閾値よりも大きい適正値か否かを判定する代表値判定手段と、その手段が上記代表値を適正値と判定した場合に上記取り込んだ画像データをデコードするデコード手段と、上記代表値判定手段が上記代表値を適正値でないと判定した場合に露出条件を変更し、変更後の条件で上記画像データ取り込み手段に再度画像データの取り込みを行わせる露出制御手段とを設け、その露出制御手段に、
（ａ）上記画像データ取り込み手段のシャッタ速度を変えずに上記明度の代表値が所定の目標値になるような新たなゲイン値を算出するゲイン値算出手段
（ｂ）その手段が算出した新たなゲイン値を所定の高域閾値及び低域閾値と比較するゲイン値判定手段
（ｃ）その手段が上記新たなゲイン値が上記低域閾値以上かつ上記高域閾値以下であると判定した場合には上記シャッタ速度を変更せずに上記新たなゲイン値を上記ゲイン値として採用し、それ以外の場合には比較結果に従って上記新たなゲイン値を変更して上記ゲイン値として採用すると共にそれに応じて上記シャッタ速度を変更し、それぞれ上記ゲイン値とシャッタ速度の条件で上記画像データ取り込み手段に再度画像データの取り込みを行わせるゲイン値／シャッタ速度制御手段
を設けたものである。
【００１１】
このような光学的情報読取装置において、上記読取対象の情報を照明する照明手段を設け、上記露出制御手段にさらに、上記読取対象の情報の周辺の明るさを示す明るさパラメータを算出する手段と、上記明るさパラメータが所定の閾値以上か否かを示す暗さフラグを設定する手段と、上記明るさパラメータの値と上記暗さフラグの内容とによって上記照明手段の点灯／消灯を制御することによって正反射を防止する手段とを設けるとよい。
【００１２】
さらに、上記ゲイン値算出手段を、上記代表値をＶ，上記目標値をＶｔ，上記画像データ取込手段における暗電流によるオフセットをＶ０，画像データ取り込み時のゲイン値をＧ，上記新たなゲイン値をＧ′，０＜γ１≦１の範囲で定める第１のフィードバック係数をγ１として、
Ｇ′＝（１＋γ１（Ｖｔ−Ｖ）／（Ｖｔ−Ｖ０））×Ｇ
なる式によって上記新たなゲイン値を算出する手段とし、任意に定めた２以上の整数をｎ，０＜γ２≦１の範囲で定める第２のフィードバック係数をγ２，０＜γ３≦１の範囲で定める第３のフィードバック係数をγ３として、上記ゲイン値／シャッタ速度制御手段に、上記新たなゲイン値が上記低域閾値より小さい値であった場合には上記新たなゲイン値をγ２×ｎ倍に変更すると共に上記シャッタ速度をγ３×（１／ｎ）倍に変更し、上記新たなゲイン値が上記高域閾値より大きい値であった場合には上記新たなゲイン値をγ２×（１／ｎ）倍に変更すると共に上記シャッタ速度をγ３×ｎ倍に変更する機能を設けるとよい。
【００１３】
【発明の実施の形態】
以下、この発明の好ましい実施の形態を図面を参照して説明する。
まず、この発明の光学的情報読取装置の実施形態であるマルチコードスキャナ（以下「スキャナ」という）のハードウェア構成について図１及び図２を用いて説明する。図１はそのスキャナの構成を示すブロック図、図２は図１に示したＣＭＯＳイメージセンサの構成をより詳細に示すブロック図である。
このスキャナ１は、バーコードとニ次元コードの両方を読み取ることができるスキャナであり、図１に示すように、別基板となっている光学ヘッド１０及びデコーダ３０を備え、ホストコンピュータ２に接続されている。ホストコンピュータ２は、スキャナ１によってコードを読み取って得たデコード後のデータを処理する装置である。
【００１４】
そして、スキャナ１の光学ヘッド１０は、レンズ１１，ＣＭＯＳイメージセンサ１２，ガイド用ＬＥＤ１３，照明用ＬＥＤ１４を備えている。レンズ１１は、読み取り対象の情報を含むコード記号面３からの反射光をＣＯＭＳイメージセンサ１２上に結像させるためのものであり、ＣＭＯＳセンサ１２はその画像を設定されたゲイン値とシャッタ速度（シャッタ開時間で表わす。以下同じ。）で画像データとして取り込む画像データ取込手段である。また、ガイド用ＬＥＤ１３は読み取り対象のコード記号の範囲を示すガイド光を照射するためのＬＥＤであり、照明用ＬＥＤ１４はコード記号自体を照明する照明手段である。
【００１５】
このうちＣＭＯＳイメージセンサ１２は、図２に示すように、イメージエリア２１，ＣＤＳ（二重相関サンプリング）回路２２，ＡＧＣ（自動ゲイン制御）回路２３，Ａ／Ｄ変換回路２４，タイミングジェネレータ２５，デコーダ回路２６，基準電圧回路２７を備えている。
イメージエリア２１は、フォトダイオードが配列された受光部であり、ＣＭＯＳイメージセンサ１２で取り込むべき画像はこの部分に結像される。そして、その画像のデータはフォトダイオードに電荷として蓄積され、増幅トランジスタを介して電圧信号として取り出される。ＣＤＳ回路２２はこの信号のノイズを低減させるためのサンプリング処理を行う回路であり、ＡＧＣ回路２３はそのサンプリング後の信号がＡ／Ｄ変換回路２４で適正に処理されるよう、基準電圧回路２７からの基準電圧によってゲイン調整する回路である。
【００１６】
Ａ／Ｄ変換回路２４はこのゲイン調整後の信号をＡ／Ｄ変換し、後段のデコーダ３０のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）３２に送信する回路である。そしてまた、その信号を制御信号として基準電圧器を介してＡＧＣ回路２３に帰還させる。
デコーダ回路２６は、ＣＰＵ３１からの制御コマンドをデコードし、これに従って各部への制御信号を発する回路である。この制御コマンドにはシャッタ速度とゲイン値を設定するコマンドを含む。
【００１７】
タイミングジェネレータ２５は、マスタークロックＭＣＫから、データ読み出しタイミングを制御するタイミング信号ＨＤ，ＶＤ，ＤＡＴＡＣＬＫを生成し、また、フォトダイオードへの電荷蓄積期間であるシャッタ速度も制御する回路である。シャッタ速度は、デコーダ回路２６からの制御信号に従ってＣＰＵ３１の指定するシャッタ速度になるよう制御する。
基準電圧回路２７は、デコーダ回路２６からの制御信号に従って基準電圧を発生させることにより、ＡＧＣ回路２３におけるゲインのレベルを、ＣＰＵ３１の指定するゲイン値に応じて調整する。
【００１８】
なお、ＣＭＯＳイメージセンサ１２における動作、例えばイメージエリア２１におけるデータ取り込みモードや、出力信号の形態、信号出力のタイミング、ＡＧＣ回路２３を制御するためのコマンド等は、図示しないインタフェースを介して、ホストコンピュータや操作子等により、外部から入力することも可能である。このようなコマンドも、デコーダ回路２６によってデコードし、タイミングジェネレータ２５，基準電圧回路２７，ＡＧＣ回路２３等の必要な回路に制御信号を出力するようにするとよい。
【００１９】
一方、デコーダ３０はＣＰＵ３１，ＦＰＧＡ３２，ＲＡＭ３３，通信Ｉ／Ｆ３４を備えている。ＣＰＵ３１は、このスキャナ１全体を統括制御する制御手段であり、ＦＰＧＡ３２や、後に詳述するＣＭＯＳイメージセンサ１２の各部の制御も行う。
ＦＰＧＡ３２は、ＣＭＯＳイメージセンサ１２によって読み取った画像データに対し、二値化処理，ラプラシアンエッジ強調，ランレングス処理等の種々の画像処理を行うユニットである。なお、これらの処理を行うユニットとして、ＦＰＧＡ３２に代えてＡＳＩＣ（特定用途向け集積回路）やゲートアレイを設けてもよい。また、ソフトウェアを用いて同様の処理を行ってもよい。
ＲＡＭ３３は、ＦＰＧＡ３２による処理後の画像データを記憶したり、ＣＰＵ３１のワークメモリとして用いたり、その他このスキャナ１の動作に必要なデータを記憶したりする記憶手段である。なお、ＲＡＭ３３に記憶した画像データのデコード処理はＣＰＵ３１が行う。また、ＲＡＭ３３の一部を不揮発性記憶手段で構成し、設定データ等を記憶させるようにするとよい。
【００２０】
通信インタフェース（Ｉ／Ｆ）３４は、スキャナ１をホストコンピュータ２と接続するためのインタフェースであり、ＣＰＵ３１はこの通信Ｉ／Ｆ３４を介してデコード処理後のデータをホストコンピュータに送信することができる。また、ＣＰＵ３１が制御処理やデコード処理を行うために必要なプログラムは、デコーダ３０側に記憶手段を設けて記憶させるようにしてもよいが、この通信Ｉ／Ｆ３４を介してホストコンピュータ２から受信するようにしてもよい。
このようなスキャナ１によってコードを読み込む際には、外部光あるいは照明用ＬＥＤ１４による照明光によるコード記号面３からの反射光をレンズ１１によってＣＭＯＳイメージセンサ１２のイメージエリア２１上に結像させ、その画像を画素毎にフォトダイオードによって光電変換して増幅トランジスタを介して電圧信号として取り出す。そして、その信号に対してＣＤＳ回路２２によってＣＤＳを行い、ＡＧＣ回路２３によってゲイン調整を施し、Ａ／Ｄ変換回路２４によってデジタル画像データに変換する。
【００２１】
この場合において、光電変換によって電荷を蓄積する期間を制御することによってシャッタ速度を定めることができ、ゲイン調整と合わせて、ＣＭＯＳイメージセンサ１２によってその画像を設定されたゲイン値とシャッタ速度で画像データとして取り込むことができる。
そして、取り込んだ画像データをデコーダ３０でデコードしてコード記号がコードするデータに変換し、その結果を、通信Ｉ／Ｆ３４を介してホストコンピュータ２に送信する。
【００２２】
しかし一般には、このような読み取りを行う場合において、読み取り環境の明るさやコード記号面３の状態等により、必要な読み取り条件が異なるため、一度の読み取り動作で適当なデータが得られないことも多く、適当なデータが得られるまで条件を変更しながら読み取りを繰り返すことになる。この発明の特徴は、このような場合において、読み取りのゲイン値とシャッタ速度を適切に制御することにより、迅速な読み取りを可能としたことである。また、コード記号面３における正反射も読み取りの障害になるため、これを防止できるようにしたことも、この発明の特徴である。
【００２３】
以下、上述したスキャナ１におけるコード読み取り時の処理について、これらの特徴に係る処理を中心に説明する。図３乃至図５はその処理を示すフローチャート、図６は読み取り画像の濃度の代表値を求める際の測光点について説明するための図である。
図１に示したスキャナ１は、図示しないトリガスイッチ等をオンすると、ＣＰＵ３１が所要のプログラムを実行することにより、図３に示す処理を開始する。
【００２４】
まず、ステップＳ１で読み取り対象の情報であるコード記号面３の画像を画像データとして１フレーム取り込む。この取り込みは、ＣＭＯＳイメージセンサ１２を駆動し、上述したような取り込み動作を行わせることにより、設定されたゲイン値とシャッタ速度で行うことができる。
なお、画像のサイズはイメージエリア２１の画素数によって決定されるが、ここでは縦４８０×横６４０画素とする。もちろんこの値に限られるものではない。また、画像データは各画素のビット数Ｌに応じて２のＬ乗通りの明度（濃度）レベルを表現できるが、ここではよく用いられるように各画素８ビットとし、白黒２５６階調の画像データとしている。従って、各画素の明度は０，１，…，２５５という整数の画素値で表現され、０が最も暗く、２５５が最も明るいものとする。
また、このステップＳ１においてＦＰＧＡ３２による画像処理まで行って画像データをＲＡＭ３３に記憶させるものとする。
このステップＳ１の処理においては、ＣＰＵ３１がＣＭＯＳイメージセンサ１２及びＦＰＧＡ３２を駆動することによって画像データ取り込み手段として機能する。
【００２５】
次に、ステップＳ２で取り込んだ画像データについて明度の代表値Ｖを求める。
代表値Ｖは、画像の中央部の所定数の画素の明度をサンプリングし、そのデータを用いて求める。ここでは、図６に示すように、縦４８０×横６４０画素の画像データのうち中心部３２０×３２０画素の中から、抽出点の座標を縦横それぞれ１０箇所選択し、この組み合わせの計１００点でサンプリングする。また、各画素において、注目画素そのものの画素値ではなく、注目画素と隣接する４画素の画素値の平均をその注目画素の明度としてサンプリングを行う。例えば、図６に示した注目画素ｐの明度Ｐは、隣接する画素ｐ１，ｐ２，ｐ３，ｐ４の画素値をそれぞれＰ１，Ｐ２，Ｐ３，Ｐ４とすると、
Ｐ＝（Ｐ１＋Ｐ２＋Ｐ３＋Ｐ４）／４
で求める。
【００２６】
そして、これら１００点におけるサンプリング値のヒストグラムを求めて、上から特定の割合（例えば、１０％）を削除してから、最大値（ｍａｘ）を求めて、これを取り込んだ画像データにおける明度の代表値Ｖと考える。
なお、従来の技術の項で述べたようにスキャナ１の利用環境に応じて光量が大きく異なるため、使用場所や使用状態によってサンプリング値全体の中の最大値はばらつきが大きくなる。そこで、上から特定の割合を削除して得た最大値を代表値Ｖとして用いることにしたものである。削除しすぎると、特に光沢のある被写体や小さな被写体で正確な測光が行えなくなることがあるが、出願人が統計をとった結果、５〜３０％を削除することが適当であることがわかっている。
このステップＳ２の処理においては、ＣＰＵ３１が測光手段として機能する。
【００２７】
以上の処理によって代表値Ｖが得られると、ステップＳ３に進む。ステップＳ３では、代表値Ｖの値がデコードに適した明度であるか否かを判断するが、この判断は、Ｖが１４０未満あるいは２５０以上であるか否かによって行う。ここで、代表値Ｖは上述のように明度のサンプリング値の上から特定の割合を除いた後の最大値であるので、これが必ずしも画素値の取り得る最大の値（ここでは２５５）でなくても、全体としては飽和が生じている場合もある。そこで、所定の飽和値Ｖｓａｔ（ここでは２５０）以上であれば飽和していると判断するようにしている。
Ｖが低域閾値の１４０未満であれば、全体として暗すぎるためデコードに適さないと判断し、２５０以上の場合は、代表値Ｖが飽和しているため適切な画像が得られていないと考えられ、やはりデコードに適さないと判断する。
従って、いずれかに該当した場合には、デコードは行わずに後述する露出制御処理を行う。この露出制御処理としては、照明用ＬＥＤ１４のＯＮ／ＯＦＦを制御するステップＳ８の第１の露出制御処理と、ゲイン値とシャッタ速度を調整するステップＳ９の第２の露出制御処理を設けている。そして、ステップＳ３の判断でＹＥＳであった場合にはステップＳ７でＶが２５０以上か否か判断し、２５０以上であれば、第１の露出制御処理はあまり効果がないので直ちにステップＳ９に進んで第２の露出制御処理を行い、２５０以上でなければ、すなわちＶが１４０未満であれば、ステップＳ８に進んで第１の露出制御処理から行う。
【００２８】
ステップＳ３の判断でＮＯであった場合には、代表値Ｖが適正値であると判断し、ステップＳ４に進んでデコード処理を行う。
なお、ステップＳ３の判定における閾値や飽和値は、これらに限られるものではなく、処理方式や読み取り対象に応じて適宜変更してよいし、画像データが２５５階調でない場合には当然別の値になる。
ステップＳ３の処理においては、ＣＰＵ３１が代表値判定手段として機能する。
【００２９】
ステップＳ４でのデコード処理は、取り込んだ画像データをデコードする処理であるが、コードの種類を判定し、それに従って画像中のコード記号の位置及び角度を検出した後、コード記号に関する部分を復号してそのコード記号がコードするデータに変換して行う。この処理については、適宜公知の方法を採用すればよく、この発明の特徴部分ではないので、詳細な説明は省略する。
このステップＳ４の処理においては、ＣＰＵ３１がデコード手段として機能する。
【００３０】
デコードが終了するとステップＳ５に進んでデコードが成功したか否か、すなわち適当なデータが得られたか否かを判断する。そして、成功していればステップＳ６に進んで得られたデータを読み取り結果としてホストコンピュータ２に出力して処理を終了する。しかし、成功していなければ、よりよい画像データを得るため、ステップＳ８からＳ９に進んで第１及び第２の露出制御処理を行う。
ステップＳ８の第１の露出制御処理は、上述の通り照明用ＬＥＤ１４のＯＮ／ＯＦＦを制御する処理であり、図４に示すものである。
この処理においては、まずステップＳ１１でコードが貼付されている物体（コード記号面３）周辺の明るさ、すなわちスキャナ１による読取対象の情報の周辺の明るさを示す明るさパラメータＩを算出する。
【００３１】
この明るさパラメータは、上述の代表値Ｖと、ＣＭＯＳイメージセンサ１２における暗電流によるオフセットＶ０，画像取り込み時のゲイン値Ｇ及びシャッタ速度（シャッタ開時間）Ｓとによって、
Ｉ＝（Ｖ−Ｖ０）／（Ｇ×Ｓ）
なる式によって求められる。
図７は、照度のみを変化させて同一の条件で同一のコード記号面３を読み取って得た画像データについて、このように計算した明るさパラメータＩを縦軸に、コード記号面３周辺の照度を横軸にとってプロットしたグラフである。なお、測定は照明用ＬＥＤ１４を点灯した状態で行っている。図７に示した直線６１は、プロットしたデータについて引いた回帰直線であり、直線の近傍に示した数式は、それぞれ縦軸をｙ軸、横軸をｘ軸とした場合の回帰直線の方程式を示すものである。
【００３２】
図７からわかるように、明るさパラメータＩとコード記号面３周辺の照度とはほぼ線形の関係があり、明るさパラメータＩとルクス単位の照度ＩＬとは、
Ｉ＝０．４５４７×ＩＬ＋３３９．４６
なる式を用いて互いに換算することができる。
明るさパラメータＩの算出後は、ステップＳ１２で、照明用ＬＥＤ１４がＯＮであるか否か判断する。そして、ＯＮであればステップＳ１３に進み、明るさパラメータＩが高域閾値Ｉｂより大きくかつ暗さフラグが０か否か判断する。
【００３３】
この処理について、まず高域閾値Ｉｂは、例えば１５００ルクスに相当する明るさパラメータＩの値とすることができる。また、暗さフラグは、照明用ＬＥＤ１４がＯＦＦのときに読取対象の情報の周辺の明るさ（ここでは明るさパラメータＩをもとに判断する）が所定の閾値以上であるか否かを示すフラグであり、前述した照明用ＬＥＤ１４による投光が必要であるか否かを示すフラグである。値としては、明るさが所定の閾値以上の場合に０、閾値以下の場合に１を取るものとする。そして、コードの読み取り開始時（図３のフローチャートに示す処理の開始時）には、暗さフラグには初期値として０を設定するものとする。
【００３４】
ステップＳ１３の判断では、明るさパラメータＩと暗さフラグの両方を判断条件とし、上記の判断がＹＥＳであれば、コード記号面３の周囲が明るくかつ正反射が生じている可能性があるので、ステップＳ１４で正反射を防止するために照明用ＬＥＤ１４をＯＦＦにする。そして、第１の露出制御処理を終了して元の処理に戻る。
ステップＳ１３の判断がＮＯであれば、そのまま元の処理に戻る。
【００３５】
一方、ステップＳ１２で照明用ＬＥＤ１４がＯＮでなければ、ステップＳ１５に進み、明るさパラメータＩが低域閾値Ｉｄ未満か否か判断する。この低域閾値Ｉｄは、例えば５０ルクスに相当する明るさパラメータＩの値とすることができる。
ステップＳ１５でＩｄ未満であれば、コード記号面３の周辺が暗いと判断し、ステップＳ１６でこのことを示すため暗さフラグを１にすると共に、ステップＳ１７で照明用ＬＥＤ１４をＯＮにして読み取り対象の明るさを増すようにする。そして、第１の露出制御処理を終了して元の処理に戻る。
【００３６】
ステップＳ１５でＩｄ未満でなければ、コード記号面３の周辺は照明用ＬＥＤ１４をＯＮにするほど暗くはないと判断し、そのまま元の処理に戻る。
以上の第１の露出制御処理により、照明用ＬＥＤ１４のＯＮ／ＯＦＦによるコード記号面３の周辺の照度調整とそれに伴う正反射の防止処理を行うことができる。そして、この処理は、容易に算出できる明るさパラメータＩの大きさと、暗さフラグの状態とを参照して行うので、極めて小さい負荷で行うことができる。
【００３７】
第１の露出制御処理が終了すると、図３のステップＳ９に示すように、第２の露出制御処理を行う。この処理は、上述の通りゲイン値とシャッタ速度を調整する処理であり、図５に示すものである。
この処理においては、まずステップＳ２１で、図３のステップＳ２で求めた明度の代表値Ｖが２５０以上であるか否か判断する。そして、Ｖ≧２５０であれば、明度が飽和しており、画像が明るすぎて適切な調整が行えないので、単純に明度を落とした画像を得るべく、ステップＳ２７に進んでシャッタ速度を１／ｍ倍に変更し、元の処理に戻る。ここで、ｍは任意に定めた２以上の整数であり、例えばｍ＝４とするとよい。
ステップＳ２１でＶ≧２５０でなければ、ステップＳ２２で、シャッタ速度を変えずに明度の代表値が所定の目標値Ｖｔになるような新たなゲイン値Ｇ′を求める。ここでは、図３のステップＳ３の判断でＶ＜１４０又はＶ≧２５０の場合にＶが不適切であるとしているので、Ｖｔとしてはこの範囲外に適当な値を定めることになる。
【００３８】
ここで、Ｇ′の求め方について説明する。一般に、画像取り込み時のゲイン値をＧ，シャッタ速度をＳ，新たなゲイン値をＧ′，新たなシャッタ速度をＳ′，暗電流によるオフセットをＶ０とすると、ＶとＶｔとの間には、
（Ｖ−Ｖ０）／（Ｇ×Ｓ）＝（Ｖｔ−Ｖ０）／（Ｇ′×Ｓ′）
なる関係が成り立つ。
従って、Ｇ×Ｓの値を、
2004213331.tif 000003
で示される値だけ調整すれば、明度の代表値ＶはＶｔになると予想できる。
ここでは、シャッタ速度を変えずにゲイン値のみで調整した場合の新たなゲイン値Ｇ′を求めるので、Ｓは一定として、
ΔＧ＝Ｇ′−Ｇ＝Ｇ×（Ｖｔ−Ｖ）／（Ｖ−Ｖ０）
なる式が得られる。
【００３９】
しかし、この値をそのままゲイン値にフィードバックすると、応答は速いが、Ｖが目標値を超え、ハンチング（発振）が生じる恐れがある。そこで、これに０＜γ１≦１の範囲で定める第１のフィードバック係数γ１を乗じた値をフィードバックするものとし、
Ｇ′＝（１＋γ１（Ｖｔ−Ｖ）／（Ｖ−Ｖ０））×Ｇ
なる式によって新たなゲイン値Ｇ′を定めるとよい。ここで、γ１の値はハンチングを起こさない範囲を調べ、その中でできるだけ大きい値とするのがよいが、発明者らの実験によれば、１／２から３／４程度が適当であることがわかっている。
なお、以上の算出過程において第１の露出制御処理において照明用ＬＥＤ１４のＯＮ／ＯＦＦを切り換えたか否かは考慮していないが、この切り換えは代表値Ｖの値にさほど大きな影響は及ぼさないし、ＯＮ／ＯＦＦを切り換えた場合でもその次のフレームからは新たなＯＮ／ＯＦＦ状態に応じたゲイン値及びシャッタ速度の調整を行うことができるので、考慮しなくても特に問題とはならない。すなわち、照明用ＬＥＤ１４のＯＮ／ＯＦＦによらず同一のアルゴリズムで調整を行うことができる。
また、ゲイン値及びシャッタ速度の初期値を、ＯＮ状態用とＯＦＦ状態用にそれぞれ記憶しておき、照明用ＬＥＤ１４のＯＮ／ＯＦＦを切り換えた場合にはまずこの初期値を設定して、その後調整を行うようにしてもよい。
このステップＳ２１の処理において、ＣＰＵ３１がゲイン値算出手段として機能する。
【００４０】
Ｇ′は以上のように定めることができるが、ここでのＧ′の算出に当たっては、実際にＣＭＯＳイメージセンサ１２に設定可能なゲイン値の範囲を考慮していない。そこで、ステップＳ２２で以上のように新たなゲイン値Ｇ′を定めると、ステップＳ２３に進み、ＣＭＯＳイメージセンサ１２に設定可能なゲイン値の下限を低域閾値ＧＬとして、Ｇ′がＧＬ以上か否か判断する。
ＧＬ以上でなければ、Ｇ′は小さすぎて適切な画像を得られないと考えられるため、ステップＳ２４に進み、新たなゲイン値Ｇ′をγ２×ｎ倍にすると共にシャッタ速度Ｓをγ３×（１／ｎ）倍に変更する。画像の明るさは概ねゲイン値とシャッタ速度の積に比例するので、このような調整を行っても予想される代表値Ｖの値は変化しない。ここで、ｎは任意に定めた２以上の整数、γ２は０＜γ２≦
１の範囲で定めるゲイン値のための第２のフィードバック係数、γ３は０＜γ３≦１の範囲で定めるシャッタ速度のための第３のフィードバック係数である。ｎは例えばｎ＝２とするとよい。
ステップＳ２４の後は、ステップＳ２３に戻って処理を繰り返す。
【００４１】
ステップＳ２３でＧＬ以上であれば、ステップＳ２５に進んで、ＣＭＯＳイメージセンサ１２に設定可能なゲイン値の上限を高域閾値ＧＨとして、Ｇ′がＧＨ以下か否か判断する。
ＧＨ以下でなければ、Ｇ′は大きすぎて適切な画像を得られないと考えられるため、ステップＳ２６に進み、新たなゲイン値Ｇ′をγ２×（１／ｎ）倍にすると共にシャッタ速度Ｓをγ３×ｎ倍に変更する。このような調整を行っても予想される代表値Ｖの値が変化しないことは、ステップＳ２４の場合と同様である。
ステップＳ２６の後は、ステップＳ２３に戻って処理を繰り返す。
【００４２】
ステップＳ２５でＧＨ以下であれば、新たなゲイン値Ｇ′は設定可能な値であるので、第２の露出制御処理を終了して元の処理に戻る。
以上の処理のうち、ステップＳ２３及びステップＳ２５の処理においてはＣＰＵ３１がゲイン値判定手段として機能する。また、ステップＳ２４及びステップＳ２６の処理においては、後述する図３のステップＳ１０の処理と合わせ、ＣＰＵ３１がゲイン値／シャッタ速度制御手段として機能する。
【００４３】
図３の説明に戻ると、第２の露出制御処理の終了後は、ステップＳ１０で、新たなゲイン値Ｇ′とシャッタ速度Ｓ（図５のステップＳ２４又はＳ２６で変更されていれば変更後のもの）の条件で再度ＣＭＯＳイメージセンサ１２を駆動し、１フレーム分の画像データの取り込みを行わせる。
以上のステップＳ８乃至Ｓ１０の処理において、ＣＰＵ３１が露出制御手段として機能する。
ステップＳ１０で新たな画像データを取り込んだ後は、ステップＳ２に戻って処理を繰り返す。そして、最終的に適当なデコード結果が得られるまで露出制御を行いながら画像データの取り込みを繰り返す。このとき、所定回数以内に適当なデコード結果が得られない場合にはエラーとして取り扱うようにしてもよい。
【００４４】
以上のような処理を行うことにより、得られる画像の明度を主としてゲイン値を変化させることによって調整するため、その結果は直ちに次のフレームに反映され、シャッタ速度を変化させる場合のような１フレーム分（通常は３０ミリ秒程度）のタイムラグが生じないので、露光調整を高速に行ってコードの読み取り速度を向上させることができる。ゲインのみで調整しきれない場合にはシャッタ速度の変更も行うが、露光調整はなるべくゲイン値によって行い、シャッタ速度はできるだけ固定するようにしているので、十分に読み取りの高速化を図ることができる。
また、照明用ＬＥＤのＯＮ／ＯＦＦによってコード記号面の明度調整や正反射の防止を図る処理も、この用途のために複雑な演算を行うことなく、ゲイン値／シャッタ速度調整のための代表値Ｖを流用して簡単な演算で行うことができる。従って、コードの読み取り速度にほとんど影響を与えることなくコード記号面の明度調整や正反射の防止を行うことができる。
なお、以上説明した実施形態では、この発明をマルチコードスキャナに適用した例について説明したが、この発明はこれに限られるものではなく、バーコードスキャナや２次元コードスキャナ等、記録媒体に記録された光学的パターンを始めとする光学的情報を読み取る光学的情報読取装置に広く適用することができる。
【００４５】
【発明の効果】
以上説明してきたように、この発明の光学的情報読取装置によれば、得られる画像の明度を主としてゲイン値を変化させることによって調整するため、その結果は直ちに次のフレームに反映され、露光調整を高速に行ってコードの読み取り速度を向上させることができる。
【図面の簡単な説明】
【図１】この発明の光学的情報読取装置の実施形態であるスキャナの構成を示すブロック図である。
【図２】図１に示したＣＭＯＳイメージセンサの構成をより詳細に示すブロック図である。
【図３】図１に示したスキャナにおけるコード読み取り時の処理を示すフローチャートである。
【図４】図３に示した第１の露出制御処理の内容を示すフローチャートである。
【図５】図３に示した第２の露出制御処理の内容を示すフローチャートである。
【図６】読み取り画像の濃度の代表値を求める際の測光点について説明するための図である。
【図７】明るさパラメータとコード記号面の周辺の照度との関係を示すグラフである。
【図８】ＣＭＯＳセンサにおける電子シャッタの制御タイミングを示した図である。
【符号の説明】
１：スキャナ              ２：ホストコンピュータ
３：コード記号面          １０：光学ヘッド
１１：レンズ          １２：ＣＭＯＳイメージセンサ
１３：ガイド用ＬＥＤ      １４：照明用ＬＥＤ
２１：イメージエリア      ２２：ＣＤＳ回路
２３：ＡＧＣ回路          ２４：Ａ／Ｄ変換回路
２５：タイミングジェネレータ  ２６：デコーダ回路
２７：基準電圧回路        ３０：デコーダ
３１：ＣＰＵ              ３２：ＦＰＧＡ
３３：ＲＡＭ              ３４：通信Ｉ／Ｆ
【図１】
2004213331.tif 000004
【図２】
2004213331.tif 000005
【図３】
2004213331.tif 000006
【図４】
2004213331.tif 000007
【図５】
2004213331.tif 000008
【図６】
2004213331.tif 000009
【図７】
2004213331.tif 000010
【図８】
2004213331.tif 000011