IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーウェーブの特許一覧

<>
  • 特許-読取装置 図1
  • 特許-読取装置 図2
  • 特許-読取装置 図3
  • 特許-読取装置 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-29
(45)【発行日】2023-06-06
(54)【発明の名称】読取装置
(51)【国際特許分類】
   G06K 7/14 20060101AFI20230530BHJP
   G06T 5/00 20060101ALI20230530BHJP
【FI】
G06K7/14 060
G06K7/14 017
G06T5/00 725
【請求項の数】 5
(21)【出願番号】P 2019238162
(22)【出願日】2019-12-27
(65)【公開番号】P2021105955
(43)【公開日】2021-07-26
【審査請求日】2022-08-04
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】澤田 展秀
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2005-322061(JP,A)
【文献】特開2000-222517(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/14
G06K 7/10
G06T 5/00
(57)【特許請求の範囲】
【請求項1】
読取装置であって、
前記読取装置から遠い場所に位置する情報コードを撮像可能な撮像部と、
前記撮像部によって撮像された前記情報コードの撮像画像が台形に歪んでいる状況において、前記撮像画像の台形の上辺の長さが前記撮像画像の台形の下辺の長さに対して歪んでいる程度を示す歪み値を算出する算出部と、
前記撮像画像の前記下辺と前記上辺との間を複数個の走査線で走査する走査処理を実行する走査実行部であって、前記走査処理は、前記複数個の走査線のそれぞれにおいて、算出済みの前記歪み値を利用して、前記情報コード内の一列のセル群のパターンであって、当該走査線によって走査される前記撮像画像の高さに対応する高さに位置する前記一列のセル群のパターンを推測することを含む、前記走査実行部と、
前記走査処理によって得られたパターンデータに基づいて、前記情報コードに記録されたデータを読み取る読取部と、
を備える、読取装置。
【請求項2】
前記走査処理は、
前記複数個の走査線のそれぞれにおいて、算出済みの前記歪み値と、前記下辺の長さと、を利用して、台形に歪んでいる前記撮像画像の幅であって、当該走査線によって走査される高さに位置する前記幅を算出することと、
前記複数個の走査線のそれぞれにおいて、前記下辺の長さと当該走査線によって走査される高さにおいて算出された前記幅との差分を利用して、当該走査線によって走査される前記撮像画像の高さに対応する高さに位置する前記一列のセル群のパターンを推測することと、を含む、請求項1に記載の読取装置。
【請求項3】
前記読取装置は、さらに、
前記読取装置の傾き角度を測定可能な角度センサと、
台形に歪んでいる前記撮像画像から、前記下辺の長さを計測する計測部と、
を備え、
前記算出部は、前記角度センサによって計測される前記傾き角度を利用して、前記歪み値を算出する、請求項1又は2に記載の読取装置。
【請求項4】
前記読取装置は、さらに、
前記撮像画像の形状が所定の形状であるのか否かを判断する判断部を備え、
前記走査実行部は、前記撮像画像の形状が前記所定の形状であると判断される場合に、前記走査処理を実行し、
前記撮像画像が前記所定の形状でないと判断される場合に、前記走査処理は、実行されない、請求項1から3のいずれか一項に記載の読取装置。
【請求項5】
前記読取装置は、さらに、
前記撮像画像が前記所定の形状でないと判断される場合に、前記読取装置の移動を前記読取装置のユーザに指示するための報知動作を実行する報知実行部を備える、請求項4に記載の読取装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示する技術は、情報コードに記録されたデータを読み取るための読取装置に関する。
【背景技術】
【0002】
情報コード(例えば2次元コード)を撮像して、撮像済みの情報コードに記録されたデータを読み取る読取装置が知られている。例えば、読取装置から遠い場所(例えば高所)に位置している情報コードを読み取る状況が想定される。情報コードが読取装置から遠い場所に位置していると、撮像済みの情報コードの画像が台形に歪む。この場合、情報コードに記録されたデータを読み取れない可能性がある。
【0003】
例えば、台形に歪んでいる画像を補正して、当該画像の元の形状を再現する技術が特許文献1に開示されている。
【0004】
特許文献1では、撮像装置は、撮像済みの画像全体に対してハフ変換を実行して、被写体の画像とともに撮像される四辺形のマーカを抽出する。撮像装置は、抽出済みの四辺形のマーカに基づいて射影変換行列を算出する。そして、撮像装置は、抽出済みの射影変換行列を利用して、被写体の画像を補正し、当該画像の元の形状を再現する。しかし、ハフ変換及び射影変換行列を利用する場合には、被写体の画像全体に対して画像処理を実行するため、計算負荷が高くなり得る。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2008-60827号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本明細書では、撮像済みの情報コードの画像が台形に歪んでいる状況において、計算負荷の増大を抑えつつ、情報コードに記録されたデータを読み取るための技術を提供する。
【課題を解決するための手段】
【0007】
本明細書は、読取装置を開示する。前記読取装置は、前記読取装置から遠い場所に位置する情報コードを撮像可能な撮像部と、前記撮像部によって撮像された前記情報コードの撮像画像が台形に歪んでいる状況において、前記撮像画像の台形の上辺の長さが前記撮像画像の台形の下辺の長さに対して歪んでいる程度を示す歪み値を算出する算出部と、前記撮像画像の前記下辺と前記上辺との間を複数個の走査線で走査する走査処理を実行する走査実行部であって、前記走査処理は、前記複数個の走査線のそれぞれにおいて、算出済みの前記歪み値を利用して、前記情報コード内の一列のセル群のパターンであって、当該走査線によって走査される前記撮像画像の高さに対応する高さに位置する前記一列のセル群のパターンを推測することと、を含む、前記走査実行部と、前記走査処理によって得られたパターンデータに基づいて、前記情報コードに記録されたデータを読み取る読取部と、を備える。
【0008】
このような構成によると、読取装置は、撮像画像の台形の上辺の長さが撮像画像の台形の下辺の長さに対して歪んでいる程度を示す歪み値を利用して、情報コードの一列のセル群のパターンを推測する。即ち、読取装置は、情報コードの一列のセル群のパターンを推測するために、撮像画像の一部である下辺及び上辺の長さを把握していればよい。なお、ここで言う「歪み値」は、撮影画像の台形の上辺と撮影画像の台形の下辺との間に生じる歪みの程度を示す値、と言い換えてもよい。このため、読取装置は、上述したハフ変換及び射影変換行列のように、撮像画像の全体に対して画像処理を実行する必要がなく、読取装置の計算負荷の増大を抑制することができる。以上より、撮像済みの情報コードの画像が台形に歪んでいる状況において、計算負荷の増大を抑えつつ、情報コードに記録されたデータを読み取ることができる。
【0009】
前記走査処理は、前記複数個の走査線のそれぞれにおいて、算出済みの前記歪み値と、前記下辺の長さと、を利用して、台形に歪んでいる前記撮像画像の幅であって、当該走査線によって走査される高さに位置する前記幅を算出することと、前記複数個の走査線のそれぞれにおいて、前記下辺の長さと当該走査線によって走査される高さにおいて算出された前記幅との差分を利用して、前記情報コードのうちの、当該走査線によって走査される前記撮像画像の高さに対応する高さに位置する一列のセル群のパターンを推測することと、を含んでもよい。
【0010】
一般に、撮像画像が台形に歪むことは、撮像画像の上部が撮像画像の下部に対して歪んでいる(即ち、上部が下部に比べて小さく見える)ことを意味する。別言すれば、撮像画像の下部は、歪んでいない。上記の構成によれば、撮像画像の下部である下辺の長さを基準として、情報コードのセル群のパターンを推測することができる。
【0011】
前記読取装置は、さらに、前記読取装置の傾き角度を測定可能な角度センサと、台形に歪んでいる前記撮像画像から、前記下辺の長さを計測する計測部と、備え、前記算出部は、前記角度センサによって計測される前記傾き角度を利用して、前記歪み値を算出してもよい。
【0012】
例えば、撮像画像の下辺と上辺の長さの双方を撮像画像から計測して、歪み値を算出する比較例が想定される。この比較例では、撮像画像の上部と下部の双方に対して画像処理を実行する必要がある。これに対して、上記の構成によれば、読取装置は、撮像画像の下辺の長さのみを計測し、歪み値は、角度センサによって計測される傾き角度を利用して算出される。即ち、読取装置は、撮像画像の下部のみに対して画像処理を実行すればよい。上記の比較例と比べて、さらに、計算負荷の増大を抑えることができる。
【0013】
前記読取装置は、さらに、前記撮像画像の形状が所定の形状であるのか否かを判断する判断部を備え、前記走査実行部は、前記撮像画像の形状が前記所定の形状であると判断される場合に、前記走査処理を実行し、前記撮像画像が前記所定の形状でないと判断される場合に、前記走査処理は、実行されなくてもよい。
【0014】
撮像画像の形状が所定の形状(例えば、水平な台形)でない場合には、走査処理において、一列のセル群のパターンを正確に推測することができない場合がある。上記の構成によれば、セル群のパターンが不正確に推測されることを抑制することができる。
【0015】
前記読取装置は、さらに、前記撮像画像が前記所定の形状でないと判断される場合に、前記読取装置の移動を前記読取装置のユーザに指示するための報知動作を実行する報知実行部を備えてもよい。
【0016】
このような構成によれば、読取装置を移動させて、所定の形状を有する撮像画像を撮像することをユーザに促すことができる。
【図面の簡単な説明】
【0017】
図1】読取装置の利用状況を示す。
図2】読取装置のブロック図を示す。
図3】読取装置において実行される処理のフローチャートを示す。
図4】撮像画像を示す。
【発明を実施するための形態】
【0018】
(読取装置10の利用状況;図1
本実施例の読取装置10は、情報コード(例えば2次元コード200)を撮像して、撮像済みの情報コードに記録されているデータを読み取るための装置である。読取装置10は、可搬型である。ユーザ2の背の高さ程度に位置する情報コードが撮像される場合には、撮像済みの情報コードの形状は、元の情報コードの形状(例えば正方形)と同じ形状である。これに対して、例えば、図1に示すように、物体100(例えば高く積まれた段ボール)の高所に位置する2次元コード200、即ち、ユーザ2の背の高さよりも高い場所に位置する2次元コード200を読み取る状況が想定される。この場合には、2次元コード200は、下側から見上げる角度で撮像されるため、撮像済みの情報コードの形状は、元の情報コードの形状に対して台形に歪む。ここで、図中のθは、2次元コード200を撮像する読取装置10の仰角を示す。別言すれば、θは、読取装置10と2次元コード200とを結ぶ線の水平線に対する角度である。また、図中のL1は、読取装置10と物体100との間の水平方向における距離を示し、L2は、読取装置10と物体100との間の距離を示す。
【0019】
(読取装置10の構成;図2
図2に示すように、読取装置10は、撮像部12と、操作部16と、表示部18と、角度センサ20と、振動部24と、制御部30と、メモリ32と、を備える。撮像部12は、発光部12aと、受光部12bと、を備える。
【0020】
発光部12aは、情報コードを照らす照明光を発光可能な部位である。発光部12aは、例えば、LEDである。受光部12bは、発光部12aによる照射光の反射光を受光可能な部位である。受光部12bは、反射光を集光するレンズと、当該レンズによって集光された光を電気信号(例えば画像データ)に変換するイメージセンサと、を含む。なお、変形例では、発光部12aは、レーザを走査して情報コードに照射するレーザ光源であり、受光部12bは、当該レーザの反射レーザを受光する素子であってもよい。また、他の変形例では、撮像部12は、情報コードを撮影可能なカメラであってもよい。
【0021】
操作部16は、複数個のキーを備える。ユーザは、操作部16を操作することによって、様々な指示を読取装置10に入力することができる。表示部18は、様々な情報を表示するためのディスプレイである。表示部18は、ユーザから指示を受け付けるタッチパネル(即ち操作部)としても機能する。なお、変形例では、表示部18は、操作部として機能しないディスプレイであってもよい。
【0022】
角度センサ20は、読取装置10の水平に対する角度(即ち姿勢)を計測するためのセンサである。角度センサ20は、例えば、いわゆるジャイロセンサである。
【0023】
振動部24は、回転力に起因する振動を発生させる振動モータによって構成される。振動部24の振動モータが駆動されることにより、読取装置10が振動する。
【0024】
制御部30は、メモリ32に記憶されているプログラム34に従って様々な処理を実行する。制御部30は、例えば、CPUである。メモリ32は、揮発性メモリ、不揮発性メモリ等によって構成される。
【0025】
(読取装置10の処理;図3
図3を参照して、読取装置10の制御部30によって実行される処理を説明する。図3の処理は、操作部16において情報コードの読取を開始するための操作が行われることをトリガとして開始される。なお、以下の説明では、図4も適宜に参照する。
【0026】
S10では、制御部30は、2次元コード200の撮像の開始を撮像部12に指示する。具体的には、発光部12aは、制御部30からの指示に応じて、照射光を発光する。受光部12bは、当該照射光の反射光を受光し、反射光を電気信号(例えば画像データ)に変換して、当該電気信号を制御部30に供給する。これより、制御部30は、2次元コード200を表す電気信号(例えば画像データ)を取得する。
【0027】
図4の撮像画像210は、S10で撮像された2次元コード200の撮像画像である。なお、図4の撮像画像210は、模式的な図であることに留意されたい。高所の2次元コード200は、読取装置10から遠い場所(高所)に位置する。このため、撮像画像210は、実際の2次元コード200に対して縮小される。一般に、実際の2次元コード200に対する撮像画像210の縮小率Sは、例えば、水平方向の距離L1と2次元コード200までの距離L2(図1参照)を利用して、以下の式によって計算される。
S=L1/(L2-L1)
例えば、距離L1は、読取装置10に備えられている距離センサ(図示省略)を利用して計測可能である。また、距離L2は、角度センサ20によって計測される仰角θと計測済みの距離L1とを利用して算出可能である。
【0028】
また、図4に示すように、実際の2次元コード200の形状は、一辺の長さHの正方形である。しかし、高所に位置する2次元コード200を撮像すると、撮像画像210は、図4に示すように、台形に歪む。ここで図中のHt、Hb、Hhは、それぞれ、撮像画像210の台形の上辺の長さ、下辺の長さ、高さを示す。なお、撮像画像210の各辺の長さの単位は、例えば、ピクセル(px)である。
【0029】
一般に、撮像画像210の下辺の長さHbと実際の2次元コード200の一辺の長さHとの関係は、以下の式によって表される。
Hb=H×S
即ち、撮像画像210の下辺の長さは、2次元コード200までの距離L2に応じた縮小率Sによって、実際の長さHより縮小される。本実施例では、下辺の長さHbは、撮影画像210から計測される(図3のS22参照)。他の例では、2次元コード200の一辺の長さHを事前に知っている場合には、縮小率Sを利用して、下辺の長さHbを算出してもよい。
【0030】
また、撮像画像210の上辺の長さHt及び高さHhも、2次元コード200までの距離L2に応じた縮小率Sによって、実際の長さHより縮小される。さらに、上辺の長さHt及び高さHhは、読取装置10の仰角θに応じた割合で歪む。この結果、図4に示すように、撮像画像210は、台形に歪む。
【0031】
S12では、制御部30は、S10で取得された画像データに対して二値化処理を実行する。
【0032】
S14では、制御部30は、S12で二値化処理された画像データを利用して、当該画像データによって表される画像の中から、撮像画像210を特定する。具体的には、制御部30は、コード特有の特徴を有する領域を撮像画像210として特定する。コード特有の特徴は、2次元コード特有の白黒パターンを有する領域である。
【0033】
S16では、制御部30は、S14で特定された撮像画像210の形状が水平な台形であるのか否かを判断する。ここで、水平な台形は、その下辺の延びる方向が水平な台形である。例えば、読取装置10の位置が、高所の2次元コード200の真下である場合には、撮像画像210は水平な台形である。これに対して、読取装置10の位置が、高所の2次元コード200の真下の位置から右側(読取装置10を携帯するユーザの右側)にずれている場合には、撮像画像210は、台形ではあるものの、その下辺は、水平線に対して右上に傾く。また、読取装置10の位置が、高所の2次元コード200の真下の位置から左側にずれている場合には、撮像画像210は、台形ではあるものの、その下辺は、水平線に対して左上に傾く。例えば、制御部30は、撮像画像210の下辺の延びる方向が水平である場合に、撮像画像210の形状が水平な台形であると判断し、撮像画像210の下辺の延びる方向が水平でない場合に、撮像画像210の形状が水平な台形でないと判断する。
【0034】
制御部30は、撮像画像210の形状が水平な台形でないと判断する場合(S16でNO)に、S50に進む。S50では、制御部30は、読取装置10の目標移動方向を決定する。目標移動方向は、読取装置10が2次元コード200の真下に位置するための移動方向である。制御部30は、下辺の延びる方向が水平線に対して右上に傾いている場合には、目標移動方向として左側を決定し、下辺の延びる方向が水平線に対して左上に傾いている場合には、目標移動方向として右側を決定する。
【0035】
続いて、S52では、制御部30は、S50で決定された目標移動方向に基づいて、振動部24に報知動作を実行させる。例えば、制御部30は、目標移動方向として左側が決定された場合には、読取装置10が左側に移動する場合に振動部24を振動させ、読取装置10が右側に移動する場合に振動部24を振動させない。これにより、2次元コード200の真下から右側に位置する読取装置10を左側に移動させることをユーザに指示することができる。この結果、2次元コード200の真下から2次元コード200を撮像することができる。なお、読取装置10が実際に移動する方向は、例えば、角度センサ20(即ちジャイロセンサ)から取得される角加速度の値を利用して判断される。また、変形例では、読取装置10が左側に移動する場合に振動部24を振動させず、読取装置10が右側に移動する場合に振動部24を振動させてもよいし、読取装置10が左側に移動する場合に第1の振動パターンで振動部24を振動させ、読取装置10が右側に移動する場合に第1の振動パターンとは異なる第2の振動パターンで振動部24を振動させてもよい。
【0036】
制御部30は、S52が終了すると、S10に戻る。これにより、2次元コード200が再び撮像される。撮像画像210の形状が水平な台形でないと、台形の下辺の長さを正確に計測することができない場合がある。台形の下辺の長さを正確に計測することができないと、後述するS20~S28の走査処理において、2次元コードのセル群の白黒パターンを正確に推測することができない。撮像画像210の形状が水平な台形でないと判断する場合(S16でNO)に、S20~S28の走査処理が実行されないことによって、2次元コードのセル群の白黒パターンが不正確に推測されることを抑制することができる。
【0037】
また、制御部30は、撮像画像210の形状が水平な台形であると判断する場合(S16でYES)に、S20に進む。S20では、制御部30は、角度センサ20から仰角θ(図1参照)を取得する。
【0038】
S22では、制御部30は、撮像画像210の台形の下辺の長さHb(図4参照)を計測する。計測済みの下辺の長さHbは、後述するS26において撮像画像210の各段の幅Yを算出するための基準として利用される。
【0039】
S24では、制御部30は、撮像画像210の台形の上辺の長さHt(図4参照)が撮像画像210の下辺の長さHbに対して歪んでいる率を示す歪み値Tを算出する。なお、ここで言う「歪み値」は、撮影画像210の台形の上辺と撮影画像210の台形の下辺との間に生じる歪みの程度を示す値、と言い換えてもよい。ここで、一般に、撮像画像210の下辺の長さHbと撮像画像210の台形の上辺の長さHtとの関係は、仰角θを利用して、以下の式によって表される。
Ht=Hb×cosθ
即ち、cosθは、歪み値T(=Ht/Hb)に相当する。
【0040】
また、S25では、制御部30は、撮像画像210の台形の高さHhを算出する(図4参照)。一般に、撮像画像210の下辺の長さHbと撮像画像210の台形の高さHhとの関係は、以下の式によって表される。
Hh=Hb×cosθ
即ち、cosθは、高さHhが下辺の長さHbに対して歪んでいる率を示し、当該率は、歪み値Tと同じである。これは、2次元コード200が正方形であることに起因する。
【0041】
続いて、S26では、制御部30は、仰角θ、下辺の長さHb、及び、高さHhを利用した以下の式に基づいて、撮像画像210の各段Xにおける幅Yを算出する。
Y=f(X)+Hb×T
X=0~Hh
T=Hb/Ht=cosθ
f(X)=((Hh-X)/Hh)×(1-T)×Hb
【0042】
図4に示すように、Xが0段目(即ち0ピクセル)を示す場合には、Y=Hbが算出される。そして、Xが1段目(即ち1ピクセル)を示す場合には、YとしてHbよりも短い値が算出される。そして、XがHh段目に近づくにつれて、Yとして算出される値が徐々に短くなり、XがHh段目(即ちHhピクセル)を示す場合には、Y=Htが算出される。これにより、撮像画像210の0~Hh段目の全ての幅が算出される。
【0043】
続いて、S28では、制御部30は、撮像画像210の下辺と上辺の間を、下辺から上辺に向かって、(Hh+1)個の走査線で走査する。図4に示すように、2次元コード200は、複数個のセルをマトリックス状に2次元に配置したコードである。各セルは、白又は黒で表される。例えば、2次元コード200の最下の1ライン目の一列のセル群が、撮像画像210のうちの0段目からn段目(例えばnは5)で表される画像に対応する。同様に、2次元コード200のmライン目の一列のセル群は、撮像画像210のうちの複数の段で表される画像に対応する。まず、制御部30は、0段目を走査して、0段目の画像の白黒パターンを示す座標データを取得する。次いで、制御部30は、1段目を走査して、1段目の画像の白黒パターンを示す座標データを取得する。ここで、1段目の算出済みの幅は、0段目の幅(即ち下辺の長さHb)よりも短い。制御部30は、1段目の幅と0段目の幅との差分を利用して、1段目の画像の白黒パターンを示す座標データを補正する。例えば、制御部30は、1段目の走査により取得された座標データのうちの横方向の座標を、1段目の幅と0段目の幅との差分から計算されるシフト量だけシフトする。これにより、1段目の幅が0段目の幅まで調整されて、シフト後の座標データによって表される白黒パターンが2次元コード200の1ライン目の一列のセル群の白黒パターンとして推測される。同様に、制御部30は、2段目からHh段目のそれぞれについて、0段目の幅(即ち下辺の長さHb)とX段目の算出済みの幅との差分を利用して、X段目の画像の白黒パターンを示す座標データを補正する。これにより、制御部30は、2次元コード200の全セル群のパターンを推測する。なお、変形例では、制御部30は、撮像画像210の下辺と上辺の間を、上辺から下辺に向かって、(Hh+1)個の走査線で走査してもよい。
【0044】
続いて、S30では、制御部30は、S28で推測された全セル群のパターンを示す推測パターンデータによって表される画像(即ち2次元コード200に相当する画像)内にシンボル200aが存在するのか否かを判断する。シンボル200aは、2次元コード200の回転角度を決定するための所定のパターン画像である。制御部30は、推測パターンデータによって表される画像内にシンボル200aが存在しないと判断する場合(S30でNO)に、S10に戻る。一方、制御部30は、推測パターンデータによって表される画像内にシンボル200aが存在すると判断する場合(S30でYES)に、S40に進む。
【0045】
S40では、制御部30は、シンボル200aを利用して、推測パターンデータによって表される画像を回転し、回転済みの画像(即ち2次元コード200に相当する画像)に基づいて、当該画像に記録されたデータを読み取る。この結果、2次元コード200に記録されたデータが読み取られる。
【0046】
S42では、制御部30は、S40で読み取ったデータを出力する。例えば、制御部30は、当該データによって表される読取結果(例えば文字列)を表示部18に表示する。また、例えば、制御部30は、当該データを利用した通信を実行する。S42が終了すると図3の処理が終了する。
【0047】
(本実施例の効果)
例えば、2次元コードの撮像画像が台形に歪んでいる場合に、ハフ変換及び射影変換行列を利用して、2次元コードの元の形状を再現する参考例が想定される。ハフ変換及び射影変換行列では、撮像画像の全体に対して画像処理を実行する必要ある。これに対して、本実施例の構成によると、読取装置10は、撮像画像210の台形の上辺の長さHtが撮像画像の台形の下辺の長さHbに対して歪んでいる率を示す歪み値Tと、撮像画像の下辺の長さHbと、を利用して、2次元コード200の一列のセル群のパターンを推測する(図3のS28)。即ち、読取装置10は、下辺の長さHbを計測し(S22)、歪み値Tを算出すればよく(S24)、撮像画像の全体に対して画像処理を実行する必要がない。上記の参考例と比べて、読取装置10の計算負荷の増大を抑制することができる。以上より、撮像済みの2次元コードの画像が台形に歪んでいる状況において、計算負荷の増大を抑えつつ、2次元コードに記録されたデータを読み取ることができる。
【0048】
また、例えば、撮像画像210の下辺の長さHbと上辺の長さHtの双方を撮像画像210から計測して、歪み値Tを算出する比較例が想定される。この比較例では、撮像画像の上部と下部の双方に対して画像処理を実行する必要がある。これに対して、本実施例の構成によれば、読取装置10は、撮像画像の下辺の長さHbのみを計測し(S22)、歪み値Tは、角度センサ20によって計測される仰角θから算出される(S24)。即ち、読取装置10は、撮像画像の下部のみに対して画像処理を実行すればよい。上記の比較例と比べて、さらに、計算負荷の増大を抑えることができる。なお、変形例では、上記の比較例の構成を採用してもよい。
【0049】
また、読取装置10は、角度センサ20から取得される仰角θを利用して、2次元コード200のセル群のパターンを推測する(S28)。角度センサ20を利用することにより、読取装置10の姿勢が変化する場合でも2次元コード200のセル群のパターンを推測することができる。特に、本実施例の技術は、ユーザが把持して利用するハンディタイプの読取装置10に採用可能である。
【0050】
(対応関係)
読取装置10、撮像部12、角度センサ20が、それぞれ、「読取装置」、「撮像部」、「角度センサ」の一例である。2次元コード200、「撮像画像210」が、それぞれ、「情報コード」、「撮像画像」の一例である。水平な台形が、「所定の形状」の一例である。
【0051】
図3のS22、S24が、それぞれ、「計測部」、「算出部」によって実現される処理の一例である。S26及びS28が、「走査実行部」によって実現される処理の一例である。S40が、「読取部」によって実現される処理の一例である。S16が、「判断部」によって実現される処理の一例である。S52が、「報知実行部」によって実現される処理の一例である。
【0052】
以上、本明細書で開示する技術の具体例を説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例を採用してもよい。
【0053】
(変形例1) 「情報コード」は、2次元コード200に限らず、例えば、バーコード(例えば多段のバーコード)であってもよい。
【0054】
(変形例2) 本実施例の技術は、高所に位置する情報コードを撮像する場合に限らず、例えば、読取装置10が届かない場所(例えば、ユーザの手が届かない奥まった場所)に位置する情報コードを撮像する場合にも、利用可能である。一般的に言えば、「撮像部」は、読取装置から遠い場所に位置する情報コードを撮像可能であればよい。
【0055】
(変形例3) 「歪み値」は、上辺の長さHtが下辺の長さHbに対して歪んでいる率(=Ht/Hb)に限らず、例えば、Hb-Htであってもよい。一般的に言えば、「歪み値」は、撮像画像の台形の上辺の長さが撮像画像の台形の下辺の長さに対して歪んでいる程度を示す。
【0056】
(変形例4) 実施例の構成によれば、読取装置10は、撮像画像210の下辺の延びる方向が水平であるのか否かを判断することにより、撮像画像210の形状が水平な台形であるのか否かを判断する(図3のS16)。これに代えて、読取装置10は、撮像画像210の上辺の延びる方向が水平であるのか否かを判断することにより、撮像画像210の形状が水平な台形であるのか否かを判断してもよい。また、読取装置10は、上辺の延びる方向と下辺の延びる方向との双方を利用して判断してもよい。また、下辺の延びる方向が水平であることは、厳密に水平であることに限らず、例えば、下辺と水平線との間の角度が所定の角度(例えば2°)以下であってもよい。即ち、読取装置10は、撮像画像210の形状が略水平な台形であるのか否かを判断してもよい。本変形例では、「略水平な台形」が、「所定の形状」の一例である。
【0057】
(変形例5) 実施例の構成によれば、読取装置10は、振動部24に報知動作を実行させる(図3のS52)。これに代えて、読取装置10は、目標移動方向を示す報知画面を表示部18に表示させてもよい。また、読取装置10は、目標移動方向を示す報知音声を出力してもよい。本変形例では、報知画面の表示又は報知音声の出力が、「報知動作」の一例である。
【0058】
(変形例6) 図3のS50及びS52の処理は、実行されなくてもよい。本変形例では、「報知実行部」を省略可能である。
【0059】
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0060】
2 :ユーザ
10 :読取装置
12 :撮像部
12a :発光部
12b :受光部
16 :操作部
18 :表示部
20 :角度センサ
24 :振動部
30 :制御部
32 :メモリ
34 :プログラム
100 :物体
200 :2次元コード
200a :シンボル
210 :撮像画像
Hh :高さ
L1 :距離
L2 :距離
S :縮小率
T :歪み値
θ :仰角
Y :幅
図1
図2
図3
図4