(57)【要約】【課題】情報コードの表示態様を変えずに、情報コードを読み取ることができない事態を回避する技術を提供する。【解決手段】情報コード読取装置１０は、情報コードに対して異なる角度で配置される複数個の撮像部１４と、制御部１２とを備えている。制御部１２は、複数個の撮像部１４のうちの１個の撮像部を用いて撮像された情報コードの第１部分領域の画像を表す第１部分画像データと、複数個の撮像部１４のうちの他の撮像部を用いて撮像された情報コードの第２部分領域の画像を表す第２部分画像データと、を含む合成画像データであって、情報コードを表す合成画像データを生成し、合成画像データに基づいてデコードする。【選択図】図２
2017027368.tif 000002
【特許請求の範囲】
【請求項１】
情報コードを読み取る情報コード読取装置であって、
前記情報コードに対して異なる角度で配置される複数個の撮像部と、
制御部と、を備え、
前記制御部は、
前記複数個の撮像部のうちの１個の撮像部を用いて撮像された前記情報コードの第１部分領域の画像を表す第１部分画像データと、前記複数個の撮像部のうちの他の撮像部を用いて撮像された前記情報コードの第２部分領域の画像を表す第２部分画像データと、を含む合成画像データであって、前記情報コードを表す前記合成画像データを生成し、
前記合成画像データに基づいてデコードする、情報コード読取装置。
【請求項２】
前記制御部は、
前記複数個の撮像部のそれぞれから、当該撮像部を用いて撮像された前記第１部分領域の前記画像を表す第１候補部分画像データを取得し、
取得された複数の前記第１候補部分画像データを用いて、前記複数の第１候補部分画像データによって表される複数の画像の質を示す指標を比較する比較処理を実行することによって、前記複数の第１候補部分画像データから、１個の前記第１部分画像データを選択し、
前記第２部分画像データと、選択された前記第１部分画像データと、を含む前記合成画像データを生成する、請求項１に記載の情報コード読取装置。
【請求項３】
前記情報コードは、前記第１部分領域と前記第２部分領域とを含む複数の部分領域を含み、
前記制御部は、
前記複数個の撮像部のそれぞれから、前記複数の部分領域のそれぞれについて、当該部分領域の画像を表す候補部分画像データを取得し、
前記複数の部分領域のそれぞれについて、当該部分領域の画像を表す複数の候補部分画像データを用いた前記比較処理を実行することによって、前記複数の候補部分画像データから１個の部分画像データを選択し、
選択された複数の部分画像データであって、それぞれが前記複数の部分領域のそれぞれを表す前記複数の部分画像データを含む前記合成画像データを生成する、請求項２に記載の情報コード読取装置。
【請求項４】
前記制御部は、前記複数の部分領域のそれぞれについて、当該部分領域の画像を表す複数の候補部分画像データを用いた前記比較処理の結果、
前記複数の部分領域のいずれの部分領域においても、前記複数の撮像部のうちの第１撮像部から取得された部分画像データが選択される場合、前記第１撮像部を用いて得られた前記複数の部分画像データを用いて合成画像データを生成し、
前記複数の部分領域のうち、前記第１部分領域の画像を表す部分画像データとして、前記複数の撮像部のうちの前記第１撮像部を用いて得られる前記第１部分画像データが選択され、前記第２領域の画像を表す部分画像データとして、前記複数の撮像部のうちの第２撮像部を用いて得られる前記第２部分画像データが選択される場合、前記第１部分画像データと前記第２部分画像データと、を含む前記合成画像データを生成する、請求項３に記載の情報コード読取装置。
【請求項５】
前記情報コードは、２次元コードであり、
前記制御部は、
前記複数個の撮像部のそれぞれから、当該撮像部を用いて撮像された前記情報コードを示す全体画像データを取得し、
取得された複数の前記全体画像データのそれぞれについて、当該全体画像データによって表される前記情報コードの４辺のうち、互いに接続される２辺の中点の位置をそれぞれ特定し、各中点から垂直に伸びる線によって分割される４個の部分領域のそれぞれの画像を表す前記候補部分画像データを取得する、請求項３又は４に記載の情報コード読取装置。
【請求項６】
前記指標は、画像の白色と黒色とのコントラストを含み、
前記制御部は、前記比較処理において、前記複数の部分画像データのうち、前記コントラストが最も高い部分画像データを選択する、請求項２から５のいずれか一項に記載の情報コード読取装置。
【請求項７】
前記制御部は、
前記複数個の撮像部のそれぞれを用いて、当該撮像部を用いて撮像された前記情報コードを表す画像データを取得し、
取得された複数の前記画像データのそれぞれに基づいて、デコードすることを試行し、
前記複数の画像データのいずれを用いてもデコードすることができない場合に、前記合成画像データに基づいてデコードする、請求項１から６のいずれか一項に記載の情報コード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、情報コードを読み取る情報コード読取装置に関する。
【背景技術】
【０００２】
特許文献１には、情報コードを表示する表示方法が開示されている。この表示方法では、同一の情報コードの画像を時間間隔を置いて複数回表示器の画面に表示する。表示器には、各回で互いに９０度回転した状態の画像が表示される。この表示方法では、表示器の画面に傷や汚れが付着していたり、画面の鏡面反射によって、例えば１回目の表示で、読取装置が画面に表示された情報コードの一部を読み取ることができない場合であっても、２回目以降の表示で、読み取れなかった情報コードの一部を読み取ることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−５４５８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、表示器が情報コードを回転させて表示することができる。このため、光の反射等によって情報コードを読み取ることができない場合に、情報コードを読み取るために情報コードに対して読取装置を移動させずに済む。しかしながら、情報コードは、表示器以外に例えば包装紙やポスター等に印刷され、情報コードを回転して表示させることができない物体に表れている場合が一般的であり、その場合には対応できないといった課題がある。
【０００５】
本明細書は、情報コードの表示態様を変えずに、情報コードを読み取ることができない事態を回避する技術を提供する。
【課題を解決するための手段】
【０００６】
本明細書で開示する情報コード読取装置は、情報コードに対して異なる角度で配置される複数個の撮像部と、制御部とを備えている。制御部は、複数個の撮像部のうちの１個の撮像部を用いて撮像された情報コードの第１部分領域の画像を表す第１部分画像データと、複数個の撮像部のうちの他の撮像部を用いて撮像された情報コードの第２部分領域の画像を表す第２部分画像データと、を含む合成画像データであって、情報コードを表す合成画像データを生成し、合成画像データに基づいてデコードする。
【０００７】
上記の情報コード読取装置では、複数の撮像部が、情報コードに対して異なる角度で配置される。そして、情報コード読取装置は、複数の撮像部のうち、２個以上の撮像部で撮像された部分的な情報コードの画像を表す部分画像データを用いて、合成画像データが生成される。この構成によれば、１個の撮像部では情報コードの第２部分領域が光の反射等で読み取れない一方、他の撮像部では情報コードの第２部分領域が読み取れている状況において、情報コード読取装置は、第２部分領域の画像を表す第２部分画像データを含む合成画像データに基づいて、デコードすることができる。これにより、情報コードの表示態様を変えずに、情報コードを読み取ることができない事態を回避することができる。
【図面の簡単な説明】
【０００８】
【図１】情報コード読取装置の構成を示すブロック図。
【図２】情報コード読取装置の撮像部の図。
【図３】情報コードの読取処理のフローチャート図。
【図４】第１撮像部で撮像された情報コードの画像の一例。
【図５】情報コードの画像の分割方法の説明図。
【図６】第２撮像部で撮像された情報コードの画像の一例。
【図７】第３撮像部で撮像された情報コードの画像の一例。
【図８】第４撮像部で撮像された情報コードの画像の一例。
【図９】第５撮像部で撮像された情報コードの画像の一例。
【図１０】情報コードの画像の合成方法の説明図。
【発明を実施するための形態】
【０００９】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に示す技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。
【００１０】
（特徴１）制御部は、複数個の撮像部のそれぞれから、当該撮像部を用いて撮像された第１部分領域の画像を表す第１候補部分画像データを取得し、取得された複数の第１候補部分画像データを用いて、複数の第１候補部分画像データによって表される複数の画像の質を示す指標を比較する比較処理を実行することによって、複数の第１候補部分画像データから、１個の第１部分画像データを選択し、第２部分画像データと、選択された第１部分画像データと、を含む合成画像データを生成してもよい。
【００１１】
この構成によると、複数個の撮像部を用いて、情報コードの１個の部分領域を撮像し、それにより得られる複数の候補部分画像から、デコードに最適な部分画像データを選択することができる。
【００１２】
（特徴２）情報コードは、第１部分領域と第２部分領域とを含む複数の部分領域を含み、制御部は、複数個の撮像部のそれぞれから、複数の部分領域のそれぞれについて、当該部分領域の画像を表す候補部分画像データを取得し、複数の部分領域のそれぞれについて、当該部分領域の画像を表す複数の候補部分画像データを用いた比較処理を実行することによって、複数の候補部分画像データから１個の部分画像データを選択し、選択された複数の部分画像データであって、それぞれが複数の部分領域のそれぞれを表す複数の部分画像データを含む合成画像データを生成してもよい。
【００１３】
この構成によると、情報コードの複数の部分領域のそれぞれについて、複数個の撮像部から取得される複数の部分画像データの中から、１個の部分画像データを選択することができる。このため、複数の部分領域のそれぞれについて、デコードに最適な部分画像データを用いて、合成画像データを生成することができる。
【００１４】
（特徴３）制御部は、複数の部分領域のそれぞれについて、当該部分領域の画像を表す複数の候補部分画像データを用いた比較処理の結果、複数の部分領域のいずれの部分領域においても、複数の撮像部のうちの第１撮像部から取得された部分画像データが選択される場合、第１撮像部を用いて得られた複数の部分画像データを用いて合成画像データを生成し、複数の部分領域のうち、第１部分領域の画像を表す部分画像データとして、複数の撮像部のうちの第１撮像部を用いて得られる第１部分画像データが選択され、第２領域の画像を表す部分画像データとして、複数の撮像部のうちの第２撮像部を用いて得られる第２部分画像データが選択される場合、第１部分画像データと第２部分画像データと、を含む合成画像データを生成してもよい。
【００１５】
この構成によると、比較処理の結果、複数の部分領域のいずれの領域においても、１個の撮像部から取得された部分画像データがデコードに最適な部分画像データである場合、１個の撮像部から取得された複数の部分画像データを用いて、合成画像データを生成することができる。このため、他の撮像部から取得された複数の部分画像データがデコードに適していない場合にも、デコードに最適な合成画像データを生成することができる。
【００１６】
（特徴４）情報コードは、２次元コードであり、制御部は、複数個の撮像部のそれぞれから、当該撮像部を用いて撮像された情報コードを示す全体画像データを取得し、取得された複数の全体画像データのそれぞれについて、当該全体画像データによって表される情報コードの４辺のうち、互いに接続される２辺の中点の位置をそれぞれ特定し、各中点から垂直に伸びる線によって分割される４個の部分領域のそれぞれの画像を表す候補部分画像データを取得してもよい。
【００１７】
この構成によると、全体画像データによって表される情報コードを、４個の部分領域に均一に分割することができる。この結果、一方の撮像部の部分画像データと他方の撮像部の部分画像データとを合成する際に、境界部分が合わずに合成することができない事態を回避することができる。
【００１８】
（特徴５）指標は、画像の白色と黒色とのコントラストを含み、制御部は、比較処理において、複数の部分画像データのうち、コントラストが最も高い部分画像データを選択してもよい。
【００１９】
この構成によると、コントラストが最も高い部分画像データをもとに合成画像データを生成することができる。この結果、コントラストが高い合成画像データに基づいてデコードすることができる。このため、デコードすることができない事態を抑制することができる。
【００２０】
（特徴６）制御部は、複数個の撮像部のそれぞれを用いて、当該撮像部を用いて撮像された情報コードを表す画像データを取得し、取得された複数の画像データのそれぞれに基づいて、デコードすることを試行し、複数の画像データのいずれを用いてもデコードすることができない場合に、合成画像データに基づいてデコードしてもよい。
【００２１】
この構成によると、１個の撮像部を用いて撮像された情報コードを表す画像データに基づいてデコードすることが可能である場合、合成画像データに基づいてデコードせずに、情報コードを読み取ることができる。
【実施例】
【００２２】
図面を参照して実施例の情報コード読取装置１０を説明する。図１に示すように、情報コード読取装置１０は、制御部１２と、撮像部１４と、メモリ１６と、操作部１８と、表示部２０と、を備える。撮像部１４は、第１撮像部１４ａと、第２撮像部１４ｂと、第３撮像部１４ｃと、第４撮像部１４ｄと、第５撮像部１４ｅと、を備える。以下、５つの撮像部１４ａから１４ｅをまとめて撮像部１４と表現することがある。
【００２３】
制御部１２は、ＣＰＵを備える。制御部１２は、メモリ１６内のプログラムに従って様々な処理を実行する。制御部１２が実行する処理の内容は後で詳しく説明する。
【００２４】
撮像部１４は、２次元コード等の各種情報コードを撮像することができる。撮像部１４は、５つの撮像部１４ａ〜１４ｅを備える。５つの撮像部１４ａ〜１４ｅは、それぞれ、レンズと撮像素子とを備える。撮像素子は、例えばＣＣＤイメージセンサ、ＣＭＯＳイメージセンサ等のイメージセンサである。情報コード読取装置１０を用いて撮像する場合、撮像素子は、レンズを通して得られる画像を電気信号に変換し、該電気信号を制御部１２に供給する。
【００２５】
図２に示すように、第１撮像部１４ａは、撮像部１４の中心に位置する。４個の第２撮像部１４ｂ〜第５撮像部１４ｅは、第１撮像部１４ａの周りに等間隔に配置されている。なお、図２で示される２次元コード３０は、撮像部１４に向いている。従って、図２の２次元コード３０は、実際には２次元コード３０の裏側が図示されている。第２撮像部１４ｂ、第３撮像部１４ｃ、第４撮像部１４ｄ及び第５撮像部１４ｅ（詳細には各撮像部のレンズ）は、それぞれ、第１撮像部１４ａ（詳細には第１撮像部１４ａのレンズ）に対して異なる角度に傾斜している。なお、第２〜第５撮像部１４ｂ〜１４ｅは、それぞれ、第１撮像部１４ａに対して、例えば５度だけ傾斜している。このため、第１撮像部１４ａ（詳細には第１撮像部１４ａのレンズ）が２次元コード３０の鉛直上方に配置される場合、第２〜第５撮像部１４ｂ〜１４ｅは、それぞれ、２次元コード３０に対して鉛直上方からずれた位置に配置される。この結果、例えば、各撮像部１４ａ〜１４ｅから見たときに２次元コード３０上で光が反射する位置は異なる。図２では、撮像部１４ａ、１４ｄ、１４ｅのレンズの中心から２次元コード３０の中心に向かう２点鎖線が図示されており、２次元コード３０によって隠れる部分は破線で示されている。
【００２６】
メモリ１６は、例えばＲＯＭ、ＲＡＭ、等の不揮発性メモリを有しており、様々なプログラムを記憶している。また、メモリ１６は、様々な情報（例えば、後述の撮像データなど）を記憶する領域を有している。
【００２７】
操作部１８は、複数のキーを備える。情報コード読取装置１０の利用者は、操作部１８を操作して、情報コード読取装置１０に様々な情報を入力することができる。表示部２０は、例えば液晶ディスプレイを有し、様々な情報を表示する。
【００２８】
続いて、図３〜図１０を参照して、情報コード読取装置１０の制御部１２が２次元コード３０をデコードする場合に実行する読取処理について説明する。
【００２９】
最初に、２次元コード３０について説明する。図４に示すように、２次元コード３０Ａには、種々のデータが記録されている。なお、２次元コード３０Ａは、第１撮像部１４ａで撮像された２次元コード３０を表す画像である。２次元コード３０Ａの内部は、Ｎ×Ｎ個の正方形のセルに区切られている。各セルは、白（明）もしく黒（暗）に色分けされている。２次元コード３０Ａは、位置決め用シンボル４ａ〜４ｃと、タイミングパターン６ａ、６ｂを有している。位置決め用シンボル４ａ〜４ｃは、黒セルと白セルが特定比率（１：１：３：１：１）に配置されている。位置決め用シンボル４ａ〜４ｃは、２次元コード３０の位置を検出するためのパターンである。タイミングパターン６ａでは、位置決め用シンボル４ａ、４ｂの間において、図４の上下方向に白セルと黒セルが交互に配置されている。タイミングパターン６ｂでは、位置決め用シンボル４ａ、４ｃの間において、図４の左右方向に白セルと黒セルが交互に配置されている。タイミングパターン６ａ、６ｂは、２次元コード３０の各セルの中心座標を求めるためのパターンである。
【００３０】
次いで、制御部１２が実行する読取処理を説明する。情報コード読取装置１０の利用者は、撮像部１４を読取対象の２次元コード３０（図２参照）に向けた状態で、操作部１８を操作して、所定の読取操作を入力することができる。読取操作が入力されると、図３に示す読取処理が開始される。Ｓ１０では、制御部１２は、撮像部１４に撮像を実行させる。制御部１２は、５個の撮像部１４に同時に撮像を実行させる。さらに、Ｓ１０では、制御部１２は、５個の撮像部１４のそれぞれから、撮像結果を示す信号を取得する。そして、制御部１２は、取得済みの信号を用いて、５個の撮像部１４のそれぞれで撮像された２次元コード３０を表す画像データを生成する。制御部１２は、生成済みの５つの画像データをメモリ１６に記憶させる。
【００３１】
次いで、Ｓ１２では、制御部１２は、Ｓ１０でメモリ１６に記憶済みの５つの画像データ（即ち、２次元コード３０Ａ〜３０Ｅ（図４、図６〜図９参照）を表す画像データ）のうち、デコード可能な画像データが存在するか否かを判断する。なお、２次元コード３０Ａを表す画像データは第１撮像部１４ａから取得される信号から生成されており、２次元コード３０Ｂを表す画像データは第１撮像部１４ｂから、２次元コード３０Ｃを表す画像データは第１撮像部１４ｃから、２次元コード３０Ｄを表す画像データは第１撮像部１４ｄから、２次元コード３０Ｅを表す画像データは第１撮像部１４ｅからそれぞれ取得される信号から生成されている。
【００３２】
具体的には、５つの画像データから１つの画像データを選択し、デコード処理を試行する。デコード処理は公知の方法で試行される。例えば、第１撮像部１４ａを用いて２次元コード３０が適切に撮像されている場合、第１撮像部１４ａから取得される画像データを用いて、デコード処理を実行することができる（Ｓ１２でＹＥＳ）。一方、例えば、２次元コード３０の周囲に強い光源が存在するために、２次元コード３０から光が鏡面反射している状況や、２次元コード３０が平坦面に示されていない状況で、第１撮像部１４ａを用いて２次元コード３０が適切に撮像されていない場合、第１撮像部１４ａから取得される画像データを用いて、デコード処理を実行することができない。この場合、残り４つの画像データから第２撮像部１４ｂから取得される画像データを選択し、デコード処理を試行する。第２撮像部１４ｂを用いたデコード処理を実行することができない場合、同様に第３撮像部１４ｃ、第４撮像部１４ｄ、第５撮像部１４ｅの画像データを順に選択し、デコード処理を試行する。
【００３３】
選択済みの１つの画像データを用いてデコード処理が実行できた場合（Ｓ１２でＹＥＳ）、デコード結果を表示部２０に表示させて、読取処理を終了する。一方、５つの画像データのいずれの画像データを用いてもデコード処理が実行できない場合（Ｓ１２でＮＯ）、Ｓ１４に進む。
【００３４】
Ｓ１４では、制御部１２は、Ｓ１０においてメモリ１６に記憶されている５つの画像データで表される５つの２次元コード３０Ａ〜３０Ｅをそれぞれ４分割にする。すなわち、制御部１２は、２０個の部分画像データを生成する。分割の方法について、図４及び図５を用いて説明する。まず、図４に示すように、制御部１２は、１つの画像データで表される２次元コード３０Ａの位置決め用シンボル４ａ〜４ｃを用いて２次元コード３０の互いに直接的に接続されている２辺の中点を特定する。具体的には、制御部１２は、シンボル４ａの左上部分１０４ａとシンボル４ｂの左下部分１０４ｂ間の距離を測定し、左上部分１０４ａと１０４ｂのそれぞれから等距離にある２次元コード３０の辺４０上の点を中点５０と特定する。同様に、制御部１２は、シンボル４ａの左上部分１０４ａとシンボル４ｃの右上部分１０４ｃ間の距離を測定し、辺４２上の点を中点５２と特定する。次いで、制御部１２は、中点５０から辺４０に対して垂直な線６０と辺４４との交点を辺４４の中点５４として特定する。同様に、制御部１２は、中点５２から辺４２に対して垂直な線６２と辺４６との交点を辺４６の中点５６として特定する。
【００３５】
次いで、制御部１２は、辺４０の中点５０と両端との中央位置（例えば図６の中点７０）を特定する。具体的には、左上部分１０４ａと中点５０のそれぞれから等距離にある２次元コード３０の辺４０上の点を特定し、左下部分１０４ｂと中点５０のそれぞれから等距離にある２次元コード３０の辺４０上の点を特定する。同様に、各辺４２〜４６の中点５２〜５６と各部分１０４ａ〜１０４ｃを用いて、辺４２〜４６上で中点と両端との中央位置を特定する。
【００３６】
そして、制御部１２は、タイミングパターン６ａ，６ｂを用いて、特定済みの中点５０、５２、５４、５６のそれぞれの座標を特定し、特定済みの座標をメモリ１６に記憶させる。次いで、図５に示すように、制御部１２は、線６０及び線６２で区切られる４つの部分領域の部分画像Ａ１〜Ｄ１のそれぞれを表す４つの部分画像データを生成する。制御部１２は、他の４つの２次元コード３０Ｂ〜３０Ｅを表す４つの画像データに対して、同様に処理を実行して、部分画像データを生成する。
【００３７】
また、制御部１２は、部分画像Ａ１〜Ｄ１を表す部分画像データのそれぞれに対応付けて、４つの中点５０、５２、５４、５６のうち、当該部分画像の頂点に位置する中点の座標（例えば部分画像Ａ１では中点５０，５２）を、各部分画像Ａ１〜Ｄ１の部分画像データに対応付けてメモリ１６に記憶させている。さらに、辺４２〜４６上で中点と両端との中央位置のうち、部分画像Ａ１〜Ｄ１に含まれる中央位置を当該部分画像Ａ１〜Ｄ１の部分画像データに対応付けてメモリ１６に記憶させている。４つの２次元コード３０Ｂ〜３０Ｅの部分画像Ａ２〜Ｄ５でも同様である。
【００３８】
次いで、Ｓ１６では、制御部１２は、２０個の部分画像データによって表される部分画像Ａ１〜Ｄ５（図４、図６〜図９参照）のコントラストを計測する。コントラストの計測方法を図６を用いて説明する。図６において、２次元コード３０の左上領域を部分画像Ａ２と呼ぶ。以下、図６の２次元コード３０Ｂの右上領域を部分画像Ｂ２、左下領域を部分画像Ｃ２、右下領域を部分画像Ｄ２と呼ぶ。なお、同様に、図４の２次元コード３０Ａの左上領域を部分画像Ａ１、右上領域を部分画像Ｂ１、左下領域を部分画像Ｃ１、右下領域を部分画像Ｄ１と呼ぶ。図７の２次元コード３０Ｃの左上領域を部分画像A３、右上領域を部分画像Ｂ３、左下領域を部分画像Ｃ３、右下領域を部分画像Ｄ３と呼ぶ。図８の２次元コード３０Ｄの左上領域を部分画像Ａ４、右上領域を部分画像Ｂ４、左下領域を部分画像Ｃ４、右下領域を部分画像Ｄ４と呼ぶ。図９の２次元コード３０Ｅの左上領域を部分画像Ａ５、右上領域を部分画像Ｂ５、左下領域を部分画像Ｃ５、右下領域を部分画像Ｄ５と呼ぶ。
【００３９】
図６において、部分画像Ａ２のコントラストの計測の方法を説明する。なお、部分画像Ａ２以外の１９個の部分画像についても同様の方法でコントラストを計測する。この方法では、部分画像Ａ２の中心部のコントラストを計測する。これにより、コントラストの計測に要する時間を短縮することができる。なお、部分画像Ａ２全体のコントラストを計測してもよい。
【００４０】
部分画像Ａ２の中心部のコントラストを計測するために、最初に、部分画像Ａ２の中心部９２を特定する。具体的には、制御部１２は、部分画像Ａ２を表す部分画像データと対応付けて記憶されているシンボル４ａの左上部分１０４ａと中点５０との中央位置である中点７０と、シンボル４ａの左上部分１０４ａと中点５２との中央位置である中点７２とのそれぞれから、各辺４０、４２に対して描かれる垂直な線８０、８２の交点を、部分画像Ａ２の中心点９０と特定する。次いで、制御部１２は、中心点９０から所定半径の領域（以下では中心部９２と呼ぶ）を特定する。制御部１２は、取り込んだ２次元コード３０Ｂの大きさに基づいて半径ｒ（例えば半径ｒは２次元コード３０Ｂの一辺の長さの８分の１）を決める。なお、半径ｒは、中心部９２が部分画像Ａ２内に収まっており、かつ、少なくとも白（明）と黒（暗）のセルが１つずつ含まれている大きさに設定することができる。
【００４１】
情報コード読取装置１０において、２次元コード３０を読み取る際、光源（図示略）が、２次元コード３０に向かって光を照射する。２次元コード３０からの反射光は、撮像部１４にあるレンズにより結像され、撮像素子（図示略）により受光される。制御部１２は、撮像素子により受光された反射光のうち、中心部９２の範囲内にあるセルから、最も明るいもの（白）と最も暗いもの（黒）の輝度から、コントラストを数値化する（例えば、最も明るいセルの輝度÷最も暗いセルの輝度により数値化する）。制御部１２は、上述したコントラストの数値を部分画像Ａ２を表す部分画像データに対応付けてメモリ１６に記憶させる。
【００４２】
同様の方法で、制御部１２は、残りの１９個の部分画像Ａ１〜Ａ５、Ｂ１〜Ｂ５、Ｃ１〜Ｃ５、Ｄ１〜Ｄ５のコントラストを計測し、それぞれの部分画像データと対応付けて、コントラストをメモリ１６に記憶させる。
【００４３】
次いで、Ｓ１８では、制御部１２は、比較処理を実行する。即ち、制御部１２は、計測したコントラストに基づいて、４つの領域のそれぞれの部分画像のうち、最もコントラストが高い部分画像を選択する。具体的には、まず、制御部１２は、５つの撮像部１４のそれぞれで撮像された左上領域の部分画像Ａ１，Ａ２，Ａ３，Ａ４，Ａ５を表す５つの部分画像データ（以下では「候補部分画像データ」と呼ぶ）を、メモリ１６から取得する。次いで、５つの候補部分画像データのコントラストを比較して、最もコントラストが高い候補部分画像データを選択する。以下同様にして、右上領域の部分画像Ｂ１〜Ｂ５を表す５つ候補部分画像データと、左下領域の部分画像Ｃ１〜Ｃ５を表す５つ候補部分画像データと、右下領域の部分画像Ｄ１〜Ｄ５を表す５つ候補部分画像データと、のそれぞれから、最もコントラストが高い候補部分画像データ（以下では「選択部分画像データ」と呼ぶ）を選択する。
【００４４】
次いで、Ｓ２０では、制御部１２は、選択された４つの領域の画像を表す４つの選択部分画像データを合成する。例えば、図１０に示すように、制御部１２は、部分画像Ａ４、Ｂ２、Ｃ３、Ｄ１を表す選択部分画像データを用いて合成画像（以下では「合成２次元コード３８」と呼ぶ）を表す合成画像データを生成する。
【００４５】
具体的には、制御部１２は、上述したように、５つの２次元コード３０Ａ〜３０Ｅのそれぞれについて、各辺の４つの中点５０、５２、５４、５６の座標をメモリ１６に記憶させている。また、制御部１２は、各部分画像Ａ４、Ｂ２、Ｃ３、Ｄ１の頂点の座標のうち４つの中点５０、５２、５４、５６の座標に対応する座標を、部分画像Ａ４、Ｂ２、Ｃ３、Ｄ１の部分画像データに対応付けてメモリ１６に記憶させている。すなわち、制御部１２は、部分画像Ａ４の右上の頂点１３６ａと左下の頂点２３６ａの座標をメモリ１６に記憶させている。以下同様に、制御部１２は、部分画像Ｂ２の左上の頂点１３６ｂと右下の頂点２３６ｂの座標をメモリ１６に記憶させている。制御部１２は、部分画像Ｃ３の左上の頂点１３６ｃと右下の頂点２３６ｃの座標をメモリ１６に記憶させている。制御部１２は、部分画像Ｄ１の右上の頂点１３６ｄと左下の頂点２３６ｄの座標をメモリ１６に記憶させている。
【００４６】
図１０に示すように、制御部１２は、５つの２次元コード３０Ａ〜３０Ｅのそれぞれについてメモリ１６に記憶された各辺の４つの中点５０、５２、５４、５６の座標の中から、１個の中点５０、５２、５４、５６を選択する。例えば、選択済みの４つの部分画像データのうち、２次元コード３０Ａの部分画像データが最も多い場合、２次元コード３０Ａの中点５０、５２、５４、５６を選択する。選択済みの４つの部分画像データが、それぞれ異なる２次元コード３０Ａ〜３０Ｅから選択されている場合、任意の２次元コード３０Ａ〜３０Ｅの４つの中点５０、５２、５４、５６を選択する。なお、撮像部１４の２次元コード３０に対する角度が異なることから、２次元コード３０Ａ〜３０Ｅの４つの中点５０、５２、５４、５６の座標は、一致していない。
【００４７】
次いで、部分画像Ａ４の左下の頂点２３６ａが、中点５０に配置されるとともに、部分画像Ａ４の右上の頂点１３６ａが、中点５２に配置されるように、部分画像データ内の各セルの座標を修正する。例えば、選択済みの中点５０、５２が２次元コード３０Ｄの中点５０、５２である場合、頂点２３６ａと中点５０及び頂点１３６ａと中点５２は互いに一致する。この場合、セルの座標は修正されない。一方、例えば、選択済みの中点５０、５２が２次元コード３０Ｄと異なる２次元コード３０の中点５０、５２である場合、頂点２３６ａと中点５０及び頂点１３６ａと中点５２は互いに一致しない。この場合、頂点２３６ａと中点５０が一致し、頂点１３６ａと中点５２が一致するように、各セルの座標を修正する。以下同様に、制御部１２は、部分画像Ｂ２の左上の頂点１３６ｂが、中点５２に配置されるとともに、部分画像Ｂ２の右下の頂点２３６ｂが、中点５４に配置されるように、部分画像データ内の各セルの座標を修正する。制御部１２は、部分画像Ｃ３の左上の頂点１３６ｃが、中点５０に配置されるとともに、部分画像Ｃ３の右下の頂点２３６ｃが、中点５６に配置されるように、部分画像データ内の各セルの座標を修正する。制御部１２は、部分画像Ｄ１の右上の頂点１３６ｄが、中点５４に配置されるとともに、部分画像Ｄ１の左下の頂点２３６ｄが、中点５６に配置されるように、部分画像データ内の各セルの座標を修正する。この結果、合成２次元コード３８を表す合成画像データが生成される。
【００４８】
次いで、Ｓ２２では、制御部１２は、Ｓ２０で生成済みの合成画像データをデコードするデコード処理を行う。制御部１２は、デコード処理が実行される場合（Ｓ２２でＹＥＳ）、デコード結果を表示部２０に表示させて、読取処理を終了する。一方、制御部１２は、デコード処理が実行できない場合（Ｓ２２でＮＯ）、表示部２０にエラーを表示させて（Ｓ２４）、読取処理を終了する。
【００４９】
次いで、本実施例の効果を説明する。制御部１２は、Ｓ１８の比較処理において、メモリ１６に記憶された左上領域の部分画像Ａ１〜Ａ５のコントラストを比較する。ここで、図４、６に示す部分画像Ａ１、Ａ２のコントラストはほぼ同じである。一方、図７に示す２次元コード３０Ｃの部分画像Ａ３のコントラストが最も低い。また、図８に示す２次元コード３０Ｄの部分画像Ａ４のコントラストが最も高い。
【００５０】
さらに、図９に示す２次元コード３０の部分画像Ａ５において、鏡面反射が起きている反射部分Ｒ以外の部分は、部分画像Ａ１、Ａ２のコントラストとほぼ同じとする。鏡面反射は、２次元コード３０が平坦である場合に、光源の種類や強さ、撮像部の２次元コード３０に対する角度によって発生する。また、例えば、２次元コード３０が印刷された紙などにしわが入っていると、予期しない部分で鏡面反射が起こる。鏡面反射が発生している反射部分Ｒでは、黒色のセルの輝度が高く、セルの明暗の区別はできない。また、反射部分Ｒの周囲でも、黒色のセルの輝度が高くなり、コントラストは低くなる。このため、鏡面反射が発生している反射部分Ｒを含む部分画像Ａ５のコントラストは相対的に低い。これにより、比較処理では、鏡面反射を含む部分画像を表す部分画像データが選択される事態を回避することができる。この結果、鏡面反射を含む部分画像が合成画像データで表される合成２次元コード３８に含まれることを防止することができる。
【００５１】
なお、比較処理では、極端に明るいと判定されたセルを含む部分画像を表す部分画像データを候補部分画像データから削除してもよい。
【００５２】
上記の結果、制御部１２は、左上領域の部分画像Ａ４を、左上領域の部分画像Ａ１〜Ａ５のうち最もコントラストが高いものと判定し、左上領域の部分画像Ａ４を選択部分画像３６ａとする。同様にして、制御部１２は、Ｂ１〜Ｂ５、Ｃ１〜Ｃ５、Ｄ１〜Ｄ５のそれぞれの領域から選択部分画像３６ｂ、３６ｃ、３６ｄを選択する。本明細書では、例えば、部分画像Ｂ２が選択部分画像３６ｂであり、部分画像Ｃ３が選択部分画像３６ｃであり、部分画像Ｄ１が選択部分画像３６ｄである。なお、図４、６〜９は、左上領域の部分画像Ａ１〜Ａ５の中から選択部分画像３６ａを選択する例を示すための図であり、各部分画像のコントラストを正確に表すものではない。制御部１２は、各選択部分画像を用いて、上述したとおり、合成２次元コード３８を生成する。
【００５３】
これにより、５つの２次元コード３０に対応する画像データのうち１つの画像データについてデコード処理ができない場合（例えば、２次元コード３０が印刷された紙などにしわがあり、鏡面反射を起こす場合や、コントラストが低くてデコード処理をできない場合）であっても、２次元コード３０のデコード処理を実行することができる。この結果、２次元コード３０の表示態様を変えずに、２次元コード３０を読み取ることができない事態を回避することができる。
【００５４】
実施例における中点の特定の方法は一例であり、別の方法を用いてもよい。実施例では、辺４０上の中点５０から線６０を引いて対向する辺４４上の中点５４を特定している。同様に、辺４２上の中点５２から線６２を引いて対向する辺４６上の中点５６を特定している。しかしながら、シンボル４ａの左上部分１０４ａとシンボル４ｂの左下部分１０４ｂ間の距離の２分の１の距離を、シンボル４ｃの右上部分１０４ｃを起点に辺４４上でとり、その点を中点５４と特定してもよい。同様に、シンボル４ａの左上部分１０４ａとシンボル４ｂの左下部分１０４ｂ間の距離の２分の１の距離を、シンボル４ｂの左下部分１０４ｂを起点に辺４６上でとり、その点を中点５６と特定してもよい。
【００５５】
また、実施例における選択部分画像３６の合成の方法は一例であり、別の方法を用いてもよい。実施例では、選択部分画像３６ａ、３６ｂ、３６ｃ、３６ｄの各２点の座標をメモリ１６に記憶させており、これらをもとに合成している。しかしながら、アラインメントマーク（図示略）のある選択部分画像３６ｄの４分割する前の２次元コード（例えば、２次元コード３０Ａ）を基準として、選択部分画像３６ａ、３６ｂ、３６ｃを重ね合わせてもよい。すなわち、選択部分画像３６ａに含まれる位置決め用シンボル４ａを２次元コード３０Ａの位置決め用シンボル４ａに重なるように合成してもよい。以下同様に、選択部分画像３６ｂに含まれる位置決め用シンボル４ｃを２次元コード３０Ａの位置決め用シンボル４ｃに重なるように合成してもよい。選択部分画像３６ｃに含まれる位置決め用シンボル４ｂを２次元コード３０Ａの位置決め用シンボル４ｂに重なるように合成してもよい。
【００５６】
あるいは、合成の際に、中点を基準にせずに、各選択部分画像３６ａ、３６ｂ、３６ｃ、３６ｄの頂点を重ね合せてもよい。例えば、図１０において、部分画像Ａ４の頂点１３６ａと部分画像Ｂ２の頂点１３６ｂが重なるように、部分画像データ内のセルの座標を修正してもよい。また、あるいは、部分画像データ内のセルの座標を修正せずに、４つの部分画像データを合成してもよい。
【００５７】
また、実施例では、５つの撮像部１４を用いて２次元コード３０を撮像している。しかしながら、これは一例であり、撮像部１４の数は５つに限られない。例えば、撮像部の数は、２つでも、６つ以上でもよい。
【００５８】
また、実施例では、５つの撮像部１４で２次元コード３０を撮像し（Ｓ１０）、その５つの画像データのうち１つの画像データでデコード可能か否かを判定している。そして、いずれの画像データでもデコードできないと判定した場合（Ｓ１２でＮＯ）、制御部１２は、５つの画像をそれぞれ４分割する（Ｓ１４）。しかしながら、５つの撮像部１４で２次元コード３０を撮像した後、直ちに制御部１２は、５つの画像を４分割してもよい。すなわち、撮像した２次元コード３０の画像データのうち１つの画像データでデコード可能かを判定しなくてもよい。これにより、合成２次元コード３８を表す合成画像データをデコードするまでに要する時間を短縮することができる。
【００５９】
さらに、実施例では、５つの画像を４分割している。しかしながら、これは一例であり、例えば３分割以下でも５分割以上でもよい。２分割の場合、上述した４分割の場合と同様の方法を用いることができる。例えば、シンボル４ａとシンボル４ｃから距離が等しい辺４２上の中点５２から、辺４２に対して９０度となるように対向する辺４６に向かって線６２を引き、この線６２によって画像を２分割することができる。９分割の場合も、上述した４分割の場合と同様の方法を用いることができる。例えば、辺４０上のシンボル４ａとシンボル４ｂを３等分する２点をとり、これらを起点として辺４０に対して９０度となるように２つの線を対向する辺４４に向かって引いてもよい。同様に、辺４２上の２点からも対向する辺４６に向かって２つの線を引いてもよい。これら４つの線により、画像を９分割することができる。
【００６０】
また、実施例では、５つの撮像部１４で撮像された全ての２次元コード３０Ａ〜３０Ｅを４つの分割し（図２のＳ１４）、４つの領域のそれぞれについて、比較処理（Ｓ１８）で選択された４つの部分画像データを合成している。しかしながら、合成画像データを生成する方法は、これに限られず、例えば、第１撮像部１４ａで撮像された２次元コード３０Ａの画像データを用いてデコードが実行できない場合に、２次元コード３０Ａ内でデコードが実行できない原因となっている領域（例えば鏡面反射が含まれている領域）を特定し、特定された１個以上の領域の画像のみを、他の撮像部１４ｂ〜１４ｅのいずれかで撮像された２次元コード３０Ｂ〜Ｅの対応する領域の画像に置換することによって、合成画像データを生成してもよい。
【００６１】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は、複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００６２】
４        ：位置決め用シンボル
６        ：タイミングパターン
１０      ：情報コード読取装置
１２      ：制御部
１４      ：撮像部
１６      ：メモリ
１８      ：操作部
２０      ：表示部
３０      ：２次元コード
３８      ：合成２次元コード
９０      ：中心点
９２      ：中心部
【図１】
2017027368.tif 000003
【図２】
2017027368.tif 000004
【図３】
2017027368.tif 000005
【図４】
2017027368.tif 000006
【図５】
2017027368.tif 000007
【図６】
2017027368.tif 000008
【図８】
2017027368.tif 000009
【図９】
2017027368.tif 000010
【図１０】
2017027368.tif 000011
【図７】
2017027368.tif 000012