(58)【調査した分野】(Int.Cl.,DB名)
前記制御手段は、前記第1フォーカス手段による前記フォーカス調整の実行回数が増加するのに従い前記第1フォーカス手段による前記フォーカス調整の実行時間が短くなるように調整し、前記第2フォーカス手段によるフォーカス調整の実行回数が増加するのに従い前記第2フォーカス手段によるフォーカス調整の実行時間が短くなるように調整する請求項1に記載のコード読取装置。
前記制御手段は、前記第1フォーカス手段によるフォーカス調整に基づく画像データの読み取りが成功しなかった場合には、前記第2フォーカス手段によるフォーカス調整に基づく前記画像データの読み取りを行い、
前記第2フォーカス手段によるフォーカス調整に基づく画像データの読み取りが成功しなかった場合には、前記第1フォーカス手段による前記画像データの読み取りを行う請求項1または2に記載のコード読取装置。
前記第2フォーカス手段は、前記第1フォーカス手段によるフォーカス調整又は当該第2フォーカス手段によるフォーカス調整により、移動先の焦点位置が既に求められている場合には、該移動先の焦点位置から前後に変化させた焦点位置毎に撮像対象の画像データを前記撮像部に取得させることでフォーカス調整を行う請求項1〜5の何れか一項に記載のコード読取装置。
前記第2フォーカス手段は、予め決められた電圧間隔で前記可変焦点レンズに電圧を印加させることで前記焦点位置を変化させる請求項1〜6の何れか一項に記載のコード読取装置。
可変焦点レンズと、前記可変焦点レンズによる撮像方向の画像データを取得する撮像部と、前記撮像方向に光ビームを出射する発光部とを備えるコード読取装置のコンピュータを制御するためのプログラムであって、
前記コンピュータを、
前記光ビームにより前記撮像部の撮像面に形成された輝点の座標に基づいて前記可変焦点レンズの焦点位置を移動させてフォーカス調整を行う第1フォーカス手段、
前記可変焦点レンズの焦点位置を変化させ、焦点位置毎に取得された前記画像データのコントラストに応じてフォーカス調整を行う第2フォーカス手段、
前記第1フォーカス手段による前記フォーカス調整の実行時間及び前記第2フォーカス手段による前記フォーカス調整の実行時間を調整し、前記撮像部により取得された前記画像データに含まれるコードシンボルの読み取りを行う制御手段、
として機能させるようにしたコンピュータ読み取り可能なプログラム。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に基づいて説明する。
【0013】
図1は、本発明の実施形態のコード読取装置の全体構造を示す正面図である。
本実施形態のコード読取装置1(コンピュータ)は、一次元バーコード、二次元コード等のシンボルの読み取り機能を有する携帯機器である。
【0014】
コード読取装置1は、筐体としてのケース2を備える。コード読取装置1は、ケース2の正面に、トリガキー12Aと、各種キー12Bと、表示部14と、を備える。コード読取装置1は、ケース2の側面に、トリガキー12Cを備える。また、コード読取装置1は、ケース2の先端部に、イメージャモジュール21を備える。
【0015】
トリガキー12A、12Cは、イメージャモジュール21によるシンボル読み取り動作の開始命令の入力を受け付けるトリガキーである。各種キー12Bは、数字、文字等の入力キー、機能キー等からなり、各種情報の入力操作を受け付ける。表示部14は、入力操作に係るメニューやステータスなどの情報、及び、イメージャモジュール21を用いたシンボル読み取り動作の実行時のステータスやデコード結果等の情報を表示する。
【0016】
図2は、コード読取装置1の内部構成を示すブロック図である。
【0017】
コード読取装置1は、制御手段(第1フォーカス手段、第2フォーカス手段、計数手段、フォーカス調整時間設定手段)としてのCPU(Central Processing Unit)11と、操作部12と、RAM(Random Access Memory)13と、表示部14と、記憶部15と、通信部16と、イメージャコントローラ19と、イメージャモジュール21と、電源部22と、レーザ駆動電源23と、を備える。
【0018】
コード読取装置1のイメージャモジュール21及び電源部22を除く各部は、バス24を介して互いに接続されている。イメージャモジュール21は、撮像手段としての撮像素子211と、可変焦点レンズ212と、可変焦点レンズ212を駆動して焦点を調節するフォーカス駆動手段としてのフォーカス機構213と、発光手段としてのエイマー214と、照明手段としてのイルミネーション215と、を有する。
【0019】
CPU11は、コード読取装置1の各部を制御する。CPU11は、記憶部15から種々のプログラムを読み出してRAM13に展開し、RAM13に展開されたプログラムとの協働で各種処理を実行する。
【0020】
操作部12は、各種キー12B、トリガキー12A、12C等のキー群を有し、当該キー群の各キーの押下操作を受け付け、その操作情報を入力信号に変換してCPU11へ出力する。
【0021】
RAM13は、揮発性の半導体メモリであり、CPU11に作業用メモリ空間を提供する。また、RAM13は、各種データの一時記憶、及び、各種プログラムを実行する際の展開に用いられる。
【0022】
表示部14は、LCD(Liquid Crystal Display)や、EL(Electro-Luminescent)ディスプレイ等で構成され、CPU11から入力される表示情報に応じて各種情報を表示する。
【0023】
記憶部15は、読み書きの可能な不揮発性メモリであり、例えば、フラッシュメモリである。記憶部15には、予め種々のプログラムや設定データが格納されている。或いは、記憶部15は、EEPROM(Electrically Erasable and Programmable Read Only Memory)やハードディスクであってもよい。又は、専用のコード読取装置においては、ROM(Read Only Memory)を用いることとしてもよい。この記憶部15に格納されたプログラムには、フォーカス機構213の動作を制御してシンボルへ焦点を合わせ、デコードする処理を行うプログラム15aが含まれ、CPU11は、このプログラムをRAM13に展開し、後述する処理フローで示すデコード制御処理を実行する。
【0024】
通信部16は、通信アンテナ、信号処理部、変調部、復調部等を備え、アクセスポイントと無線通信する。アクセスポイントは、通信を中継する機器である。つまり、コード読取装置1は、通信部16により、アクセスポイントを介して、当該アクセスポイントに接続されたサーバ装置等の外部機器と通信する。通信部16は、送信情報の信号を信号処理部で処理し、変調部で変調して通信アンテナから電波としてアクセスポイントに送信情報を無線送信する。また、通信部16は、通信アンテナによりアクセスポイントから送信された電波を受信して復調部で復調し、その信号を信号処理部で信号処理して受信情報を取得する。
【0025】
また、通信部16は、携帯電話通信方式により、基地局を介してサーバ装置と無線通信する無線通信部としてもよい。また、通信部16は、コード読取装置1を載置するクレードル、又は通信ケーブルを介して、サーバ装置と有線通信する有線通信部としてもよい。
【0026】
イメージャコントローラ19は、イメージャモジュール21の各部の動作を制御し、イメージャモジュール21とコード読取装置1の他の部位との間のデータの送受信を制御する。イメージャコントローラ19は、ASIC(Application Specific Integrated Circuit)等の半導体回路により構成されている。
【0027】
イメージャコントローラ19は、撮像素子211から、キャプチャされた画像データの1フレームの出力タイミングに同期したフレーム同期信号と、画像データの1ラインの出力タイミングに同期したライン同期信号と、画像データに同期するためのクロック信号と、が入力される。イメージャコントローラ19は、これらフレーム同期信号、ライン同期信号及びクロック信号に基づいて、RAM13への画像データの転送タイミングを監視する。イメージャコントローラ19は、撮像素子211からイメージャコントローラ19に入力された画像データを、CPU11を介さずに直接RAM13に転送するDMA(Direct Memory Access)転送機能を有する。
【0028】
そして、イメージャコントローラ19は、画像データの転送タイミングの監視状況に応じてフォーカス機構213の動作を制御することにより、可変焦点レンズ212の焦点位置をリアルタイムに変化させる。
【0029】
イメージャモジュール21は、可変焦点レンズ212の焦点位置を調整して被写体のシンボルを撮像するモジュールである。撮像素子211は、特には限られないが、CMOS(Complementary Metal Oxide Semiconductor:相補性金属酸化膜半導体)イメージセンサである。撮像素子211は、可変焦点レンズ212を含む光学系を介して入射された被写体像を光電変換して電気信号に変換することで、画像データをキャプチャ(取得)する。
【0030】
撮像素子211は、イメージャコントローラ19から入力された画像領域指定信号により指定されたラインの画像データを1ラインずつラインデータとしてイメージャコントローラ19に出力する。また、撮像素子211は、フレーム同期信号、ライン同期信号、及び、クロック信号をイメージャコントローラ19に出力する。可変焦点レンズ212は、例えば、液体レンズであり、イメージャモジュール21の光学系の一部を構成する光学素子である。この液体レンズは、フォーカス機構213に印加される電圧に応じて高速で焦点位置を変更可能な構成となっている。
【0031】
フォーカス機構213は、可変焦点レンズ212の焦点位置を調節する駆動部である。可変焦点レンズ212が液体レンズである場合には、フォーカス機構213は、当該液体レンズの所定箇所に電圧を加えるための電極を含む電気回路である。また、可変焦点レンズ212としてガラスやプラスチックなどの固体レンズを用いる場合には、フォーカス機構213には、例えば、ボイスコイルモータが用いられる。
【0032】
エイマー214は、イメージャモジュール21と被写体であるシンボルとの距離の測定指標、及び、イメージャモジュール21の撮像方向と被写体方向とを合わせるための基準となるスポット光(目標光)としてのレーザ光ビームを出射するレーザダイオード(LD)である。イルミネーション215は、例えば、LED(Light Emitting Diode)といった光源により構成され、被写体及びその周囲の領域を明るく照らすための照射光を出射する。
【0033】
電源部22は、二次電池等で構成され、コード読取装置1の各部に電力供給を行う。レーザ駆動電源23は、エイマー214を駆動してスポット光を出射させる際の電力を供給する。レーザ駆動電源23は、イメージャコントローラ19と共にメイン基板上に配置される。
【0034】
次いで、
図3を参照して、イメージャモジュール21の各部の配置を詳細に説明する。
図3は、イメージャモジュール21の平面図である。
【0035】
イメージャモジュール21において、可変焦点レンズ212を含む光学系212Aは、当該イメージャモジュール21の外側を撮像可能に配置される。また、撮像素子211は、光学系212Aの光軸に対して垂直に配置されている。エイマー214及びイルミネーション215は、光学系212A及びフォーカス機構213に並列して配置されている。エイマー214は、出射するビーム状のレーザ光が光学系212Aについて変更可能な焦点距離内においてイメージャモジュール21(光学系212A及び撮像素子211)により撮像可能な画角内に含まれる配置となっている。本実施形態では、このレーザ光のビームは、光学系212Aの光軸に平行な方向に出射される。また、イルミネーション215は、扇状に照射する光が光学系212Aについて変更可能な焦点距離内において、イメージャモジュール21(光学系212A及び撮像素子211)により撮影可能な画角内に含まれる配置となっている。
【0036】
次に、光学系212Aのフォーカス調整方法について説明する。
【0037】
図4は、第1位置及び第1位置よりも遠い第2位置にシンボルが置かれた場合の様子を説明する図である。また、
図5は、第1位置及び第2位置に置かれたシンボルを撮像したフレーム画像を示す図である。
【0038】
図4において、第1位置D1に一次元バーコードのシンボル41が表示された平面が配置されている場合には、
図5(a)に示すように、フレーム画像q1内にシンボル41の像Q1が得られる。このとき、エイマー214からレーザ光が出射されると、このレーザ光がシンボル41の面内に到達して輝点を形成する。
図5(a)の例では、シンボル41の像Q1の右端付近に輝点E1が形成されている。
なお、バーコードシンボル41は、特に限られないが、例えば、白紙に印刷されたものである。
【0039】
一方、
図4において、第1位置D1よりもイメージャモジュール21から離れた第2位置D2にシンボル41が表示された平面が配置されている場合には、
図5(b)に示すように、取得されるフレーム画像q2においてシンボル41の像Q2が占める面積は、フレーム画像q1においてシンボル41の像Q1が占める面積に比して相対的に小さくなる。また、このとき、エイマー214からレーザ光が出射されてシンボル41の右端付近を照射すると、フレーム画像q2において形成される輝点E2の位置は、フレーム画像q1における輝点E1の位置と比較して、よりフレーム画像q2の中心に近い位置となる。
【0040】
即ち、フレーム画像において、光学系212A及び撮像素子211により取得される同一の被写体(コードシンボル)の撮像面積は、イメージャモジュール21からの距離の二乗に略反比例して小さくなる。また、フレーム画像において、その中心からレーザ光により形成される輝点位置までの距離は、イメージャモジュール21からシンボル41までの距離に略反比例して小さくなり、徐々にフレーム画像の中央に近づいていく。従って、フレーム画像内における輝点の位置(座標)により、イメージャモジュール21からシンボル41までの距離、即ち、イメージャモジュール21が設定すべき焦点位置を求めることが出来る。
【0041】
レーザフォーカス法では、上述の原理に基づいて、エイマー214を点灯してフレーム画像を取得し、フレーム画像中の輝点の座標を同定し、この輝点の座標に基づいて焦点位置を算出する。このとき、レーザ光の輝点位置と可変焦点レンズ212の焦点位置とが合っていない場合には、輝点の像が不明瞭となる。このような場合には、検出された明部の重心位置を求めることで明部の中央の座標を求めることができる。
【0042】
図6は、第1位置及び第2位置に可変焦点レンズの焦点位置がある場合に第2位置に置かれたシンボルを撮像したフレーム画像を示す図である。
【0043】
一次元バーコードのシンボル41が
図4における位置D2に置かれた場合には、イメージャモジュール21の焦点位置が位置D2と重なったときに得られる撮像データが最も明瞭となり、焦点位置が位置D2に対して前後にずれると、得られる撮像データが不明瞭になる。例えば、
図6(a)に示すように、イメージャモジュール21の焦点位置が位置D1にある場合には、この焦点位置は、シンボル41の位置D2よりもイメージャモジュール21に近い位置となり、従って、得られるフレーム画像q3におけるバーコード画像Q3は、全体的に不明瞭なものとなる。その結果、バーコード画像Q3を含む所定の領域F3において、バーコードシンボルにおける明部であるスペース部分と暗部であるバー部分との間では、コントラストが小さくなる。一方、
図6(b)に示すように、焦点位置が位置D2と重なる場合には、得られるフレーム画像q4におけるバーコード画像Q4の輪郭が明瞭となって明部と暗部が分離し、バーコード画像Q4を含む所定の領域F4においてコントラストが大きくなる。
【0044】
コントラストフォーカス法では、上述の特徴を利用して、焦点位置を変化させながらフレーム画像データを取得し、フレーム画像毎にコントラスト値を算出してコントラスト値が極大となる焦点位置を選択することでバーコードシンボルに対する焦点位置を定める。
【0045】
コントラスト値の算出方法は、特には限られないが、例えば、MRD値(Minimum Reflectance Difference)が用いられる。このMRD値は、明部であるスペース部分の最小反射率と暗部であるバー部分の最大反射率との差によって求められる。コントラスト値の算出は、フレーム画像データから
図6(a)、(b)における領域F3、F4のデータを抜き出して行われる。この領域F3、F4は、バーコード画像Q3、Q4以外の領域が占める割合を減らすように、例えば、フレーム画像q3、q4の中心付近に設定される。この領域F3、F4の設定は、必ずしもバーコード画像Q3、Q4全体を含まなくてもよい。
【0046】
図6(c)には、イメージャモジュール21においてフォーカス機構213により可変焦点レンズ212の焦点位置を順番に変化させていく場合のコントラスト値の変化パターンの例を示す。
【0047】
焦点位置を前後に変化させながらフレーム画像を取得し、各フレーム画像において設定された領域のコントラスト値を順番に求めていくと、フレーム画像内に設定された領域に判別可能なサイズのバーコード像が存在する場合には、求められたコントラスト値は、途中で最大値(極大値)を示す。この最大値を示した焦点位置は、バーコードシンボルが置かれた位置に最も近い位置であると期待される。従って、コントラスト値が最大の値を示す焦点位置に可変焦点レンズ212の焦点位置を合わせ、撮像することで得られる撮像データを用いてバーコードシンボルの解読処理を行う。
【0048】
次に、本実施形態のコード読取装置1におけるフォーカス調整動作及びバーコードの読み取り動作の手順について説明する。
【0049】
図7は、バーコードの読み取り動作における時間配分を模式的に示す図である。
【0050】
本実施形態のバーコードの読み取り動作(以降、デコード処理と記す)では、レーザフォーカス法によるフォーカス調整、フレーム画像の取得、及び、シンボルの解読(以降、まとめてレーザフォーカス処理と記す)と、コントラストフォーカス法によるフォーカス調整、フレーム画像の取得、及び、シンボルの解読(以降、まとめてコントラストフォーカス処理と記す)とをそれぞれ独立に設定された実行時間ずつ交互に実行し、シンボル画像の解読が成功するまで繰り返す。
なお、一次元バーコード以外の二次元コード等の読み取りの場合でも、同様の処理が行われる。
【0051】
先ず、一度目のレーザフォーカス処理によれば、エイマー214を点灯させた状態で可変焦点レンズ212の焦点位置を設定位置に変化させ、変化させた焦点位置でのフレーム画像を取得する。取得されたフレーム画像からエイマー214のビームにより形成された輝点を探索して、輝点が認識された場合には、そのフレーム画像内における座標をもとに焦点位置を算出し、可変焦点レンズ212の焦点位置をこの算出された値に合わせる(レーザフォーカス(フォーカス設定))。
ここで、焦点位置の算出は、予め輝点の座標と焦点位置との対応を示すテーブルデータを記憶部15に記憶させておくことで行う。或いは、数式に基づいて計算を行わせることとしても良い。
【0052】
次いで、この焦点位置でエイマー214を消灯した状態で撮像を行って画像をキャプチャする(キャプチャ)。そして、キャプチャ画像に含まれるシンボルの解読を行う(デコード)。デコードの際に画像データからシンボルを認識する方法としては、従来公知の種々の技術を利用可能である。シンボルのデコードに失敗した場合には、設定された実行時間(T0×S0)(第1実行時間、第1初期設定時間)内において、これら一連の処理を繰り返し行うことでフォーカス調整を行う。ここで、定数T0は、予め定められたレーザフォーカスのための単位時間(例えば、レーザフォーカス、キャプチャ、デコードの一連の処理の平均所要時間)であり、所定数S0は、設定されたレーザフォーカス処理の最大実行回数を示す整数である。
【0053】
一度目のレーザフォーカス処理によるデコードが失敗した場合には、次に、コントラスト処理によるバーコードの読み取り動作が行われる。コントラストフォーカス処理によれば、先ず、可変焦点レンズ212の焦点位置を設定された実行時間(T1×S1)(第2実行時間、第2初期設定時間)に亘り、予め定められた範囲内で変更しながらフレーム画像を取得する。
ここで、焦点位置を変更する予め定められた範囲は、直前のレーザフォーカス処理内のレーザフォーカスで焦点位置が求められている場合には、この焦点位置の前後に定められ、焦点位置が求められていない場合には、予め記憶部15に記憶された初期設定データに基づいて定められる。
また、定数T1は、予め定められたコントラストフォーカス処理内のフォーカス調整のための単位時間(例えば、一回のフォーカス調整において、予め定められた最大ステップ数の焦点位置変化を行った場合の所要時間)であり、所定数S1は、設定されたコントラストフォーカス処理の最大実行回数を示す整数である。次いで、取得されたフレーム画像について、各フレーム画像における所定の領域内のデータからコントラスト値を算出して、最大のコントラスト値が得られたフレーム画像の焦点位置へ可変焦点レンズ212の焦点位置を移動させることでフォーカス調整が行われる(コントラストフォーカス)。
【0054】
それから、当該焦点位置で撮像を行って(キャプチャ)、取得されたフレーム画像に含まれるシンボルのデコードを行う(デコード)。
【0055】
一度目のコントラストフォーカス処理によるシンボルのデコードに失敗した場合には、二度目のレーザフォーカス処理を行う。この二度目のレーザフォーカス処理の内容は、一度目のレーザフォーカス処理の内容と次の二点で異なる。(1)コントラストフォーカス処理において最大のコントラスト値が得られている場合には、このコントラスト値が得られた焦点位置でエイマー214の発光による輝点位置の検出及び焦点位置の算出を開始する。(2)レーザフォーカス処理を行う実行時間がT0×(S0−1)に変更されている。
【0056】
即ち、2回目以降のレーザフォーカス処理では、当該処理以前に行われたレーザフォーカス処理及び/又はコントラストフォーカス処理によって得られている焦点位置のデータを用いて限られた範囲内のみを探索することで、より短い実行時間で焦点位置を求めなおす。
このようにしてレーザフォーカス処理がS0回に亘り、N回目のレーザフォーカス処理における実行時間Ta(第1実行時間)をT0×(S0−N+1)へと短縮しながら行われた後に、未だシンボルの解読が成功していない場合には、レーザフォーカス処理がタイムアウトとなる。レーザフォーカス処理においては、所定の時間の短縮により、例えば、一度の処理内で繰り返されるレーザフォーカス、キャプチャ、デコードの処理ループの実行回数が減少する。
【0057】
2回目以降のコントラストフォーカス処理も同様に行われる。即ち、M回目のコントラストフォーカス処理では、レーザフォーカス処理、又は、コントラストフォーカス処理において直近で求められている焦点位置に対して予め定められた前後の範囲内において設定された複数の焦点位置でコントラスト値を求め、コントラスト値が最大となる焦点位置を選択してシンボルの解読を行う。また、M回目のコントラストフォーカス処理におけるフォーカス調整に対して設定される実行時間Tb(第2実行時間)は、T1×(S1−M+1)となる。
S1回のコントラストフォーカス処理が行われた後に、未だコードの解読が成功していない場合には、コントラストフォーカス処理がタイムアウトとなる。コントラストフォーカス処理においては、所定の時間が短縮されると、例えば、一度のフォーカス調整で変化させる焦点位置のステップ数が減少する。
【0058】
このように、レーザフォーカス処理の実行回数、及び、コントラストフォーカス処理の実行回数は、独立に管理される。また、何れかのフォーカス処理がタイムアウトしても、他方のフォーカス処理がタイムアウトするまでは、当該他方のフォーカス処理が継続される。一方、何れかのフォーカス処理によりシンボルの解読が成功した場合には、その時点でデコード処理は終了となる。
【0059】
次に、バーコード読み取り動作について、CPU11が実行する制御処理の手順を示す。
図8は、デコード処理の制御手順を示すフローチャートである。
【0060】
CPU11により実行されるデコード制御処理は、ユーザによる操作部12への操作に基づく入力信号などに基づいて、CPU11が記憶部15から読み出したプログラム15aをRAM13上に展開した後に開始される。
【0061】
先ず、CPU11は、レーザフォーカス処理のための初期値、及び、コントラストフォーカス処理のための初期値を設定する(ステップS11)。具体的には、レーザフォーカス法によるフォーカス調整のための初期値として、CPU11は、レーザフォーカス処理の最大実行回数S0、実行済み回数N=0、及び、初回のレーザフォーカス処理においてフォーカス調整が行われる際の最初の焦点位置を設定する。また、コントラストフォーカス処理のための初期値として、CPU11は、コントラストフォーカス処理の最大実行回数S1、実行済み回数M=0、及び、初回のコントラストフォーカス処理においてフォーカス調整が行われる際の焦点位置の変更ステップ数、ステップ間隔を設定する。
なお、最大実行回数S0、S1は、同一である必要はない。
【0062】
次に、CPU11は、レーザフォーカス処理の残り回数(S0−N)が「0」であるか否かを判別する。残り回数(S0−N)が「0」であると判別された場合には、CPU11の処理は、ステップS17へ移行する。残り回数(S0−N)が「0」ではないと判別された場合には、CPU11の処理は、ステップS13へ移行する。
【0063】
CPU11の処理がステップS13へ移行すると、CPU11は、レーザフォーカス処理の実行時間Ta=T0×(S0−N)を設定する。続いて、CPU11は、レーザフォーカス処理の制御処理(レーザフォーカス制御処理)を実行する(ステップS14)。このステップS14の処理内容については、後に詳述する。それから、CPU11は、バーコードシンボルのデコードが成功したか否かを判別する(ステップS15)。デコードが成功したと判別された場合には、CPU11の処理は、ステップS30へ移行する。デコードが成功しなかったと判別された場合には、CPU11は、レーザフォーカス処理の実行回数Nに1を加算する(ステップS16)。そして、CPU11の処理は、ステップS17へ移行する。
【0064】
CPU11の処理がステップS12の分岐処理、又は、ステップS16の処理に引き続いてステップS17へ移行すると、CPU11は、コントラストフォーカス処理の残り回数(S1−M)が「0」であるか否かを判別する。残り回数(S1−M)が「0」であると判別された場合には、CPU11の処理は、ステップS22へ移行する。残り回数(S1−M)が「0」ではないと判別された場合には、CPU11は、コントラストフォーカス処理におけるフォーカス調整の実行時間Tb=T1×(S1−M)を設定する(ステップS18)。そして、CPU11は、コントラストフォーカス処理の制御処理(コントラストフォーカス制御処理)を実行する(ステップS19)。このステップS19の処理内容については、後に詳述する。
【0065】
次に、CPU11は、コントラストフォーカス処理によるバーコードシンボルのデコードが成功したか否かを判別する(ステップS20)。デコードが成功したと判別された場合には、CPU11の処理は、ステップS30へ移行する。デコードが成功しなかったと判別された場合には、CPU11は、コントラストフォーカス処理の実行回数Mを1加算する(ステップS21)。そして、CPU11の処理は、ステップS22へ移行する。
【0066】
ステップS17の分岐処理、又は、ステップS21の処理から引き続いてステップS22の処理に移行すると、CPU11は、レーザフォーカス処理の残り回数(S0−N)及びコントラストフォーカス処理の残り回数(S1−M)が何れも「0」であるか否かを判別する。何れも「0」であると判別された場合には、CPU11の処理は、ステップS31へ移行する。少なくとも何れかが「0」ではないと判別された場合には、CPU11の処理はステップS12へ戻り、CPU11は、2度目以降のレーザフォーカス処理に係る制御処理を行う。
【0067】
ステップS15の分岐処理、又は、ステップS20の分岐処理によりステップS30の処理へ移行した場合には、CPU11は、成功したデコードデータを出力する(ステップS30)。そして、デコード制御処理を終了する。
【0068】
ステップS22の分岐処理でステップS31へ移行した場合には、CPU11は、デコードが失敗した旨を示す信号を出力する。そして、デコード処理を終了する。
【0069】
図9は、ステップS14において呼び出されるレーザフォーカス処理の制御手順を示したフローチャートである。
【0070】
レーザフォーカス制御処理が開始されると、CPU11は、先ず、レーザ駆動電源23及びイメージャコントローラ19へ指令を送り、エイマー214を点灯させる(ステップS41)。このとき、CPU11はレーザフォーカス制御処理の開始からの経過時間のカウントを開始する。CPU11は、イメージャコントローラ19へ指令を送ってフォーカス機構213を動作させ、可変焦点レンズ212の焦点位置を設定された位置へ移動させる(ステップS42)。
【0071】
CPU11は、イメージャコントローラ19へ指令を送り、撮像素子211に撮像させるとともに、撮像素子211からイメージャコントローラ19へ送られる撮像データをDMAによってRAM13へ直接転送させる(ステップS43)。このとき、RAM13へ転送させるデータは、撮像データのうちエイマー214の発光による輝点が現れ得る範囲のデータのみを選択することとしても良い。そして、CPU11は、レーザ駆動電源23及びイメージャコントローラ19へ指令を送り、エイマー214を消灯させる(ステップS44)。
【0072】
それから、CPU11は、RAM13へ転送された撮像データを解析して、データ内に、エイマー214の発光による輝点が検出されたか否かを判別する(ステップS45)。エイマー214の発光による輝点が検出されなかったと判別された場合には、“NO”へ分岐し、CPU11の処理は、ステップS54へ移行する。
【0073】
エイマー214の発光による輝点が検出されたと判別された場合には、“YES”へ分岐し、CPU11は、フレーム画像内における輝点の座標を同定する(ステップS46)。そして、CPU11は、この輝点の座標に基づいて焦点位置を算出する(ステップS47)。
【0074】
次いで、CPU11は、イメージャコントローラ19へ指令を送り、フォーカス機構213を動作させて可変焦点レンズ212の焦点位置を算出された位置へと駆動させる。具体的には、CPU11は、記憶部15に記憶された焦点位置とフォーカス機構213への印加電圧との対応テーブルに基づいて、算出された焦点位置に対応する印加電圧をフォーカス機構213に印加させる(ステップS48)。
【0075】
CPU11は、イメージャコントローラ19へ指令を送って、先ず、イルミネーション215を点灯させ(ステップS49)、続いて、撮像素子211に撮像させるとともに、撮像素子211からイメージャコントローラ19へ送られる撮像データをRAM13へDMA転送させる(ステップS50)。それから、CPU11は、イメージャコントローラ19へ指令を送って、イルミネーション215を消灯させる(ステップS51)。
【0076】
そして、CPU11は、RAM13に転送された撮像データを元に、撮像されたバーコードシンボルの解読処理を行う(ステップS52)。CPU11は、デコードに成功したか否かを判別する(ステップS53)。そして、成功していると判別された場合には、CPU11の処理は、デコード制御処理へ戻る。一方、成功していないと判別された場合には、CPU11は、更に、設定された実行時間Taが経過したか否かを判別する(ステップS54)。実行時間Taが経過したと判別された場合には、CPU11は、レーザフォーカス制御処理を終了してデコード制御処理へ戻る。実行時間Taが経過していないと判別された場合には、CPU11の処理は、ステップS41へ戻り、レーザフォーカス制御処理を繰り返す。
【0077】
図10は、ステップS19において呼び出されるコントラストフォーカス処理の制御手順を示したフローチャートである。
【0078】
コントラストフォーカス制御処理が開始されると、CPU11は、先ず、可変焦点レンズ212による焦点位置の変更範囲、及び、変更ステップ数を設定する(ステップS61)。具体的には、CPU11は、フォーカス処理により直近で算出された中心の焦点位置に対応する印加電圧、及び、コントラストフォーカス制御処理におけるフォーカス制御の実行時間Tbに基づいて変更可能な印加電圧の変更範囲及び変更ステップ数を設定する。
【0079】
CPU11は、イメージャコントローラ19に指令を送ってイルミネーション215を点灯させる(ステップS62)。続いて、CPU11は、イメージャコントローラ19に指令を送ってフォーカス機構213を動作させ、可変焦点レンズ212の焦点位置を変更させる(ステップS63)。
【0080】
CPU11は、イメージャコントローラ19に指令を送って撮像素子211に撮像させると共に、撮像素子211からイメージャコントローラ19へ送られる撮像データをRAM13へDMA転送させる(ステップS64)。それから、CPU11は、RAM13に転送された撮像データの所定領域におけるコントラスト値を算出する(ステップS65)。
【0081】
次に、CPU11は、ステップS61の処理で設定された全ての印加電圧ステップを設定、撮像し終えたか否かを判別する(ステップS66)。未だ設定範囲の全ての印加電圧ステップにおける撮像がなされていないと判別された場合には、ステップS63へ戻り、CPU11は、次のステップの印加電圧を用いてステップS63〜S66の処理を繰り返す。一方、全ての印加電圧ステップにおいて撮像が行われたと判別された場合には、CPU11の処理は、ステップS67へ移行する。
【0082】
CPU11は、算出した各焦点位置の撮像データにおけるコントラスト値の中から最大値を示した焦点位置を選択し、イメージャコントローラ19に指令を送って、選択された焦点位置へ可変焦点レンズ212の焦点位置を移動させる(ステップS67)。続いて、CPU11は、イメージャコントローラ19に指令送って、撮像素子211に撮像を行わせ、撮像データをRAM13へDMA転送させる(ステップS68)。また、CPU11は、イメージャコントローラ19に指令を送って、イルミネーション215を消灯させる(ステップS69)。
【0083】
そして、CPU11は、RAM13に取り込まれた撮像データに基づいてバーコードシンボルの解読を行う(ステップS70)。シンボルの解読が終了すると、CPU11は、コントラストフォーカス制御処理を終了してデコード制御処理へ戻る。
【0084】
以上のように、上記の実施形態のコード読取装置1によれば、
エイマー214から出射されたレーザ光ビームによりコードシンボルを含む面内に形成された輝点の画像データにおける座標に基づいて、焦点位置を移動させるフォーカス設定を実行時間Ta以内で繰り返し行うことでフォーカス調整を行うレーザフォーカス法と、実行時間Tb以内でフォーカス機構213を動作させて焦点位置を変化させ、変化させた焦点位置毎に取得された画像データについて各々コントラスト値を算出し、最大(極大)のコントラスト値を示した焦点位置に可変焦点レンズ212の焦点位置を移動させることでフォーカス調整を行うコントラストフォーカス法とを併用し、レーザフォーカス処理とコントラストフォーカス処理の実行回数を各々独立にカウントして、各々の実行回数の増加に従って実行時間Ta、Tbをそれぞれ短縮していく構成なので、2度目以降のフォーカス調整時には、より短時間でフォーカス調整を実行することができると共に、処理に必要とする実行時間が大きく異なるレーザフォーカス処理とコントラストフォーカス処理についてそれぞれ独立に初期設定の実行時間を定め、また、独立に実行時間が短縮されていくので、精度の高いコントラスト処理を2度目以降に行う場合でもレーザフォーカス処理に影響されて必要より短時間での処理を強いられることがなく、逆に、レーザフォーカス処理に不要に長い実行時間が設定されることも無く、効率的且つ確実にコードシンボルに焦点を合わせることができる。
【0085】
また、レーザフォーカス処理によれば、レーザフォーカスによるフォーカス調整とコードシンボルの読み取りとを交互に繰り返すことで、漸近的に焦点位置を調整することができる。また、シンボルの読み取りに成功した時点でレーザフォーカス処理を終了することが出来る。
【0086】
また、コードシンボルの読み取りに成功しない場合には、レーザフォーカス処理とコントラストフォーカス処理とを交互に行うことで、両者の短所を補いながら効率的に焦点位置を求め、コードシンボルの読み取りを行うことができる。
【0087】
また、レーザフォーカス処理とコントラストフォーカス処理の連続実行回数を適宜調整することによって、短時間である程度の精度を得ることができるレーザフォーカス処理の長所と、最終的に高い精度でフォーカス調整を行うことのできるコントラストフォーカス処理の長所を生かして確実なコードシンボルの読み取りを行うことができる。
【0088】
また、撮像素子211により取得された画像データをRAM13に転送してCPU11によりコードシンボルの読み取りを行わせることで、イメージャコントローラ19の構成を簡素化すると共に、撮像素子211からRAM13へ直接DMA転送させることで、迅速に読み取り処理を進めることができる。
【0089】
特に、撮像素子211からRAM13へフォーカス調整やコードシンボルの読み取りに必要な部分だけのデータを転送させることとしているので、データ転送時間を更に短縮して読み取り処理を高速化することができる。
【0090】
また、フォーカス調整を複数回繰り返す際に、前回のフォーカス設定やフォーカス調整の結果に基づいて焦点を定めてレーザフォーカス処理やコントラストフォーカス処理を行うので、漸近的に効率よく焦点位置の精度を高めていくことができる。
【0091】
また、可変焦点レンズ212として液体レンズを用いることで、特に、コントラストフォーカス処理を行う際に多数の焦点位置への移動を印加電圧の変化だけで高速に行うことができる。
【0092】
また、被写体のコードシンボルを照明するイルミネーションを備えているので、暗い場所や影部でも影響を受けずに確実にコードシンボルの読み取りを行うことができる。
【0093】
なお、本発明は、上記実施の形態に限られるものではなく、様々な変更が可能である。
例えば、上記実施の形態では、RAM13にDMA転送された撮像データに基づいてCPU11がエイマー214の輝点検出、輝点座標に基づく焦点位置の同定、コントラスト値の算出、及び、バーコードの解読処理を行ったが、イメージャコントローラ19がこれらの処理機能をASIC基板上に実装してハードウェア的に演算可能としても良い。
【0094】
また、上記実施の形態では、コントラストフォーカス制御処理において、最大のコントラスト値を求めた後にイルミネーション215を点灯し、改めて焦点位置における画像データを取得したが、イルミネーション215を点灯したままコントラスト値を求める処理と平行して各画像データを用いたデコードを行うこととしても良い。
【0095】
また、上記実施の形態では、レーザフォーカス処理とコントラストフォーカス処理とを交互に行うこととしたが、それずれ、又は、何れかを続けて複数回連続的に実行した後に他方のフォーカス処理へ移行することとしても良い。また、レーザフォーカス処理とコントラストフォーカス処理の順番が逆であっても良い。
【0096】
また、上記実施の形態では、レーザフォーカス処理及びコントラストフォーカス処理におけるフォーカス調整の一連の処理が終了した後に設定された実行時間が経過したか否かを判別して同一処理を繰り返すか否かを判別したが、割り込み信号などにより実行時間が経過した段階で中途終了させることとしてもよいし、実行時間が経過する前に、次回の繰り返し処理が行われた場合に実行時間を超過する見込みの有無で繰り返しの有無を決定することとしても良い。
【0097】
また、上記実施の形態では、レーザフォーカス処理についてはフォーカス調整、キャプチャ及びデコードの全てを含んだ時間を実行時間として設定し、コントラストフォーカス処理においては、フォーカス調整の時間のみを実行時間として設定したが、レーザフォーカス処理においてもフォーカス調整時間のみを実行時間として設定することが可能であるし、コントラストフォーカス処理の実行時間として、キャプチャ及びデコードに要する時間を含むこととしても良い。
【0098】
また、上記実施の形態では、フォーカス調整の実行時間Ta及びTbを一次関数的に短縮したが、二次関数や指数関数などの任意のパターンで実行時間を短縮していくことが可能である。
【0099】
また、上記実施の形態における可変焦点レンズとして、液体レンズ及びガラス等を用いた固体レンズを例に挙げたが、これらに限定されるものではない。例えば、印加電圧により屈折率が変化する「電気光学結晶」の一種であるKTN(タンタル酸ニオブ酸カリウム、KTa1−xNbxO3)を用いた可変焦点レンズも利用可能である。
【0100】
また、上記実施の形態では、本発明に係るプログラムのコンピュータ読み取り可能な媒体として記憶部15(例えば、フラッシュメモリ、EEPROM、ハードディスク、ROM)を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、CD−ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
【0101】
また、上記実施の形態では、コードシンボルの読み取りが成功した時点でデコード処理を終了としたが、読み取り精度が低い場合などには、読み取り精度が所定の基準レベルを超えるまで、或いは、二度読み取りが成功するまでデコード処理を続けることとしても良い。
その他、上記実施の形態で示した数値、制御の順序などの具体的な細部は、本発明の趣旨を逸脱しない範囲において適宜変更可能である。
【0102】
本発明のいくつかの実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
【0103】
[付記]
<請求項1>
可変焦点レンズと、
前記可変焦点レンズの焦点位置を調節するフォーカス駆動手段と、
前記可変焦点レンズによる撮像方向の画像データを取得するための撮像手段と、
前記撮像方向にレーザ光ビームを出射する発光手段と、
前記フォーカス駆動手段、前記撮像手段、及び、前記発光手段の動作を制御し、取得された画像データに含まれるコードシンボルの読み取りを行う制御手段と、
を備え、
前記制御手段は、
出射された前記レーザ光ビームにより前記コードシンボルを含む面内に形成された輝点の前記画像データにおける座標に基づいて前記焦点位置を移動させるフォーカス設定を第1実行時間内で繰り返し行うことでフォーカス調整を行う第1フォーカス手段と、
第2実行時間内で前記焦点位置を変化させ、当該変化させた焦点位置毎に取得された前記画像データについて各々算出されるコントラストの大小に基づいて、前記焦点位置を移動させることでフォーカス調整を行う第2フォーカス手段と、
前記第1フォーカス手段によるフォーカス調整及び前記第2フォーカス手段によるフォーカス調整の実行回数を各々計数する計数手段と、
前記第1フォーカス手段によるフォーカス調整の実行回数が増加するのに従い前記第1実行時間が短くなるように、当該第1実行時間を所定の第1初期設定時間から短縮して設定し、前記第2フォーカス手段によるフォーカス調整の実行回数が増加するのに従い前記第2実行時間が短くなるように、当該第2実行時間を所定の第2初期設定時間から短縮して設定するフォーカス調整時間設定手段と、
を備えることを特徴とするコード読取装置。
<請求項2>
前記制御手段は、
前記撮像手段により前記フォーカス設定に基づいて取得された画像データに含まれる前記コードシンボルの読み取りに成功しない場合には、当該フォーカス設定の合計実行時間が前記第1実行時間に達するまで、前記第1フォーカス手段による前記フォーカス設定、及び、当該フォーカス設定に基づいて取得された前記画像データに含まれる前記コードシンボルの読み取りを繰り返す
ことを特徴とする請求項1に記載のコード読取装置。
<請求項3>
前記制御手段は、
前記第1フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りが前記第1実行時間内に成功しなかった場合には、前記第2フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りを行い、
前記第2フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りが前記第2実行時間内に成功しなかった場合には、前記第1フォーカス手段による前記コードシンボルの読み取りを行う
ことを特徴とする請求項1又は2に記載のコード読取装置。
<請求項4>
前記制御手段は、
前記第1フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りが、予め定められた連続実行回数成功しなかった場合には、前記第2フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りを行い、
前記第2フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りが、予め定められた連続実行回数成功しなかった場合には、前記第1フォーカス手段によるフォーカス調整に基づく前記コードシンボルの読み取りを行なう
ことを特徴とする請求項1又は2に記載のコード読取装置。
<請求項5>
前記撮像手段により取得された画像データを記憶する記憶手段を備え、
前記制御手段は、当該取得された画像データを前記記憶手段に記憶させ、前記画像データに含まれるコードシンボルの読み取りを行う
ことを特徴とする請求項1〜4の何れか一項に記載のコード読取装置。
<請求項6>
前記制御手段は、前記撮像手段による撮像範囲のうちの所定の一部の範囲の画像データのみを前記記憶手段に記憶させ、
前記第1フォーカス手段及び前記第2フォーカス手段は、当該一部の範囲の画像データによりフォーカス調整を行う
ことを特徴とする請求項5に記載のコード読取装置。
<請求項7>
前記第1フォーカス手段は、前記フォーカス設定又は前記第2フォーカス手段によるフォーカス調整により、移動先の焦点位置が既に求められている場合には、前記可変焦点レンズの焦点位置を直近の該移動先の焦点位置に合わせた後に、前記発光手段から前記レーザ光ビームを出射させた状態で前記撮像手段に画像データを取得させて前記フォーカス設定を行う
ことを特徴とする請求項1〜6の何れか一項に記載のコード読取装置。
<請求項8>
前記第2フォーカス手段は、前記第1フォーカス手段によるフォーカス調整又は当該第2フォーカス手段によるフォーカス調整により、移動先の焦点位置が既に求められている場合には、該移動先の焦点位置から前記第2実行時間内で前後に変化させた焦点位置毎に撮像対象の画像データを前記撮像手段に取得させることでフォーカス調整を行う
ことを特徴とする請求項1〜7の何れか一項に記載のコード読取装置。
<請求項9>
前記可変焦点レンズは、液体レンズであり、
前記第2フォーカス手段は、前記フォーカス駆動手段により、所定の電圧間隔で前記可変焦点レンズに電圧を印加させることで前記焦点位置を変化させる
ことを特徴とする請求項1〜8の何れか一項に記載のコード読取装置。
<請求項10>
前記撮像方向を照明する照明手段を備え、
前記制御手段は、前記第2フォーカス手段によるフォーカス調整時、及び、前記コードシンボルの読み取り時には、当該照明手段を点灯させる
ことを特徴とする請求項1〜9の何れか一項に記載のコード読取装置。
<請求項11>
可変焦点レンズと、前記可変焦点レンズの焦点位置を調節するフォーカス駆動手段と、前記可変焦点レンズによる撮像方向の画像データを取得するための撮像手段と、前記撮像方向にレーザ光ビームを出射する発光手段と、を備え、コード読取装置に用いられるコンピュータを、
前記フォーカス駆動手段、前記撮像手段、及び、前記発光手段の動作を制御し、取得された画像データに含まれるコードシンボルの読み取りを行う制御手段
として機能させるプログラムであって、
前記制御手段は、
出射された前記レーザ光ビームにより前記コードシンボルを含む面内に形成された輝点の前記画像データにおける座標に基づいて前記焦点位置を移動させるフォーカス設定を第1実行時間内で繰り返し行うことでフォーカス調整を行う第1フォーカス手段と、
第2実行時間内で前記焦点位置を変化させ、当該変化させた焦点位置毎に取得された前記画像データについて各々算出されるコントラストの大小に基づいて、前記焦点位置を移動させることでフォーカス調整を行う第2フォーカス手段と、
前記第1フォーカス手段によるフォーカス調整及び前記第2フォーカス手段によるフォーカス調整の実行回数を各々計数する計数手段と、
前記第1フォーカス手段によるフォーカス調整の実行回数が増加するのに従い前記第1実行時間が短くなるように、当該第1実行時間を所定の第1初期設定時間から短縮して設定し、前記第2フォーカス手段によるフォーカス調整の実行回数が増加するのに従い前記第2実行時間が短くなるように、当該第2実行時間を所定の第2初期設定時間から短縮して設定するフォーカス調整時間設定手段と、
を備えることを特徴とするプログラム。