(57)【要約】【構成】  読取装置（１０）は、ＣＰＵ（２０）を含み、ＣＰＵ（２０）の指示の下、初期設定処理において、複数の基準バーコードの各々を囲むように読取範囲（２００）が設定され、読取範囲２００の出力順序が設定される。初期設定処理が完了した後、撮影画像からバーコードが復号される場合に、設定された出力順序に従って読取範囲（２００）に含まれる画像が復号され、復号されたバーコード情報が出力される。【効果】  符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。【選択図】  図９
2018055304.tif 000002
【特許請求の範囲】
【請求項１】
複数の符号を一度に読み取る符号読取装置であって、
前記複数の符号を含む画像を撮影する撮影画像取得部、
前記撮影画像取得部によって撮像される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶する記憶部、
前記撮影画像取得部によって撮像された撮影画像のうち、前記複数の読取範囲に含まれる画像の各々を、前記読取順序に従う順序で抽出する画像抽出部、および
前記画像抽出部によって抽出された順序で各画像に含まれる符号を復号する復号部を備える、符号読取装置。
【請求項２】
前記復号部は、前記抽出部によって抽出された画像に含まれる符号が前記読取範囲内に位置する場合に、当該符号を復号する、請求項１記載の符号読取装置。
【請求項３】
前記撮影画像取得部によって撮像された前記撮影画像と前記複数の読取範囲との位置および向きを合わせるように、当該撮影画像と当該複数の読取範囲との位置および向きの少なくとも一方を変化させる変化部をさらに備える、請求項１または２記載の符号読取装置。
【請求項４】
前記変化部は、前記複数の読取範囲の位置を、前記撮影画像のうち、前記符号が含まれる画像上に移動させる、請求項３記載の符号読取装置。
【請求項５】
前記変化部は、前記撮影画像に含まれる複数の符号の大きさを変化させる、請求項３または４記載の符号読取装置。
【請求項６】
前記複数の符号に対応する複数の読取範囲を設定する読取範囲設定部、
前記読取範囲設定部で設定された前記複数の読取範囲の各々の読取順序を設定する順序設定部、および
前記読取範囲設定部によって設定された前記複数の読取範囲の各々の読取位置および前記順序設定部によって設定された当該複数の読取範囲の各々の読取順序を含む前記符号読取情報を生成する符号読取情報生成部をさらに備える、請求項１ないし５のいずれかに記載の符号読取装置。
【請求項７】
複数の符号を一度に読み取る符号読取装置で実行される制御プログラムであって、
符号読取装置のプロセッサに、
前記複数の符号を含む画像を撮影した撮影画像を取得する画像取得ステップ、
前記画像取得ステップにおいて取得される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶する記憶ステップ、
前記画像取得ステップにおいて取得した撮影画像のうち、前記複数の読取範囲に含まれる画像の各々を、前記読取順序に従う順序で抽出する画像抽出ステップ、および
前記画像抽出ステップにおいて抽出した順序で各画像に含まれる符号を復号する復号ステップを実行させる、制御プログラム。
【請求項８】
複数の符号を一度に読み取る符号読取装置の制御方法であって、
（ａ）前記複数の符号を含む画像を撮影した撮影画像を取得するステップ、
（ｂ）前記ステップ（ａ）において取得される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶し、
（ｃ）前記ステップ（ａ）において取得した撮影画像のうち、前記複数の読取範囲に含まれる画像の各々を、前記読取順序に従う順序で抽出するステップ、および
（ｄ）前記ステップ（ｃ）において抽出した順序で各画像に含まれる符号を復号するステップを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、符号読取装置、制御プログラムおよび制御方法に関し、特にたとえば、複数の符号を一括して読み取る、符号読取装置、制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示される。この特許文献１に開示されるバーコードシンボル読取装置では、複数のバーコードシンボルの読み取り処理が実行される。
【０００３】
読み取り処理では、複数のバーコードシンボルが一括撮像され、取得されたデジタル多値画像から、複数のバーコードシンボル領域が抽出される。その後、複数のバーコードシンボル領域毎に復号処理が実行される。
【０００４】
復号処理が実行されると、バーコードシンボルの桁数またはバーコードシンボルの大きさについての情報およびバーコードシンボル種別情報が記憶される。複数のバーコードシンボルが読み取られた場合には、バーコードシンボルの桁数またはバーコードシンボルの大きさについての情報およびバーコードシンボル種別情報に応じて、バーコードシンボルのデータの出力順序が設定される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２１９７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１の技術では、撮像された画像から読み取った複数のバーコードシンボルを、複数のバーコードシンボルを受け取ったアプリケーション側で入れ替える必要があり、処理に時間がかかるという問題がある。
【０００７】
それゆえに、この発明の主たる目的は、新規な、符号読取装置、制御プログラムおよび制御方法を提供することである。
【０００８】
また、この発明の他の目的は、符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる、符号読取装置、制御プログラムおよび制御方法を提供することである。
【課題を解決するための手段】
【０００９】
第１の発明は、複数の符号を一度に読み取る符号読取装置であって、撮影画像取得部、記憶部、画像抽出部、および復号部を備える。撮影画像取得部は、複数の符号を含む画像を撮影する。撮影画像取得部によって撮像された撮影画像は、２値化処理され、２値画像に変換される。記憶部は、撮影画像取得部によって撮像される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶する。読取範囲は、ユーザの指示によって設定されても良いし、自動的に設定されても良い。複数の読取範囲の各々の読取順序は、たとえば、ユーザによって複数の読取範囲が選択された順に設定される。画像抽出部は、撮影画像取得部によって撮像された撮影画像のうち、複数の読取範囲に含まれる画像の各々を、読取順序に従う順序で抽出する。復号部は、画像抽出部によって抽出された順序で各画像に含まれる符号を復号する。
【００１０】
第１の発明によれば、複数の読取範囲に含まれる画像の各々を、読取順序に従う順序で抽出し、抽出された順序で各画像に含まれる符号を復号するようにしてある。このため、符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。
【００１１】
第２の発明は、第１の発明に従属する符号読取装置であって、復号部は、抽出部によって抽出された画像に含まれる符号が読取範囲内に位置する場合に、当該符号を復号する。
【００１２】
第２の発明によれば、読取範囲を設定する際に用いられた被写体（物品）と異なる位置に符号が付された他の種類の物品に付された符号については、その符号が復号されることがない。このため、他の種類の物品について誤って読み取り処理を行っても、符号が復号されないので、誤って復号されたデータの整理作業などを行う必要が無くなり、手間がかかる作業を減らすことができる。
【００１３】
第３の発明は、第１または第２の発明に従属する符号読取装置であって、撮影画像取得部によって撮像された撮影画像と複数の読取範囲との位置および向きを合わせるように、当該撮影画像と当該複数の読取範囲との位置および向きの少なくとも一方を変化させる変化部をさらに備える。
【００１４】
第３の発明によれば、撮影画像取得部において撮影される際に、当該撮影画像と当該複数の読取範囲との位置および向きの少なくとも一方に誤りがあった場合でも、符号を復号することができる。
【００１５】
第４の発明は、第３の発明に従属する符号読取装置であって、変化部は、複数の読取範囲の位置を、撮影画像のうち、符号が含まれる画像上に移動させる。
【００１６】
第４の発明によれば、撮影画像と当該複数の読取範囲との位置が異なる場合でも、符号を復号することができる。
【００１７】
第５の発明は、第３または第４の発明に従属する符号読取装置であって、変化部は、撮影画像に含まれる複数の符号の大きさを変化させる。
【００１８】
第５の発明によれば、撮影画像と当該複数の読取範囲との大きさが異なる場合でも、符号を復号することができる。
【００１９】
第６の発明は、第１ないし第５のいずれかの発明に従属する符号読取装置であって、複数の符号に対応する複数の読取範囲を設定する読取範囲設定部、読取範囲設定部で設定された複数の読取範囲の各々の読取順序を設定する順序設定部、および読取範囲設定部によって設定された複数の読取範囲の各々の読取位置および順序設定部によって設定された当該複数の読取範囲の各々の読取順序を含む符号読取情報を生成する符号読取情報生成部をさらに備える。
【００２０】
第６の発明によれば、第１の発明と同様に、符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。
【００２１】
第７の発明は、複数の符号を一度に読み取る符号読取装置で実行される制御プログラムであって、符号読取装置のプロセッサに、複数の符号を含む画像を撮影した撮影画像を取得する画像取得ステップ、画像取得ステップにおいて取得される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶する記憶ステップ、画像取得ステップにおいて取得した撮影画像のうち、複数の読取範囲に含まれる画像の各々を、読取順序に従う順序で抽出する画像抽出ステップ、および画像抽出ステップにおいて抽出した順序で各画像に含まれる符号を復号する復号ステップを実行させる。
【００２２】
第８の発明は、複数の読取範囲、当該複数の読取範囲の各々の読取位置および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶する記憶部を備え、複数の符号を一度に読み取る符号読取装置の制御方法であって、（ａ）複数の符号を含む画像を撮影した撮影画像を取得するステップ、（ｂ）ステップ（ａ）において取得される撮影画像に対して設定される複数の読取範囲および当該複数の読取範囲の各々の読取順序を含む符号読取情報を記憶し、（ｃ）ステップ（ａ）において取得した撮影画像のうち、複数の読取範囲に含まれる画像の各々を、読取順序に従う順序で抽出するステップ、および（ｄ）ステップ（ｃ）において抽出した順序で各画像に含まれる符号を復号するステップを含む。
【００２３】
第７および第８の発明においても、第１の発明と同様に、符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。
【発明の効果】
【００２４】
この発明によれば、符号を読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。
【図面の簡単な説明】
【００２５】
【図１】図１（Ａ）は符号読取装置の外観の一例を表面から見た図解図であり、図１（Ｂ）は符号読取装置の外観の一例を裏面から見た図解図である。
【図２】図２は図１（Ａ）および（Ｂ）に示す符号読取装置の電気的な構成の一例を示すブロック図である。
【図３】図３は符号読取装置に表示される基本画面の一例を示す図解図である。
【図４】図４は撮像装置で撮影された撮影画像の一例を示す図解図である。
【図５】図５は基準バーコードと読取範囲との関係を示す図解図である。
【図６】図６は設定された読取範囲の位置を示す図解図である。
【図７】図７は読取範囲の位置および出力順序を記載したテーブルの一例を示す図解図である。
【図８】図８は図２に示すＲＡＭのメモリマップの一例を示す図解図である。
【図９】図９は図２に示すＣＰＵのメイン処理の一例を示すフロー図である。
【図１０】図１０は図９に示すＣＰＵの読み取り処理の一例を示すフロー図である。
【図１１】図１１（Ａ）は、撮影画像に含まれるバーコードが設定された読取範囲２００の範囲内に位置する場合を示す図解図であり、図１１（Ｂ）は、撮影画像に含まれるバーコードが設定された読取範囲２００の範囲内に位置しない場合を示す図解図である。
【図１２】図１２は、第２実施例における読み取り処理の一例を示すフロー図である。
【図１３】図１３（Ａ）〜（Ｄ）は、第３実施例における撮影画像におけるバーコードの位置または／および大きさを変化させる場合の一例を示す図解図である。
【図１４】図１４（Ａ）〜（Ｄ）は、第３実施例における撮影画像におけるバーコードの向きを変化させる場合の一例を示す図解図である。
【図１５】図１５は、第３実施例における読み取り処理の一例を示すフロー図である。
【発明を実施するための形態】
【００２６】
［第１実施例］
図１（Ａ）はこの発明の第１実施例の読取装置１０の外観構成の一例を表面から見た図解図であり、図１（Ｂ）はこの読取装置１０の外観構成の一例を裏面から見た図解図である。
【００２７】
符号読取装置１０は、光学的に読取り可能であって予め定める形式でデータを表す符号を複数個一括して読取り、各符号の符号信号を検出し、検出した符号信号から符号が表す符号情報信号をそれぞれ再生する。たとえば、符号読取装置１０は、手持ち型のバーコードリーダないしバーコードスキャナである。したがって、たとえば、読取り可能な符号は一次元バーコードである。また、符号信号は一次元バーコードの形状を表す画像信号であり、符号情報信号は数値コード信号である。
【００２８】
ただし、符号読取装置１０は、手持ち型に限定されず、定置型のリーダないしスキャナであっても良い。また、読取り可能な符号は、一次元バーコードに限定されず、二次元コードであっても良い。
【００２９】
図１（Ａ）に示すように、符号読取装置（以下、単に「読取装置」という。）１０は、正面から見た形状が縦長の長方形の筐体１２を含む。筐体１２の表面側には、表示装置１４および入力装置１６が設けられる。また、筐体１２は、ユーザが片手で持つことができる大きさで形成される。なお、筐体１２の形状および大きさは一例であり、限定されるべきでない。
【００３０】
表示装置１４は、タッチパネル付きのＬＣＤであり、表示面が筐体１２から露出するように配置される。ただし、ＬＣＤに代えて、有機ＥＬを用いても良い。また、タッチパネルは、汎用のタッチパネルであり、静電容量方式、電磁誘導方式、抵抗膜方式、赤外線方式など、任意の方式のものを用いることができる。
【００３１】
入力装置１６は、ハードウェアキーであり、第１実施例では、スキャンキー１６ａ、ＯＫ（決定）キー１６ｂ、カーソルキー１６ｃ、クリアキー１６ｄ、電源キー１６ｅおよび数字キー（テンキー）１６ｆを含む。
【００３２】
スキャンキー１６ａは、バーコードの読取指示（読取処理の実行指示）を入力するために用いられる。ＯＫキー１６ｂは、各種の設定および各種の処理（バーコードの読取処理を除く）の実行を決定するために用いられる。カーソルキー１６ｃは、表示装置１４に表示されるカーソルを移動させたり、表示装置１４に表示されたアイコンなどのオブジェクトを選択したりするために用いられる。
【００３３】
クリアキー１６ｄは、各種の設定をクリア（リセット）するために用いられる。電源キー１６ｅは、読取装置１０の主電源をオン／オフするために用いられる。数字キー１６ｆは、数字を入力するために用いられる。
【００３４】
図１（Ｂ）に示すように、筐体１２の裏面側であり、表示装置１４の反対側には、撮像装置１８が設けられる。図示および詳細な説明は省略するが、撮像装置１８は、撮像素子、照射装置および画像処理回路を含む。撮像素子は、ＣＣＤまたはＣＭＯＳである。照射装置は、レーザ光を照射する装置であって、撮影時に、撮影範囲を視認可能に指示するための四角枠のレーザ光を被写体に向けて照射する。図示は省略するが、撮像装置１８の撮影面（レンズ）および照射装置の照射面（発光面）は筐体１２から露出されるように配置される。たとえば、撮像装置１８の撮影方向および照射装置の照射方向は、筐体１２の平坦な裏面に対して所定角度（６０°程度）傾いた方向に設定される。
【００３５】
なお、図示は省略するが、筐体１２内にはバッテリが収納され、収納されたバッテリを覆うように筐体１２の裏面に蓋が設けられている。
【００３６】
図２は図１に示した読取装置１０の電気的な構成の一例を示すブロック図である。図２に示すように、読取装置１０は、ＣＰＵ２０を含み、ＣＰＵ２０には、入力装置１６、撮像装置１８、ＲＯＭ２２、フラッシュメモリ２３、ＲＡＭ２４、電源制御回路２６およびドライバ２８が接続される。また、ドライバ２８には、表示装置１４が接続される。
【００３７】
ＣＰＵ２０は、読取装置１０の全体的な制御を司る。ＲＯＭ２２は、読取装置１０の制御プログラム（符号読取プログラムを含む）および必要なデータを記憶する。フラッシュメモリ２３は、読取装置１０に設定される各種の情報（設定情報）を記憶する。ただし、フラッシュメモリ２３に代えて、ＥＥＰＲＯＭまたはＨＤＤのような他の不揮発性のメモリが設けられてもよい。ＲＡＭ２４は、ＣＰＵ２０のバッファ領域およびワーク領域として用いられる。電源制御回路２６は、ＣＰＵ２０の指示の下、バッテリからの電源を各回路コンポーネトに供給および停止する。
【００３８】
入力装置１６は、上述した各種キー（１６ａ〜１６ｆ）であり、操作されたキーに対応する操作信号ないし操作データをＣＰＵ２０に入力する。撮像装置１８は、ＣＰＵ２０からの撮影指示に応じて、予め定められる撮影範囲内の被写体（バーコードが付された物品ないし商品を含む）の画像を撮影し、２次元画像（撮影画像）についての画像データ（撮影画像データ）を生成する。ただし、２次元画像は、白黒画像（濃淡画像）またはカラー画像である。
【００３９】
なお、撮影範囲は、撮像装置１８の画角で決定され、たとえば、撮像装置１８を被写体に近づければ、撮影範囲は狭くなり、撮像装置１８を被写体から遠ざければ、撮影範囲は広くなる。ただし、ズーム機能によって撮影範囲が変化されてもよい。
【００４０】
撮像装置１８は、撮影画像データをＣＰＵ２０に与える。ＣＰＵ２０は、撮影画像データをＲＡＭ２４に一旦記憶する。また、撮像装置１８では、照射装置が、撮影時に、撮影範囲を指示するためのレーザ光を照射する。
【００４１】
ドライバ２８は、表示制御回路であり、たとえば、ＧＰＵおよびＶＲＡＭを含み、ＣＰＵ２０からの指示に従って表示画像データを生成し、表示装置１４に出力する。したがって、表示装置１４には、表示画像データに対応する表示画像（画面）が表示される。また、ドライバ２８は、ＣＰＵ２０からの指示に従って、ＲＡＭ２４に記憶された撮影画像に対応する画像データを表示装置１４に出力する。したがって、表示装置１４には、撮影画像が表示される。つまり、撮影画像がプレビュー表示される。
【００４２】
また、撮像装置１８では、画像処理回路が、ＲＡＭ２４に記憶された撮影画像データに２値化処理を施し、２値画像の画像データ（２値画像データ）を生成する。たとえば、２値化処理では、撮影画像において、所定の明るさ（輝度）未満の画素が黒色の画素に変換され、所定の明るさ以上の画素が白色の画素に変換される。所定の明るさは、予め実験等によって経験的に決定される。たとえば、黒色のバーコードを検出する（読み取る）場合には、所定の明るさを比較的低い値に設定することができる。ＣＰＵ２０は、生成された２値画像データから処理対象であるバーコードを抽出（検出）し、抽出したバーコードを復号する。
【００４３】
たとえば、２値画像データからバーコードを抽出する場合には、ＣＰＵ２０は、まず、２値画像データに平滑化フィルタをかけ、２値画像をぼやけた状態にする。次に、ＣＰＵ２０は、ぼやけた２値画像データから島状の塊（同じ色が集中している箇所）の位置を抽出する。ＣＰＵ２０は、抽出した島状の塊の位置およびその付近において、平滑化フィルタをかける前の２値画像データから直線が存在するかどうか判断し、直線が存在する場合には、その直線を検出する（エッジ抽出）。そして、ＣＰＵ２０は、検出した直線とこの直線に対して垂直に伸びる島状の塊の範囲（領域）を抽出することによって、２値画像データから矩形画像データを抽出する。２値画像データから抽出された矩形画像データは、バーコードに対応する画像データの候補として一時的にリストアップされる。
【００４４】
続いて、ＣＰＵ２０は、抽出した各矩形画像データがバーコードを示す画像データであるかどうかを、たとえば、パリティチェックを行うことにより判断する。パリティチェックでは、ＣＰＵ２０は、矩形画像データに含まれる直線（バー）に基づいて、矩形画像データをコード化し、コード化したコードのパターンがバーコードのパターンに合っているかどうかを判断する。
【００４５】
ＣＰＵ２０は、バーコードを示す画像データであることが判断された矩形画像データから、数値および文字の少なくとも一方で示されるバーコード情報（符号情報信号）に変換する。つまり、バーコードが復号される。ただし、バーコード情報は、さらに記号を含んでいてもよい。
【００４６】
なお、撮影画像に複数のバーコードが含まれる場合には、それぞれのバーコードに対して上述した処理が行われる。
【００４７】
ＣＰＵ２０は、変換したバーコード情報（復号結果）を出力する。一例として、バーコード情報は、表示装置１４に表示される。ただし、バーコード情報は、読取装置１０のホスト装置（図示せず）に送信されてもよい。図示は省略したが、ＣＰＵ２０は、インターフェイスを介して、ホスト装置にバーコード情報を送信する。したがって、バーコード情報は、ホスト装置における処理に用いられる。たとえば、店舗で販売される商品にバーコードが付されている場合には、バーコード情報は小売金額、商品名および商品種類を表し、ホスト装置は金銭登録機として機能する。ただし、バーコード情報は、無線でホスト装置に送信されてもよい。
【００４８】
また、バーコード情報には、バーコードの桁数またはバーコードの大きさについての情報および種別情報が含まれる。ただし、種別情報は、一次元バーコードか二次元コードかを示す情報のことである。
【００４９】
このような構成の読取装置１０では、上述したように、撮影画像に含まれる複数のバーコードを一括して読み取る（復号する）ことができる。たとえば、バーコードの復号に成功した場合には、バーコードの桁数またはバーコードの大きさについての情報およびバーコード種別情報が記憶される。複数のバーコードが読み取られた場合には、バーコードの桁数またはバーコードの大きさについての情報およびバーコード種別情報に応じて、バーコードのデータの出力順序が設定される。
【００５０】
たとえば、このような構成の読取装置１０は、同じ位置にバーコードが付された同種の物品ないし商品（以下、「物品」という。）を、物品毎に連続してバーコードを読み取る作業に用いられることがある。
【００５１】
なお、この第１実施例では、物品にバーコードが付される場合について説明するが、これに限定される必要はない。物品以外の伝票またはラベルにバーコードが付されている場合も同様である。
【００５２】
しかし、上記の場合には、撮像された画像から読み取った複数のバーコードを、複数のバーコードを受け取ったアプリケーション側で入れ替える必要があり、処理に時間がかかるという問題がある。
【００５３】
そこで、この第１実施例では、バーコードを読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できるようにしてある。
【００５４】
簡単に説明すると、複数のバーコードが付された物品を撮影し、撮影画像を用いて、各バーコードが付された位置および大きさに相当する複数の読取範囲２００（図５参照）を設定する。ただし、複数の読取範囲２００は、撮像装置１８によって撮影された撮影画像に対して設定される。そして、複数の読取範囲２００に対応して、バーコードを読み取る（復号する）順序が設定される。この第１実施例では、すべてのバーコードを復号した後に、ユーザによって設定された出力順序に従って復号されたバーコード情報がホスト装置に送信される。
【００５５】
ただし、バーコードを復号した順序（復号順序）に従って復号されたバーコード情報をホスト装置に送信するようにしてもよい。かかる場合には、出力順序に代えて、バーコードを復号する復号順序がユーザによって設定される。
【００５６】
また、出力順序は、複数のバーコード情報を受け取るアプリケーション側でそのまま使用できるように、ユーザによって、所望の順序に設定される。これらの設定を初期設定と呼ぶことにする。
【００５７】
このように、複数のバーコードが付された物品を撮影した撮影画像に対して複数の読取範囲２００を設定するとともに、各読取範囲２００に含まれるバーコードの読取順序を設定しておけば、その後に、同種の物品の読取処理を実行する場合において、設定した読取範囲２００に含まれるバーコードを、設定した読取順序に従って読み取ることにより、複数のバーコード情報を受け取るアプリケーション側での入れ替え（整理）が不要である。
【００５８】
まず、複数のバーコードが付された物品を撮影した撮影画像に対して複数の読取範囲２００を設定するとともに、各読取範囲２００に読取順序を設定することについて説明する。ここでは、複数の読取範囲２００を設定するために使用する物品を基準の物品と呼び、基準の物品に付されたバーコードを基準バーコードＲＢと呼ぶことにする。
【００５９】
図３は読取装置１０の表示装置１４に表示されるメニュー画面１００の一例を示す図解図である。このメニュー画面１００は、電源キー１６ｅが操作され、読取装置１０の主電源がオンされると、表示装置１４の表示範囲１４０に自動的に表示される。
【００６０】
図３に示すように、メニュー画面１００には、初期設定ボタン１０２ａおよび読み取りボタン１０２ｂが設けられる。初期設定ボタン１０２ａは、初期設定の実行を指示（初期設定処理の指示）するためのボタンである。読み取りボタン１０２ｂは、バーコードの読み取りの実行を指示（読み取り処理の指示）するためのボタンである。
【００６１】
初期設定ボタン１０２ａが選択（タッチ）されると、初期設定処理が開始される。すると、ＣＰＵ２０は、撮像装置１８を制御して、所定の被写体（複数のバーコードが付された物品）に対して撮像処理（撮影処理）を実行する。撮像装置１８は、ＣＰＵ２０からの撮影指示を受けて、レーザ光を発光することにより、撮影範囲を視認可能に表示し、オートフォーカス処理を実行し、焦点距離が合わされると、撮像処理を実行する。したがって、上述したように、撮影画像データがＲＡＭ２４に記憶されるとともに、表示装置１４に撮影画像が表示される。たとえば、複数のバーコードを含む撮影画像が取得され、表示装置１４に表示される。複数のバーコードが撮像されると、撮影画像を用いて、複数のバーコードの各々の読取範囲２００を設定するとともに、当該読取範囲２００に対応して出力順序を設定するための初期設定画面１１０が表示装置１４に表示される。
【００６２】
図４は撮像装置１８で撮影された撮影画像の一例を示す図解図である。ただし、図４には、一例として、モノクロの撮影画像が示されるが、撮影画像はカラーであってもよい。また、第１実施例では、四つのバーコードが付された被写体を撮影するようにしてあるが、これは単なる例示であり、限定されるべきでない。また、バーコードの他に文字等も撮影されるが、図４では省略してある。ただし、初期設定処理では、バーコードの読み取りは行わないので、２値化処理は行われなくてよい。
【００６３】
図４に示すように、初期設定画面１１０として、撮像装置１８で撮影された撮影画像が表示される。第１実施例では、撮影画像には、四つの基準バーコードＲＢ１〜ＲＢ４が含まれる。この基準バーコードＲＢ１〜ＲＢ４の各々に対応して、読取範囲２００が設定される。つまり、四つの読取範囲２００が設定される。以下、基準バーコードＲＢ１〜ＲＢ４のそれぞれを識別する必要が無い場合には、単に「基準バーコードＲＢ」ということがある。
【００６４】
たとえば、ユーザが基準バーコードＲＢ１〜ＲＢ４の各々を囲む矩形の枠（四角枠）を指定する。一例として、ユーザが基準バーコードＲＢを囲む（含む）四角枠（読取範囲２００）の左上の頂点に相当する位置をタッチ（指定）し、続いて、四角枠の右下の頂点に相当する位置をタッチする。このような指定操作が基準バーコードＲＢ１〜ＲＢ４の各々について行われる。
【００６５】
ただし、これは一例であり、限定される必要はない。上述したように、撮影画像に２値化処理を施し、２値化画像から基準バーコードＲＢ１〜ＲＢ４を自動で認識して、基準バーコードＲＢ１〜ＲＢ４の各々を囲む（含む）四角枠（読取範囲２００）を自動で設定するようにしてもよい。
【００６６】
また、読取範囲２００は、右上の頂点と左下の頂点を指定することにより、その位置および大きさを設定されてもよい。
【００６７】
図５は基準バーコードＲＢおよび基準バーコードＲＢに対応して設定された読取範囲２００を示す図解図である。読取範囲２００は、矩形形状に形成され、上述したように、対応する基準バーコードＲＢの全体を含むように設定される。このため、読取範囲２００は、対応する基準バーコードＲＢと同じ大きさか、基準バーコードＲＢよりも少し大きく設定される。図５では、読取範囲２００を点線の四角枠で示してあるが、これは一例であり、限定されるべきではない。また、たとえば、読取範囲２００は、撮影画像の前面に重ねて（重畳して）表示される。
【００６８】
なお、図示は省略するが、読取範囲２００は、他の読取範囲２００の一部と重なる場合もある。ただし、一つの読取範囲２００は、一つの基準バーコードＲＢに対応する。
【００６９】
図５に示す例では、基準バーコードＲＢ１に対応して読取範囲２００Ａが設定され、基準バーコードＲＢ２に対応して読取範囲２００Ｂが設定され、基準バーコードＲＢ３に対応して読取範囲２００Ｃが設定され、そして、基準バーコードＲＢ４に対応して読取範囲２００Ｄが設定される。以下、読取範囲２００Ａ〜２００Ｄを個別に識別する必要が無い場合には、単に「読取範囲２００」ということにする。
【００７０】
また、図５に示すように、読取範囲２００の左上の頂点および右下の頂点に記載した点は、上記のように、読取範囲２００を指定する際に、ユーザがタッチ（指定）した点である。この第１実施例では、左上の頂点および右下の頂点によって、読取範囲２００の位置および大きさが規定される。
【００７１】
各読取範囲２００の位置および大きさは、撮影画像に対応して設定される。ただし、この第１実施例では、表示装置１４の表示範囲１４０の大きさと撮影画像の大きさは同じものとする。たとえば、縦長の撮影画像に対して、横方向をＸ軸とし、縦方向をＹ軸とする２次元座標系が設定される。また、たとえば、撮影画像の左上の頂点が２次元座標系の原点Ｏ（０，０）に設定される。また、撮影画像の横方向がＸ軸方向であり、縦方向がＹ軸方向である。さらに、原点から右向きがＸ軸のプラス方向であり、原点から下向きがＹ軸のプラス方向である。このような２次元座標系において、各読取範囲２００の位置および大きさが特定される。ただし、座標のＸ成分およびＹ成分は撮影画像の画素数で表現される。
【００７２】
したがって、図５に示す例では、読取範囲２００Ａの左上の頂点の座標は（５０，１００）であり、右下の頂点の座標は（３００，２５０）である。また、読取範囲２００Ｂの左上の頂点の座標は（３５０，１００）であり、右下の頂点の座標は（８００，２５０）である。さらに、読取範囲２００Ｃの左上の頂点の座標は（１５０，３００）であり、右下の頂点の座標は（７００，５５０）である。そして、読取範囲２００Ｄの左上の頂点の座標は（３５０，５５０）であり、右下の頂点の座標は（８００，７５０）である。
【００７３】
なお、図５では、説明の都合上、読取範囲２００Ａ〜Ｄの左上の頂点および右下の頂点を図示するとともに、各頂点の近傍に各点の座標を表示してあるが、実際にはこれらは初期設定画面１１０には表示されない。
【００７４】
このようにして、四つの基準バーコードＲＢ１〜ＲＢ４の各々について、読取範囲２００Ａ〜２００Ｄが設定される。たとえば、ユーザは、読取範囲２００の設定を終了（完了）すると、ＯＫキー１６ｂを操作する。続いて、各読取範囲２００に対応して出力順序がユーザによって設定される。
【００７５】
図６は撮影画像の基準バーコードＲＢに対応して設定された読取範囲２００を示す図解図である。たとえば、複数の基準バーコードＲＢに対応して読取範囲２００が設定されると、各読取範囲２００にラベル（識別情報）が付される。
【００７６】
なお、図６の初期設定画面１１０においては、撮影画像が非表示（消去）され、読取範囲２００のみが表示されるが、撮影画像は表示されていてもよい。また、図６に示す例では、読取範囲２００ＡにラベルＡが付され、読取範囲２００ＢにラベルＢが付され、読取範囲２００ＣにラベルＣが付され、そして、読取範囲２００ＤにラベルＤが付される。ただし、ラベルＡ〜Ｄは内部処理で使用されるだけであり、実際には初期設定画面１１０には表示されない。
【００７７】
図６に示す初期設定画面１１０において、ユーザが読取範囲２００Ａ〜２００Ｄを所望の順序で選択することによって、ユーザが選択した順序で読取範囲２００Ａ〜２００Ｄに対して出力順序が設定される。
【００７８】
図７は読取範囲２００の位置および範囲と、読取範囲２００に対応する出力順序を記載した読取範囲テーブルの一例を示す図解図である。読取範囲２００および読取範囲２００に対応する出力順序が設定されると、図７に示すような読取範囲テーブルが生成される。図７に示す読取範囲テーブルでは、ラベルに対応して、座標Ｘ１、座標Ｙ１、座標Ｘ２、座標Ｙ２および出力順序が記述される。
【００７９】
ラベルは、各読取範囲２００に付されたラベル（識別情報）であり、上述したように、アルファベット（Ａ〜Ｄ）が記述される。ただし、ラベルは、数字または数字とアルファベットの組み合わせでもよいし、読取範囲テーブルは内部処理で生成および使用されるだけであるため、人間が解読できない記号でもよい。
【００８０】
座標Ｘ１、座標Ｙ１、座標Ｘ２および座標Ｙ２は、基準バーコードＲＢに設定された読取範囲２００の位置および大きさを規定するための情報である。具体的には、座標Ｘ１および座標Ｙ１が読取範囲２００の左上の頂点の２次元座標であり、座標Ｘ２および座標Ｙ２が読取範囲２００の右下の頂点の２次元座標である。
【００８１】
出力順序は、読取範囲２００に対して設定された出力順序であり、出力順序に対応する数字が記述される。したがって、図７に示す読取範囲テーブルの例では、読取範囲２００Ｂ、読取範囲２００Ｄ、読取範囲２００Ａおよび読取範囲２００Ｃの順で、各読取範囲２００に含まれるバーコードが読み取られた（復号された）バーコード情報が、ホスト装置に出力（送信）される。ただし、復号処理を実行する順番は任意でよい。
【００８２】
このように、読取範囲２００および当該読取範囲２００に対応する出力順序が設定され、図７に示すような読取範囲テーブルが生成されると、初期設定が完了する。初期設定が完了すると、表示装置１４には、図３に示したメニュー画面１００が表示される。
【００８３】
なお、読取装置１０が初めて起動される場合には、自動的に初期設定が開始されてもよい。また、種類の異なる物品のバーコードを読み取り場合には、種類の異なる物品について上記の初期設定が実行され、新たに読取範囲テーブルが生成される。ただし、種類の異なる物品毎に読取範囲テーブルを生成しておき、必要に応じて読取範囲テーブルを使い分けるようにしてもよい。この実施例では、「種類の異なる物品」とは、付されるバーコードの数、位置および範囲のいずれか１つが異なる物品であることを意味する。したがって、「種類の同じ物品（同種の物品）」とは、付されるバーコードの数、位置および範囲が同じ物品であることを意味する。
【００８４】
初期設定が行われた後に、メニュー画面１００で読み取りボタン１０２ｂが選択されるか、またはスキャンキー１６ａが操作されると、ＣＰＵ２０は、初期設定で生成した読取範囲テーブルを参照し、バーコードの読み取り処理を実行する。バーコードの読み取り処理が実行されると、ＣＰＵ２０は、撮像装置１８を制御して、撮像処理を実行する。ただし、第１実施例では、バーコードの読み取り処理において撮像される被写体は、初期設定に用いられた物品と同種の物品である。このため、バーコードの読み取り処理において撮像される物品に付されたバーコードの数は、初期設定に用いられた基準の物品に付された基準バーコードＲＢの数と同じである。また、コードの読み取り処理において撮像される物品に付された複数のバーコードの位置および大きさは、複数の基準バーコードＲＢの位置および大きさと同じである。
【００８５】
したがって、バーコードの読み取り処理では、上述したように、撮像処理が実行され、複数のバーコードを含む撮影画像が取得される。この撮影画像に対応する撮影画像データに２値化処理が施され、２値画像が生成される。２値画像が生成されると、ＣＰＵ２０は、２値画像から、初期設定で生成された読取範囲テーブルを参照して、読取範囲２００毎に画像を抽出する。ただし、初期設定時の基準の画像と同様に、２値画像に２次元座標系が設定され、２値画像から読取範囲２００毎に当該読取範囲２００内の画像が抽出される。次に、ＣＰＵ２０は、抽出した画像（抽出画像）から２値画像からバーコードを抽出（検出）し、抽出したバーコードを復号する。ただし、抽出画像は、読取範囲２００（読取範囲２００のラベル）に紐づけられて管理され、読取範囲テーブルに記入された出力順序に従って、復号されたバーコード情報（復号結果）は出力される。
【００８６】
図８は図２に示したＲＡＭ２４のメモリマップ７０の一例を示す図解図である。図８に示すように、ＲＡＭ２４は、プログラム記憶領域７２およびデータ記憶領域７４を含む。プログラム記憶領域７２には、バーコード（符号）の読取プログラムを含む制御プログラムを記憶し、この制御プログラムは、メイン処理プログラム７２ａ、画像表示プログラム７２ｂ、操作検出プログラム７２ｃ、撮像処理プログラム７２ｄ、読取範囲設定プログラム７２ｅ、出力順序設定プログラム７２ｆ、符号検出プログラム７２ｇおよび復号プログラム７２ｈなどを含む。
【００８７】
メイン処理プログラム７２ａは、読取装置１０のメインルーチンを処理するためのプログラムである。画像表示プログラム７２ｂは、表示装置１４に表示する各種の表示画像に対応する表示画像データを生成および出力するためのプログラムである。また、画像表示プログラム７２ｂは、撮影画像に対応する撮影画像データを表示装置１４に出力するためのプログラムでもある。
【００８８】
操作検出プログラム７２ｃは、入力装置１６（キー１６ａ〜１６ｆ）から入力される操作データを検出し、検出した操作データを操作データバッファ７４ａに記憶するためのプログラムである。また、操作検出プログラム７２ｃは、タッチパネルから入力される座標データを検出し、検出した座標データを操作データバッファ７４ａに記憶するためのプログラムでもある。
【００８９】
撮像処理プログラム７２ｄは、初期設定処理または読み取り処理が実行されたときに、撮像装置１８を制御して、被写体を撮像するためのプログラムである。また、撮像処理プログラム７２ｄは、撮影画像から２値画像を生成するためのプログラムでもある。
【００９０】
読取範囲設定プログラム７２ｅは、撮像処理プログラム７２ｄに従って撮像された撮影画像において、ユーザの指示に従って、複数の読取範囲２００の位置および大きさを設定するプログラムである。
【００９１】
出力順序設定プログラム７２ｆは、ユーザの指示に従って、読取範囲設定プログラム７２ｅで設定された複数の読取範囲２００の出力順序を設定するためのプログラムである。
【００９２】
初期設定において、読取範囲設定プログラム７２ｅおよび出力順序設定プログラム７２ｆが実行されることにより、図７に示した読取範囲テーブルが生成され、生成された読取範囲テーブルに対応するデータ（読取範囲テーブルデータ７４ｅ）がデータ記憶領域７４に記憶（上書き）される。
【００９３】
符号検出プログラム７２ｇは、２値画像から、読取範囲設定プログラム７２ｅによって設定された読取範囲２００に含まれる画像を抽出し、抽出画像からバーコードを検出するためのプログラムである。
【００９４】
復号プログラム７２ｈは、読取範囲２００毎に検出されたバーコードを読み取ってバーコード情報に復号し、出力順序設定プログラム７２ｆに従って設定された出力順序に従って、復号したバーコード情報をホスト装置に出力するためのプログラムである。
【００９５】
図示は省略するが、プログラム記憶領域７２には、読取装置１０の制御に必要な他のプログラムも記憶される。
【００９６】
データ記憶領域７４には、操作データバッファ７４ａ、画像生成データ７４ｂ、撮影画像データ７４ｃ、２値画像データ７４ｄおよび読取範囲テーブルデータ７４ｅが記憶される。
【００９７】
操作データバッファ７４ａは、検出された操作データを時系列に従って記憶するためのバッファである。操作データバッファ７４ａに記憶された操作データは、ＣＰＵ２０の処理に使用された後に消去される。ただし、上述したように、タッチパネルから入力された座標データが記憶される場合もある。
【００９８】
画像生成データ７４ｂは、表示装置１４に表示する表示画像に対応する表示画像データを生成するためのポリゴンデータおよびテクスチャデータなどを含むデータである。撮影画像データ７４ｃは、撮像装置１８で撮影された撮影画像についての画像データである。２値画像データ７４ｄは、撮影画像に２値化処理を施して生成した２値画像についての画像データである。読取範囲テーブルデータ７４ｅは、図７に示したような読取範囲テーブルについてのデータである。
【００９９】
図示は省略するが、データ記憶領域７４には、読取装置１０の制御に必要な他のデータが記憶され、読取装置１０の制御に必要なフラグおよびカウンタ（タイマ）が設けられる。
【０１００】
図９は図２に示すＣＰＵ２０のメイン処理の一例を示すフロー図である。このメイン処理は、読取装置１０が起動された場合に開始される。ＣＰＵ２０は、メイン処理を開始すると、ステップＳ１で、設定情報が存在するかどうかを判断する。第１実施例では、設定情報は初期設定において生成された読取範囲テーブルを意味する。つまり、ステップＳ１では、ＣＰＵ２０は、読取情報（読取範囲テーブルデータ７４ｅ）がフラッシュメモリ２３に保存されているかどうかが判断される。
【０１０１】
ステップＳ１で“ＮＯ”であれば、つまり、設定情報が存在しない場合は、後述するステップＳ７に進む。一方、ステップＳ１で“ＹＥＳ”であれば、つまり、設定情報が存在する場合は、ステップＳ３で、表示装置１４にメニュー画面１００を表示して、ステップＳ５で、初期設定が選択されたかどうかを判断する。ここでは、ＣＰＵ２０は、初期設定ボタン１０２ａが選択されたかどうかを判断する。
【０１０２】
ステップＳ５で“ＹＥＳ”であれば、つまり、初期設定が選択された場合は、ステップＳ７で、撮像処理を実行する。ここでは、ＣＰＵ２０は、撮像装置１８に撮影指示を与える。これに応じて、撮像装置１８は、撮像処理を実行し、撮影画像を取得する。取得された撮影画像に対応する撮影画像データ７４ｄは、ＲＡＭ２４に記憶される。
【０１０３】
次のステップＳ９では、ステップＳ５で取得した撮影画像を表示装置１４に表示し、ステップＳ１１で、ユーザの操作に従って、または、自動で、読取範囲２００を設定する。ここでは、ユーザの操作に従って、または、自動で設定された各読取範囲２００の左上の頂点の座標（Ｘ１，Ｙ１）および右下の頂点の座標（Ｘ２，Ｙ２）が読取範囲テーブルに記述される。また、読取範囲２００が設定されると、読取範囲２００にはラベルが付され、読取範囲２００に付されたラベルが当該読取範囲２００を規定する座標に対応して読取範囲テーブルに記述される。
【０１０４】
続いて、ステップＳ１３では、読取範囲２００の設定を終了したかどうかを判断する。ここでは、ＣＰＵ２０は、ＯＫキー１６ｂが操作されたかどうかを判断する。ステップＳ１３で“ＮＯ”であれば、つまり、読取範囲２００の設定を終了していなければ、ステップＳ１１に戻る。一方、ステップＳ３で“ＹＥＳ”であれば、つまり、読取範囲２００の設定を終了すれば、ステップＳ１５で、ユーザの操作に従って、読取範囲２００の出力順序を設定する。ここでは、ユーザの操作に従って設定された出力順序が各バーコードのラベルに対応して読取範囲テーブルに記述される。
【０１０５】
そして、ステップＳ１７では、出力順序の設定を終了したかどうかを判断する。ここでは、ＣＰＵ２０は、読取範囲テーブルにおいて、各基準バーコードＲＢのラベルに対応して各読取範囲２００の出力順序が記述されたかどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまり、出力順序の設定を終了していなければ、ステップＳ１５に戻る。一方、ステップＳ１７で“ＹＥＳ”であれば、つまり、出力順序の設定を終了すれば、読取範囲テーブルが生成され、ステップＳ１９で、設定情報を記憶して、ステップＳ３に戻る。つまり、ステップＳ１９では、ＣＰＵ２０は、読取範囲テーブルデータ７４ｅをフラッシュメモリ２３に記憶する。
【０１０６】
また、ステップＳ３で“ＮＯ”であれば、つまり、初期設定が選択されない場合は、ステップＳ２１で、読み取りが選択されたかどうかを判断する。ここでは、ＣＰＵ２０は、読み取りボタン１０２ｂが選択されたかどうか、またはスキャンキー１６ａが操作されたかどうかを判断する。
【０１０７】
ステップＳ２１で“ＮＯ”であれば、つまり、読み取りが選択されない場合は、ステップＳ３に戻る。一方、ステップＳ２１で“ＹＥＳ”であれば、つまり、読み取りが選択された場合は、ステップＳ２３で、バーコードの読み取り処理を実行して、ステップＳ３に戻る。
【０１０８】
図１０は図９に示したステップＳ２３の読み取り処理の一例を示すフロー図である。図１０に示すように、ＣＰＵ２０は、読み取り処理を開始すると、ステップＳ３１で、設定情報を読み出す。つまり、ＣＰＵ２０は、フラッシュメモリ２３から設定情報（読取範囲テーブルデータ７４ｅ）を読み出して、ＲＡＭ２４に記憶する。次のステップＳ３３では、撮像処理を実行する。ここでは、ＣＰＵ２０は、撮像装置１８に撮影指示を与える。これに応じて、撮像装置１８は、上述したように、撮像処理を実行する。
【０１０９】
続くステップＳ３５では、撮影画像を、２値画像に変換する。ここでは、ＣＰＵ２０は、撮像装置１８に２値化処理を実行させる指示を与える。撮像装置１８は、撮像した撮影画像から２値画像を生成する。生成された２値画像に対応する２値画像データ７４ｄは、ＲＡＭ２４に記憶される。
【０１１０】
続くステップＳ３７では、読取範囲２００の画像を抽出し、ステップＳ３９で、抽出画像に対して復号処理を行う。ただし、ステップＳ３９の復号処理は、読取範囲２００毎に行われる。
【０１１１】
続いて、ステップＳ４１では、次の読取範囲２００があるかどうかを判断する。ここでは、復号処理が施されていない読取範囲２００の抽出画像（バーコード）があるかどうかを判断する。
【０１１２】
ステップＳ４１で“ＹＥＳ”であれば、つまり、次の読取範囲２００がある場合は、ステップＳ３９に戻る。一方、ステップＳ４１で“ＮＯ”であれば、つまり、全ての読取範囲２００の抽出画像（バーコード）の復号処理を完了した場合は、読取範囲テーブルに記述された出力順序に従って、バーコード情報をホスト装置に出力し、メイン処理に戻る。
【０１１３】
第１実施例によれば、基準の物品に付された複数の基準バーコードＲＢの各々に対応して読取範囲２００を予め設定するとともに、各読取範囲２００に出力順序を予め設定しておくことにより、基準の物品と同様に複数のバーコードが付された同種の物品の撮影画像からバーコードを復号する（読み取る）場合に、設定された読取範囲２００に含まれる抽出画像から検出したバーコードを復号し、出力順序に従って復号したバーコード情報をホスト装置に出力するので、バーコードを読み取った後のデータ整理作業を不要にし、読み取り処理にかかる時間を短縮できる。たとえば、基準の物品と同様に複数のバーコードが付された同種の物品についてバーコードの読取処理を繰り返し実行する場合には、全ての物品についてのバーコードの読取処理を実行するための時間を非常に短縮することができる。
【０１１４】
なお、この第１実施例では、撮影画像の左上の頂点を原点Ｏに設定し、各読取範囲２００の左上の頂点および右下の頂点の座標を決定したが、これに限定される必要はない。たとえば、読取装置１０は手持ち型であり、毎回同じ撮影画像を取得するのは困難であるため、いずれか１つの読取範囲２００のうちのいずれか１つの頂点を原点に設定し、各読取範囲の左上の頂点および右下の頂点の座標を決定するようにしてもよい。ただし、かかる場合には、撮影画像において、バーコードの位置を検出し、原点を設定した読取範囲２００に対応するバーコードを特定して、各読取範囲２００と各バーコードの位置を合わせる必要がある。
［第２実施例］
第２実施例の読取装置１０は、被写体（物品）に付された（撮影画像に含まれる）複数のバーコードの各々が、設定された読取範囲２００の範囲内に位置する場合に、バーコード情報を出力するようにした以外は、第１実施例の読取装置１０と同じであるため、重複する説明は省略または簡略化する。また、上述の第１実施例と共通する部分については、同じ参照番号を用いて説明することにする。
【０１１５】
つまり、第１実施例では、読取処理を実行する物品に付されたバーコードの位置および範囲が、基準の物品に付された基準バーコードＲＢの位置および範囲と同じであることを前提としたが、読取処理を実行する物品に付されたバーコードの位置および範囲が、基準バーコードＲＢの位置および範囲と異なる場合もある。したがって、第２実施例では、このような場合も考慮してある。
【０１１６】
図１１（Ａ）は、撮影画像に含まれるバーコードが設定された読取範囲２００の範囲内に位置する場合を示す図解図であり、図１１（Ｂ）は、撮影画像に含まれるバーコードが設定された読取範囲２００の範囲内に位置しない場合を示す図解図である。
【０１１７】
図１１（Ａ）に示すように、撮影画像におけるバーコードの各々が、設定された読取範囲２００の範囲内に位置する場合には、読み取り処理が実行されると、第１実施例で説明したように、各読取範囲２００に対応する抽出画像からバーコードが検出され、検出されたバーコードが復号される。そして、設定された読取範囲２００の出力順序に従って復号されたバーコード情報が出力される。
【０１１８】
一方、図１１（Ｂ）に示すように、撮影画像におけるバーコードの各々が、設定された読取範囲２００の範囲内に位置しない場合には、バーコードの一部が読取範囲２００からはみ出したり、バーコードが読取範囲２００に含まれない位置に存在したりするため、読取範囲２００に対応する抽出画像にバーコードの一部または全部が含まれない。したがって、バーコードが、設定された読取範囲２００の範囲内に位置しない場合には、復号処理が実行されても、バーコードの復号に失敗する（成功しない）。
【０１１９】
ただし、バーコードの復号に失敗した場合、予め設定された所定の時間（読取時間）が経過するまでは、撮像処理が繰り返し実行される。第２実施例の読取装置１０には、読み取り処理が開始された時から経過時間（読取時間）をカウントするためのタイマが設けられる。図示は省略するが、このタイマは、読取装置１０の内部（ＣＰＵ２０またはＲＡＭ２４）に設けられる。また、第２実施例では、初期設定において、読取時間がユーザによって指定（設定）される。この読取時間は、設定情報に含まれる。
【０１２０】
このように読取時間を設定するのは、被写体に付された（撮影画像に含まれる）複数のバーコードが、設定された複数の読取範囲２００に対応する位置に存在する場合であっても、撮像処理が行われるタイミングによって撮影画像におけるバーコードの位置が設定された読取範囲２００からずれる可能性があるからである。このため、読取時間が経過するまで、撮像処理を繰り返し実行し、撮影画像におけるバーコードの位置が設定された読取範囲２００の位置に一致されるようにしてある。
【０１２１】
バーコードの復号に成功しない状態で読取時間が経過した場合には、エラーが報知される。図示は省略するが、たとえばバーコードの読み取り処理に失敗した旨および正しい物品のバーコードを読み取っているか確認するべき旨のエラーメッセージが表示装置１４に表示される。また、エラーメッセージの表示に代えて、または、エラーメッセージの表示とともに、エラーを報知する音（メロディ）または音声が出力されてもよい。
【０１２２】
図示は省略するが、第２実施例では、メイン処理において、ＣＰＵ２０は、読取範囲テーブルを生成するのみならず、読取時間も設定する。そして、設定情報として、読取範囲テーブルと読取時間をフラッシュメモリ２３に記憶する。
【０１２３】
図１２は、第２実施例における読み取り処理の一例を示すフロー図である。以下、図１２に示す読み取り処理について説明するが、第１実施例で説明した処理と同じ処理については、説明を省略する、または、簡単に説明することとする。
【０１２４】
図１２に示すように、ＣＰＵ２０は、ステップＳ３９で復号処理を行うと、続くステップＳ７１で、バーコードの復号に成功したかどうかを判断する。図示は省略するが、１回目の復号処理を開始するときに、タイマのカウントが開始される。
【０１２５】
ステップＳ７１で“ＹＥＳ”であれば、つまり、バーコードの復号に成功した場合は、第１実施例で説明したステップＳ４１に進む。一方、ステップＳ７１で“ＮＯ”であれば、つまり、バーコードの復号に失敗した場合は、ステップＳ７３で、読取時間を経過したかどうかを判断する。ここでは、タイマのカウント値が設定情報に含まれる読取時間を超えたかどうかを判断する。
【０１２６】
ステップＳ７３で“ＮＯ”であれば、つまり、読取時間を経過していない場合は、ステップＳ３３に戻り、撮像処理からやり直す。一方、ステップＳ７３で“ＹＥＳ”であれば、つまり、読取時間が経過した場合は、ステップＳ７５で、エラーを報知して、メイン処理に戻る。
【０１２７】
この第２実施例によれば、初期設定に用いられた被写体（物品）と異なる位置にバーコードが付された他の種類の物品について誤って読み取り処理を行っても、バーコード情報は出力されない。また、バーコードの復号に失敗した場合には、撮像処理をやり直すので、正しい物品についてはその位置等を変更することにより、バーコードの復号に成功する場合がある。バーコード情報が出力順序に従って出力される点は、第１実施例と同じであるため、第２実施例においても、読み取り処理の後にデータの整理作業などを行う必要が無くなり、手間がかかる作業を減らすことができる。
［第３実施例］
第３実施例は、撮影画像におけるバーコードの位置、大きさおよび向きの少なくとも１つを変化させ、変化された撮影画像からバーコードを読み取るようにした以外は、第１実施例の読取装置１０と同じであるため、重複する説明は省略または簡略化する。また、上述の第１実施例と共通する部分については、同じ参照番号を用いて説明することにする。
【０１２８】
たとえば、手持ち型の読取装置１０が用いられるため、基準の物品を撮像した場合と比較して、読み取り対象の物品（バーコード）を撮像する場合の位置がずれたり、当該物品と読取装置１０との距離が変化したり、当該物品に対する読取装置１０（撮像装置１８）の向きが異なったりすることがある。したがって、第３実施例では、上記のように、撮影画像におけるバーコードの位置、大きさおよび向きの少なくとも１つを変化させることにより、撮像時に発生する位置、大きさおよび向きの違いを吸収するようにしてある。
【０１２９】
図１３（Ａ）〜（Ｄ）は、第３実施例におけるバーコードの位置または／および大きさを変化させる場合の一例を示す図解図である。
【０１３０】
図１３（Ａ）に示すように、撮像処理が実行される際に、初期設定時と比較した場合に、被写体に対する読取装置１０（撮像装置１８）の位置がずれたり、被写体と読取装置１０（撮像装置１８）との距離が異なったりすることによって、読み取り処理において、撮影画像（２値画像）におけるバーコードの位置と、読取範囲２００の位置とが一致しない場合がある。たとえば、図１３（Ａ）に示す例では、２値画像におけるバーコードの位置が、読取範囲２００の位置に対して全体的に下側にずれており、バーコードが含まれない読取範囲２００が存在する。この状態でバーコードの読み取り処理が行われると、復号が失敗する。
【０１３１】
このような場合、第３実施例では、２値画像におけるバーコードの位置と、読取範囲２００の位置とを一致させるように、２値画像におけるバーコードの位置または／および大きさが変化される。たとえば、２値画像の一部を切り出し、切り出した画像を読取範囲２００の位置に合うように移動させる。以下、２値画像におけるバーコードの位置または／および大きさを変化させる方法の一例を説明する。
【０１３２】
まず、図１３（Ｂ）に示すように、初期設定処理において、基準バーコードＲＢに基づいて基準範囲ＲＡが設定され、基準範囲ＲＡから第１基準点ＲＰ１および第２基準点ＲＰ２が抽出（設定）される。ただし、第３実施例の初期設定処理では、基準の画像に２値化処理が施され、２値画像データから基準バーコードＲＢが抽出される。
【０１３３】
基準範囲ＲＡは、２値画像データから抽出された全ての基準バーコードＲＢを含む最小の矩形形状に含まれる範囲に設定される。たとえば、基準範囲ＲＡの左辺は、複数の基準バーコードＲＢのうち最も左側にある基準バーコードＲＢ１の左側の端部の位置を通る直線によって形成され、基準範囲ＲＡの右辺は、複数の基準バーコードＲＢのうち最も右側にある基準バーコードＲＢ４の右側の端部の位置を通る直線によって形成される。また、基準範囲ＲＡの上辺は、複数の基準バーコードＲＢのうち最も上側にある基準バーコードＲＢ２の上側の端部の位置を通る直線によって形成され、基準範囲ＲＡの下辺は、複数の基準バーコードＲＢのうち最も下側にある基準バーコードＲＢ４の下側の端部の位置を通る直線によって形成される。
【０１３４】
第１基準点ＲＰ１は、基準範囲ＲＡの左上の頂点に相当する位置に設定され、第２基準点ＲＰ２は、基準範囲ＲＡの右下の頂点に相当する位置に設定される。
【０１３５】
初期設定処理が完了すると、第１基準点ＲＰ１および第２基準点ＲＰ２に対応する基準点データがフラッシュメモリ２３に記憶される。ただし、図示は省略するが、基準点データが示す第１基準点ＲＰ１および第２基準点ＲＰ２の位置は、読取範囲２００を特定するために設定された２次元座標系の座標によって表現される。
【０１３６】
次に、図１３（Ｃ）に示すように、読み取り処理において、撮影画像（２値画像）から、バーコードに基づいて切出し範囲ＣＡが設定され、切出し範囲ＣＡ内の画像が切り出される。また、切出し範囲ＣＡ内の画像（切出し画像）から第１抽出点Ｐ１および第２抽出点Ｐ２が抽出される。ただし、切出し範囲ＣＡが設定されるとは、２値画像データにおける切出し範囲ＣＡ用の読出し範囲が設定されることを意味する。
【０１３７】
具体的には、切出し範囲ＣＡは、２値画像データから抽出された全てのバーコードを含む最小の矩形形状に含まれる範囲に設定される。なお、切出し範囲ＣＡの具体的な設定方法は、基準範囲ＲＡと同様であるので説明を省略する。
【０１３８】
第１抽出点Ｐ１は、切出し範囲ＣＡの左上の頂点に相当する位置に設定され、第２抽出点Ｐ２は、切出し範囲ＣＡの右下の頂点に相当する位置に設定される。ただし、図示は省略するが、第１抽出点Ｐ１および第２抽出点Ｐ２の位置は、読取範囲２００を特定するために設定された２次元座標系の座標によって表現される。
【０１３９】
第１抽出点Ｐ１および第２抽出点Ｐ２が設定されると、第１抽出点Ｐ１が第１基準点ＲＰ１に重なるように、切出し範囲ＣＡが移動される。また、第１抽出点Ｐ１が第１基準点ＲＰ１に重なった状態で、第２抽出点Ｐ２が第２基準点ＲＰ２に重なるように、切出し範囲ＣＡが拡大または縮小される。つまり、バーコードの位置または／および大きさが変化される。ただし、切出し範囲ＣＡが移動、拡大または縮小されるとは、２値画像データの読出し範囲が変更されることを意味する。
【０１４０】
また、基準の物品を撮像した場合と比較して、読み取り対象の物品を撮像する場合の距離が同じであれば、基準範囲ＲＡの大きさと、切出し範囲ＣＡの大きさは同じである。つまり、基準バーコードＲＢの大きさと、処理対象のバーコードの大きさは同じである。この場合、第１抽出点Ｐ１が第１基準点ＲＰ１に重なるように切出し範囲ＣＡが移動されれば、２値画像におけるバーコードの位置と、読取範囲２００の位置とが一致する。この場合には、切出し範囲ＣＡの拡大または縮小は省略されてもよい。
【０１４１】
図１３（Ｄ）に示すように、切出し画像が移動され、バーコードの位置または／および大きさが変化されると、バーコードの位置と、読取範囲２００の位置とが一致する。第３実施例では、バーコードの読み取り処理において、切出し画像から抽出画像が抽出される。
【０１４２】
図１４（Ａ）〜（Ｄ）は、第３実施例におけるバーコードの向きを変化させる場合の一例を示す図解図である。
【０１４３】
図１４（Ａ）に示すように、撮像処理が実行される際に、初期設定時と比較した場合に、被写体に対する読取装置１０（撮像装置１８）の向きが異なったりすることによって、読み取り処理において、撮影画像（２値画像）におけるバーコードの向きと、読取範囲２００の向きとが一致しない場合がある。たとえば、図１４（Ａ）に示す例では、２値画像におけるバーコードの向きが、読取範囲２００の向きに対して左回り（反時計回り）に９０度回転した向きである。
【０１４４】
このような場合、第３実施例では、２値画像におけるバーコードの向きと、読取範囲２００の向きとを一致させるように、２値画像の向きが変化される。以下、２値画像を回転させる方法の一例を説明する。
【０１４５】
まず、図１４（Ｂ）に示すように、初期設定処理において、基準バーコードＲＢの向きＲＤが抽出（設定）される。たとえば、自動的に検出された基準バーコードＲＢの直線に垂直な方向（島状の塊が延びる方向）が基準バーコードＲＢの向きＲＤとして設定される。上述したように、読取範囲２００は、基準バーコードＲＢに対応するように設定されるので、基準バーコードＲＢの向きＲＤは、読取範囲２００の向きと同じである。たとえば、図１４（Ｂ）に示す例では、基準バーコードＲＢ（読取範囲２００）の向きＲＤは、横方向である。
【０１４６】
次に、図１４（Ｃ）に示すように、読み取り処理において、撮影画像（２値画像）におけるバーコードの向きＢＤが抽出される。たとえば、図１４（Ｃ）に示す例では、バーコードの向きＢＤは、縦方向である。
【０１４７】
バーコードの向きが抽出されると、２値画像におけるバーコードの向きＢＤと、基準バーコードＲＢの向きＲＤとが一致するように、２値画像が回転される。たとえば、図１４（Ｃ）に示す例では、２値画像が右回り（時計回り）に９０度回転される。
【０１４８】
図１４（Ｄ）に示すように、２値画像が回転されると、２値画像におけるバーコードの向きＢＤと、基準バーコードＲＢ（読取範囲２００）の向きＲＤとが一致する。この状態で、バーコードの位置と、読取範囲２００の位置とが一致している場合には、バーコードの読み取り処理が行われる。ただし、バーコードの向きＢＤと、基準バーコードＲＢ（読取範囲２００）の向きＲＤとが一致しただけでは、バーコードの位置と、読取範囲２００の位置とが一致しない場合がある。この場合は、上述したように、バーコードの位置または／および大きさを変化（図１３（Ａ）〜（Ｄ）を参照）させた後に、バーコードの読み取り処理が行われる。
【０１４９】
なお、第３実施例では、２値画像におけるバーコードの位置、大きさおよび向きの少なくとも１つを変化させるようにしたが、読取範囲２００の位置、大きさおよび向きの少なくとも１つを変化させるようにしても良い。
【０１５０】
また、第３実施例では、２値画像の向きが変化された後に、切出し範囲ＣＡが設定され、切出し画像が切出されるようにしたが、切出し画像が切出された後に、切出し画像の向きが変化されるようにしてもよい。
【０１５１】
さらに、バーコードの位置と、読取範囲２００の位置とが一致していても、バーコードの向きＢＤと、基準バーコードＲＢ（読取範囲２００）の向きＲＤとが反対を向いている（右回り（時計回り）または左回り（反時計回り）に１８０度回転した方向を向いている）場合がある。このような場合、バーコードの復号が失敗することがある。この場合、バーコードの位置と、読取範囲２００の位置とが一致していた場合であって、バーコードの復号が失敗した場合には、２値画像の向きを１８０度変化させた後に、再度バーコードの復号が実行される。
【０１５２】
図１５は、第３実施例における読み取り処理の一例を示すフロー図である。なお、第１実施例の読み取り処理（図１０）で説明した処理と同じ処理については、説明を省略するまたは簡単に説明することにする。
【０１５３】
図１５に示すように、ＣＰＵ２０は、読み取り処理を開始すると、ステップＳ３５で、撮影画像を２値画像に変換し、ステップＳ９１で、２値画像から複数のバーコードを抽出する。ここでは、それぞれのバーコードの向きおよび位置も抽出される。続くステップＳ９３で、バーコードの向きＢＤが、基準バーコードＲＢの向きＲＤと一致するかどうかを判断する。
【０１５４】
ステップＳ９３で“ＹＥＳ”であれば、つまり、バーコードの向きＢＤが、基準バーコードＲＢの向きＲＤと一致する場合は、ステップＳ９７に進む。一方、ステップＳ９３で“ＮＯ”であれば、つまり、バーコードの向きＢＤが、基準バーコードＲＢの向きＲＤと一致しない場合は、ステップＳ９５で、２値画像におけるバーコードの向きＢＤと、基準バーコードＲＢの向きＲＤとが一致するように、２値画像が回転され、ステップＳ９７に進む。
【０１５５】
ステップＳ９７では、２値画像におけるバーコードの位置と、基準バーコードＲＢの位置が一致するかどうかを判断する。ステップＳ９７で“ＹＥＳ”であれば、つまり、２値画像におけるバーコードの位置と、基準バーコードＲＢの位置が一致する場合は、ステップＳ３７に進む。一方、ステップＳ９７で“ＮＯ”であれば、つまり、２値画像におけるバーコードの位置と、基準バーコードＲＢの位置が一致しない場合は、ステップＳ９９で、第１基準点ＲＰ１および第２基準点ＲＰ２を読み出し、ステップＳ１０１で切出し範囲ＣＡを設定し、切出し範囲ＣＡ内の画像を切り出す。
【０１５６】
続いて、ステップＳ１０３で、切出し範囲ＣＡから第１抽出点Ｐ１および第２抽出点Ｐ２を抽出し、ステップＳ１０５で、切出し画像を移動させ、ステップＳ３７に進む。ステップＳ１０５では、第１抽出点Ｐ１が第１基準点ＲＰ１に重なるように、切出し範囲ＣＡが移動される。また、第１抽出点Ｐ１が第１基準点ＲＰ１に重なった状態で、第２抽出点Ｐ２が第２基準点ＲＰ２に重なるように、切出し範囲ＣＡが拡大または縮小される。
【０１５７】
なお、ステップＳ３７以降の処理の内容については、第１実施例と同じであるので説明を省略する。
【０１５８】
この第３実施例によれば、撮影画像におけるバーコードの位置、大きさまたは／および向きが変化された撮影画像からバーコードを読み取るので、撮像処理が実行される際に、読取装置１０（撮像装置１８）と被写体との距離または撮影画像における被写体の位置がずれたりしても、バーコードの復号を成功させることができる。
【０１５９】
なお、第３実施例に示した態様は、第２実施例にも組み合わせて採用することが可能である。この場合、位置、大きさまたは／および向きが変化された２値画像から読取範囲２００の画像が抽出され、その抽出画像に対して復号処理が行われる。
【０１６０】
また、上述したように、一次元バーコードに代えて、二次元コードを符号として用いることもできる。二次元コードは、一次元バーコードの場合と同様に、２値画像データから島状の塊として抽出することができる。このため、二次元コードの位置および大きさは、抽出された島状の塊の範囲に基づいて検出される。また、二次元コードの向きについては、スタック型の二次元コードを用いる場合には、一次元バーコードの場合と同様に、二次元コードに含まれる直線に垂直な方向（島状の塊が延びる方向）を、二次元コードの向きとして抽出することができる。さらに、一般的に外形が正方形であるマトリクス型二次元コードを用いる場合には、二次元コードを囲うＬ字の線の向き、またはファインダパターン（切り出しシンボル）の配置を抽出することによって、二次元コードの向きとして抽出することができる。
【０１６１】
以上説明したように、本発明を具体的な実施例に則して説明したが、本発明は上述の実施例に限定されるものではない。上で挙げた具体的な実施例は、いずれも単なる一例であり、製品の仕様などの必要に応じて適宜変更可能である。
【符号の説明】
【０１６２】
１０  …符号読取装置
１４  …表示装置
１６  …入力装置
１８  …撮像装置
２０  …ＣＰＵ
２２  …ＲＯＭ
２４  …ＲＡＭ
２６  …ドライバ
２００…読取範囲
【図１】
2018055304.tif 000003
【図２】
2018055304.tif 000004
【図３】
2018055304.tif 000005
【図４】
2018055304.tif 000006
【図５】
2018055304.tif 000007
【図６】
2018055304.tif 000008
【図７】
2018055304.tif 000009
【図８】
2018055304.tif 000010
【図９】
2018055304.tif 000011
【図１０】
2018055304.tif 000012
【図１１】
2018055304.tif 000013
【図１２】
2018055304.tif 000014
【図１３】
2018055304.tif 000015
【図１４】
2018055304.tif 000016
【図１５】
2018055304.tif 000017