以下、添付図面を参照して本発明に係る実施の形態及び変形例を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
図1〜図15を参照して、本発明に係る実施の形態を説明する。先ず、図1〜図4を参照して、本実施の形態の装置構成を説明する。図1に、本実施の形態のスキャナ装置1の正面の外観構成を示す。図2に、スキャナ装置1の機能構成を示す。図3に、イメージャモジュール21の平面構成を示す。図4に、液体レンズ212の焦点変化を示す。
本実施の形態のスキャナ装置1は、情報の入力受付け、情報の記憶、情報の送受信、及び一次元バーコード、二次元コード等のシンボル読み取りなどの機能を有する携帯機器である。
図1に示すように、スキャナ装置1は、筐体としてのケース2を備える。スキャナ装置1は、ケース2の正面に、トリガキー12Aと、各種キー12Bと、表示部14と、スピーカ18Aと、を備える。スキャナ装置1は、ケース2の側面に、トリガキー12Cを備える。また、スキャナ装置1は、ケース2の先端に、イメージャモジュール21を備える。スピーカ18Aは、バーコード読み取りのデコード成功時のブザー音等を出力する。
トリガキー12A,12Cは、イメージャモジュール21によるスキャン開始の入力を受け付けるトリガキーである。各種キー12Bは、数字、文字等の入力キー、機能キー等からなり、各種情報の入力を受け付ける。表示部14は、イメージャモジュール21を用いたシンボル読み取り時のスルー画面、デコード結果等の表示情報を表示する。
次いで、図2を参照して、スキャナ装置1の内部の機能構成を説明する。図2に示すように、スキャナ装置1は、検出部、撮像制御部、デコード部としてのCPU(central Processing Unit)11と、操作部12と、RAM(Random Access Memory)13と、表示部14と、ROM(Read Only Memory)15と、通信部16と、記憶部としてのフラッシュメモリ17と、音出力部18と、駆動部としてのイメージャコントローラ19と、電圧昇圧部20と、イメージャモジュール21と、電源部22と、を備える。
スキャナ装置1のイメージャモジュール21及び電源部22を除く各部は、バス23を介して接続されている。イメージャモジュール21は、撮像素子211と、可変焦点レンズとしての液体レンズ212と、スポット光照射部としてのエイマー213と、イルミネーション214と、を有する。
CPU11は、スキャナ装置1の各部を制御する。CPU11は、ROM15からプログラムを読み出してRAM13に展開し、RAM13に展開されたプログラムとの協働で各種処理を実行する。具体的には、CPU11(コンピュータ)は、後述する処理フローで示すプログラムを実行する。
CPU11は、第1のシンボル読み取りプログラム151に従って、切り出し領域のエイマー213のレーザ光の映像の位置に応じたシンボルの焦点位置をフラッシュメモリ17に記憶された印加電圧テーブルから読み出す。そして、CPU11は、液体レンズ212の焦点位置を前記読み出した焦点位置に調整し、前記読み出した焦点位置に対応したフレーム画像内の撮像領域をフラッシュメモリ17に記憶された撮像領域テーブルから読み出し、当該読み出した撮像領域の画像を撮像素子211から取り込み、当該取り込まれた撮像領域の画像に含まれるシンボル画像をデコードする。
また、CPU11は、撮像素子211からイメージャコントローラ19に入力された画像のラインデータを、RAM13にDMA(Direct Memory Access)転送し記憶させるDMA転送機能を有する。なお、DMA転送機能は、イメージャコントローラ19が有する構成としてもよい。
操作部12は、各種キー12B、トリガキー12A,12C等のキー群を有し、当該キー群の各キーへの押下入力を受け付け、その操作情報をCPU11に出力する。
RAM13は、揮発性の半導体メモリであり、各種データ及び各種プログラムを格納するワークエリアを有する。
表示部14は、LCD(Liquid Crystal Display)、EL(electroluminescent)ディスプレイ等で構成され、CPU11から入力される表示情報に応じて各種情報を表示する。
ROM15は、読み出し専用の半導体メモリである。ROM15には、第1のシンボル読み取りプログラム151が記憶されている。
通信部16は、通信アンテナ、信号処理部、変調部、復調部等を備え、アクセスポイントと無線通信する。アクセスポイントは、通信を中継する機器である。つまり、スキャナ装置1は、通信部16により、アクセスポイントを介して、当該アクセスポイントに接続されたサーバ装置等の外部機器と通信する。通信部16は、送信情報の信号を信号処理部で処理し、変調部で変調して通信アンテナから電波としてアクセスポイントに送信情報を無線送信する。また、通信部16は、通信アンテナによりアクセスポイントから送信された電波を受信して復調部で復調し、その信号を信号処理部で信号処理して受信情報を取得する。
また、通信部16は、携帯電話通信方式により、基地局を介してサーバ装置と無線通信する無線通信部としてもよい。また、通信部16は、スキャナ装置1を載置するクレードル、又は通信ケーブルを介して、サーバ装置と有線通信する有線通信部としてもよい。
フラッシュメモリ17は、各種データを読み出し及び書き込み可能な不揮発性の半導体メモリである。
音出力部18は、音源部、アンプ、スピーカ18Aを備え、デコード成功時のブザー音を出力する。音出力部18は、CPU11から入力されたブザー音出力の指示に応じて、音源部でブザー音の信号を生成し、アンプで増幅して、スピーカ18Aから音出力する。
イメージャコントローラ19は、イメージャモジュール21及び電圧昇圧部20の制御部である。イメージャコントローラ19は、ASIC(Application Specific Integrated Circuit)等の半導体回路により構成されている。
イメージャコントローラ19は、撮像素子211から、キャプチャされた画像データの1フレームの出力タイミングに同期したフレーム同期信号と、画像データの1ラインの出力タイミングに同期したライン同期信号と、画像データに同期するためのクロック信号と、が入力される。イメージャコントローラ19は、これらフレーム同期信号、ライン同期信号及びクロック信号に基づいて、RAM13への画像データの転送タイミングを監視する。そして、イメージャコントローラ19は、監視状況に応じて液体レンズ212駆動用の電圧昇圧部20の昇圧レベルをPWM(Pulse Width Modulation)信号でコントロールすることにより液体レンズ212の焦点をリアルタイムに変化させる。
また、イメージャコントローラ19は、入力される画像データの画像領域(キャプチャ(撮像)する画像領域)を指定する画像領域指定信号を生成して撮像素子211に出力する。
電圧昇圧部20は、イメージャコントローラ19から入力されたPWM信号に応じて、液体レンズ212に電圧を印加する。
イメージャモジュール21は、焦点を調整してバーコードを撮像するモジュールである。撮像素子211は、CMOS(Complementary Metal Oxide Semiconductor Image Sensor:相補性金属酸化膜半導体)イメージセンサであり、画像領域を指定して撮像し画像データを出力することが可能な撮像素子である。撮像素子211は、液体レンズ212を含む光学系を介して入射された被写体像を光電変換して被写体の画像データの電気信号に変換する。
撮像素子211は、イメージャコントローラ19から入力された画像領域指定信号により指定されたラインの画像データを1ラインずつラインデータとしてイメージャコントローラ19に出力する。また、撮像素子211は、フレーム同期信号と、ライン同期信号と、クロック信号と、をイメージャコントローラ19に出力する。液体レンズ212は、イメージャモジュール21の光学系の一部を構成する光学素子であり、印加電圧に応じて高速で焦点位置を変更可能な可変焦点レンズである。液体レンズ212については、詳細に後述する。
エイマー213は、LD(LASER Diode)等の光源により構成され、被写体にイメージャモジュール21の撮像方向を向けるための基準となるスポット光(目標光)としてのレーザ光を出射する。イルミネーション214は、LED(Light Emitting Diode)等の光源により構成され、被写体及びその周囲の領域を明るくするための照射光(イルミネーション光とする)を出射する。
電源部22は、二次電池等で構成され、スキャナ装置1の各部に電力供給を行う。
次いで、図3を参照して、イメージャモジュール21の各部の配置を詳細に説明する。
図3に示すように、イメージャモジュール21において、液体レンズ212を含む光学系212Aの光軸に対応する位置に撮像素子211が配置されている。また、液体レンズ212を含む光学系212Aの横に、エイマー213及びイルミネーション214が配置されている。エイマー213のレーザ光がイメージャモジュール21(光学系及び撮像素子211)の画角内に含まれるように、エイマー213が配置されている。また、イルミネーション214の扇状に広がる光がイメージャモジュール21(光学系及び撮像素子211)の画角を含むように、イルミネーション214が配置されている。
エイマー213は、光学系212Aの光軸に平行な方向にレーザ光が照射されるように実装されている。このため、扇状に広がるイメージャモジュール21の画角に対するエイマー213のレーザ光の位置が距離によって異なる。
次いで、図4を参照して、液体レンズ212を詳細に説明する。図4に、印加電圧の変化による液体レンズ212の焦点変化を示す。
図4に示すように、液体レンズ212は、液体部2121,2122と、容器2123と、電極2124と、を有する。液体部2121,2122は、互いに屈折率が異なり比重が同じ水溶液及び油である。容器2123は、液体部2121,2122を密閉した容器である。電極2124は、電圧を印加するために液体部2121,2122の周囲に設けられている電極である。
液体部2121側の電極2124と、液体部2122側の電極2124との間に、電源30が接続されている構成を考える。電源30により、液体部2121側の電極2124と、液体部2122側の電極2124との間に電圧を印加し、液体部2121,2122の中央部分の界面がレンズのように湾曲することでレンズ機能を実現する。また、電源30の印加電圧を高くすることで、液体部2121,2122の中央部分の界面の湾曲が大きくなる。界面の湾曲が小さい場合に、液体レンズ212の焦点が遠方の距離の位置に合う。界面の湾曲が大きくなると、液体レンズ212の焦点も近接の距離の位置に合う。
また、液体レンズ212にかかる電圧の大きさに応じてレンズ曲率が変化するため、従来の機械的なオートフォーカス機構のようなレンズの物理的な移動が発生しないまま、電気的に高速に液体レンズ212のレンズ曲率を変化することができる。このように、印加電圧の調整によるレンズ曲率変化により、液体レンズ212の焦点調整を行うことができる。そのため、従来の機械的なオートフォーカス機構と比べ、焦点変更にかかる時間が短くなるという利点がある。このように、液体レンズ212の特長として、印加する電圧レベルに応じてレンズ曲率が変化できることと、物理的な可動部がないため耐久性が高いことと、印加電圧レベルは高電圧だが電流が流れないため消費電力が少ないことと、が挙げられる。
次いで、図5及び図6を参照して、撮像素子211により撮像されたフレーム画像内のエイマー213のレーザ光の映像の位置と、イメージャモジュール21から被写体までの距離と、の関係を説明する。図5に、近い焦点位置D1及び遠い焦点位置D2に置かれたシンボル41のスキャンの様子を示す。図6(a)に、焦点位置D1のシンボル41を撮像したフレーム画像q1を示す。図6(b)に、焦点位置D2のシンボル41を撮像したフレーム画像q2を示す。
図5に示すように、スキャナ装置1(イメージャモジュール21)からの焦点距離が近距離である焦点位置D1と、焦点距離が遠距離である焦点位置D2とに、一次元バーコードのシンボル41が置かれているものとする。一例として、この焦点位置D1及び焦点位置D2に置かれたシンボル41に対して、スキャナ装置1により画像キャプチャ(撮像)を行うケースを説明する。但し、シンボル41は、ダンボール等に貼られており、スキャナ装置1から見て、シンボル41の周りに白い領域があるものとする。
スキャナ装置1によりシンボル41を近接位置から読み取る場合、撮像素子211の画角に対してシンボル画像の相対サイズが大きくなるため、フレーム画像中でシンボル画像が大きく撮像される。図6(a)に示すように、シンボル41を近距離の焦点位置D1に置いた場合のフレーム画像q1は、シンボル画像Q1と、エイマー213のレーザ光の映像E1と、を含む。映像E1がシンボル画像Q1の端に位置しており、読み取りターゲットのシンボル41が近くにあることを示す。
反対に、スキャナ装置1によりシンボル41を遠方位置から読み取る場合、撮像素子211の画角に対するシンボル画像の相対サイズが小さいため、フレーム画像中でシンボル画像が小さく撮像される。図6(b)に示すように、シンボル41を遠距離の焦点位置D2に置いた場合のフレーム画像q2は、シンボル画像Q2と、エイマー213のレーザ光の映像E2と、を含む。映像E2がシンボル画像Q2の外側にあるのは、シンボル画像Q2が小さいためである。フレーム画像q2の中心から映像E2までの距離は、フレーム画像q1の中心から映像E1までの距離より小さい。
このように、フレーム画像の大きさを同じにした場合に、フレーム画像の中心からエイマー213のレーザ光の映像までの距離が小さくなるほど、スキャナ装置1から被写体(シンボル41)までの距離が大きくなっている。このことから、フレーム画像中のエイマーの映像位置によりターゲットのバーコードまでの距離を測定することができるため、それに合わせて液体レンズ212の焦点を調整することが可能となる。
次いで、図7及び図8を参照して、液体レンズ212の焦点位置調整を説明する。図7に、フレーム画像qと、エイマー213のレーザ光の映像Ea,Ebを含む切り出し領域pと、を示す。図8に、時間経過に応じた切り出し領域画像p1,p2,p3を示す。
スキャナ装置1において、液体レンズ212に所定の電圧を印加することにより、イメージャモジュール21の焦点位置を、被写体としてのシンボルに焦点が合うターゲット位置に調整する。例えば、焦点位置D1にあるシンボル41にイメージャモジュール21の焦点を合わせる場合、焦点位置D1に焦点が合う印加電圧を液体レンズ212に印加する。
図7に示すように、スキャナ装置1における撮像素子211で撮像したフレーム画像qにx軸及びy軸をとり、それらの座標をx座標及びy座標とする。例えば、フレーム画像qの左上端を原点とする。ターゲットのシンボルがイメージャモジュール21から遠いときのエイマー213の映像Eaの座標を(xa,ye)とする。座標(xa,ye)に対応するイメージャモジュール21からシンボルまでの距離の焦点位置を、焦点位置Daとする。
ターゲットのバーコードがイメージャモジュール21から近いときのエイマー213の映像Ebの座標を(xb,ye)とする。座標(xb,ye)に対応するイメージャモジュール21からシンボルまでの距離の焦点位置を、焦点位置Dbとする。また、フレーム画像qのうち、少なくとも全ての距離のエイマー213のレーザ光の映像を含むことが可能な、映像及びその周辺の領域を切り出し領域pとする。切り出し領域pの左上端及び右下端の座標を、順に、(x1,y1)、(x2,y2)とし、これらの座標が切り出し領域pの範囲を示す。
液体レンズ212の焦点位置をターゲット位置に調整するまでの時間は、液体レンズ212の環境温度に応じて異なる。液体レンズ212の温度が低いほど、シンボルのターゲット位置に液体レンズ212の焦点位置が安定するまでの時間が大きくなるため、常温、高温時においても、低温時における最大変化時間分の待ち時間が必要である。
ここで、スキャナ装置1及びシンボル41の位置を固定し、液体レンズ212の焦点位置をシンボルのターゲット位置に合わせるような印加電圧を液体レンズ212に印加し始めてから、実際に液体レンズ212の焦点位置が合うまでの状態を説明する。図8に示すように、図7のフレーム画像qの切り出し領域pの画像としての切り出し領域画像p1,p2,p3を考える。切り出し領域画像p1,p2,p3は、順に、エイマー213のレーザ光の映像E31,E32,E33を含む。
切り出し領域画像p1,p2,p3は、液体レンズ212の焦点位置をシンボルのターゲット位置に合わせるような印加電圧を液体レンズ212に印加し始めてからの時間経過が順に大きくなっているものとする。液体レンズ212の焦点位置調整開始時の切り出し領域pの画像を、切り出し領域画像p1とする。
液体レンズ212の焦点位置調整開始から、切り出し領域画像p1→切り出し領域画像p2→切り出し領域画像p3に変化するにつれて、エイマー213のレーザ光の映像は、映像E31→映像E32→映像E33と、順に焦点が合うよう変化している。また、スキャナ装置1及びシンボル41の位置を固定しているため、時間経過によらず、切り出し領域p(フレーム画像q)中のレーザ光の映像(映像E31,E32,E33)の座標は変化していない。
次いで、図9〜図11を参照して、フレーム画像中のシンボル画像及びそれ以外の画像を説明する。図9に、焦点位置D1にある二次元コードのシンボルを撮像したフレーム画像q4を示す。図10に、焦点位置D2にある二次元コードのシンボルを撮像したフレーム画像q5を示す。図11に、焦点位置D1にある一次元バーコードのシンボルを撮像したフレーム画像q6を示す。
先ず、イメージャモジュール21で焦点位置D1にある二次元コードのシンボルを撮像し、図9に示すフレーム画像q4が得られた場合を考える。但し、フレーム画像q4でエイマー213のレーザ光の映像は省略されており、フレーム画像q5,q6でも同様である。
フレーム画像q4は、シンボル画像r4と、不要画像t4と、を含む。シンボル画像r4は、焦点位置D1にある二次元コードのシンボルのイメージ領域画像である。シンボル読み取り時には、シンボル画像r4のデコードが行われる。不要画像t4は、シンボル画像r4のデコードに不要な領域の画像である。シンボルの焦点位置D1がスキャナ装置1に比較的近いため、シンボル画像r4は、フレーム画像q4中で大きな面積を有し、不要画像t4が小さな面積を有する。
ここで、イメージャモジュール21で焦点位置D2にある図9と同じ二次元コードのシンボルを撮像し、図10に示すフレーム画像q5が得られた場合を考える。フレーム画像q5は、シンボル画像r5と、不要画像t5と、を含む。シンボル画像r5は、焦点位置D2にある二次元コードのシンボルのイメージ領域画像である。不要画像t5は、シンボル画像r5のデコードに不要な領域の画像である。シンボルの焦点位置D2がスキャナ装置1から比較的遠いため、シンボル画像r5は、フレーム画像q5中でシンボル画像r4よりも小さな面積を有し、不要画像t5が不要画像t4よりも大きな面積を有する。
図9及び図10に示すように、焦点位置を変えて同じ種類のシンボルを撮像した場合に、焦点位置に応じてデコードに必要な領域も変化する。このため、デコードのために撮像素子211から取り込む撮像領域(の画像データ)は、シンボルの読み取り速度を向上させるため、焦点位置に応じて、できるだけ小さい領域とすることが好ましい。但し、デコードのために撮像素子211から取り込む撮像領域は、スキャナ装置1の操作者の操作技術にも左右されるため、ある程度マージンを持たせることが好ましい。このため、撮像領域は、焦点位置に応じたシンボル画像に対応するシンボル領域と、このシンボル領域の周囲のマージンと、からなるものとする。
また、イメージャモジュール21で焦点位置D1にある一次元バーコードのシンボルを撮像し、図11に示すフレーム画像q6が得られた場合を考える。フレーム画像q6は、シンボル画像r6と、不要画像t6と、を含む。シンボル画像r6は、焦点位置D1にある一次元バーコードのシンボルのイメージ領域画像である。不要画像t6は、シンボル画像r6のデコードに不要な領域の画像である。シンボルの焦点位置D1がスキャナ装置1から比較的近いため、シンボル画像r6は、フレーム画像q6中で比較的大きな面積を有し、不要画像t6が小さな面積を有する。
加えて、シンボルが長方形の一次元バーコードであるため、シンボル画像r6は、フレーム画像q6中で、正方形の二次元コードのシンボル画像r4に比べて小さな面積を有し、不要画像t6が比較的大きな面積を有する。
図9及び図11に示すように、同じ焦点位置で異なる種類のシンボルを撮像した場合に、シンボルの種類に応じてデコードに必要な領域も異なる。このため、デコードのために撮像素子211から取り込む撮像領域(の画像データ)は、シンボルの読み取り速度を向上させるため、シンボルの種類に応じて、できるだけ小さい領域とすることが好ましい。
次に、図12及び図13を参照して、スキャナ装置1のフラッシュメモリ17に記憶されている情報を説明する。図12に、印加電圧テーブル171の構成を示す。図13に、撮像領域テーブル172の構成を示す。
図12に示すように、フラッシュメモリ17には、印加電圧テーブル171が記憶されている。印加電圧テーブル171は、エイマー位置1711と、印加電圧1712と、焦点位置1713とのフィールドを有する。
エイマー位置1711は、フレーム画像qにおけるエイマー213のレーザ光の映像のx座標である。印加電圧1712は、エイマー位置1711に対応する焦点位置1713に置かれたシンボルに焦点位置を合わせるための液体レンズ212への印加電圧である。焦点位置1713は、エイマー位置1711に対応するスキャナ装置1からのターゲットのシンボルの焦点位置である。
また、図13に示すように、フラッシュメモリ17には、撮像領域テーブル172が記憶されている。撮像領域テーブル172は、焦点位置1721と、シンボルの種類1722と、撮像領域1723と、を有する。
焦点位置1721は、スキャナ装置1からのターゲットのシンボルの焦点位置である。シンボルの種類1722は、焦点位置1721に置かれたシンボルの種類である。シンボルの種類1722は、(マトリクス状)二次元コード、一次元バーコード、スタック型二次元コード等である。撮像領域1723は、撮像素子211の全画面の画像(フレーム画像)のうち、デコードに必要で実際に取り込む画像領域を示す座標である。
撮像領域1723に、シンボル画像を含んでいるとデコードが可能となる。撮像領域1723は、撮像領域の左上端及び右下端の座標により表されている。例えば、焦点位置Daで二次元コードの撮像領域1723は、(xa1−α,ya1−α)〜(xa2+α,ya2+α)である。ここで、(xa1,ya1)〜(xa2,ya2)は、フレーム画像の中心且つ横方向が水平(x軸方向)である焦点位置Daに対応するシンボル画像の領域(シンボル領域)を示す。マージンαは、焦点位置Daに対応するマージンの値を示す。シンボル領域からマージンαの分だけ、シンボル画像のずれ(平行ずれ及び回転ずれ)が許容される。マージンβは、焦点位置Dbに対応するマージンの値を示す。図13では、マージンが、焦点位置1721に応じて異なる値としているが、これに限定されるものではない。例えば、マージンは、焦点位置1721に応じて同じ値としてもよい。
次に、図14及び図15を参照して、スキャナ装置1の動作を説明する。図14に、第1のシンボル読み取り処理を示す。図15に、スキャン制御処理を示す。
第1のシンボル読み取り処理は、エイマー213のレーザ光の映像の位置に応じて液体レンズ212の焦点位置をターゲットのシンボルの焦点位置に合わせるとともに、イメージャモジュール21にシンボルの種類に応じた撮像領域でシンボルを撮像させ、取得したシンボルの画像データをデコードする処理である。スキャナ装置1において、トリガキー12A,12Cがユーザにより押下入力されたことをトリガとして、CPU11は、ROM15から読み出されてRAM13に適宜展開された第1のシンボル読み取りプログラム151との協働で、第1のシンボル読み取り処理を実行する。
図14に示すように、先ず、CPU11は、操作部12を介して、ユーザからの読み取るシンボルの種類及びマージンの値(マージンα,β…)の入力を受け付けてRAM13に格納し、初期設定を行い、イメージャモジュール21の起動の指示信号をイメージャコントローラ19に出力する(ステップS11)。ステップS11の初期設定は、例えば、撮像素子211からイメージャコントローラ19に入力された画像データ(ラインデータ)をRAM13にDMA転送する際のRAM13内の記憶領域の設定である。
そして、CPU11は、エイマー213の点灯の指示信号と、撮像素子211の切り出しキャプチャ(切り出し領域の撮像)の指示信号とを、イメージャコントローラ19に出力する(ステップS12)。切り出しキャプチャの指示信号とは、フラッシュメモリ17に記憶されている座標(x1,y1)及び座標(x2,y2)で定義された切り出し領域のラインデータの取得の指示信号である。
そして、CPU11は、DMA機能により、撮像素子211からイメージャコントローラ19に入力された切り出し領域のラインデータをRAM13にDMA転送して記憶させる(ステップS13)。そして、CPU11は、RAM13に記憶された切り出し領域の画像データ(ラインデータ)を読み出し、この切り出し領域の画像内のエイマー位置(フレーム画像内におけるエイマー213のレーザ光の映像のx座標)を検出する(ステップS14)。エイマー位置の検出は、スキャナ装置1からバーコードまでの距離の推定に対応する。
そして、CPU11は、フラッシュメモリ17に記憶された印加電圧テーブル171を参照し、ステップS14で検出したエイマー位置1711に対応する印加電圧1712を読み出し、液体レンズ212への印加電圧を、読み出した印加電圧1712に変更する指示信号をイメージャコントローラ19に出力する(ステップS15)。
そして、CPU11は、ステップS16,S17として、ステップS12,S13と同様の処理を実行する。そして、CPU11は、RAM13に記憶された切り出し領域の画像データ(ラインデータ)を読み出し、この切り出し領域の画像内のエイマー213のレーザ光の映像のコントラストを算出する(ステップS18)。そして、CPU11は、ステップS18で算出したコントラストが予め設定された一定値以上であるか、又は最初のステップS16の実行から予め設定された一定時間をタイムアウトしたか、否かを判別する(ステップS19)。
コントラストが一定値以上でなく且つタイムアウトもしていない場合(ステップS19;NO)、ステップS16に移行される。これは、液体レンズ212の焦点調整が行われている場合であり、図8の映像E31,E32のように、エイマー213のレーザ光の映像がぼやけており、ピント(焦点位置)が合っていない状態である。このような状態のときは、ステップS16からステップS19の処理を繰り返す。
コントラストが一定値以上であり又はタイムアウトした場合(ステップS19;YES)、CPU11は、エイマー213の消灯の指示信号をイメージャコントローラ19に出力する(ステップS20)。そして、CPU11は、フラッシュメモリ17に記憶された印加電圧テーブル171を参照し、ステップS14で検出したエイマー位置1711に対応する焦点位置1713を読み出して取得する(ステップS21)。
そして、CPU11は、イルミネーション214の点灯(次画像キャプチャ中のイルミネーション214の点灯及びその後の消灯)の指示信号をイメージャコントローラ19に出力する(ステップS22)。そして、CPU11は、RAM13に記憶されているステップS11で入力されたシンボルの種類及びマージンの値を読み出す(ステップS23)。
そして、CPU11は、フラッシュメモリ17に記憶された撮像領域テーブル172を参照し、ステップS23で読み出したシンボルの種類1722と、ステップS21で取得した焦点位置1721とに対応した撮像領域1723を読み出す(ステップS24)。そして、CPU11は、ステップS11で読み出した撮像領域のマージンα,β…に、ステップS23で読み出したマージンの値を代入して撮像領域を算出する(ステップS25)。
そして、CPU11は、デコード用に撮像素子211のステップS25で算出した撮像領域の画像キャプチャの指示信号をイメージャコントローラ19に出力する(ステップS26)。そして、ステップS27として、CPU11は、ステップS26により撮像素子211で取得された撮像領域のラインデータについてステップS13と同様の処理を実行する。そして、CPU11は、RAM13に記憶された撮像領域の画像データ(ラインデータ)を読み出し、この撮像領域の画像について、デコードをしやすくする画像処理(一つの画像データに合成する処理等)を施し、画像処理後の撮像領域の画像中のシンボル画像をデコードする(ステップS28)。
そして、CPU11は、ステップS28のデコードが成功したか否かを判別する(ステップS29)。デコードが成功していない場合(ステップS29;NO)、ステップS12に移行される。デコードが成功した場合(ステップS29;YES)、CPU11は、イメージャモジュール21の電源オフの指示信号をイメージャコントローラ19に出力する(ステップS30)。そして、CPU11は、デコード結果を表示部14に表示し、デコード成功のブザー音を音出力部18に鳴動させ(ステップS31)、バーコード読み取り処理を終了する。
次いで、図15を参照して、イメージャコントローラ19で実行されるスキャン制御処理を説明する。スキャン制御処理は、イメージャモジュール21を用いて焦点位置を調整してシンボルをスキャンし、エイマー213のレーザ光の映像を含む切り出し領域や、シンボル画像を含む撮像領域の画像データを取得する処理である。スキャナ装置1において、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS11に対応して、CPU11から起動の指示信号が入力されたことをトリガとして、スキャン制御処理を実行する。
図15に示すように、先ず、イメージャコントローラ19は、初期設定を行う(ステップS41)。ステップS31の初期設定は、例えば、イメージャモジュール21からの画像データの受信に関する設定である。そして、イメージャコントローラ19は、イメージャモジュール21の電源をオンする(ステップS42)。
そして、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS30に対応して、CPU11からイメージャモジュール21の電源オフの指示信号が入力されたか否かを判別する(ステップS43)。電源オフの指示信号が入力されていない場合(ステップS43;NO)、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS15に対応して、CPU11からの液体レンズ212への印加電圧変更の指示信号が入力されたか否かを判別する(ステップS44)。
印加電圧変更の指示信号が入力された場合(ステップS44;YES)、イメージャコントローラ19は、印加電圧変更の指示信号の印加電圧値に応じたPWM信号を生成して電圧昇圧部20に出力する(ステップS45)。ステップS45において、電圧昇圧部20により、液体レンズ212の印加電圧が変更される。
ステップS45の実行後、又は印加電圧変更の指示信号が入力されていない場合(ステップS44;NO)、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS12,S16,S26に対応して、CPU11から画像キャプチャの指示信号が入力されたか否かを判別する(ステップS46)。画像キャプチャの指示信号が入力されていない場合(ステップS46;NO)、ステップS43に移行される。
画像キャプチャの指示信号が入力された場合(ステップS46;YES)、イメージャコントローラ19は、ステップS46で入力された画像キャプチャの指示信号に応じて、撮像素子211の画像キャプチャ領域を設定する(ステップS47)。そして、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS12,S16に対応して、CPU11からエイマー213の点灯の指示信号が入力されたか否かを判別する(ステップS48)。
エイマー213の点灯の指示信号が入力されている場合(ステップS48;YES)、イメージャコントローラ19は、エイマー213を点灯する(ステップS49)。エイマー213の点灯の指示信号が入力されていない場合(ステップS48;NO)、第1のシンボル読み取り処理のステップS20に対応して、CPU11からエイマー213の消灯の指示信号が入力されており、イメージャコントローラ19は、エイマー213を消灯する(ステップS50)。
そして、イメージャコントローラ19は、第1のシンボル読み取り処理のステップS22に対応して、CPU11からイルミネーション214の点灯の指示信号が入力されたか否かを判別する(ステップS51)。イルミネーション214の点灯の指示信号が入力されていない場合(ステップS51;NO)、イメージャコントローラ19は、ステップS47で設定された(切り出し領域である)画像キャプチャ領域の画像領域指定信号を生成して撮像素子211に出力し、撮像素子211に画像キャプチャさせ、撮像素子211から(切り出し領域の)画像データが入力され(ステップS52)、ステップS43に移行される。
イルミネーション214の点灯の指示信号が入力された場合(ステップS51;YES)、イメージャコントローラ19は、イルミネーション214を点灯する(ステップS53)。そして、イメージャコントローラ19は、ステップS47で設定された(撮像領域である)画像キャプチャ領域の画像領域指定信号を生成して撮像素子211に出力し、撮像素子211に画像キャプチャさせ、撮像素子211から(撮像領域の)フレーム画像の画像データが入力される(ステップS54)。そして、イメージャコントローラ19は、イルミネーション214を消灯し(ステップS55)、ステップS43に移行される。
電源オフの指示信号が入力された場合(ステップS43;YES)、イメージャコントローラ19は、イメージャモジュール21の電源をオフし(ステップS56)、スキャン制御処理を終了する。
以上、本実施の形態によれば、スキャナ装置1は、切り出し領域のエイマー213のレーザ光の映像の位置(エイマー位置1711)に応じたシンボルの焦点位置1713を印加電圧テーブル171から読み出す。そして、スキャナ装置1は、液体レンズ212の焦点位置を前記読み出した焦点位置1713に調整し、前記読み出した焦点位置1713に対応したフレーム画像内の撮像領域1723を撮像領域テーブル172から読み出し、当該読み出した撮像領域1723の画像を撮像素子211から取り込み、当該取り込まれた撮像領域の画像に含まれるシンボル画像をデコードする。
このため、シンボルに液体レンズ212の焦点位置を合わせるとともに、その後の焦点位置に応じた適切な大きさの撮像領域でシンボルを撮像できるので、シンボルの読み取り応答速度を高めることができ、スキャナ装置1の操作性を向上できる。
また、撮像領域テーブル172は、シンボルの種類1722及び焦点位置1721に応じた撮像領域1723を有する。スキャナ装置1は、シンボルの種類1722及び焦点位置1721に応じた撮像領域1723の画像を撮像素子211から取り込む。このため、シンボルの種類及び焦点位置に応じた適切な大きさの撮像領域でシンボルを撮像できるので、シンボルの読み取り応答速度をさらに高めることができ、スキャナ装置1の操作性をさらに向上できる。
また、撮像領域テーブル172の撮像領域1723は、焦点位置1721が大きく(遠く)なるほど小さくなる。このため、焦点位置に応じた適切な大きさの撮像領域を取得できる。
また、撮像領域テーブル172の撮像領域1723は、焦点位置1721が大きく(遠く)なるほど小さくなるシンボルの大きさのシンボル領域と、当該シンボル領域の周囲のマージンと、からなる。スキャナ装置1は、マージンの値の入力を受け付ける操作部12を備え、撮像領域テーブル172から読み出した撮像領域1723のマージンに前記入力されたマージンの値を代入し、当該マージンの値を代入した撮像領域の画像を撮像素子211から取り込む。このため、撮像領域のマージンの値を任意に設定できる。例えば、スキャナ装置1の操作の初心者はマージンの値を小さく設定でき、熟練者はマージンの値を小さく設定できる。
また、スキャナ装置1は、切り出し領域のエイマー位置1711に応じたシンボルの焦点位置1713を印加電圧テーブル171から読み出す。このため、エイマー位置に応じてシンボルの焦点位置を容易に検出できる。
また、スキャナ装置1は、焦点位置1713を読み出した後に、エイマー213を消灯し、前記読み出された焦点位置1713に対応した撮像領域1723の画像を撮像素子211から取り込む。このため、撮像領域の画像からデコードに不要なエイマー213のレーザ光の映像を除去してデコードの失敗を防ぐことができ、シンボルの読み取り応答速度をさらに高めることができる。
(変形例)
図16〜図19を参照して、上記実施の形態の変形例を説明する。本変形例の装置構成として、上記実施の形態と同様に、スキャナ装置1を用いる。このため、上記実施の形態と異なる部分を主として説明する。
スキャナ装置1のROM15には、第1のシンボル読み取りプログラム151に替えて、第2のシンボル読み取りプログラム152が記憶されているものとする。また、フラッシュメモリ17には、印加電圧テーブル171に替えて後述する印加電圧テーブル173が記憶されているものとする。
次いで、図16を参照して、液体レンズ212の焦点位置調整を説明する。図16に、フレーム画像qと、中心領域vと、エイマー213のレーザ光の映像Ea,Ebと、を示す。
上記実施の形態では、エイマー213のレーザ光の映像の位置に応じた印加電圧を液体レンズ212に印加することにより、イメージャモジュール21の焦点位置を、被写体としてのシンボルに焦点が合うターゲット位置に調整した。本変形例では、フレーム画像qの中心に固定された中心領域画像のコントラストが一定値以上となる印加電圧を液体レンズ212に印加することにより、イメージャモジュール21の焦点位置を、被写体としてのシンボルに焦点が合うターゲット位置に調整する。
図16に示すように、スキャナ装置1における撮像素子211で撮像したフレーム画像qは、中心領域vと、エイマー213のレーザ光の映像と、を含む。中心領域vとは、予め設定されたフレーム画像qの中心に位置する固定領域である。中心領域vには、シンボルの焦点位置を変更しても、エイマー213のレーザ光の映像が含まれない領域とする。中心領域vは、例えば、80×80ピクセルの矩形領域であるものとする。中心領域vの左上端の座標を(xv1,yv1)とし、同じく右下端の座標を(xv2,yv2)とし、これらの座標が中心領域vの範囲を示す。
次に、図17を参照して、フラッシュメモリ17に記憶される情報を説明する。図17に、印加電圧テーブル173の構成を示す。
図17に示すように、印加電圧テーブル173は、印加電圧1731と、焦点位置1732と、のフィールドを有する。印加電圧1731は、焦点位置1732に置かれたシンボルに焦点位置を合わせるための液体レンズ212への印加電圧である。焦点位置1732は、スキャナ装置1からのターゲットのシンボルの焦点位置である。
また、フラッシュメモリ17には、中心領域vを示す座標(xv1,yv1)、(xv2,yv2)と、液体レンズ212に印加する印加電圧の初期値、MIN値及びMAX値と、が記憶されているものとする。印加電圧のMIN値は、調整可能な範囲で、合わせるシンボルの焦点位置が最も遠くなる(焦点距離が最大となる)印加電圧の最大値である。印加電圧のMAX値は、調整可能な範囲で、合わせるシンボルの焦点位置が最も近くなる(焦点距離が最小となる)印加電圧の最小値である。印加電圧の初期値は、MAX値とMIN値との間にある予め設定された印加電圧の値である。
次に、図18及び図19を参照して、スキャナ装置1の動作を説明する。図18に、第2のシンボル読み取り処理を示す。図19に、第2のシンボル読み取り処理の印加電圧変更処理を示す。
第2のシンボル読み取り処理は、フレーム画像の中心領域のコントラストに応じて液体レンズ212の焦点位置をターゲットのシンボルの焦点位置に合わせるとともに、イメージャモジュール21にシンボルの種類に応じた撮像領域でシンボルをスキャンさせ、取得したシンボルの画像データをデコードする処理である。スキャナ装置1において、トリガキー12A,12Cがユーザにより押下入力されたことをトリガとして、CPU11は、ROM15から読み出されてRAM13に適宜展開された第2のシンボル読み取りプログラム152との協働で、第2のシンボル読み取り処理を実行する。
図18に示すように、先ず、ステップS61は、図14の第1のシンボル読み取り処理のステップS11と同様である。そして、CPU11は、フラッシュメモリ17に記憶された印加電圧の初期値を読み出し、液体レンズ212への印加電圧を、読み出した印加電圧の初期値に設定し、フラグFに0を設定する(ステップS62)。フラグFを、0とNとMとの3つの状態をとるフラグとする。フラグFの0は、印加電圧が初期値である状態を示す値とする。フラグFのNは、印加電圧を増加していく状態を示す値とする。フラグFのMは、印加電圧を減少していく状態を示す値とする。そして、CPU11は、印加電圧変更処理を実行する(ステップS63)。
ここで、図19を参照して、ステップS63の印加電圧変更処理を説明する。先ず、CPU11は、フラグFが0であるか否かを判別する(ステップS631)。フラグFが0である場合(ステップS631;YES)、CPU11は、フラグFにNを設定する(ステップS632)。そして、CPU11は、液体レンズ212への印加電圧を、設定中の印加電圧に変更する指示信号をイメージャコントローラ19に出力し(ステップS633)、印加電圧変更処理を終了する。
フラグFが0でない場合(ステップS631;NO)、CPU11は、フラグFがNであるか否かを判別する(ステップS634)。フラグFがNである場合(ステップS634;YES)、CPU11は、液体レンズ212への印加電圧を、所定値増加するよう設定する(ステップS635)。
そして、CPU11は、設定中の印加電圧が、フラッシュメモリ17に記憶されたMAX値より大きいか否かを判別する(ステップS636)。設定中の印加電圧がMAX値より大きい場合(ステップS636;YES)、CPU11は、フラッシュメモリ17に記憶された印加電圧の初期値を読み出し、液体レンズ212への印加電圧を、読み出した印加電圧の初期値に設定し、フラグFにMを設定し(ステップS637)、ステップS633に移行される。設定中の印加電圧がMAX値より大きくない場合(ステップS636;NO)、ステップS633に移行される。
フラグFがNでない場合(ステップS634;NO)、フラグFがMであり、CPU11は、液体レンズ212への印加電圧を、所定値減少するよう設定する(ステップS638)。そして、CPU11は、設定中の印加電圧が、フラッシュメモリ17に記憶されたMIN値より小さいか否かを判別する(ステップS639)。
設定中の印加電圧がMIN値より小さい場合(ステップS639;YES)、CPU11は、フラッシュメモリ17に記憶された印加電圧の初期値を読み出し、液体レンズ212への印加電圧を、読み出した印加電圧の初期値に設定し、フラグFにNを設定し(ステップS640)、ステップS633に移行される。設定中の印加電圧がMIN値より小さくない場合(ステップS639;NO)、ステップS633に移行される。
図18に戻り、ステップS63の実行後、CPU11は、エイマー213の点灯の指示信号と、撮像素子211の中心領域vのキャプチャ(撮像)の指示信号とを、イメージャコントローラ19に出力する(ステップS64)。中心領域vのキャプチャの指示信号とは、フラッシュメモリ17に記憶されている座標(xv1,yv1)及び座標(xv2,yv2)で定義された中心領域vのラインデータの取得の指示信号である。
そして、CPU11は、DMA機能により、撮像素子211からイメージャコントローラ19に入力された中心領域vのラインデータをRAM13にDMA転送して記憶させる(ステップS65)。そして、CPU11は、RAM13に記憶された中心領域vの画像データ(ラインデータ)を読み出し、この中心領域画像のコントラストを算出する(ステップS66)。
そして、CPU11は、ステップS66で算出したコントラストが予め設定された一定値以上であるか、又は最初のステップS63の実行から予め設定された一定時間をタイムアウトしたか、否かを判別する(ステップS67)。コントラストが一定値以上でなく且つタイムアウトもしていない場合(ステップS67;NO)、ステップS63に移行される。
コントラストが一定値以上であり又はタイムアウトした場合(ステップS67;YES)、CPU11は、ステップS68を実行する。ステップS68は、図14の第1のシンボル読み取り処理のステップS20と同様である。そして、CPU11は、フラッシュメモリ17に記憶された印加電圧テーブル173を参照し、ステップS63で変更した印加電圧1731に対応する焦点位置1732を読み出して取得する(ステップS69)。ステップS70〜S79は、図14の第1のシンボル読み取り処理のステップS22〜S31と同様である。
以上、本変形例によれば、スキャナ装置1は、撮像素子211からフレーム画像の一部の中心領域vの画像を取り込み、この中心領域vの画像が一定値以上のコントラストになった焦点位置を、そのときの印加電圧1731に対応する被写体までの焦点位置1732として印加電圧テーブル173から読み出す。このため、実施の形態と同様に、シンボルに液体レンズ212の焦点位置を合わせるとともに、その後のシンボルの読み取り応答速度を高めることができ、スキャナ装置1の操作性を向上でき、さらに、中心領域vの画像のコントラストに応じてシンボルの焦点位置を容易に検出できる。
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてROM15を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ17等の不揮発性メモリ、CD−ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
なお、上記実施の形態及び変形例における記述は、本発明に係るスキャナ装置及びプログラムの一例であり、これに限定されるものではない。
上記実施の形態では、エイマー213のレーザ光の映像の位置からシンボルの焦点位置を取得する構成を説明したが、これに限定されるものではない。シンボルの焦点位置を特定する映像は、基準となる他のスポット光の映像でもよい。この映像は、スキャナ装置1との距離に応じて、フレーム画像全体の中でその位置が相対的に変化するものであればよい。例えば、スポット光は、光学系212Aの光軸方向に沿ってほぼ平行に照射されればよい。
また、上記実施の形態及び変形例では、焦点可変レンズとして、液体レンズ212を用いる構成としたが、これに限定されるものではない。例えば、印加電圧により屈折率が変化する「電気光学結晶」の一種であるKTN(タンタル酸ニオブ酸カリウム、KTa1−xNbxO3)を用いた可変焦点レンズや、機械的にレンズ位置を調整して焦点を合わせる可変焦点レンズ等、他の可変焦点レンズとしてもよい。本願では、これらを総称して可変焦点レンズという。
また、上記実施の形態では、エイマー213の光の映像を含む切り出し領域は、予め定めた領域(座標(x1,y1)及び座標(x2,y2)で表される矩形領域)である例で説明したが、これに限定されるものではない。例えば、エイマーの光の映像を含む切り出し画像は、図14のステップS12でその位置が既に検出されているので、同図のステップS16では、エイマー213のレーザ光の映像が含まれる部分領域であればよく、前記予め定めた領域より狭い領域を決定でき、この決定された領域の画像を切り出し領域の画像として取得する構成としてもよい。この部分領域は前記予め定めた領域より狭いので、一定値以上のコントラストが検出されるまで繰り返されるステップS16〜ステップS19の処理、即ち、切り出し画像の画像データの転送処理と、コントラスト検出処理と、の時間をより短縮でき、迅速な処理が可能になる。
また、上記実施の形態では、被写体までの距離を示すエイマー213のレーザ光の映像の位置と、液体レンズ212への印加電圧と、シンボルの焦点位置と、の関係を印加電圧テーブル171に予め記憶した例で説明したが、これに限定されるものではない。エイマー213のレーザ光の映像の位置と、液体レンズ212への印加電圧と、シンボルの焦点位置と、の関係を計算式で表し、エイマー213のレーザ光の映像の位置(エイマー位置)から液体レンズ212への印加電圧及びシンボルの焦点位置を上記計算式により直接算出する構成としてもよい。同様に、上記変形例での印加電圧テーブル173に代えて、液体レンズ212への印加電圧とシンボルの焦点位置との関係を計算式で表す構成としてもよい。上記計算式は、例えば、フラッシュメモリ17に記憶される。
また、上記実施の形態及び変形例では、エイマー213から照射されるスポット光(レーザ光)の映像形状を、円形として説明したが、これに限定されるものではない。スポット光の映像形状は、十字形状等、他の形状であってもよい。
また、上記実施の形態及び変形例では、イメージャコントローラ19がASIC等の半導体回路であることとして説明したが、これに限定されるものではない。例えば、イメージャコントローラ19が、CPU、RAM及びROMにより構成され、ROMから読み出されてRAMに展開されたプログラムとCPUとの協働により、イメージャコントローラ19が処理を実行する構成としてもよい。
また、上記変形例では、フレーム画像q内に固定され、エイマー213のレーザ光の映像が含まれない特定領域である中心領域vのコントラストが一定値以上の焦点位置を検出する構成であったが、これに限定されるものではない。例えば、フレーム画像q内のエイマー213のレーザ光の映像が必ず含まれる特定領域のコントラストが一定値以上の焦点位置を検出する構成としてもよい。例えば、エイマー213のレーザ光の映像を中心とした大きさが固定の特定領域である。
また、上記変形例では、液体レンズ212への印加電圧の初期値をMAX値及びMIN値の間の値とし、この印加電圧を、初期値→MAX値、初期値→MIN値へと変化させる構成としたが、これに限定されるものではない。例えば、液体レンズ212への印加電圧の初期値をMAX値とし、この印加電圧を初期値(MAX値)→MIN値と変化させる構成としてもよい。逆に、液体レンズ212への印加電圧の初期値をMIN値とし、この印加電圧を初期値(MIN値)→MAX値と変化させる構成としてもよい。
また、上記実施の形態及び変形例におけるスキャナ装置の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。