以下、実施形態を図面を用いて説明する。
図1は、一実施形態におけるコード画像読み取り装置10の例を示している。コード画像読み取り装置10は、JANコード等の1次元コードやQRコード(登録商標)等の2次元コードを撮影し、コードに格納されているデータを取り出す。例えば、コード画像読み取り装置10には、オートフォーカス機能およびズーム機能を有するデジタルカメラが搭載されている。コード画像読み取り装置10は、例えば、撮影部20、コード検出部30、移動状態検出部40、制御部50、オートフォーカス部60(以下、AF部とも称する)、ズーム調整部70、通知部80、コード処理部90および表示部100を有している。以下、オートフォーカスをAFとも称する。
撮影部20は、例えば、読み取り対象のコード等の被写体を撮影し、画像データIMGDを生成する。そして、撮影部20は、画像データIMGDをコード検出部30、制御部50およびコード処理部90に出力する。なお、制御部50およびコード処理部90は、コード検出部30を介して画像データIMGDを受けてもよい。
コード検出部30は、画像データIMGに対応する撮影画像から検査領域を任意に選択する。例えば、コード検出部30は、撮影画像の中央部を検査領域として選択してもよいし、撮影画像の任意の位置から検査領域を順次選択してもよい。また、コード検出部30は、任意の検査領域に、コードが含まれているか否かを検出する。そして、コード検出部30は、検査領域にコードが含まれているとき、コードがぼけた画像か否かを判定する。
移動状態検出部40は、例えば、コード画像読み取り装置10の移動状態を加速度センサの出力を用いて検出する。例えば、移動状態検出部40は、ユーザによるコード画像読み取り装置10の移動状態を移動方向および移動速度として検出する。なお、移動状態検出部40は、角速度センサや地磁気センサ等の出力を用いて、コード画像読み取り装置10の移動状態を検出してもよい。例えば、コード画像読み取り装置10には、移動状態の検出に利用可能なセンサ(加速度センサ、角速度センサおよび地磁気センサ等のセンサ)が搭載されている。加速度センサ、角速度センサおよび地磁気センサ等のセンサは、移動状態検出部40内に設けられてもよいし、移動状態検出部40の外部に設けられてもよい。
制御部50は、コード検出部30の判定結果IINF、移動状態検出部40の検出結果MINFおよび画像データIMGDを受ける。そして、制御部50は、コードの認識が可能になる処理方法を、コード検出部30の判定結果IINFおよび移動状態検出部40の検出結果MINFに基づいて決定する。
例えば、制御部50は、コードがぼけた画像であることを示す判定結果IINFをコード検出部30から受けたとき、オートフォーカス調整の開始タイミングを検出結果MINFに基づいて検出する。すなわち、制御部50は、撮影画像(より詳細には、検査領域)内のコードがぼけた画像のとき、オートフォーカス調整の開始タイミングを移動状態検出部40の検出結果MINFに基づいて検出する。そして、制御部50は、オートフォーカス調整の開始タイミングを示す信号ACNTをAF部60に出力する。
また、制御部50は、コードがぼけた画像でないことを示す判定結果IINFをコード検出部30から受けたとき、撮影画像(より詳細には、検査領域)内のコードの解像度に基づいて、ズーム調整が必要か否かを判定する。解像度は、コードの最小構成単位の図形当たりの画素数に対応している。例えば、解像度は、コードの最小構成単位の図形の1辺当たりの画素数である。以下、コードの最小構成単位の図形を単位図形とも称する。
例えば、制御部50は、単位図形の1辺当たりの画素数が予め設定された最小値より小さいとき、ズーム調整が必要であると判定する。このように、制御部50は、コードがぼけた画像でないとき、ズーム調整が必要か否かを検査領域内のコードの解像度に基づいて判定する。そして、制御部50は、ズーム調整が必要か否か等を示す信号ZCNTをズーム調整部70に出力する。
さらに、制御部50は、コード画像読み取り装置10の操作方法等のユーザ通知に関する信号ICNTを通知部80に出力する。また、制御部50は、例えば、認識可能なコードが検出されたことを示す信号CCNTをコード処理部90に出力する。
AF部60は、デジタルカメラのオートフォーカス調整が必要であると制御部50で判定されたときに、オートフォーカス調整を実施する。例えば、AF部60は、制御部50から受ける信号ACNTに応答して、オートフォーカス調整を実施する。
ズーム調整部70は、デジタルカメラのズーム調整が必要であると制御部50で判定されたとき、ズーム調整を実施する。例えば、ズーム調整部70は、ズーム調整が必要であることを示す信号ZCNTを制御部50から受けたとき、ズーム調整を実施する。
通知部80は、制御部50からの信号ICNTに基づいて、ユーザに処理の状況や操作方法を通知するか否かを決定する。そして、通知部80は、ユーザに通知を実施するときには、通知内容を決定する。例えば、通知部80は、コード画像読み取り装置10の移動方向等を、表示部100を用いてユーザに通知する。
例えば、通知部80は、オートフォーカス調整を実施した後のコードがぼけた画像であることを示す信号ICNTを制御部50から受けたとき、コード画像読み取り装置10をコードから遠ざけるようにするためのユーザ通知DINFを表示部100に出力する。これにより、コード画像読み取り装置10をコードから遠ざける指示(ユーザ通知DINF)が表示部100に表示される。すなわち、通知部80は、オートフォーカス調整を実施した後のコードがぼけた画像のとき、コード画像読み取り装置10をコードから遠ざけるようにするための情報(ユーザ通知DINF)を、表示部100を介してユーザに通知する。
あるいは、通知部80は、ズーム調整部70でのズーム調整が不可であることを示す信号ICNTを制御部50から受けたとき、コード画像読み取り装置10をコードに近づけるようにするためのユーザ通知DINFを表示部100に出力する。例えば、コードの解像度に基づいて算出されたズーム値(撮影倍率)がズーム調整部70での調整範囲外のズーム値のとき、ズーム調整部70でのズーム調整は不可である。
すなわち、通知部80は、コードの解像度に基づいて算出されたズーム値がズーム調整部70での調整範囲外のズーム値のとき、コード画像読み取り装置10をコードに近づけるようにするための情報(ユーザ通知DINF)を、表示部100を介してユーザに通知する。このように、通知部80は、コードが認識不可のとき、コードの認識不可の原因に応じたユーザ通知DINF(例えば、コード画像読み取り装置の移動方向)をユーザに通知する。
コード処理部90は、コードに格納されているデータを取り出す。例えば、コード処理部90は、認識可能なコードが検出されたことを示す信号CCNTを制御部50から受けたとき、画像データIMGDに対応する撮影画像内のコードに格納されているデータを取り出す。すなわち、コード処理部90は、コードの認識が可能であると制御部50で判定されたとき、画像データIMGDを用いて、読み取り対象のコードに格納されているデータを取り出す。
そして、コード処理部90は、取り出したデータDOUTを表示部100に出力する。これにより、コードに格納されているデータDOUTが表示部100に表示される。表示部100は、例えば、液晶ディスプレイであり、コード処理部90の処理結果DOUTおよび通知部80で決定されたユーザ通知DINF等を表示する。
なお、コード画像読み取り装置10の構成は、この例に限定されない。例えば、ズーム調整部70は、省かれてもよい。このときには、制御部50は、ズーム調整が必要か否かを判定する必要がない。したがって、制御部50の動作を簡易にできる。
図2は、コードCODのサイズと解像度の関係の一例を示している。なお、図2は、QRコードのサイズと解像度の関係の一例を示している。QRコードでは、40種類のバージョン毎にセル数が決められている。セルは、コードの最小構成単位である。例えば、QRコードの1辺当たりのセル数は、21個から177個までバージョン毎に設定されている。解像度(例えば、セルの1辺当たりの画素数)は、QRコードの印刷時の物理サイズに依存する。1次元コードや2次元コードでは、コードの印刷時の物理サイズに対する規定がないため、様々なサイズや解像度のコードが存在する。
コードCODa、CODb、CODcは、サイズ(コード全体の1辺の長さ)が互いに同じであり、解像度が互いに異なる。例えば、コードCODaのセルの1辺当たりの画素数は、コードCODbのセルの1辺当たりの画素数より多い。また、コードCODcのセルの1辺当たりの画素数は、コードCODbのセルの1辺当たりの画素数より少ない。
コードCODd、CODb、CODeは、サイズが互いに異なり、解像度が互いに同じである。例えば、コードCODdの1辺の長さは、コードCODbの1辺の長さより短い。また、コードCODeの1辺の長さは、コードCODbの1辺の長さより長い。
図3は、図1に示したコード画像読み取り装置10のコード認識条件の一例を示している。なお、図3は、撮影距離(コードとコード画像読み取り装置10の距離)が変化したときのコード画像の光学分解能および解像度を示している。光学分解能の破線は、AFを使用しないときの光学分解能の一例を示している。また、解像度の実線は、ズームを使用しないとき(ズーム値を最小にしたとき)の解像度の一例を示し、解像度の破線は、ズーム値を最大にしたときの解像度の一例を示している。すなわち、図の網掛けは、ズーム調整可能な範囲を示している。
光学分解能が高いことは、焦点のずれが小さいことを示している。すなわち、光学分解能が低くなるにしたがい、ぼけた画像が撮影される。また、解像度が高いことは、単位図形(例えば、QRコードのセル)の1辺当たりの画素数が多いことを示している。解像度は、撮影距離が遠くなるにしたがい、低くなる。コード画像読み取り装置10は、撮影したコード画像の光学分解能および解像度が低いときには、コードを正しく認識できない。
例えば、コード画像読み取り装置10は、光学分解能が所定の下限レベルTH10より高く、かつ、解像度が所定の下限レベルTH20より高いとき、コードを認識できる。すなわち、コード画像読み取り装置10は、撮影距離が距離D10より近いときには、光学分解能を下限レベルTH10より高くできないため、コードを認識できない。また、コード画像読み取り装置10は、撮影距離が距離D20より遠いときには、解像度を下限レベルTH20より高くできないため、コードを認識できない。
例えば、コード画像読み取り装置10は、撮影距離が距離D10から距離D16までの範囲では、ズーム調整を実施しなくても、コードを認識できる。また、コード画像読み取り装置10は、撮影距離が距離D16から距離D20までの範囲では、ズーム調整を実施した後、コードを認識できる。したがって、コード画像読み取り装置10は、撮影距離が距離D10から距離D20までの範囲のとき、コードを認識できる。
なお、AFを使用しないときには、光学分解能が下限レベルTH10より高くなる撮影距離は、距離D12から距離D14の狭い範囲である。すなわち、AFを使用しないときには、コードを認識するための光学分解能の条件を満たす撮影距離は、距離D12から距離D14の狭い範囲である。AFを使用することにより、光学分解能が下限レベルTH10より高くなる撮影距離の範囲を広くできる。例えば、コード画像読み取り装置10は、AFを使用するときには、撮影距離を距離D10以上にすることにより、光学分解能を下限レベルTH10より高くできる。すなわち、AF調整を実施することにより、コードを認識するための光学分解能の条件を満たす撮影距離は、距離D10以上に拡大される。
また、ズームを使用しないときには、解像度が下限レベルTH20より高くなる撮影距離は、距離D16以下である。ズームを使用することにより、解像度が下限レベルTH20より高くなる撮影距離の範囲を広くできる。例えば、コード画像読み取り装置10は、距離D16から距離D20の範囲の撮影距離でコードを撮影したとき、ズームを使用することにより、解像度を下限レベルTH20より高くできる。すなわち、ズーム調整を実施することにより、コードを認識するための解像度の条件を満たす撮影距離は、距離D20までに拡大される。
なお、図の解像度のレベルTH22は、解像度の上限を示している。例えば、レベルTH22は、コードが画面(例えば、表示部100の画面)からはみ出さないようにしたときの解像度の上限に対応している。このときには、コード画像読み取り装置10は、コードが画面からはみ出すか否かの判定を、撮影画像(より詳細には、検査領域)内のコードの解像度に基づいて実施できる。なお、コードが画面からはみ出すか否かの判定は、解像度を用いずに実施されてもよい。すなわち、解像度の上限レベルTH22は、設定されなくてもよい。
図4は、図1に示したコード画像読み取り装置10がAF調整を実施するときの一例を示している。なお、図4は、カメラ設計時に想定した最適な撮影距離D13より遠い位置(距離D18)でコードCODbを撮影したときのAF調整およびズーム調整の一例を示している。図の破線は、AF調整およびズーム調整を実施していないときのコード画像の光学分解能および解像度を示している。また、図のコードCODb’は、コードCODbを撮影距離D18で撮影したときのコード画像に対応している。
先ず、コード画像読み取り装置10は、コードCODb’を認識するための光学分解能の条件(光学分解能が下限レベルTH10より高いか否か)を確認する。AFを使用しないで撮影されたコードCODb’の光学分解能は、光学分解能の条件(下限レベルTH10より高い光学分解能)を満たしていない。この状態では、コードCODb’は、認識不可である。このため、コード画像読み取り装置10は、AF調整を実施し、コードCODb’に焦点を合わせる。すなわち、コード画像読み取り装置10は、AFを使用した撮影を実施し、光学分解能が下限レベルTH10より高い撮影画像を生成する。
次に、コード画像読み取り装置10は、コードCODb’を認識するための解像度の条件(解像度が下限レベルTH20より高いか否か)を確認する。図の例では、撮影距離が遠いため、ズームを使用しないで撮影されたコードCODb’の解像度は、コードを認識可能な解像度の範囲からはずれている。この状態では、コードCODb’は、認識不可である。このため、コード画像読み取り装置10は、解像度を下限レベルTH20より高くするためのズーム値を算出し、ズーム調整を実施する。
そして、コード画像読み取り装置10は、ズーム調整で設定したズーム値で、コードCODb’を撮影する。この撮影の焦点距離は、例えば、ズーム調整の前に実施された撮影の焦点距離(AF調整で設定した焦点距離)に基づいて設定される。これにより、光学分解能および解像度の両方の条件を満たす撮影画像(コードCODb)が生成される。
このように、コード画像読み取り装置10は、撮影距離D13より遠い距離D18で撮影したコードCODb’の光学分解能および解像度をそれぞれ下限レベルTH10、TH20より高くできる。これにより、コード画像読み取り装置10は、コードCODb’を認識できる。すなわち、カメラ設計時に想定した最適な撮影距離D13より遠い位置(距離D18)にコード画像読み取り装置10をユーザが合わせたときにも、コード画像読み取り装置10は、コードCODb’に格納されているデータを取り出すことができる。
図5は、図1に示したコード画像読み取り装置10がズーム調整を実施するときの一例を示している。なお、図5は、カメラ設計時に想定した標準解像度およびサイズのコード(以下、想定コードとも称する)と異なる解像度のコードCODcを撮影したときのズーム調整の一例を示している。想定コードは、例えば、コードCODbである。図の太い破線は、ズーム調整を実施せずに撮影したときのコードCODcの解像度を示し、図の細い破線は、ズーム調整を実施せずに撮影したときの想定コードCODbの解像度を示している。例えば、コードCODb、CODcの撮影距離は、カメラ設計時に想定した最適な距離D13である。
コードCODcのセルは、コードCODbのセルに比べて、小さい。したがって、ユーザが最適な距離D13でコードCODcを撮影したときにも、撮影されたコードCODcの解像度は、想定コードCODbの解像度より低くなる(図の破線)。このため、ズームを使用しないで撮影されたコードCODcの解像度は、コードを認識可能な解像度の範囲からはずれている。この状態では、コードCODcは、認識不可である。このため、コード画像読み取り装置10は、解像度を下限レベルTH20より高くするためのズーム値を算出し、ズーム調整を実施する。
そして、コード画像読み取り装置10は、ズーム調整で設定したズーム値で、コードCODcを撮影する。ズーム調整を実施して撮影されたコードCODcの解像度は、下限レベルTH20より高くなる(図の実線)。すなわち、解像度の条件を満たす撮影画像(コードCODc)が生成される。なお、図5の例では、最適な距離D13でコードCODcが撮影されているため、AF調整を実施しなくても、光学分解能は、下限レベルTH10より高い。
このように、コード画像読み取り装置10は、読み出し対象のコードCODcの解像度が想定コードCODbの解像度と異なるときにも、撮影したコードCODcの光学分解能および解像度をそれぞれ下限レベルTH10、TH20より高くできる。したがって、コード画像読み取り装置10は、想定コードCODbの解像度と異なる解像度のコードCODcを認識でき、コードCODcに格納されているデータを取り出すことができる。
なお、コード画像読み取り装置10は、想定コードCODbのサイズと異なるサイズのコード(例えば、図2に示したコードCODe)も、AF調整やズーム調整を実施することにより、認識できる。すなわち、コード画像読み取り装置10は、想定コードCODbと異なる解像度やサイズのコードに格納されているデータを取り出すことができる。
図6は、図1に示したコード画像読み取り装置10のユーザ通知の一例を示している。コードCOD(10)は、距離D10より近い位置で撮影されたコードCODである。また、コードCOD(20)は、光学分解能および解像度の両方の条件を満たす撮影距離(例えば、距離D10から距離D20までの範囲)で撮影されたコードCODである。コードCOD(30)は、距離D20より遠い位置で撮影されたコードCODである。また、図6の解像度の実線、破線および網掛けの意味は、図3と同じである。
撮影距離が距離D10より近いときには、AF調整を実施しても、焦点は合わない。すなわち、コード画像読み取り装置10は、撮影距離が距離D10より近いとき、撮影画像の光学分解能を下限レベルTH10より高くできない。このため、コード画像読み取り装置10は、コード画像読み取り装置10をコードCODから遠ざけるようにするためのユーザ通知DINFを表示部100に出力する。例えば、コード画像読み取り装置10は、表示部100に“遠ざけて下さい”と表示する。
また、撮影距離が距離D20より遠いときには、ズーム調整を実施しても、撮影されるコードCOD(30)の解像度は、下限レベルTH20より高くならない。すなわち、コード画像読み取り装置10は、撮影距離が距離D20より遠いとき、コードCODの解像度を下限レベルTH20より高くできない。このため、コード画像読み取り装置10は、コード画像読み取り装置10をコードCODに近づけるようにするためのユーザ通知DINFを表示部100に出力する。例えば、コード画像読み取り装置10は、表示部100に“近づけて下さい”と表示する。
このように、コード画像読み取り装置10は、コードCODの認識不可の原因に応じた対応方法(例えば、光学分解能の条件を満たさないときの対応方法、解像度の条件を満たさないときとの対応方法)をユーザに通知する。これにより、この実施形態では、コード画像読み取り装置10の利便性を向上できる。
例えば、コードCODの認識不可の原因に応じた対応方法がユーザに通知されないコード画像読み取り装置では、ユーザは、コードの認識不可の理由を理解することが困難である。このため、誤った方向にコード画像読み取り装置10を移動する等の不適切な操作が実施されるおそれがある。これに対し、この実施形態では、コードCODの認識不可の原因に応じた対応方法がユーザに通知されるため、コードが認識されないときにも、ユーザは、コード画像読み取り装置10を適切に操作できる。
なお、撮影距離が距離D10から距離D20までの範囲では、コード画像読み取り装置10がコードCOD(20)を認識できるため、ユーザの対応方法は指示されない。例えば、コード画像読み取り装置10がコードCODを認識しているときには、コード画像読み取り装置10は、データ読み出し中等の処理内容を表示部100に表示してもよい。
また、ユーザ通知の内容は、この例に限定されない。例えば、コード画像読み取り装置10は、対応方法の代わりに、認識不可の理由をユーザに通知してもよい。あるいは、コード画像読み取り装置10は、認識不可の理由および対応方法の両方を通知してもよい。
図7は、図1に示したコード画像読み取り装置10の動作の一例を示している。図7の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、ソフトウエア(プログラム)は、カメラ機能を有する電子機器(例えば、携帯電話)に図7の動作を実行させる。
処理S100では、撮影部20は、読み取り対象のコード等の被写体を、AFを使用せずに撮影する。処理S110では、コード検出部30は、図8に示すコード検出処理を実施し、コードが撮影されているか否かを検出する。撮影画像内のコードの検出方法は、例えば、特許第4180497号公報に開示されている。また、コード検出部30は、コードが撮影されているときには、撮影されたコードがぼけた画像か否かを判定する。ぼけた画像か否かは、例えば、図8に示すように、画素値の分散に基づいて判定される。なお、画素値の分散に基づく判定は、画素値の標準偏差に基づく判定も含む。したがって、ぼけた画像か否かは、画素値の標準偏差に基づいて判定されてもよい。
処理S120では、制御部50は、処理S110の結果(コード検出部30の判定結果)に基づいて、コードが検出されたか否かを判定する。コードが検出されていないとき(処理S120のNo)、コード画像読み取り装置10は、処理S260の認識不可処理を実施して、一連の処理を終了する。一方、コードが検出されたとき(処理S120のYes)、制御部50の動作は、処理S130に移る。
処理S130では、制御部50は、処理S110の結果(コード検出部30の判定結果)に基づいて、コードがぼけた画像か否かを判定する。すなわち、処理S130では、制御部50は、撮影されたコードがコードを認識するための光学分解能の条件を満たしているか否かを判定する。コードがぼけた画像のとき(処理S130のYes)、制御部50の動作は、処理S190に移る。一方、コードがぼけた画像でないとき(処理S130のNo)、制御部50の動作は、処理S140に移る。
処理S140では、制御部50は、コードの解像度が解像度条件を満たすか否かを判定する。解像度条件は、コードを認識するための解像度の条件である。例えば、解像度条件は、単位図形(例えば、QRコードのセル)の1辺当たりの画素数N、推定誤差α、最小値Tminを用いて、式(1)で表される。
Tmin<N−α ・・・(1)
画素数N、推定誤差αは、例えば、図10に示すように、コードの白/黒パターンの長さ(画素数)のヒストグラムに基づいて算出される。例えば、推定誤差αは、ピークの半値半幅に対応している。また、最小値Tminは、例えば、コードの認識に必要な単位図形の1辺当たりの最少画素数(例えば、3画素)であり、予め設定されている。すなわち、最小値Tminは、図3に示した下限レベルTH20に対応している。例えば、制御部50は、画素数Nが式(1)を満たしているとき、コードの解像度が解像度条件を満たしていると判定する。
コードの解像度が解像度条件を満たしているとき(処理S140のYes)、コード画像読み取り装置10は、処理S170(コード読み取り)を実施して、一連の処理を終了する。一方、コードの解像度が解像度条件を満たしていないとき(処理S140のNo)、制御部50の動作は、処理S150に移る。このように、処理S140では、制御部50は、コードの解像度に基づいて、ズーム調整が必要か否かを判定する。
処理S150では、制御部50は、ズーム調整が可能か否かを判定する。例えば、制御部50は、式(2)を満たす目標ズーム値Zmがズーム調整部70で調整可能な範囲に存在するか否かを判定する。
Tmin/(N−α)<Zm ・・・(2)
制御部50は、式(2)を満たす目標ズーム値Zmがズーム調整部70で調整可能な範囲に存在するとき、ズーム調整可能と判定する。換言すれば、制御部50は、式(2)を満たす目標ズーム値Zmがズーム調整部70で調整可能な範囲に存在しないとき、ズーム調整が可能でないと判定する。
ズーム調整が可能でないとき(処理S150のNo)、コード画像読み取り装置10は、処理S180のユーザ通知(近づける指示)を実施して、一連の処理を終了する。一方、ズーム調整が可能なとき(処理S150のYes)、コード画像読み取り装置10の動作は、処理S160に移る。
処理S160では、コード画像読み取り装置10は、ズーム撮影を実施する。例えば、制御部50は、式(2)を満たす目標ズーム値Zmのうち、ズーム調整部70で調整可能な最小のズーム値を、適正ズーム値として算出する。そして、ズーム調整部70は、制御部50で算出された適正ズーム値に基づいて、ズーム調整を実施する。撮影部20は、ズーム調整部70で調整された適正ズーム値で、読み取り対象のコード等の被写体を撮影する。
このように、この実施形態では、撮影されたコードの解像度が解像度条件を満たしていないときに、ユーザがズーム調整の倍率(ズーム値)を決定する必要がない。このため、この実施形態では、コード画像読み取り装置10の使い勝手を向上できる。また、コードの解像度が解像度条件を満たしているときには、ズーム調整は実施されない。すなわち、この実施形態では、不必要なズーム調整を実施しないため、コードを認識するまでの時間を短縮できる。
なお、処理S160のズーム撮影の焦点距離は、例えば、処理S200のAF撮影が実施されたときには、処理S200のAF撮影の焦点距離に基づいて設定される。また、処理S200のAF撮影が実施されていないときには、処理S160のズーム撮影の焦点距離は、例えば、カメラの設計時に設定された焦点距離(処理S100の撮影の焦点距離)である。すなわち、処理S160のズーム撮影の焦点距離は、処理S160の撮影の1つ前に実施された撮影の焦点距離に基づいて設定される。
処理S170では、コード処理部90は、コードに格納されているデータを取り出す。例えば、コード画像読み取り装置10は、取り出したデータが示す情報を、表示部100に表示する。これにより、コードの読み取り処理は終了する。
処理S180では、コード画像読み取り装置10は、コード画像読み取り装置10をコードに近づけるようにするための指示を表示部100に表示する。例えば、通知部80は、コード画像読み取り装置10をコードに近づけるようにするためのユーザ通知DINFを表示部100に出力する。これにより、コード画像読み取り装置10をコードに近づけるようにするための指示(“近づけて下さい”等の指示)が表示部100に表示される。
このように、コード画像読み取り装置10は、ズーム調整を実施しても、撮影されるコードの解像度が解像度条件を満たさないとき、適切な対応方法(“近づけて下さい”等の指示)をユーザに通知する。これにより、この実施形態では、コード画像読み取り装置10の利便性を向上できる。
処理S190では、制御部50は、AF調整の開始タイミングが否かを検出する。例えば、制御部50は、図9に示すように、AF調整の開始タイミングを移動状態検出部40の検出結果に基づいて検出する。例えば、制御部50は、コード画像読み取り装置10が移動していないと判定したとき、AF調整の開始タイミングと判定する。なお、制御部50は、コード画像読み取り装置10がカメラの光軸方向に所定時間継続して移動していると判定したとき、AF調整の開始タイミングと判定してもよい。あるいは、制御部50は、コード画像読み取り装置10が光軸方向に移動している期間に、移動方向が反対方向に変化したと判定したとき、AF調整の開始タイミングと判定してもよい。
AF調整の開始タイミングが検出されなかったとき(処理S190のNo)、コード画像読み取り装置10は、処理S260の認識不可処理を実施して、一連の処理を終了する。一方、AF調整の開始タイミングが検出されたとき(処理S190のYes)、コード画像読み取り装置10の動作は、処理S200に移る。
処理S200では、コード画像読み取り装置10は、AF撮影を実施する。例えば、AF部60は、制御部50によるAF調整の開始タイミングの検出に応答して、AF調整を実施する。そして、撮影部20は、AF調整で設定された焦点距離で、読み取り対象のコード等の被写体を撮影する。
このように、この実施形態では、撮影されたコードが光学分解能の条件を満たしていないときに、ユーザがカメラの光学特性に合わせて撮影距離を細かく調整する必要がない。また、この実施形態では、ユーザがAF調整を実施するタイミングを決定する必要がない。このため、この実施形態では、コード画像読み取り装置10の使い勝手を向上できる。また、撮影されたコードが光学分解能の条件を満たしているときには、AF調整は実施されない。すなわち、この実施形態では、不必要なAF調整を実施しないため、コードを認識するまでの時間を短縮できる。
処理S210、S220は、処理S110、S120と同じである。なお、処理S210−S240では、処理S200のAF撮影で生成された撮影画像が使用される。処理S230は、コードがぼけた画像のとき(処理S230のYes)の分岐先を除いて、処理S130と同じである。例えば、AF撮影後のコードがぼけた画像のとき(処理S230のYes)、制御部50の動作は、処理S240に移る。
処理S240は、判定結果の分岐先を除いて、処理S140と同じである。例えば、AF撮影後のコードの解像度が解像度条件を満たしているとき(処理S240のYes)、コード画像読み取り装置10は、処理S250のユーザ通知(遠ざける指示)を実施して、一連の処理を終了する。一方、AF撮影後のコードの解像度が解像度条件を満たしていないとき(処理S240のNo)、処理S260の認識不可処理を実施して、一連の処理を終了する。
ここで、解像度は、図3に示したように、撮影距離が遠くなるにしたがい、低くなる。このため、処理S240で解像度条件を満たしていないときには、コード画像読み取り装置10をコードから遠ざけると、ズーム調整を実施しても解像度条件を満たさない可能性が高くなる。したがって、図7の例では、AF撮影後のコードの解像度が解像度条件を満たしていないとき(処理S240のNo)、処理S260の認識不可処理を実施して、一連の処理を終了する。
なお、処理S240の解像度条件は、処理S140で説明した式(1)と異なる条件でもよい。例えば、解像度条件は、式(3)に示すように、ズーム調整部70で調整可能な最大ズーム値Zmaxを考慮した条件でもよい。
Tmin<Zmax・(N−α) ・・・(3)
あるいは、処理S240は、省かれてもよい。すなわち、AF撮影後のコードがぼけた画像のとき(処理S230のYes)、コード画像読み取り装置10は、処理S250のユーザ通知(遠ざける指示)を実施して、一連の処理を終了してもよい。
処理S250では、コード画像読み取り装置10は、コード画像読み取り装置10をコードから遠ざけるようにするための指示を表示部100に表示する。例えば、通知部80は、コード画像読み取り装置10をコードから遠ざけるようにするためのユーザ通知DINFを表示部100に出力する。これにより、コード画像読み取り装置10をコードから遠ざけるようにするための指示(“遠ざけて下さい”等の指示)が表示部100に表示される。
このように、コード画像読み取り装置10は、AF撮影後のコードが光学分解能の条件を満たしていないとき(AF撮影後のコードがぼけた画像のとき)、適切な対応方法(“遠ざけて下さい”等の指示)をユーザに通知する。これにより、この実施形態では、コード画像読み取り装置10の利便性を向上できる。
すなわち、この実施形態では、AF調整やズーム調整を実施してもコードを認識できないと判定したとき、コードを認識できるようにする対応方法をユーザに通知できる(処理S180、S250)。これにより、この実施形態では、コード画像の読み取り操作の効率を向上できる。
処理S260では、コード画像読み取り装置10は、例えば、コードの読み取りができないことをユーザに通知する。このように、この実施形態では、コードを認識できるようにする対応方法がないと判定したとき、コード画像読み取り装置10の移動方向を指示せずに、一連の処理を終了する。
図7に示した一連の動作では、コードを読み取るまでに実施される撮影の回数は、最大3回(処理S100、S200、S160)である。コードの読み取り処理では、画像撮影に最も時間がかかる。したがって、画像撮影の回数を減らすことにより、コードの読み取り処理全体の処理時間は、効果的に短縮される。すなわち、この実施形態では、コードの読み取り処理全体の処理時間を短くできる。
例えば、ズーム値を1段ずつ変更する方法では、適正ズーム値に到達するまで、画像撮影と解像度条件の判定とが繰り返される。このため、画像撮影の回数が増加する。さらに、適正ズーム値に到達するまでに時間がかかると、ユーザの手が移動して撮影距離がずれるおそれがある。このときには、AF調整を再度実施する必要があり、画像撮影の回数はさらに増加する。このため、ズーム値を1段ずつ変更する方法では、コードの読み取り処理全体の処理時間が長くなる。換言すれば、この実施形態では、ズーム値を1段ずつ変更する方法に比べて、コードの読み取り処理全体の処理時間を短縮できる。
なお、コード画像読み取り装置10の動作は、この例に限定されない。例えば、処理S150、S160は、省かれてもよい。この動作では、コードの解像度が解像度条件を満たしていないとき(処理S140のNo)、コード画像読み取り装置10は、処理S180のユーザ通知(近づける指示)を実施して、一連の処理を終了する。例えば、ズーム機能を有さないデジタルカメラが搭載されたコード画像読み取り装置10は、図7の動作から処理S150、S160を省いた動作を実施する。
また、処理S140の解像度条件に、図3に示した上限レベルTH22に対応する最大値(例えば、図10に示す最大値Tmax)を含めてもよい。このときには、コード画像読み取り装置10は、コードが表示部100の画面からはみ出すか否かの判定をコードの解像度に基づいて実施できる。例えば、コード画像読み取り装置10は、コードが表示部100の画面からはみ出すと判定したとき、処理S250のユーザ通知(遠ざける指示)を実施して、一連の処理を終了する。
図8は、図1に示したコード検出部30の動作の一例を示している。なお、図8の動作は、例えば、図7に示した処理S110、S210に対応している。図8の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。
処理S300では、コード検出部30は、撮影画像から検査領域を任意に選択する。例えば、コード検出部30は、撮影画像の中央部を検査領域として選択する。なお、コード検出部30は、撮影画像の任意の位置から検査領域を順次選択してもよい。検査領域が順次選択されるときには、例えば、コード(ぼけたコードも含む)が検出されるまで、図8に示した一連の動作が繰り返される。
処理S310では、コード検出部30は、検査領域の水平方向および垂直方向の白黒のエッジ数Heg、Vegを算出する。白黒のエッジ数は、例えば、白黒の境界の数に対応し、画素の諧調が急変する箇所の数を検出することにより算出される。例えば、2次元コードでは、検査領域の水平方向および垂直方向の両方で、多くのエッジが検出される。また、1次元コードでは、例えば、検査領域の水平方向および垂直方向の一方のエッジ数が多くなる。
処理S320では、コード検出部30は、水平方向エッジ数Hegおよび垂直方向エッジ数Vegの両方が予め設定された基準値REF1より大きいか否かを判定する。エッジ数Heg、Vegの両方が基準値REF1より大きいとき(処理S320のYes)、コード検出部30の動作は、処理S330に移る。一方、エッジ数Heg、Vegの少なくとも一方が基準値REF1以下のとき(処理S320のNo)、コード検出部30の動作は、処理S400に移る。
処理S330では、コード検出部30は、検査領域の黒画素率BRatioを算出する。例えば、2次元コードでは、黒と白の割合が一方に偏らないように生成される。処理S340では、コード検出部30は、黒画素率BRatioが所定の最小値Bminと所定の最大値Bmaxとの間に入っているか否かを判定する。
黒画素率BRatioが最小値Bminと最大値Bmaxとの間に入っているとき(処理S340のYes)、コード検出部30の動作は、処理S350に移る。一方、黒画素率BRatioが最小値Bminと最大値Bmaxとの間に入っていないとき(処理S340のNo)、コード検出部30は、処理S390で検査領域はコード以外であると判定し、一連の処理を終了する。すなわち、コード検出部30は、検査領域の黒と白の割合が一方に偏っているとき(処理S340のNo)、コードが検査領域に含まれていないと判定する。
処理S350では、コード検出部30は、検査領域の画素値の分散SVを算出する。処理S360では、コード検出部30は、画素値の分散SVが予め設定された基準値REF3より大きいか否かを判定する。例えば、ぼけた白黒画像では、画素値の分散SVは、小さくなる。
画素値の分散SVが基準値REF3より大きいとき(処理S360のYes)、コード検出部30は、処理S370で検査領域は2次元コード(ぼけていない2次元コード)であると判定し、一連の処理を終了する。すなわち、コード検出部30は、画素値の分散SVが基準値REF3より大きいとき(処理S360のYes)、認識可能な2次元コードが撮影画像に含まれていると判定する。
一方、画素値の分散SVが基準値REF3以下のとき(処理S360のNo)、コード検出部30は、処理S380で検査領域はぼけた2次元コードであると判定し、一連の処理を終了する。すなわち、コード検出部30は、画素値の分散SVが基準値REF3以下のとき(処理S360のNo)、ぼけた2次元コードが撮影画像に含まれていると判定する。
処理S400では、コード検出部30は、水平方向エッジ数Hegおよび垂直方向エッジ数Vegの一方が予め設定された基準値REF2より大きいか否かを判定する。基準値REF2は、基準値REF1と同じ値でもよいし、基準値REF1と異なる値でもよい。
エッジ数Heg、Vegの一方が基準値REF2より大きいとき(処理S400のYes)、コード検出部30の動作は、処理S410に移る。一方、エッジ数Heg、Vegの両方が基準値REF2以下のとき(処理S400のNo)、コード検出部30は、処理S390で検査領域はコード以外であると判定し、一連の処理を終了する。すなわち、コード検出部30は、検査領域内の白黒の境界の数が少ないとき(処理S400のNo)、コードが検査領域に含まれていないと判定する。
処理S410では、コード検出部30は、検査領域の水平ライン間の相関Hcおよび垂直ライン間の相関Vcを算出する。以下、水平ライン間の相関Hcおよび垂直ライン間の相関Vcを、水平ライン間相関Hcおよび垂直ライン間相関Vcともそれぞれ称する。1次元コードでは、例えば、水平ライン間相関Hcおよび垂直ライン間相関Vcの一方が大きくなる。
処理S420では、コード検出部30は、水平ライン間相関Hcおよび垂直ライン間相関Vcの一方が予め設定された基準値REF4より大きいか否かを判定する。水平ライン間相関Hcおよび垂直ライン間相関Vcの一方が基準値REF4より大きいとき(処理S420のYes)、コード検出部30の動作は、処理S430に移る。
一方、水平ライン間相関Hcおよび垂直ライン間相関Vcの両方が基準値REF4以下のとき(処理S420のNo)、コード検出部30は、処理S460で検査領域はぼけた1次元コードであると判定し、一連の処理を終了する。すなわち、コード検出部30は、水平ライン間相関Hcおよび垂直ライン間相関Vcの両方が基準値REF4以下のとき(処理S420のNo)、ぼけた1次元コードが撮影画像に含まれていると判定する。
処理S430では、コード検出部30は、検査領域の画素値の分散SVを算出する。処理S440では、コード検出部30は、画素値の分散SVが基準値REF3より大きいか否かを判定する。画素値の分散SVが基準値REF3より大きいとき(処理S440のYes)、コード検出部30は、処理S450で検査領域は1次元コード(ぼけていない1次元コード)であると判定し、一連の処理を終了する。すなわち、コード検出部30は、画素値の分散SVが基準値REF3より大きいとき(処理S440のYes)、認識可能な1次元コードが撮影画像に含まれていると判定する。
一方、画素値の分散SVが基準値REF3以下のとき(処理S440のNo)、コード検出部30は、処理S460で検査領域はぼけた1次元コードであると判定し、一連の処理を終了する。すなわち、コード検出部30は、画素値の分散SVが基準値REF3以下のとき(処理S440のNo)、ぼけた1次元コードが撮影画像に含まれていると判定する。
すなわち、撮影画像が認識可能な2次元コードと判定される条件は、処理S320のエッジ数Heg、Vegの条件、処理S340の黒画素率BRatioの条件および処理S360の画素値の分散SVの条件を満たすときである。また、撮影画像がぼけた2次元コードと判定される条件は、処理S320のエッジ数Heg、Vegの条件および処理S340の黒画素率BRatioの条件を満たし、処理S360の画素値の分散SVの条件を満たさないときである。
そして、撮影画像が認識可能な1次元コードと判定される条件は、処理S400のエッジ数Heg、Vegの条件、処理S420のライン間相関Hc、Vcの条件および処理S440の画素値の分散SVの条件を満たすときである。また、撮影画像がぼけた1次元コードと判定される条件は、処理S400のエッジ数Heg、Vegの条件、処理S420のライン間相関Hc、Vcの条件を満たし、処理S440の画素値の分散SVの条件を満たさないときである。
処理S370−S390、S450、S460では、コード検出部30は、判定結果IINFを制御部50に出力する。これにより、制御部50は、図7に示した処理S120、S130、S220、S230等を実施できる。
このように、コード検出部30は、撮影距離と焦点距離との差の検出等の複雑な処理を実施せずに、画素値の分散SVに基づいてぼけた画像か否かを判定する。これにより、この実施形態では、ぼけた画像か否かを判定する処理の時間が長くなることを抑制できる。
なお、コード検出部30の動作は、この例に限定されない。例えば、処理S350、S360、S430、S440は、処理S310の前に、実施されてもよい。このときには、画素値の分散SVが基準値REF3より大きいか否かの判定結果は、フラグ等に記憶される。例えば、画素値の分散SVが基準値REF3以下のとき、ぼけた画像であることを示すフラグ等が設定される。
図9は、AFタイミング検出の一例を示している。コード画像読み取り装置10は、Z軸方向、X軸方向およびY軸方向に分けて、コード画像読み取り装置10の移動を検出する(図9(a))。Z軸方向は、コード画像読み取り装置10のカメラ(より詳細には、撮影レンズ)の光軸に沿う方向(光軸方向)である。なお、図9(a)のコード画像読み取り装置10では、カメラの撮影レンズは、図9(a)のコードCODに対向する側に配置されている。X軸方向およびY軸方向は、Z軸方向に直交する方向である。また、X軸方向およびY軸方向は、例えば、互いに直交している。
例えば、移動状態検出部40は、加速度センサ、角速度センサおよび地磁気センサ等のセンサの出力を用いて、コード画像読み取り装置10のZ軸方向、X軸方向およびY軸方向のそれぞれの移動速度を算出する(図9(b))。図の太線の波形は、コード画像読み取り装置10のZ軸方向、X軸方向およびY軸方向のそれぞれの移動速度の変化の一例を示している。なお、速度“0”より上側の波形は、速度“0”の下側の波形の移動方向と反対側に移動していることを示している。また、範囲DVX、DVY、DVZは、例えば、速度“0”を中心にした所定の範囲である。
X軸方向およびY軸方向の移動は、例えば、表示部100の画面内にコードCODを納めるための位置合わせをユーザが実施しているときに、発生する。そして、コードCODが表示部100の画面内に納まったときには、X軸方向およびY軸方向の移動速度は、ほぼ“0”になる。例えば、制御部50は、X軸方向の移動速度が予め設定された所定範囲DVX内で推移しているとき、コード画像読み取り装置10のX軸方向の移動はないと判定する。同様に、制御部50は、Y軸方向の移動速度が予め設定された所定範囲DVY内で推移しているとき、コード画像読み取り装置10のY軸方向の移動はないと判定する。
Z軸方向の移動は、例えば、コードCODまでの撮影距離をユーザが調整しているときに、発生する。そして、撮影距離の調整が終了したとき(コードCODを認識できるとユーザが判断したとき)には、Z軸方向の移動速度は、ほぼ“0”になる。例えば、制御部50は、Z軸方向の移動速度が予め設定された所定範囲DVZ内で推移しているとき、コード画像読み取り装置10のZ軸方向の移動はないと判定する。
時刻t10から時刻t20までの期間では、X軸方向およびY軸方向の移動速度の変化が所定範囲DVX、DVYに納まっていない。したがって、制御部50は、コード画像読み取り装置10のX軸方向およびY軸方向の位置合わせの最中であると判定する。
時刻t20以降では、X軸方向およびY軸方向の移動速度が所定範囲DVX、DVY内で推移している。したがって、制御部50は、コード画像読み取り装置10のX軸方向およびY軸方向の位置合わせが終了していると判定する。すなわち、制御部50は、表示部100の画面内にコードCODが納まっていると判定する。コードCODが表示部100の画面内に納まっているときには、撮影画像内にコードCODが存在する。
ここで、コードCODの認識条件の1つは、撮影画像内にコードCODが存在することである。したがって、X軸方向およびY軸方向の移動速度が予め設定された所定範囲DVX、DVY内で推移しているとき(時刻t20以降)は、コードCODの認識条件の1つを満たしている。
なお、時刻t20から時刻t30までの期間では、Z軸方向の移動速度の変化が所定範囲DVZに納まっていない。したがって、制御部50は、撮影距離の調整中であると判定する。
時刻t30以降では、X軸方向、Y軸方向およびZ軸方向の移動速度が所定範囲DVX、DVY、DVZ内で推移している。したがって、制御部50は、コード画像読み取り装置10が停止していると判定する。コード画像読み取り装置10が停止しているときには、コードCODを認識できるとユーザが判断している可能性が高いため、制御部50は、AF調整の開始タイミングであると判定する。すなわち、制御部50は、コード画像読み取り装置10が移動していないと判定したとき(図9の“移動なし”の丸印)、AF調整の開始タイミングと判定する。
なお、制御部50は、撮影距離の調整期間(時刻t20から時刻t30までの期間)が長いとき、ユーザが適切な撮影距離を判断できずに迷っている可能が高いため、AF調整の開始タイミングを撮影距離の調整期間に検出してもよい。例えば、制御部50は、コード画像読み取り装置10が位置合わせの終了(時刻t20)から所定時間継続してZ軸方向に移動していると判定したとき(図9の“所定時間経過”の丸印)、AF調整の開始タイミングと判定してもよい。あるいは、制御部50は、位置合わせの終了後(時刻t20以降)で、コード画像読み取り装置10のZ軸方向の移動が反対方向に変化したと判定したとき(図9の“移動方向変更”の丸印)、AF調整の開始タイミングと判定してもよい。
すなわち、制御部50は、上述した3つの状態の少なくとも1つを検出可能に形成されていればよい。そして、制御部50は、3つの状態の少なくとも1つを移動状態検出部40の検出結果に基づいて検出することにより、AF調整の開始タイミングを検出する。これにより、この実施形態では、ユーザによる端末(コード画像読み取り装置10)の移動状態に合わせた適切なタイミングで、AF調整を実施できる。3つの状態を第1状態、第2状態および第3状態として、以下に整理して示す。
第1状態は、コード画像読み取り装置10が停止している状態である。第2状態は、コード画像読み取り装置10がX軸方向およびY軸方向に移動していない状態で、かつ、コード画像読み取り装置10がカメラの光軸方向に所定時間継続して移動している状態である。第3状態は、コード画像読み取り装置10がX軸方向およびY軸方向に移動していない状態で、かつ、コード画像読み取り装置10のZ軸方向の移動が反対方向に変化した状態である。
図10は、解像度条件に関する処理の一例を示している。
先ず、制御部50は、検査領域AR(AR10、AR12)のライン毎に、白/黒パターンの長さ(画素数)を検出する(図10(a))。1次元コードCOD20では、制御部50は、例えば、横方向のラインのみに対して、白/黒パターンの長さ検出を実施する。また、2次元コードCOD22では、制御部50は、例えば、縦方向および横方向の両方のラインに対して、白/黒パターンの長さ検出を実施する。
そして、制御部50は、検出した長さ(画素数)のヒストグラムを作成する(図10(b))。例えば、1次元コードCOD20および2次元コードCOD22では、白/黒パターンの長さは、単位図形(バーコードでは最小バー、QRコードではセル)の幅の整数倍である。したがって、白/黒パターンの長さ(画素数)のヒストグラムでは、等間隔(N、2×N、3×N、4×N)でピークが発生する。
このため、制御部50は、ピークが発生した区間(画素数)N、2×N、3×N、4×Nのうち、最も画素数が少ない区間Nを、単位図形(例えば、QRコードのセル)の1辺当たりの画素数(推定画素数)として算出する。推定画素数Nは、図7で説明した式(1)の画素数Nに対応している。また、制御部50は、推定画素数Nの推定誤差±αを算出する。例えば、制御部50は、区間Nのピークの半値半幅を、推定誤差αとして算出する。
なお、制御部50は、ピークが等間隔で発生することを利用して、2つ目以降のピークとの間隔の重み付け平均を推定画素数Nとしてもよい。このときには、推定画素数Nの精度は、向上する。あるいは、制御部50は、他の方法で推定画素数Nを算出してもよい。また、制御部50は、検査領域AR内をFFTしたときの周波数の分布を、白/黒パターンの長さのヒストグラムの代わりに使用してもよい。
次に、制御部50は、推定画素数Nおよび推定誤差αに基づいて、コードCODの解像度が解像度条件を満たしているか否かを検出する(図10(c))。推定画素数Nが最小値Tminより小さいときには、例えば、ソフトウエアの処理限界により、コードCODが認識されない。このため、制御部50は、推定画素数Nが最小値Tminより小さいとき、ズーム調整が必要であると判定する。また、推定画素数Nが最大値Tmaxより大きいときには、例えば、コードCODが表示部100の画面からはみ出す可能性が高くなり、コードCODが認識されない可能性が高くなる。
推定画素数Nが最大値Tmaxより大きいときにも、コードCODが表示部100の画面からはみ出さない可能性があるため、最大値Tmaxは、解像度条件に含まれなくてもよい。このときの解像度条件は、図7で説明した式(1)で表される。なお、最大値Tmaxを含む解像度条件は、例えば、式(4)で表される。
Tmin+α<N<Tmax−α ・・・(4)
推定画素数Nが解像度条件(式(1)あるいは式(4))を満たさないとき、コード画像読み取り装置10は、適正ズーム値でズーム調整することにより、コードCODの解像度を調整する。例えば、制御部50は、ズーム撮影後のコードCODが表示部100の画面からはみ出すことを避けるため、ズーム撮影後のコードCODの推定画素数Nを最小値Tminより僅かに大きくするようなズーム値を、適正ズーム値として算出する。
すなわち、制御部50は、例えば、図7で説明した式(2)の目標ズーム値Zmのうちの最小値(=Tmin/(N−α))を、適正ズーム値として算出する。なお、設定可能なズーム値が離散値のとき、制御部50は、最小値(=Tmin/(N−α))より大きい設定可能なズーム値のうち、最小のズーム値(設定可能な値)を適正ズーム値として算出する。また、制御部50は、最小値(=Tmin/(N−α))より大きい設定可能なズーム値が存在しないとき、ズーム調整を実施しても解像度条件が満たされないと判定する。
以上、この実施形態では、コード画像読み取り装置10は、コードCODの認識不可の原因に応じた制御をコードCODの光学分解能および解像度に基づいて実施する制御部50を有している。例えば、制御部50は、コードCODがぼけた画像(光学分解能不足)のとき、AF調整の開始タイミングをコード画像読み取り装置10の移動状態に基づいて検出する。これにより、この実施形態では、AF調整を適切なタイミングで自動的に実施できる。
また、制御部50は、コードCODがぼけた画像でないとき、ズーム調整が必要か否かをコードCODの解像度に基づいて判定する。これにより、この実施形態では、適正ズーム値に設定したズーム撮影を適切なタイミングで自動的に実施できる。さらに、制御部50は、AF調整やズーム調整を実施してもコードCODを認識できないと判定したときに、コードCODを認識できるようにする対応方法をユーザに通知する。これにより、この実施形態では、コード画像読み取り装置10の利便性を向上できる。すなわち、この実施形態では、コード画像の読み取り操作の効率を向上できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
デジタルカメラが搭載されたコード画像読み取り装置であって、
画像を撮影する撮影部と、
撮影された前記画像の任意の検査領域にコードが含まれているか否かを検出し、前記検査領域内の前記コードがぼけた画像か否かを判定するコード検出部と、
前記コード画像読み取り装置の移動状態を検出する移動状態検出部と、
前記コードが前記ぼけた画像のとき、オートフォーカス調整の開始タイミングを前記移動状態検出部の検出結果に基づいて検出し、前記コードが前記ぼけた画像でないとき、ズーム調整が必要か否かを前記検査領域内の前記コードの解像度に基づいて判定する制御部と、
前記開始タイミングの検出に応答して、前記オートフォーカス調整を実施するオートフォーカス部と、
前記ズーム調整が必要であると前記制御部で判定されたとき、前記ズーム調整を実施するズーム調整部と、
前記コードの認識不可の原因に応じたユーザ通知をユーザに通知する通知部と、
前記コードに格納されているデータを取り出すコード処理部と
を備えていることを特徴とするコード画像読み取り装置。
(付記2)
前記制御部は、前記コードが前記ぼけた画像のとき、第1状態、第2状態および第3状態の少なくとも1つを前記移動状態検出部の前記検出結果に基づいて検出することにより、前記開始タイミングを検出し、
前記第1状態は、前記コード画像読み取り装置が停止している状態であり、
前記第2状態は、前記コード画像読み取り装置が前記デジタルカメラの光軸方向に直交する方向に移動していない状態で、かつ、前記コード画像読み取り装置が前記光軸方向に所定時間継続して移動している状態であり、
前記第3状態は、前記コード画像読み取り装置が前記光軸方向に直交する方向に移動していない状態で、かつ、前記コード画像読み取り装置の前記光軸方向の移動が反対方向に変化した状態であること
を特徴とする付記1記載のコード画像読み取り装置。
(付記3)
前記コード検出部は、前記検査領域の画素値の分散が予め設定された基準値以下のとき、前記コードを前記ぼけた画像と判定すること
を特徴とする付記1または付記2記載のコード画像読み取り装置。
(付記4)
前記通知部は、前記オートフォーカス調整を実施した後の前記コードが前記ぼけた画像のとき、前記コード画像読み取り装置を前記コードから遠ざけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記1ないし付記3のいずれか1項に記載のコード画像読み取り装置。
(付記5)
前記制御部は、前記コードが前記ぼけた画像でないとき、前記コードの最小構成単位の図形の1辺当たりの画素数が予め設定された最小値より小さいか否かを判定し、前記図形の1辺当たりの画素数が前記最小値より小さいとき、前記ズーム調整が必要であると判定すること
を特徴とする付記1ないし付記4のいずれか1項に記載のコード画像読み取り装置。
(付記6)
前記制御部は、前記検査領域における前記図形の1辺当たりの画素数Nを算出する際の分布に基づいて推定誤差αを検出し、前記画素数Nが前記推定誤差αおよび最小値Tminを用いた式(1)を満たさないとき、式(2)を満たす目標ズーム値Zmが前記ズーム調整部で調整可能な範囲に存在するか否かに基づいて、前記コードの認識が可能か否かを判定すること
Tmin<N−α ・・・(1)
Tmin/(N−α)<Zm ・・・(2)
を特徴とする付記5記載のコード画像読み取り装置。
(付記7)
前記通知部は、前記目標ズーム値が前記ズーム調整部で調整可能な範囲に存在しないとき、前記コード画像読み取り装置を前記コードに近づけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記6記載のコード画像読み取り装置。
(付記8)
デジタルカメラが搭載されたコード画像読み取り装置の動作方法であって、
画像を撮影し、
撮影された前記画像の任意の検査領域にコードが含まれているか否かを検出し、前記検査領域内の前記コードがぼけた画像か否かを判定し、
前記コード画像読み取り装置の移動状態を検出し、
前記コードが前記ぼけた画像のとき、オートフォーカス調整の開始タイミングを前記移動状態の検出結果に基づいて検出し、前記コードが前記ぼけた画像でないとき、ズーム調整が必要か否かを前記検査領域内の前記コードの解像度に基づいて判定し、
前記開始タイミングの検出に応答して、前記オートフォーカス調整を実施し、
前記ズーム調整が必要であると判定されたとき、前記ズーム調整を実施し、
前記コードが認識不可のとき、前記コードの認識不可の原因に応じたユーザ通知をユーザに通知し、
認識可能な前記コードが検出されたとき、前記コードに格納されているデータを取り出すこと
を特徴とするコード画像読み取り装置の動作方法。
(付記9)
前記コードが前記ぼけた画像のとき、第1状態、第2状態および第3状態の少なくとも1つを前記移動状態の前記検出結果に基づいて検出することにより、前記開始タイミングを検出し、
前記第1状態は、前記コード画像読み取り装置が停止している状態であり、
前記第2状態は、前記コード画像読み取り装置が前記デジタルカメラの光軸方向に直交する方向に移動していない状態で、かつ、前記コード画像読み取り装置が前記光軸方向に所定時間継続して移動している状態であり、
前記第3状態は、前記コード画像読み取り装置が前記光軸方向に直交する方向に移動していない状態で、かつ、前記コード画像読み取り装置の前記光軸方向の移動が反対方向に変化した状態であること
を特徴とする付記8記載のコード画像読み取り装置の動作方法。
(付記10)
前記検査領域の画素値の分散が予め設定された基準値以下のとき、前記コードを前記ぼけた画像と判定すること
を特徴とする付記8または付記9記載のコード画像読み取り装置の動作方法。
(付記11)
前記オートフォーカス調整を実施した後の前記コードが前記ぼけた画像のとき、前記コード画像読み取り装置を前記コードから遠ざけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記8ないし付記10のいずれか1項に記載のコード画像読み取り装置の動作方法。
(付記12)
前記コードが前記ぼけた画像でないとき、前記コードの最小構成単位の図形の1辺当たりの画素数が予め設定された最小値より小さいか否かを判定し、前記図形の1辺当たりの画素数が前記最小値より小さいとき、前記ズーム調整が必要であると判定すること
を特徴とする付記8ないし付記11のいずれか1項に記載のコード画像読み取り装置の動作方法。
(付記13)
前記検査領域における前記図形の1辺当たりの画素数Nを算出する際の分布に基づいて推定誤差αを検出し、前記画素数Nが前記推定誤差αおよび最小値Tminを用いた式(1)を満たさないとき、式(2)を満たす目標ズーム値Zmが前記ズーム調整部で調整可能な範囲に存在するか否かに基づいて、前記コードの認識が可能か否かを判定すること
Tmin<N−α ・・・(1)
Tmin/(N−α)<Zm ・・・(2)
を特徴とする付記12記載のコード画像読み取り装置の動作方法。
(付記14)
前記目標ズーム値が前記ズーム調整部で調整可能な範囲に存在しないとき、前記コード画像読み取り装置を前記コードに近づけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記13記載のコード画像読み取り装置の動作方法。
(付記15)
デジタルカメラが搭載された電子機器に実行させるコード画像読み取りプログラムであって、
前記電子機器を付記1ないし付記7のいずれか1項に記載のコード画像読み取り装置として動作させるコード画像読み取りプログラム。
(付記16)
デジタルカメラが搭載された電子機器に実行させるコード画像読み取りプログラムであって、
画像を撮影する撮影処理と、
撮影された前記画像の任意の検査領域にコードが含まれているか否かを検出し、前記検査領域内の前記コードがぼけた画像か否かを判定するコード検出処理と、
前記電子機器の移動状態を検出する移動状態検出処理と、
前記コードが前記ぼけた画像のとき、オートフォーカス調整の開始タイミングを前記移動状態の検出結果に基づいて検出し、前記コードが前記ぼけた画像でないとき、ズーム調整が必要か否かを前記検査領域内の前記コードの解像度に基づいて判定する制御処理と、
前記開始タイミングの検出に応答して、前記オートフォーカス調整を実施するオートフォーカス処理と、
前記ズーム調整が必要であると判定されたとき、前記ズーム調整を実施するズーム調整処理と、
前記コードが認識不可のとき、前記コードの認識不可の原因に応じたユーザ通知をユーザに通知する通知処理と、
認識可能な前記コードが検出されたとき、前記コードに格納されているデータを取り出すコード処理と
を前記電子機器に実行させることを特徴とするコード画像読み取りプログラム。
(付記17)
前記コードが前記ぼけた画像のとき、第1状態、第2状態および第3状態の少なくとも1つを前記移動状態の前記検出結果に基づいて検出することにより、前記開始タイミングを検出し、
前記第1状態は、前記電子機器が停止している状態であり、
前記第2状態は、前記電子機器が前記デジタルカメラの光軸方向に直交する方向に移動していない状態で、かつ、前記電子機器が前記光軸方向に所定時間継続して移動している状態であり、
前記第3状態は、前記電子機器が前記光軸方向に直交する方向に移動していない状態で、かつ、前記電子機器の前記光軸方向の移動が反対方向に変化した状態であること
を特徴とする付記16記載のコード画像読み取りプログラム。
(付記18)
前記検査領域の画素値の分散が予め設定された基準値以下のとき、前記コードを前記ぼけた画像と判定すること
を特徴とする付記16または付記17記載のコード画像読み取りプログラム。
(付記19)
前記オートフォーカス調整を実施した後の前記コードが前記ぼけた画像のとき、前記電子機器を前記コードから遠ざけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記16ないし付記18のいずれか1項に記載のコード画像読み取りプログラム。
(付記20)
前記コードが前記ぼけた画像でないとき、前記コードの最小構成単位の図形の1辺当たりの画素数が予め設定された最小値より小さいか否かを判定し、前記図形の1辺当たりの画素数が前記最小値より小さいとき、前記ズーム調整が必要であると判定すること
を特徴とする付記16ないし付記19のいずれか1項に記載のコード画像読み取りプログラム。
(付記21)
前記検査領域における前記図形の1辺当たりの画素数Nを算出する際の分布に基づいて推定誤差αを検出し、前記画素数Nが前記推定誤差αおよび最小値Tminを用いた式(1)を満たさないとき、式(2)を満たす目標ズーム値Zmが前記ズーム調整部で調整可能な範囲に存在するか否かに基づいて、前記コードの認識が可能か否かを判定すること
Tmin<N−α ・・・(1)
Tmin/(N−α)<Zm ・・・(2)
を特徴とする付記20記載のコード画像読み取りプログラム。
(付記22)
前記目標ズーム値が前記ズーム調整部で調整可能な範囲に存在しないとき、前記電子機器を前記コードに近づけるようにするための前記ユーザ通知をユーザに通知すること
を特徴とする付記21記載のコード画像読み取りプログラム。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。