(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023180359
(43)【公開日】2023-12-21
(54)【発明の名称】情報読取装置
(51)【国際特許分類】
G06K 7/14 20060101AFI20231214BHJP
G06K 7/10 20060101ALI20231214BHJP
【FI】
G06K7/14 043
G06K7/10 372
G06K7/14 017
G06K7/14 065
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022093592
(22)【出願日】2022-06-09
(71)【出願人】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】堀口 裕介
(72)【発明者】
【氏名】山下 勉
(57)【要約】
【課題】読取り処理の失敗を抑制するための情報読取装置を提供する。
【解決手段】メモリと、カメラと、カメラによって撮像された撮像画像のうち、第1範囲を有する特定画像に対する読取り処理を実行する第1読取り実行部と、特定画像が情報コードを含み、かつ、情報コードに対する読取り処理が成功する場合に、カメラの画角によって示される全範囲に対する、情報コードを示す画像の相対的な位置を示す第1位置情報をメモリに記憶させる第1記憶制御部と、第1範囲を有する特定画像に対する読取り処理が複数回に亘って成功する場合に、メモリに記憶されている複数個の第1位置情報を利用して、特定画像の範囲を第1範囲より狭い第2範囲に設定する第1設定部と、撮像画像から第2範囲を有する特定画像を切取る第1切取り部と、第2範囲を有する特定画像に対する読取り処理を実行する第2読取り実行部と、を備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
情報読取装置であって、
メモリと、
情報コードを撮像可能なカメラと、
前記カメラによって撮像された撮像画像のうち、第1範囲を有する特定画像に対する読取り処理を実行する第1読取り実行部と、
前記特定画像が前記情報コードを含み、かつ、前記情報コードに対する前記読取り処理が成功する場合に、前記カメラの画角によって示される全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第1位置情報を前記メモリに記憶させる第1記憶制御部と、
前記第1範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第1位置情報を利用して、前記特定画像の範囲を前記第1範囲より狭い第2範囲に設定する第1設定部と、
前記特定画像の範囲が前記第2範囲に設定された場合に、前記撮像画像から前記第2範囲を有する前記特定画像を切取る第1切取り部と、
前記第2範囲を有する前記特定画像に対する前記読取り処理を実行する第2読取り実行部と、
を備える、情報読取装置。
【請求項2】
前記メモリは、さらに、複数個の範囲パターンを記憶し、
前記情報読取装置は、さらに、
前記複数個の範囲パターンの中から、前記複数個の前記第1位置情報によって示される位置の全てを含む特定の範囲パターンを選択する選択部を備え、
前記第1設定部は、前記特定画像の範囲を選択済みの前記特定の範囲パターンである前記第2範囲に設定する請求項1に記載の情報読取装置。
【請求項3】
前記画角によって示される前記全範囲には、座標系が定義されており、
前記第1位置情報は、前記座標系における前記情報コードの4隅の座標を含み、
前記情報読取装置は、さらに、
前記複数個の第1位置座標のそれぞれに含まれる前記4隅の座標を利用して、前記第2範囲を算出する算出部を備える、請求項1に記載の情報読取装置。
【請求項4】
前記情報読取装置は、さらに、
前記第2範囲を有する前記特定画像に対する前記読取り処理が失敗する場合に、前記撮像画像のうち、前記第2範囲よりも広い第3範囲を有する前記特定画像に対する前記読取り処理を実行する第3読取り実行部と、
前記第3範囲を有する前記特定画像に対する前記読取り処理が成功する場合に、前記カメラの前記画角によって示される前記全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第2位置情報を前記メモリに記憶する第2記憶制御部と、
前記第3範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第2位置情報を利用して、前記特定画像の範囲を前記第3範囲より狭い第4範囲に設定する第2設定部と、
前記特定画像の範囲が前記第4範囲に設定された場合に、前記撮像画像から前記第4範囲を有する前記特定画像を切取る第2切取り部と、
前記第2切取り部によって前記第4範囲を有する前記特定画像が切取られた場合に、前記第4範囲を有する前記特定画像に対する前記読取り処理を実行する第4読取り実行部と、
を備える、請求項1から3のいずれか一項に記載の情報読取装置。
【請求項5】
前記第1記憶制御部は、さらに、前記第2範囲を有する前記特定画像に対する前記読取り処理が成功する場合に、前記カメラの前記画角によって示される前記全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第3位置情報を前記メモリに記憶させ、
前記第1設定部は、さらに、前記第2範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第3位置情報を利用して、前記特定画像の範囲を前記第2範囲より狭い第5範囲に設定する、請求項1から3のいずれか一項に記載の情報読取装置。
【請求項6】
前記情報読取装置は、さらに、
表示部と、
前記特定画像の範囲の外枠を前記表示部に表示させる表示制御部と、
を備える、請求項1から3のいずれか一項に記載の情報読取装置。
【請求項7】
前記メモリは、閾値範囲を記憶し、
前記第1設定部は、前記メモリに記憶されている前記複数個の前記第1位置情報によって示される範囲が前記閾値範囲よりも小さい場合に、前記特定画像の範囲を前記第2範囲に設定し、
前記メモリに記憶されている複数個の前記第1位置情報によって示される範囲が前記閾値範囲よりも大きい場合に、前記特定画像の範囲が前記第2範囲に設定されない、請求項1から3のいずれか一項に記載の情報読取装置。
【請求項8】
前記情報読取装置は、複数個のモードのうちのいずれかのモードで動作し、
前記複数個のモードは、前記第1設定部が前記特定画像の範囲を設定する自動設定モードと、前記第1設定部による前記特定画像の範囲の設定が許可されない特定のモードと、を含む、請求項1から3のいずれか一項に記載の情報読取装置。
【請求項9】
前記特定のモードは、ユーザの操作に応じて前記特定画像の範囲が設定される手動設定モードを含む、請求項8に記載の情報読取装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書では、情報コードに記録された情報を読取る情報読取装置に関する技術を開示する。
【背景技術】
【0002】
特許文献1には、カメラの画角範囲よりも狭い記憶範囲を有する画像を記憶し、記憶範囲の画像に含まれる二次元コードを読み取る二次元コード読取装置が開示されている。撮像範囲より狭い記憶範囲を有する画像の二次元コードを読取ることによって、二次元コード読取装置の画像処理の負荷が低減される。一方で、狭い記憶範囲には、二次元コードが含まれにくい。二次元コード読取装置は、記憶範囲に二次元コードの一部が含まれ、二次元コードの読取りが失敗した場合に、二次元コードの全体が記憶範囲に含まれるように、記憶範囲をずらす。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、ユーザは、二次元コード読取装置の姿勢を変え得る。上記の技術では、記憶範囲がずらされたとしても、二次元コード読取装置の姿勢が安定せずにカメラの向きが変わると、記憶範囲から二次元コードが再び外れ、二次元コードの読取りが失敗する可能性がある。本明細書では、撮像画像から特定画像を切り取る構成において、読取り処理の失敗を抑制するための技術を提供する。
【課題を解決するための手段】
【0005】
本明細書が開示する情報読取装置は、メモリと、情報コードを撮像可能なカメラと、前記カメラによって撮像された撮像画像のうち、第1範囲を有する特定画像に対する読取り処理を実行する第1読取り実行部と、前記特定画像が前記情報コードを含み、かつ、前記情報コードに対する前記読取り処理が成功する場合に、前記カメラの画角によって示される全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第1位置情報を前記メモリに記憶させる第1記憶制御部と、前記第1範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第1位置情報を利用して、前記特定画像の範囲を前記第1範囲より狭い第2範囲に設定する第1設定部と、前記特定画像の範囲が前記第2範囲に設定された場合に、前記撮像画像から前記第2範囲を有する前記特定画像を切取る第1切取り部と、前記第2範囲を有する前記特定画像に対する前記読取り処理を実行する第2読取り実行部と、を備えてもよい。
【0006】
上記の構成において、メモリには、読取り処理が成功した事例として、情報コードの位置を示す第1位置情報が記憶される。そして、読取り処理が成功した複数の事例である複数個の第1位置情報を利用して、特定画像の範囲、即ち、撮像画像を切り取る範囲が、第1範囲より狭い第2範囲に設定される。読取り処理が成功した複数の事例を利用して設定された第2範囲で撮像画像を切取ることによって、読取り処理の失敗を抑制することができる。
【0007】
上述した情報読取装置では、前記メモリは、さらに、複数個の範囲パターンを記憶し、前記情報読取装置は、さらに、前記複数個の範囲パターンの中から、前記複数個の第1位置情報によって示される位置の全てを含む特定の範囲パターンを選択する選択部を備え、前記設定部は、前記特定画像の範囲を選択済みの前記特定の範囲パターンである前記第2範囲に設定してもよい。
【0008】
上述した情報読取装置では、前記画角によって示される前記全範囲には、座標系が定義されており、前記第1位置情報は、前記座標系における前記情報コードの4隅の座標を含み、前記情報読取装置は、さらに、前記複数個の第1位置座標のそれぞれに含まれる前記4隅の座標を利用して、前記第2範囲を算出する算出部を備えてもよい。
【0009】
複数個の範囲パターンを利用する上記の構成は、第2範囲を算出する処理が不要であり、処理の負荷が比較的に低い。一方、第2範囲を算出する上記の構成は、複数個の範囲パターンのような予め決まった範囲よりも柔軟に範囲を決定することができる。
【0010】
上述した情報読取装置は、さらに、前記第2範囲を有する前記特定画像に対する前記読取り処理が失敗する場合に、前記撮像画像のうち、前記第2範囲よりも広い第3範囲を有する前記特定画像に対する前記読取り処理を実行する第3読取り実行部と、前記第3範囲を有する前記特定画像に対する前記読取り処理が成功する場合に、前記カメラの前記画角によって示される前記全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第2位置情報を前記メモリに記憶する第2記憶制御部と、前記第3範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第2位置情報を利用して、前記特定画像の範囲を前記第3範囲より狭い第4範囲に設定する第2設定部と、前記特定画像の範囲が前記第4範囲に設定された場合に、前記撮像画像から前記第4範囲を有する前記特定画像を切取る第2切取り部と、前記第2切取り部によって前記第4範囲を有する前記特定画像が切取られた場合に、前記第4範囲を有する前記特定画像に対する前記読取り処理を実行する第4読取り実行部と、を備えてもよい。
【0011】
このような構成によると、第1範囲より狭い第2範囲において情報コードの読取りが失敗する場合でも、第2範囲よりも広い第3範囲を有する画像に対する読取り処理を実行して、特定画像の範囲として第4の範囲を新たに設定することができる。
【0012】
上述した情報読取装置では、前記第1記憶制御部は、さらに、前記第2範囲を有する前記特定画像に対する前記読取り処理が成功する場合に、前記カメラの前記画角によって示される前記全範囲に対する、前記情報コードを示す画像の相対的な位置を示す第3位置情報を前記メモリに記憶させ、前記第1設定部は、さらに、前記第2範囲を有する前記特定画像に対する前記読取り処理が複数回に亘って成功する場合に、前記メモリに記憶されている複数個の前記第3位置情報を利用して、前記特定画像の範囲を前記第2範囲より狭い第5範囲に設定してもよい。
【0013】
このような構成によると、特定画像の範囲を、第2範囲よりもさらに狭い第5範囲に設定することにより、読取り処理の負荷をさらに低減することができる。
【0014】
上述した情報読取装置は、さらに、表示部と、前記特定画像の範囲の外枠を前記表示部に表示させる表示制御部と、を備えてもよい。
【0015】
このような構成によると、情報読取装置のユーザは、特定画像の現在の範囲を認識することができる。
【0016】
上述した情報読取装置では、前記メモリは、閾値範囲を記憶し、前記第1設定部は、前記メモリに記憶されている前記複数個の第1位置情報によって示される範囲が前記閾値範囲よりも小さい場合に、前記特定画像の範囲を前記第2範囲に設定し、前記メモリに記憶されている複数個の前記第1位置情報によって示される範囲が前記閾値範囲よりも大きい場合に、前記特定画像の範囲が前記第2範囲に設定されなくてもよい。
【0017】
例えば、情報読取装置の姿勢が不安定になればなるほど、複数個の第1位置情報によって示される範囲も大きくなり得る。この場合、特定画像の範囲が第2範囲に設定されても、読取り処理の負荷の低減に寄与しない可能性がある。また、情報読取装置の姿勢が不安定な状況において、特定画像の範囲が少しでも狭くなると、読取り処理の負荷が低減される程度に比べて、情報読取装置の姿勢の安定性の要求が過度に厳しくなり得る。上記の構成によれば、複数個の第1位置情報によって示される範囲が比較的に大きい場合に、特定画像の範囲が第2範囲に設定されず、情報読取装置の姿勢の安定性の要求が過度に厳しくなることを防止することができる。
【0018】
上述した情報読取装置は、複数個のモードのうちのいずれかのモードで動作し、前記複数個のモードは、前記第1設定部が前記特定画像の範囲を設定する自動設定モードと、前記第1設定部による前記特定画像の範囲の設定が許可されない特定のモードと、を含んでもよい。
【0019】
このような構成によると、ユーザは、自動設定モードの許可又は不許可を選択することができる。
【0020】
上述した情報読取装置では、前記特定のモードは、ユーザの操作に応じて前記特定画像の範囲が設定される手動設定モードを含んでもよい。
【0021】
このような構成によると、ユーザは、特定画像の範囲を手動で設定することができる。
【0022】
また、上述の情報読取装置の制御方法、情報読取装置のためのコンピュータプログラム、及び、当該コンピュータプログラムを保存する記憶媒体も、新規で有用である。
【図面の簡単な説明】
【0023】
【
図2】情報読取装置が実行する処理のフロー図を示す。
【
図3】第1実施例の特定範囲設定処理のフロー図を示す。
【
図6】第2実施例の特定範囲設定処理のフロー図を示す。
【
図8】第3実施例の特定範囲設定処理のフロー図を示す。
【
図10】ユーザの操作が大きくばらつく状況における情報コードの位置情報の一例を示す。
【発明を実施するための形態】
【0024】
(第1実施例)
(情報読取装置10の構成;
図1)
図1に示される本実施例に係る情報読取装置10は、2次元バーコード等の各種情報コードに記録されたデータを読み取るための情報コード読取装置である。例えば、情報読取装置10は、読取対象(例えば、荷物、商品)に付された情報コードに記録された情報を読み取る。情報読取装置10は、店舗、倉庫等での業務に利用される業務用の装置である。なお、変形例では、情報読取装置10は、業務用の装置に限らず、スマートフォン、タブレットPC等であってもよい。
【0025】
情報読取装置10は、操作部12と、表示部14と、カメラ16と、FPGA(Field Programmable Gate Arrayの略)18と、制御部30と、を備える。カメラ16は、例えば、CCDイメージセンサ等のカメラである。情報読取装置10は、操作部12の操作に応じて、カメラ16を起動し、情報コードを撮像する。情報読取装置10は、カメラ16の撮像画像を表示部14に表示させる。カメラ16の撮像画像は、FPGA18を介して、制御部30に転送される。情報読取装置10は、撮像画像が情報コードを含む場合に、制御部30によって当該情報コードからデータを読み取り、当該データを表示部14に表示する。変形例では、情報読取装置10は、当該データを外部の装置(例えばサーバ)に送信してもよい。
【0026】
制御部30は、上記の各部12~18と電気的に接続されている。但し、
図1に示されるように、制御部30は、FPGA18を介してカメラ16と接続される。制御部30は、各部12~18と通信して、各部12~18の動作を制御する。制御部30は、CPU32とメモリ34とを備える。CPU32は、メモリ34内に記憶されているプログラム36に従って、様々な処理を実行する。
【0027】
メモリ34は、プログラム36に加え、さらに、モード値と、複数個の範囲パターンと、を記憶する。メモリ34は、さらに、位置情報を記憶可能である。モード値は、自動設定モードで動作していることを示す値「M1」と、手動設定モードで動作していることを示す値「M2」と、のうちのいずれかの値を示す。自動設定モードは、後述する特定範囲設定処理(
図3参照)を制御部30が自動的に実行するモードである。手動設定モードは、ユーザの操作に応じて特定範囲を設定するモードである。モード値は、ユーザによって入力される。即ち、ユーザは、情報読取装置10のモードとして、自動設定モード又は手動設定モードを選択可能である。これにより、ユーザは、自動設定モードの許可又は不許可を選択することができるとともに、手動設定モードでは、特定範囲を手動で設定することができる。位置情報及び範囲パターンは、特定範囲設定処理(
図3参照)において利用される情報であり、詳細は後述する。
【0028】
(情報読取装置10の処理;
図2)
図2を参照して、プログラム36に従って、情報読取装置10のCPU32によって実行される処理について説明する。
図2の処理は、操作部12に対して、情報コードの読取りを実行する指示が入力されることをトリガとして実行される。
【0029】
S2では、CPU32は、カメラ16を起動し、カメラ16に撮像画像を撮像させる。撮像画像は、カメラ16の画角の全範囲に対応する画像である。この場合、カメラ16は、撮像した撮像画像を、FPGA18に送信する。
【0030】
FPGA18は、カメラ16から撮像画像を受信すると、受信した撮像画像を制御部30に送信する。その場合、制御部30は、受信した撮像画像を、メモリ34に格納する。CPU32は、メモリ34から当該撮像画像を取得する。このように、CPU32は、カメラ16が撮像した撮像画像を、FPGA18を介して取得する。ここで、FPGA18は、CPU32から特定範囲を受信している場合(
図3のS50参照)、受信した特定範囲を、FPGA18のメモリ(図示省略)に記憶済みである。特定範囲は、撮像画像から特定画像を切り取るための範囲である。カメラ16から撮像画像を受信した時点においてFPGA18のメモリ内に特定範囲が記憶されている場合、FPGA18は、撮像画像から、特定範囲の画像(すなわち、特定画像)を切り取り、切り取った特定画像を制御部30に転送する。なお、FPGA18は、自身のメモリ内に特定範囲が記憶されていない場合には、撮像画像を制御部30に転送する。
【0031】
S4では、CPU32は、メモリ34から、特定画像または撮像画像を取得する。
【0032】
S10では、CPU32は、取得した特定画像または撮像画像に対して、読取り処理を実行する。S10では、具体的には、まず、CPU32は、特定画像または撮像画像から情報コードを示す画像であるコード画像を抽出する。さらに、CPU32は、撮像画像に定義されている座標系におけるコード画像の4隅の座標を算出する。CPU32は、算出された4隅の座標に基づいて、情報コードを構成する各セルの座標を特定する。次いで、CPU32は、コード画像の二値化処理を実行し、情報コードの各セルの色(例えば、白または黒)を決定する。CPU32は、特定された各セルの座標と、決定された各セルの色と、に基づいて、情報コードをデコードする。これにより、特定画像に含まれる情報コードがデコードされる。
【0033】
S12では、CPU32は、S10の読取り処理が成功したか否かを判断する。具体的には、情報コードのデコードにより情報コード内の情報を取得する場合に、読取り処理が成功する。CPU32は、読取り処理が成功したと判断する場合(S12でYES)、S14に進む。一方、CPU32は、読取り処理が失敗したと判断する場合(S12でNO)、S20に進む。
【0034】
S14では、CPU32は、コード画像の位置情報を取得して、メモリ34に記憶させる。位置情報は、カメラ16の画角によって示される全範囲に対するコード画像の相対的な位置を示す情報である。例えば、位置情報は、コード画像の少なくとも1点(例えば中心)の座標である。S14の処理が終了すると、CPU32は、
図2の処理を終了する。なお、変形例では、位置情報は、コード画像の複数の座標によって示される外形であってもよい。
【0035】
S20では、CPU32は、メモリ34に特定範囲が記憶されているか否かを判断する。CPU32は、後述する特定範囲設定処理により特定範囲を設定した場合に、設定した特定範囲をメモリ34に記憶する。CPU32は、特定範囲を記憶していると判断する場合(S20でYES)、S22に進む。CPU32は、特定範囲を記憶していないと判断する場合(S20でNO)、S22、S24の処理をスキップして、
図2の処理を終了する。
【0036】
S22では、CPU32は、メモリ34に記憶されている特定範囲を削除して、S24に進む。
【0037】
S24では、CPU32は、FPGA18に特定範囲を削除することを指示する削除指示を、FPGA18に送信する。FPGA18は、CPU32から削除指示を受信すると、自身のメモリ内の特定範囲を削除する。S24が終了すると、CPU32は、
図2の処理を終了する。
【0038】
(特定範囲設定処理;
図3~
図5)
図3を参照して、特定範囲を設定するための特定範囲設定処理について説明する。特定範囲設定処理は、モード値が値「M1」を示す状態において、上述した
図2の処理が終了したことをトリガとして実行される。
【0039】
S30では、CPU32は、最新の読取り処理(
図2のS10参照)が成功したか否かを判断する。CPU32は、最新の読取り処理が成功していると判断する場合(S30でYES)、S32に進む。一方、CPU32は、最新の読取処理が失敗していると判断する場合(S30でNO)、S32~S52の処理をスキップして
図3の処理を終了する。
【0040】
S32では、CPU32は、メモリ34に記憶されている位置情報の個数が所定数(例えば3個)以上であるか否かを判断する。CPU32は、位置情報の個数が所定数以上であると判断する場合(S32でYES)、S34に進む。一方、CPU32は、位置情報の個数が所定数より小さいと判断する場合(S32でNO)、S34~S52の処理をスキップして
図3の処理を終了する。
【0041】
S34では、CPU32は、メモリ34に特定範囲が記憶されているか否かを判断する。CPU32は、特定範囲を記憶していると判断する場合(S34でNO)、S40に進む。一方、CPU32は、特定範囲を記憶していないと判断する場合(S34でYES)、S40~S52の処理をスキップして、
図3の処理を終了する。これにより、既に特定範囲が設定されている場合に、再び特定範囲が設定されることを防止することができる。
【0042】
S40では、CPU32は、メモリ34内の複数個の範囲パターンから1個の範囲パターンを選択することを試行する。
図4は、複数個の範囲パターンの一例である。本実施例では、メモリ34は、5個の範囲パターンLA1~LA5を記憶する。各範囲パターンは、情報読取装置10のベンダによってメモリ34に予め保存される。変形例では、範囲パターンは、ユーザによって作成されてもよい。
【0043】
範囲パターンLA1は、カメラ16の画角によって示される全範囲A1における中央に位置する。範囲パターンLA1の周囲は、非読取り範囲EA1によって覆われる。範囲パターンLA1の外周は、外枠F1で表示される。外枠F1は、特定範囲として範囲パターンLA1が選択される場合において、情報読取装置10によって情報コードが読み取られる際、撮像画像に重ねて表示部14に表示される。外枠F1が表示されることによって、情報読取装置10のユーザは、現在の特定範囲を認識することができる。ユーザは、特定範囲を意識して情報読取装置10の姿勢を変えることができる。
【0044】
範囲パターンLA2は、全範囲A1の左上に位置し、範囲パターンLA2の右方と下方が非読取り範囲EA2によって覆われる。範囲パターンLA3は、全範囲A1の右上に位置し、範囲パターンLA3の左方と下方が非読取り範囲EA3によって覆われる。範囲パターンLA4は、全範囲A1の左下に位置し、範囲パターンLA4の右方と上方が非読取り範囲EA4によって覆われる。範囲パターンLA5は、全範囲A1の右下に位置し、範囲パターンLA5の左方と上方が非読取り範囲EA5によって覆われる。各範囲パターンLA2~LA5の外周は、各外枠F2~F5で表示される。
【0045】
図3に戻り説明を続ける。S42では、CPU32は、複数個の範囲パターンから1個の範囲パターンを選択することが成功したか否かを判断する。具体的には、CPU32は、5個の範囲パターンLA1~LA5のうちに、メモリ34に記憶されている所定数の位置情報によって示される全ての座標を含む1個の範囲パターンが存在するのか否かを判断する。CPU32は、5個の範囲パターンLA1~LA5のうちに全ての座標を含む1個の範囲パターンが存在する場合に、1個の範囲パターンを選択することが成功したと判断する。CPU32は、1個の範囲パターンを選択することが成功したと判断する場合(S42でYES)に、S50に進む。一方、CPU32は、1個の範囲パターンを選択することが失敗したと判断する場合(S42でNO)、S50~S54の処理をスキップして、
図3の処理を終了する。このように、CPU32は、予め記憶する範囲パターンから特定範囲を選択する。このため、特定範囲を算出する処理が不要であり、処理の負荷が比較的に低い。
【0046】
S50では、CPU32は、S42で選択された1個の範囲パターンを特定範囲として設定し、メモリ34に記憶する。さらに、CPU32は、設定した特定範囲を、FPGA18に送信する。FPGA18は、受信した特定範囲を、自身のメモリ内に記憶する。これにより、FPGA18は、次に情報コードを読み取る際に、メモリ内の特定範囲を利用して、カメラ16の撮像画像を切り取る。
【0047】
S52では、CPU32は、メモリ34内の所定数の位置情報を削除する。S54の処理が終了すると、CPU32は、
図3の処理を終了する。
【0048】
情報読取装置10は、例えば、複数個の商品のそれぞれに付された情報コードを読み取るために用いられる。この場合、ユーザは、所定の姿勢を保持しながら、順次商品の情報コードに情報読取装置10を向ける。情報読取装置10のユーザの利き腕、姿勢、癖、体型等に応じて、カメラ16で撮像する際における情報読取装置10と情報コードとの位置関係は、固定されやすい。読取り処理が所定の回数(例えば3回)に亘って成功した範囲は、次回も成功することが推測され、当該範囲は、信頼性が高い。本実施例の構成によれば、メモリには、読取り処理が成功した事例として、所定数の位置情報が記憶される(
図2のS14、
図3のS34)。そして、読取り処理が成功した複数の事例である所定数の位置情報を利用して、特定画像の範囲、即ち、撮像画像を切り取る範囲が、特定範囲(例えば範囲パターンLA1)に設定される(S50)。読取り処理が成功した複数の事例を利用して設定された特定範囲で撮像画像を切取ることによって、読取り処理の失敗を抑制することができる。さらに、各範囲パターンLA1~LA5(即ち特定範囲)は、全範囲A1よりも狭い。このため、FPGA18が制御部30に転送する画像データ量を低減することができる。さらに、CPU32が読取り処理によって処理される画像データの画素数を低減することができる。読取り処理の負荷を低減することができる。
【0049】
(具体的なケース;
図5)
本ケースの初期段階では、FPGA18のメモリ(図示省略)には、特定範囲が記憶されていない。このため、CPU32は、FPGA18から全範囲A1を有する撮像画像を取得し(S4)、当該撮像画像に対する読取処理を実行する(S10)。
【0050】
(A)では、全範囲A1を有する撮像画像に対して、3個の情報コードQ1~Q3の読取り処理が成功すると(S12でYES)、各情報コードQ1~Q3の位置情報がメモリ34に記憶される(S14)。CPU32は、位置情報の個数が所定数「3」以上であり、特定範囲がメモリ34に記憶されていないと判断する(
図3のS30でYES、S32でYES、S36でNO)。
【0051】
(A)に続く(B)では、各情報コードQ1~Q3の位置情報(例えば中心座標)の全ては、範囲パターンLA2に含まれる(S42でYES)。そのため、CPU32は、範囲パターンLA2を特定範囲に設定し、範囲パターンLA2をFPGA18に送信する(S50)。その場合、FPGA18は、受信した範囲パターンLA2を有する特定画像を制御部30に送信し、制御部30は、当該特定画像をメモリ34に格納する。
【0052】
その後、CPU32は、範囲パターンLA2を有する特定画像をメモリ34から取得し、取得した特定画像に対して読取り処理が実行される。本ケースでは、当該読取り処理において、情報コードQ4を含む画像がカメラ16によって撮像される。FPGA18は、情報コードQ4を含む画像から、範囲パターンLA2の特定画像を切取り、制御部30に送信する。(B)に示すように、範囲パターンLA2は、情報コードQ4の一部のみを含む。このため、CPU32は、情報コードQ4に対する読取り処理が失敗する(S12でNO)。CPU32は、メモリ34から範囲パターンLA2である特定範囲を削除し(S22)、削除指示をFPGA18に送信する(S24)。これにより、次にカメラ16が画像を撮像した場合、FPGA18は、全範囲A1を有する撮像画像を制御部30に送信し、読取り処理では、撮像画像が利用される。
【0053】
(B)に続く(C)は、3個の情報コードQ5~Q7の読取り処理が成功することを除いて(A)と同様である。(C)に続く(D)では、各情報コードQ5~Q7の位置情報の全ては、(B)における範囲パターンLA2とは異なる範囲パターンLA5に含まれる(S42でYES)。そのため、CPU32は、範囲パターンLA5を特定範囲に設定し、範囲パターンLA5をFPGA18に送信する(S50)。
【0054】
本ケースによれば、範囲パターンLA2において情報コードの読取りが失敗する場合でも、範囲パターンLA2よりも全範囲A1を有する撮像画像に対する読取り処理を実行して、特定範囲として他の範囲パターンLA5を新たに設定することができる。
【0055】
(対応関係)
全範囲A1、範囲パターンLA2、全範囲A1が、範囲パターンLA5が、それぞれ、「第1範囲」、「第2範囲」、「第3範囲」、「第4範囲」の一例である。情報コードQ1~Q3の中心座標、情報コードQ5~Q7の位置情報の中心座標が、それぞれ、「第1位置情報」、「第2位置情報」の一例である。
【0056】
図5(A)、
図5(C)で全範囲A1を有する撮像画像に対して実行されるS10の処理が、それぞれ、「第1読取り実行部」、「第3読取り実行部」が実行する処理の一例である。
図5(B)で範囲パターンLA2を有する特定画像に対して実行されるS10の処理が、「第2読取り実行部」が実行する処理の一例である。
図5(D)で範囲パターンLA5を有する特定画像に対して実行されるS10の処理が、「第4読取り実行部」が実行する処理の一例である。
図2のS14で情報コードQ1~Q3の中心座標を記憶すること、情報コードQ5~Q7の中心座標を記憶することが、それぞれ、「第1記憶制御部」、「第2記憶制御部」が実行する処理の一例である。
図5の(B)でFPGA18が範囲パターンLA2を有する特定画像を切り取ること、
図5の(D)でFPGA18が範囲パターンLA5を有する特定画像を切り取ることが、それぞれ、「第1切取り部」、「第2切取り部」が実行する処理の一例である。
図5の(B)で範囲パターンLA2を設定すること、
図5の(D)で範囲パターンLA5を設定することが、それぞれ、「第1設定部」、「第2設定部」が実行する処理の一例である。
図3のS40の処理が、「選択部」が実行する処理の一例である。
【0057】
(第2実施例)
図6及び
図7を参照して、第2実施例について説明する。第2実施例の情報読取装置10は、第1実施例の情報読取装置10の同様の構成を有する。第2実施例の特定範囲設定処理は、第1実施例の特定範囲設定処理とは異なり、CPU32は、複数回の特定範囲の設定が可能である。
図6及び
図7を参照して、第2実施例の特定範囲設定処理について説明する。第2実施例の特定範囲設定処理が実行されるトリガは、第1実施例の特定範囲設定処理が実行されるトリガと同様である。
【0058】
図6のS60~S62では、
図3の30~S32と同様の処理が実行される。
【0059】
S64では、第2実施例のCPU32は、特定範囲の設定回数が、閾値回数以下であるか否かを判断する。設定回数は、例えば、特定範囲がメモリ34から削除される場合に、「0」にリセットされる。閾値回数は、特定範囲の設定が許容される回数であり、本実施例では、閾値回数は2回である。なお、閾値回数は、情報読取装置10のユーザによって変更されてもよい。
【0060】
特定範囲の設定回数が増加すると、特定範囲は次第に狭くなる。特定範囲が過度に狭くなると、読取り処理の負荷が低減される程度に比べて、情報読取装置10の姿勢の安定性の要求が過度に厳しくなり得る。CPU32は、設定回数が閾値回数より大きいと判断する場合(S64でNO)、S70~S84の処理をスキップして
図6の処理を終了する。閾値回数を超えて特定範囲が設定されることを防止することができる。一方、CPU32は、設定回数が閾値回数より小さいと判断する場合(S64でYES)、S70に進む。
【0061】
S70~S80では、
図3のS40~S50と同様の処理が実行される。
【0062】
S82では、CPU32は、設定回数をインクリメントする(即ち更新する)。続くS84では、
図3のS54と同様の処理が実行される。
【0063】
(具体的なケース;
図7)
本ケースの(E)は、第1実施例の
図5(A)と同様である。このため、CPU32は、(F)に示されるように、範囲パターンLA2を特定範囲に設定し、範囲パターンLA5をFPGA18に送信する(S80)。この際、CPU32は、設定回数を「0」から「1」に更新する(S82)。
【0064】
(F)に続く(G)では、範囲パターンLA2を有する特定画像に対する読取り処理において、3個の情報コードQ8~Q10の読取りが成功する(S14でYES)。この場合、特定範囲設定処理において、CPU32は、メモリ34内の設定回数は「1」であるため、S64でYESと判断する。CPU32は、3個の情報コードQ8~Q10の位置情報の全てを含む範囲パターンLA1を選択し(S72でYES)、特定範囲を範囲パターンLA2よりも狭い範囲パターンLA1に設定し、範囲パターンLA1をFPGA18に送信する(S80)。
【0065】
本実施例のCPU32は、特定範囲を、初期設定の全範囲A1から設定された全範囲A1より狭い範囲パターンLA2から、範囲パターンLA2よりもさらに狭い範囲パターンLA1に設定する。このため、例えば、情報読取装置10の姿勢が情報コードに対して比較的に安定している状況において、読取り処理における負荷をさらに低減することができる。本実施例では、全範囲A1、範囲パターンLA2、範囲パターンLA1が、それぞれ、「第1範囲」、「第2範囲」、「第5範囲」の一例である。3個の情報コードQ8~Q10の位置情報が、「第3位置情報」の一例である。
【0066】
(第3実施例)
図8~
図10を参照して、第3実施例について説明する。第3実施例の情報読取装置10は、メモリ34に範囲パターン1~5が記憶されていないことを除き、第1、第2実施例の情報読取装置10の同様の構成を有する。第3実施例の特定範囲設定処理では、第1、第2実施例の特定範囲設定処理と異なり、CPU32は、情報コードの4隅の座標に基づいて、特定範囲を算出する。
図8~
図10を参照して、第3実施例の特定範囲設定処理について説明する。第3実施例の特定範囲設定処理が実行されるトリガは、第1実施例の特定範囲設定処理が実行されるトリガと同様である。
【0067】
図9は、撮像画像に定義されている座標系(X軸及びY軸)における、カメラ16の画角の全範囲A1を示す。全範囲A1は、座標(0、0)、座標(Xm、0)、座標(0、Ym)、座標(Xm、Ym)を4隅とする矩形で表現される。
【0068】
本実施例では、
図2のS14において、情報コードの4隅の座標が位置情報としてメモリ34に記憶される。例えば、
図9に示されるように、第3実施例のCPU32は、情報コードQ11の読取りが成功した場合(S12でYES)、情報コードQ11の4隅の座標(X11、Y11)、(X12、Y11)、(X11、Y12)及び(X12、Y12)をメモリ34に記憶する(S14)。さらに、情報コードQ12、Q13の読み取りが成功する場合にCPU32は、情報コードQ12の4隅の座標(X21、Y21)、(X22、Y21)、(X21、Y22)(X22、Y22)及び情報コードQ13の4隅の座標(X31、Y31)、(X32、Y31)、(X31、Y32)、(X32、Y32)をメモリ34に記憶する(S14)。
【0069】
本実施例の特定範囲設定処理(
図8)について、第1及び第2実施例と異なる点について説明し、第1及び第2実施例と同様の点については、説明を省略する。所定数の情報コード(例えば
図9のQ11、Q12、Q13)の読取りが成功した場合(S92でYES)、CPU32は、所定数の情報コードの4隅の座標を示す値のそれぞれについて、X軸方向における最小値(例えば
図9のX11)と、X軸方向における最大値(例えばX22)と、Y軸方向における最小値(例えばY31)と、Y軸方向における最大値(例えばY12)と、を算出する。CPU32は、X軸方向の最小値および最大値と、Y軸方向の最大値および最小値と、をそれぞれ組み合わせた座標(例えば、(X11、Y31)、(X22、Y31)、(X11、Y12)、(X22、Y12))を4隅とする矩形範囲を、特定範囲LA6として算出する(S100)。なお、変形例では、特定範囲LA6は、当該矩形範囲を所定の割合(例えば1%)だけ拡大した範囲であってもよい。
【0070】
次いで、S104では、第3実施例のCPU32は、算出した特定範囲LA6が閾値範囲よりも小さいか否かを判断する。ここで、閾値範囲とは、FPGA18から制御部30へ転送される画像データ量が低減されるとともに、読取り処理における負荷が低減される特定範囲の閾値であり、予めメモリ34に記憶されている。なお、変形例では、閾値範囲は、ユーザによって変更されてもよいし、また、情報読取装置10のCPU32の処理状況に応じて変更されてもよい。CPU32は、特定範囲が閾値範囲よりも小さいと判断する場合(S104でYES)、S110に進む。S110では、CPU32は、特定画像の範囲を全範囲A1よりも狭い特定範囲(例えば
図9のLA6)に設定する。
【0071】
一方、CPU32は、特定範囲が閾値範囲よりも大きいと判断する場合(S104でNO)、特定範囲を設定しても負荷が低減されないと判断する。この場合、CPU32は、S110~S114の処理をスキップして、特定範囲を設定することなく、
図8の処理を終了する。
【0072】
仮にS104の処理が行われない場合、
図10に示されるように、初期設定の全範囲A1に対して、3個の情報コードQ14、Q15、Q16の読取りが成功すると、CPU32は、各情報コードQ14、Q15、Q16の4隅の座標から、座標、(X41、Y61)、(X52、Y61)、(X41、Y42)、(X52、Y42)を4隅とする特定範囲LA7を算出する(S100)。この場合、当該特定範囲LA7の大きさは、全範囲A1とほとんど変わらない。このため、特定範囲LA7が設定されても、FPGA18から制御部30へ転送される画像データ量及び読取り処理の負荷が低減されない。また、3個の情報コードQ14、Q15、Q16のように、互いに離れた位置で情報コードが読み取られる場合、情報読取装置10の姿勢が不安定であることが推定される。情報読取装置10の姿勢が不安定な状況において、特定範囲LA7が設定され、特定範囲が少しでも狭くなると、転送される画像データ量が低減される程度、即ち、読取り処理の負荷が低減される程度に比べて、情報読取装置10の姿勢の安定性の要求が過度に厳しくなり得る。本実施例の情報読取装置10では、算出された特定範囲が閾値範囲よりも大きい場合(S104でNO)に、特定範囲LA7が設定されない。これにより、情報読取装置10の姿勢の安定性の要求が過度に厳しくなることを防止することができる。
【0073】
このように、本実施例の情報読取装置10は、情報コードQ11、Q12、Q13の4隅の座標を利用して、各情報コードQ11、Q12、Q13の4隅の全てを含む特定範囲LA6を算出する。これにより、第1実施例の範囲パターンLA1~LA5のような予め決まった範囲よりも柔軟に特定範囲LA6を決定することができる。
【0074】
以上、本明細書で開示する技術の具体例を説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例を採用してもよい。
【0075】
(変形例1)情報読取装置10は、FPGA18を備えなくてもよい。その場合、CPU32が、設定された特定範囲に基づいて、特定画像を切り取ってもよい。別の変形例では、FPGA18が切り取った第1の範囲を有する第1の特定画像をFPGA18から取得したCPU32が、第1の範囲よりもさらに狭い第2の範囲を有する第2の特定画像を切り取り、第2の特定画像の読取り処理を実行してもよい。
【0076】
(変形例2)上述したCPU32は、設定された特定範囲を、メモリ34に記憶する。本変形例では、これに代えて、CPU32は、設定された特定範囲をFPGA18に送信した後、特定範囲を記憶しなくてもよい。その場合、CPU32は、
図2のS20の処理において、FPGA18のメモリ内に特定範囲が記憶されているか否かを判断してもよい。その場合、CPU32は、FPGA18のメモリ内に特定範囲が記憶されている場合に、S20でYESと判断して、S24に進んでもよい。本変形例では、S22の処理は省略可能である。
【0077】
(変形例3)
図2の初期状態において、デフォルトの特定範囲がメモリ34に記憶されていてもよい。そして、特定範囲設定処理(例えば
図3)において、デフォルトの特定範囲より狭い特定範囲が設定されてもよい(S50)。本変形例では、当該デフォルトの特定範囲が、「第1範囲」の一例である。
【0078】
(変形例4)第1実施例のCPU32は、情報コードQ4の読取りに失敗して(
図2のS14でNO)、範囲パターンLA2が削除された場合(S22)に、その後の読取り処理において、カメラ16の画角の全範囲A1を有する特定画像を取得しなくてもよい。例えば、CPU32は、範囲パターンLA2よりも広い矩形範囲を設定してもよい。本変形例では、当該矩形範囲が、「第3範囲」の一例である。
【0079】
(変形例5)
図5の(C)、(D)の処理は実行されなくてもよい。本変形例では、「第3読取り実行部」、「第2記憶制御部」、「第2設定部」、「第2切取り部」、「第4読取り実行部」は、省略可能である。
【0080】
(変形例6)CPU32は、表示部14は外枠F1~F5を表示しなくてもよい。本変形例では、「表示制御部」は、省略可能である。
【0081】
(変形例7)情報読取装置10は、常に自動設定モードに設定されていてもよい。その場合、メモリ34には、モード値が記憶されなくてもよい。本変形例では、「複数個のモード」を省略可能である。
【0082】
(変形例8)情報読取装置10は、手動設定モードに代えて、所定の特定範囲が常に設定される固定モードに設定されてもよい。本変形例では、固定モードが、「特定のモード」の一例である。
【0083】
(変形例9)第1実施例のCPU32は、特定範囲設定処理において、1個の範囲パターンを選択することが成功したと判断する場合(S42でYES)に、S50に進む前に、当該範囲パターンが閾値範囲以内であるか否かを判断してもよい。一般的に言えば、「閾値範囲」は、「選択部」によって実現される処理にも適用可能である。
【0084】
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0085】
10 :情報読取装置
12 :操作部
14 :表示部
16 :カメラ
30 :制御部
32 :CPU
34 :メモリ
36 :プログラム
A1 :全範囲
EA1,EA2,EA3,EA4,EA5 :非読取り範囲
F1,F2,F3,F4,F5 :外枠
LA1,LA2,LA3,LA4,LA5:範囲パターン
LA6、LA7 :特定範囲
M1、M2 :値
Q1~Q16 :情報コード