(57)【要約】【課題】バーコードデータの合成処理の効率化を図る。【解決手段】バーコード読取装置１は、バーコードに対する読取範囲の移動とともに当該バーコードを順次読み取ってバーコードデータを取得する読取部１５と、読取部１５により取得された各バーコードデータを記憶するＲＡＭ１４と、読取部１５の３次元空間での移動状態を検出するジャイロセンサ１６と、を備える。ＣＰＵ１０は、ジャイロセンサ１６により検出された移動状態に基づいて、バーコードデータの合成に必要な読取部１５の移動量（合成用移動距離）を算出し、ＲＡＭ１４に記憶された、読取部１５が合成用移動距離分移動する前に取得されたバーコードデータと、当該距離分移動した後に取得されたバーコードデータとを合成し、その合成されたバーコードデータをデコードする。【選択図】図１
2008242829.tif 000002
【特許請求の範囲】
【請求項１】
バーコードに対する読取範囲の移動とともに当該バーコードを順次読み取ってバーコードデータを取得する読取手段と、
前記読取手段により取得された各バーコードデータを記憶する記憶手段と、
前記読取手段の３次元空間での移動状態を検出する検出手段と、
前記検出手段により検出された移動状態に基づいて、バーコードデータの合成に必要な前記読取手段の移動量を算出する算出手段と、
前記記憶手段に記憶された、前記読取手段が前記算出手段により算出された移動量分移動する前に取得されたバーコードデータと、当該移動量分移動した後に取得されたバーコードデータとを合成する合成手段と、
前記合成手段により合成されたバーコードデータをデコードするデコード手段と、
を備えるバーコード読取装置。
【請求項２】
前記検出手段により検出された移動状態に基づいて、前記取得されたバーコードデータを、予め設定された基準位置から読み取られた場合のバーコードデータに補正する補正手段を備え、
前記合成手段は、前記補正手段により補正されたバーコードデータを合成する請求項１に記載のバーコード読取装置。
【請求項３】
前記検出手段は、ジャイロセンサを用いて前記移動状態を検出し、
前記ジャイロセンサは、３次元空間での前記読取手段の加速度を検出する加速度センサと、３次元空間での前記読取手段の移動によって生じる当該読取手段の傾きを検出する傾きセンサと、を有する請求項１又は２に記載のバーコード読取装置。
【請求項４】
コンピュータを、
バーコードに対する読取範囲の移動とともに当該バーコードを順次読取手段により読み取らせ、バーコードデータを取得する手段、
前記取得された各バーコードデータを記憶手段に記憶させる手段、
前記読取手段の３次元空間での移動状態を検出する手段、
前記検出された移動状態に基づいて、バーコードデータの合成に必要な前記読取手段の移動量を算出する手段、
前記記憶手段に記憶された、前記読取手段が前記算出された移動量分移動する前に取得されたバーコードデータと、当該移動量分移動した後に取得されたバーコードデータとを合成する手段、
前記合成されたバーコードデータをデコードする手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード読取装置及びプログラムに関する。
【背景技術】
【０００２】
スキャナの読取範囲よりも幅が広いバーコードのデータを得るには、バーコード面に対してスキャナを移動させながらスキャンする必要がある。従来、このような幅の広いバーコードをスキャンしてバーコードデータを得るために、ユーザがスキャナをバーの配列方向に移動させながら所定のスキャン速度（例えば、１００スキャン／秒）でバーコードをスキャンし、スキャンする度にバーコードのパターンマッチングを行い、一致した部分を基に少しずつ合成を行っていた（例えば、特許文献１参照）。
【特許文献１】特開平７−５７０３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来は、スキャン毎にバーコードのパターンマッチングを行っていたため、各スキャンに対するスキャナの移動距離が短くなると、パターンマッチング及び合成処理を実施する回数が多くなり、処理効率が悪いという問題があった。
【０００４】
本発明の課題は、バーコードデータの合成処理の効率化を図ることである。
【課題を解決するための手段】
【０００５】
請求項１に記載のバーコード読取装置は、バーコードに対する読取範囲の移動とともに当該バーコードを順次読み取ってバーコードデータを取得する読取手段と、前記読取手段により取得された各バーコードデータを記憶する記憶手段と、前記読取手段の３次元空間での移動状態を検出する検出手段と、前記検出手段により検出された移動状態に基づいて、バーコードデータの合成に必要な前記読取手段の移動量を算出する算出手段と、前記記憶手段に記憶された、前記読取手段が前記算出手段により算出された移動量分移動する前に取得されたバーコードデータと、当該移動量分移動した後に取得されたバーコードデータとを合成する合成手段と、前記合成手段により合成されたバーコードデータをデコードするデコード手段と、を備える。
【０００６】
請求項２に記載の発明は、請求項１に記載のバーコード読取装置において、前記検出手段により検出された移動状態に基づいて、前記取得されたバーコードデータを、予め設定された基準位置から読み取られた場合のバーコードデータに補正する補正手段を備え、前記合成手段は、前記補正手段により補正されたバーコードデータを合成する。
【０００７】
請求項３に記載の発明は、請求項１又は２に記載のバーコード読取装置において、前記検出手段は、ジャイロセンサを用いて前記移動状態を検出し、前記ジャイロセンサは、３次元空間での前記読取手段の加速度を検出する加速度センサと、３次元空間での前記読取手段の移動によって生じる当該読取手段の傾きを検出する傾きセンサと、を有する。
【０００８】
請求項４に記載の発明は、コンピュータを、バーコードに対する読取範囲の移動とともに当該バーコードを順次読取手段により読み取らせ、バーコードデータを取得する手段、前記取得された各バーコードデータを記憶手段に記憶させる手段、前記読取手段の３次元空間での移動状態を検出する手段、前記検出された移動状態に基づいて、バーコードデータの合成に必要な前記読取手段の移動量を算出する手段、前記記憶手段に記憶された、前記読取手段が前記算出された移動量分移動する前に取得されたバーコードデータと、当該移動量分移動した後に取得されたバーコードデータとを合成する手段、前記合成されたバーコードデータをデコードする手段、として機能させるためのプログラムである。
【発明の効果】
【０００９】
本発明によれば、読取手段の移動状態に基づいてバーコードの合成処理を実施することにより、合成処理の回数が大幅に削減され、バーコードデータの合成処理を効率化させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施形態を説明する。
本発明の実施形態に係るバーコード読取装置１は、ユーザがスキャナ部分を手に持ってバーコードを読み取らせる手持ち式であるものとする。また、本実施形態では、読取対象のバーコード全体の幅が、バーコード読取装置１が一回で読取可能な範囲よりも広いものとし、この読取範囲をバーの配列方向に連続的に移動させて、当該バーコード全体を読み取らせることを前提とする。
【００１１】
まず、本実施形態における構成を説明する。
図１に、本発明の実施形態に係るバーコード読取装置１の主要部構成を示す。バーコード読取装置１は、図１に示すように、ＣＰＵ（Central Processing Unit）１０、表示部１１、入力部１２、記憶部１３、ＲＡＭ（Random Access Memory）１４、読取部１５、ジャイロセンサ１６を備え、各部はバス１７を介して電気的に接続され、電源部１８からの電力供給を受けている。
【００１２】
ＣＰＵ１０は、記憶部１３に記憶された各種制御プログラムをＲＡＭ１４に展開し、当該制御プログラムとの協働によって、各種の処理を行う。具体的にＣＰＵ１０は、記憶部１３に記憶された制御プログラムに従ってバーコード読取処理を行う（図２参照）。
【００１３】
表示部１１は、ＬＣＤ（Liquid Crystal Display）等のディスプレイを有し、ＣＰＵ１０から入力される表示制御信号に従って所要の表示処理を行う。
【００１４】
入力部１２は、バーコードの読み取りを開始させるためのトリガキー等の各種のキーや、表示部１１の表示画面上を覆うように設けられたタッチパネルを有し、キー操作又はタッチパネルの操作による操作信号をＣＰＵ１０に出力する。
【００１５】
記憶部１３は、ＣＰＵ１０により実行される各種制御プログラム及びこれらの制御プログラムの実行時に必要なデータを記憶している。
【００１６】
ＲＡＭ１４は、ＣＰＵ１０により実行される各種制御プログラムを展開するプログラム格納領域と、入力データ及び制御プログラムの実行時に生じる処理結果等のデータを一時的に格納するデータ格納領域とを有する。
【００１７】
読取部１５は、ＣＭＯＳ(Complementary Metal Oxide Semiconductor)イメージセンサ又はＣＣＤ（Charge Coupled Device）イメージセンサ、Ａ／Ｄコンバータ等により構成される。読取部１５は、ＣＭＯＳイメージセンサ又はＣＣＤイメージセンサにより、読取対象のバーコードに照射されたレーザ光の反射光によってバーコードを読み取り、読取により得られた光画像信号を光電変換により電気信号（アナログ信号）に変換し、Ａ／Ｄコンバータにより、このアナログ信号をデジタル信号に変換し、バーコードデータを取得する。
【００１８】
読取部１５で取得されるバーコードデータは、バーコードの白色又は黒色のバーの幅を示すカウンタ値として表される。例えば、バーの配列順に、白色の幅が６０、黒色の幅が１０、白色の幅が２０、…のように表される。以下では、読取部１５で取得されるバーコードデータを「バーデータ」と呼ぶことにする。
【００１９】
ジャイロセンサ１６は、加速度センサ１６１及び傾きセンサ１６２を有し、３次元空間における読取部１５の移動状態を検出する。加速度センサ１６１は、３次元空間で移動した読取部１５の加速度、移動した時間、移動した方向を検出する。加速度センサ１６１により検出された情報によって、読取部１５の移動距離を算出することができる。傾きセンサ１６２は、３次元空間での読取部１５の動きによって生じた読取部１５の傾きを検出する。傾きセンサ１６２で検出された傾きによって、バーコード面に対する光の照射角度を算出することができる。
【００２０】
次に、本実施形態における動作を説明する。
まず、図２のフローチャートを参照して、バーコード読取装置１のＣＰＵ１０の制御の下で実行されるバーコード読取処理について説明する。
【００２１】
入力部１２のトリガキーが押下されると、所定のスキャン速度（例えば、１００スキャン／秒）で読取部１５によりバーコードの読取が開始される（ステップＳ１）。トリガキーの押下後タイムアウトになる時間内であれば（ステップＳ２；ＮＯ）、バーコードの読取によってバーデータが取得され、ＲＡＭ１４に格納される（ステップＳ３）。
【００２２】
次いで、ステップＳ３で取得されたバーデータに対してデコード処理が施される（ステップＳ４）。ステップＳ４でのデコード処理では、バーデータによって表される白色と黒色の配列が数値や文字の配列を表すデータに変換される。
【００２３】
デコード処理が終了すると、ステップＳ４のデコード処理において正常にデコードすることができたか否かが判定される（ステップＳ５）。ステップＳ５において、正常にデコードすることができたと判定された場合（ステップＳ５；ＹＥＳ）、バーデータの合成処理が「無効」に設定され（ステップＳ９）、本バーコード読取処理が終了する。
【００２４】
ステップＳ５において、正常にデコードすることができなかったと判定された場合（ステップＳ５；ＮＯ）、ステップＳ３で取得されたバーデータの補正処理が行われ（ステップＳ６）、続いて、補正後のバーデータの合成処理が行われる（ステップＳ７）。ここで、バーデータの合成処理の前にバーデータの補正処理が行われるのは、ユーザの手のぶれ等に起因して、実際に取得されるバーデータが、予め設定された基準位置から読み取られた場合に取得されるバーデータと異なる可能性が高いためである。
【００２５】
ステップＳ６の補正処理については、後に図５〜図２２を参照して詳細に説明する。また、ステップＳ７の合成処理については、後に図３及び図４を参照して詳細に説明する。
【００２６】
ステップＳ７の合成処理では、バーデータの合成後に再度デコード処理が行われる。そして、ステップＳ７の終了後、合成されたバーデータを正常にデコードすることができたか否かが判定される（ステップＳ８）。
【００２７】
ステップＳ８において、合成されたバーデータを正常にデコードすることができなかったと判定された場合（ステップＳ８；ＮＯ）、ステップＳ２に戻り、タイムアウトになるまで、ステップＳ３以降の処理が繰り返される。
【００２８】
一方、ステップＳ８において、合成されたバーデータを正常にデコードすることができたと判定された場合（ステップＳ８；ＹＥＳ）、以降のバーデータの合成処理が「無効」に設定され（ステップＳ９）、本バーコード読取処理が終了する。
【００２９】
次に、図３のフローチャート及び図４を参照して、バーデータの合成処理（図２のステップＳ７）について説明する。図３では、後に説明する補正処理が施された後のバーデータ（即ち、予め設定された基準位置から読み取られた場合に取得されるバーデータ）の合成処理を説明する。
【００３０】
まず、バーデータの合成処理が「有効」に設定されているか否かが判定される（ステップＳ１１）。なお、バーコードの読取を開始する時点では、バーコードの合成処理が「無効」に設定されているものとする。
【００３１】
ステップＳ１１においてバーデータの合成処理が「有効」に設定されていない場合、即ち「無効」に設定されていると判定された場合（ステップＳ１１；ＮＯ）、１回目の読取で取得されたバーデータからスタートコード又はストップコードが検出され（ステップＳ１２）、スタートコード又はストップコードを検出することができたか否かが判定される（ステップＳ１３）。
【００３２】
ステップＳ１３において、スタートコード又はストップコードを検出することができなかったと判定された場合（ステップＳ１３；ＮＯ）、本合成処理が終了する。一方、ステップＳ１３において、スタートコード又はストップコードを検出することができたと判定された場合（ステップＳ１３；ＹＥＳ）、バーデータの合成処理が「有効」に設定される（ステップＳ１４）。
【００３３】
また、次回の合成に必要な移動距離を表す合成用移動距離が０に設定され（ステップＳ１５）、ジャイロセンサ１６において現在の位置情報がリセットされる（ステップＳ１６）。更に、１回目の読取で取得されたバーデータがＲＡＭ１４に格納され（ステップＳ１７）、図２のステップＳ８に戻る。
【００３４】
ステップＳ１１において、バーコードの合成処理が「有効」に設定されていると判定された場合（ステップＳ１１；ＹＥＳ）、合成用移動距離が０に設定されているか否かが判定される（ステップＳ１８）。ステップＳ１８において、合成用移動距離が０に設定されていると判定された場合（ステップＳ１８；ＹＥＳ）、２回目の読取で取得されたバーデータからスタートコード又はストップコードが検出される（ステップＳ１９）。
【００３５】
次いで、ステップＳ１９で検出されたスタートコード又はストップコードのパターンが、１回目の読取で検出されたスタートコード又はストップコードのパターンと一致するか否かが判定される（ステップＳ２０）。
【００３６】
ステップＳ２０において、両パターンが一致しないと判定された場合（ステップＳ２０；ＮＯ）、ステップＳ２４に移行し、前回（１回目）取得されたバーデータがＲＡＭ１４からクリアされ（ステップＳ２４）、今回（２回目）取得されたバーデータがＲＡＭ１４に格納され（ステップＳ２５）、図２のステップＳ８に戻る。
【００３７】
一方、ステップＳ２０において、両パターンが一致すると判定された場合（ステップＳ２０；ＹＥＳ）、ジャイロセンサ１６により検出された移動距離が取得され（ステップＳ２１）、この取得された移動距離に基づいて１カウンタ値の移動距離（１カウンタ値あたりの移動距離）が算出される（ステップＳ２２）。
【００３８】
図４に示すように、１回目、２回目の読取時のバーコード面における光の照射ライン（読取範囲）をそれぞれＬ１、Ｌ２とする。このとき、１回目、２回目の読取で取得されたバーコードの最初の黒色までのカウンタ値をそれぞれＣ１、Ｃ２とし、１回目と２回目の読取の間にジャイロセンサ１６により検出された移動距離をΔＸ１とすると、１カウンタ値の移動距離ΔＸは、式（１）のように算出される。
ΔＸ＝ΔＸ１／（Ｃ１−Ｃ２）    …（１）
【００３９】
１カウンタ値の移動距離が算出されると、今回の読取で取得されたバーデータのカウンタ値の総計及び１カウンタ値の移動距離から、次回の合成までに必要な移動距離を表す合成用移動距離が算出される（ステップＳ２３）。図４において、２回目に取得されたバーデータのカウンタ値の総計をＣＷ１とすると、合成用移動距離ΔＸ２は、１カウンタ値の移動距離ΔＸを用いて式（２）のように算出される。
ΔＸ２＝ＣＷ１×ΔＸ    …（２）
【００４０】
合成用移動距離の算出後、前回（１回目）取得されたバーデータがＲＡＭ１４からクリアされ（ステップＳ２４）、今回（２回目）取得されたバーデータがＲＡＭ１４に格納され（ステップＳ２５）、図２のステップＳ８に戻る。
【００４１】
ステップＳ１８において、合成用移動距離が０ではないと判定された場合（ステップＳ１８；ＮＯ）、ジャイロセンサ１６により、読取部１５が合成用移動距離分移動したことが検出されると（ステップＳ２６；ＹＥＳ）、前回取得されたバーデータ（即ち合成用移動距離分移動する直前までに取得されたバーデータ）と、今回取得されたバーデータ（即ち合成用移動距離分移動した直後に取得されたバーデータ）とが合成される（ステップＳ２７）。
【００４２】
ステップＳ２７では、図４に示すように、２回目に取得されたバーデータ（合成用移動距離ΔＸ２分移動する直前に取得されたバーデータ）と、２回目の読取時から合成用移動距離ΔＸ２分移動した直後の照射ラインＬ３において取得されたバーデータとが結合される。なお、図４において、１回目、２回目、３回目、…とは、バーデータの合成のために最低限必要な読取回数を示すものであり、読取部１５が実際に所定のスキャン速度で読み取った回数を示すものではない。
【００４３】
ステップＳ２７での合成後、その合成されたバーデータに対してデコード処理が施される（ステップＳ２８）。デコード処理が終了すると、ステップＳ２８のデコード処理において正常にデコードすることができたか否かが判定される（ステップＳ２９）。ステップＳ２９において、正常にデコードすることができたと判定された場合（ステップＳ２９；ＹＥＳ）、本合成処理が終了し、図２のステップＳ８へ戻る。
【００４４】
一方、ステップＳ２９において、正常にデコードすることができなかったと判定された場合（ステップＳ２９；ＮＯ）、式（２）と同様に、今回の読取で取得されたバーデータのカウンタ値の総計に、ステップＳ２２で算出された１カウンタ値の移動距離ΔＸを乗算することにより、次回の合成に必要な移動距離を表す合成用移動距離が算出される（ステップＳ３０）。ステップＳ３０の終了後、ステップＳ２７で合成されたバーデータがＲＡＭ１４に格納され（ステップＳ３１）、図２のステップＳ８へ戻る。
【００４５】
次に、図５のフローチャート及び図６〜図２２を参照して、バーデータの補正処理（図２のステップＳ６）について詳細に説明する。
【００４６】
本実施形態においてバーデータの補正処理とは、ジャイロセンサ１６から取得される読取部１５の３次元空間（ｘ−ｙ−ｚ）における移動状態に基づいて、読取部１５から実際に取得されたバーデータを、予め設定された基準位置から読み取られた場合に取得されるバーデータに補正する処理である。以下では、バーコード面の中心部分を直交座標系の原点Ｏとし、バーコード面に垂直な方向をｘ軸方向、バーコード面上の各バーが配列する方向をｙ軸方向として説明する。
【００４７】
本実施形態では、ジャイロセンサ１６から取得される読取部１５の３次元空間における移動状態を、読取部１５の光源ＯＳからの照射状態に基づいて以下の５通りに分類し、それぞれの移動状態に対応する補正処理（補正Ｈ１〜補正Ｈ５）について説明する。
【００４８】
［１］バーコード面βに近づくように光を照射した状態（図６参照）；
［２］バーコード面βから遠ざかるように光を照射した状態（図９参照）；
［３］ｘ−ｙ平面内の基準方向（ｘ軸方向に平行）に対して傾斜するように光を照射した状態（図１２参照）；
［４］バーコード面βに対してバーの配列方向（ｙ軸方向）に移動するように光を照射した状態（図１５参照）；
［５］バーコード面β上の照射ラインがバーの配列方向（ｙ軸方向）に対して傾斜するように光を照射した状態（図１８参照）．
【００４９】
なお、実際にジャイロセンサ１６で検出される移動状態は、上記［１］〜［５］に対応する移動状態が複合されたものであるが、これらの複合された移動状態を上記［１］〜［５］に分離して、各々の移動状態に対する補正処理を行うことにより、最終的には複合された移動状態に対する補正処理と同等の結果が得られる。
【００５０】
図５に示すバーデータの補正処理では、まず、ジャイロセンサ１６から読取部１５の移動状態が取得される（ステップＳ４０）。そして、当該移動状態が、図６に示すようにバーコード面βに近づくように光を照射した状態（移動状態［１］）又は図９に示すようにバーコード面βから遠ざかるように光を照射した状態（移動状態［２］）を含むか否かが判定される（ステップＳ４１）。
【００５１】
ステップＳ４１において、ジャイロセンサ１６から取得された移動状態が、移動状態［１］又は移動状態［２］を含むと判定された場合（ステップＳ４１；ＹＥＳ）、以下の補正Ｈ１又は補正Ｈ２が行われる（ステップＳ４２）。
【００５２】
［補正Ｈ１］
図６に示す移動状態［１］の場合、光源ＯＳがバーコード面βに近づくにつれ、図７（ａ）に示すように、バーコード面βにおける光の照射ラインＬの幅が狭くなる。よって、図７（ｂ）に示すように、実際に読取部１５が認識する各バーの幅は、図７（ａ）に示す元の幅よりも太くなる。図７（ａ）及び図７（ｂ）において白色及び黒色それぞれに対応する「バー幅」は、バーの幅を表すカウンタ値である。以下の、図１０、図１３、図１６、図１９についても同様である。
【００５３】
読取部１５の光源ＯＳの移動距離に応じてバー幅が太くなる割合は、読取部１５で使用されるスキャナモジュールの特性により異なっており、移動距離の関数として予め設定されている。例えば、図８に示すように、１回目の読取で取得されるバー幅をＢ１、２回目の読取で取得されるバー幅をＢ２、ジャイロセンサ１６から取得される光源ＯＳの移動距離をΔＤ、移動距離に応じてバー幅が太くなる割合を補正係数ｆ１とすると、補正Ｈ１での補正後のバー幅は、式（３）のように表される。
補正後のバー幅＝補正前のバー幅×ΔＤ×ｆ１    …（３）
【００５４】
［補正Ｈ２］
図９に示す移動状態［２］の場合、光源ＯＳがバーコード面βから遠ざかるにつれ、図１０（ａ）に示すように、バーコード面βにおける光の照射ラインＬが広くなる。よって、図１０（ｂ）に示すように実際に読取部１５が認識する各バーの幅は、図１０（ａ）に示す元の幅よりも細くなる。
【００５５】
移動距離に応じてバー幅が細くなる割合は、読取部１５で使用されるスキャナモジュールの特性により異なっており、予め設定されている。例えば、図１１に示すように、１回目の読取で取得されるバー幅をＢ１、２回目の読取で取得されるバー幅をＢ２、ジャイロセンサ１６から取得される光源ＯＳの移動距離をΔＤ、移動距離に応じてバー幅が細くなる割合を補正係数ｆ２とすると、補正Ｈ２での補正後のバー幅は、式（４）のように表される。
補正後のバー幅＝補正前のバー幅×ΔＤ×ｆ２    …（４）
【００５６】
図５のステップＳ４１において、ジャイロセンサ１６から取得された移動状態が、移動状態［１］又は移動状態［２］の何れも含まないと判定された場合（ステップＳ４１；ＮＯ）、又はステップＳ４２の補正Ｈ１若しくは補正Ｈ２が終了すると、ジャイロセンサ１６から取得された移動状態が、図１２に示すように、ｘ−ｙ平面内において基準方向（ｘ軸方向に平行）に対して傾斜するように光を照射した状態（移動状態［３］）を含むか否かが判定される（ステップＳ４３）。
【００５７】
ステップＳ４３において、ジャイロセンサ１６から取得された移動状態が移動状態［３］を含むと判定された場合（ステップＳ４３；ＹＥＳ）、以下の補正Ｈ３が行われる（ステップＳ４４）。
【００５８】
［補正Ｈ３］
図１２に示すように、光の照射方向がｘ軸に対して傾斜している場合、図１３（ａ）に示すバーコード面β上の照射ラインＬは、バーの位置（ｙ座標の値）によって光源ＯＳからの距離が異なる。従って、図１２に示す移動状態［３］の場合、図１３（ｂ）に示すように、ｙ軸の正の方向に向かって光源ＯＳからの距離が近くなるため、バー幅が太くなり、ｙ軸の負の方向に向かって光源ＯＳからの距離が遠くなるため、バー幅が細くなる。
【００５９】
図１４に示すように、光の照射方向がｘ軸に対して傾斜角Θで傾斜している場合、バーの位置（ｙ＝Ｂｄ）に応じてバー幅が変化する割合は、読取部１５で使用されるスキャナモジュールの特性により異なっており、バーの位置Ｂｄ、ジャイロセンサ１６から取得される傾斜角Θの関数として予め設定されている。バー幅が変化する割合を補正係数ｆ(Ｂｄ,Θ)とすると、補正Ｈ３での補正後のバー幅は、式（５）のように表される。
補正後のバー幅＝補正前のバー幅×ｆ(Ｂｄ,Θ)    …（５）
【００６０】
図５のステップＳ４３において、ジャイロセンサ１６から取得された移動状態が、移動状態［３］を含まないと判定された場合（ステップＳ４３；ＮＯ）、又はステップＳ４４の補正Ｈ３が終了すると、ジャイロセンサ１６から取得された移動状態が、図１５に示すように、バーコード面βに対してｙ軸方向に移動するように光を照射した状態（移動状態［４］）を含むか否かが判定される（ステップＳ４５）。
【００６１】
ステップＳ４５において、ジャイロセンサ１６から取得された移動状態が、移動状態［４］を含むと判定された場合（ステップＳ４５；ＹＥＳ）、以下の補正Ｈ４が行われる（ステップＳ４６）。
【００６２】
［補正Ｈ４］
図１５に示す移動状態［４］の場合、図１６（ａ）に示すバーコード面β上の照射ラインＬは、バーの配列方向に移動するため、読取部１５が認識するバーコードのスタートマージンの幅（又はエンドマージンの幅）は、図１６（ｂ）に示すように変化してしまう。そこで、補正Ｈ４では、１回目の読取で取得されたバーデータを基準として、２回目の読取で取得されたバーデータのスタートマージンの幅を、スタートコード等の特徴を有するバーデータに基づいて補正する。
【００６３】
図１７に示すように、１回目、２回目の読取でのバーコードの最初の黒色までのカウンタ値をそれぞれｃ１、ｃ２とすると、スタートマージンの幅を、ｃｘ＝ｃ１−ｃ２の分だけ補正すればよい。即ち、補正後のスタートマージンの幅は、式（６）のように表される。
補正後のスタートマージンの幅＝補正前のスタートマージンの幅＋ｃｘ  …（６）
【００６４】
図５のステップＳ４５において、ジャイロセンサ１６から取得された移動状態が、移動状態［４］を含まないと判定された場合（ステップＳ４５；ＮＯ）、又はステップＳ４６の補正Ｈ４が終了すると、ジャイロセンサ１６から取得された移動状態が、図１８に示すように、バーコード面β上の照射ラインがバーの配列方向（ｙ軸方向）に対して傾斜するように光を照射した状態（移動状態［５］）を含むか否かが判定される（ステップＳ４７）。
【００６５】
ステップＳ４７において、ジャイロセンサ１６から取得された移動状態が、移動状態［５］を含むと判定された場合（ステップＳ４７；ＹＥＳ）、以下の補正Ｈ５が行われる（ステップＳ４８）。
【００６６】
［補正Ｈ５］
図１８に示す移動状態［５］では、図１９（ａ）に示すように、バーコード面β上の照射ラインＬがバーの配列方向（ｙ軸方向）に対して傾斜しているため、図１９（ｂ）に示すように、各バーの幅は図１９（ａ）に示す元の幅よりも太くなる。
【００６７】
例えば、図２０に示すように、１回目の読取方向がバーの配列方向と平行であり（バー幅Ｂ１）、２回目の読取方向がバーの配列方向に対して角度θ傾斜している場合、２回目の読取で得られるバー幅Ｂ２を補正したバー幅Ｂは式（７）のように表される。
Ｂ＝Ｂ２・cosθ    …（７）
【００６８】
しかし、実際の読取では、１回目の読取が図２０のようにバーの配列方向に平行になっているとは限らないため、図２１に示すように、１回目の読取もバーの配列方向に対して傾斜している場合も含めてバー幅の補正値を算出すべきである。図２１に示すように、１回目の読取で得られるバー幅をＢ１、２回目の読取で得られるバー幅をＢ２、１回目と２回目の読取の間にジャイロセンサ１６から取得された傾斜角をθとする。この場合、図２２に示すように、二辺の長さをＢ１、Ｂ２とし、両辺が挟む角度をθとした三角形において、角度θに対応する頂点から対辺（長さＣ）に下ろした垂線の長さＢが、バー幅の補正値となる。
【００６９】
図２２の三角形において、長さＣは式（８）のように算出される。
【数１】
2008242829.tif 000003
この三角形の面積は(１／２)Ｂ・Ｃ＝(１／２)Ｂ１・Ｂ２・sinθゆえ、補正後のバー幅Ｂは、式（９）のように算出される。
【数２】
2008242829.tif 000004
【００７０】
図５のステップＳ４７において、ジャイロセンサ１６から取得された移動状態が、移動状態［５］を含まないと判定された場合（ステップＳ４７；ＮＯ）、又はステップＳ４８の補正Ｈ５が終了すると、補正されたバーデータがＲＡＭ１４に格納され（ステップＳ４９）、本補正処理が終了する。
【００７１】
以上のように、本実施形態のバーコード読取装置１によれば、幅の広いバーコードを読み取る場合、ジャイロセンサ１６から最初に取得された移動距離ΔＸ１に基づいて算出された１カウンタの移動距離ΔＸを用いて、バーデータの合成に必要な移動距離（合成用移動距離）を算出し、合成用移動距離分移動する前と後のバーデータを合成するようにしたことにより、合成する領域の重複部分が大幅に削減され、合成処理を実施する回数が大幅に削減される。これにより、バーデータの合成処理を効率化（最適化）させ、デコード処理の処理速度を向上させることができる。
【００７２】
また、ジャイロセンサ１６から取得された移動状態に基づいて、読取部１５により取得されたバーデータを、予め設定された基準位置から読み取った場合のバーデータに補正することにより、より精密な合成処理を行うことができる。
【００７３】
なお、本実施形態における記述内容は、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【００７４】
例えば、上述の実施形態では、バーコード面βに対して光源ＯＳが略ｘ−ｙ平面内を移動したときの補正処理を示したが、上記の移動状態［１］〜［５］に加えてｚ軸方向への移動を含めた移動状態に対応した補正処理を行うと、より精密な合成処理が可能となる。
【００７５】
また、上述の実施形態では、合成用移動距離を読取部１５による１回の読取で得られたバー幅の総計（カウンタ値の総計）に対応する値としたが、任意の幅に対応する距離に設定してもよい。
【００７６】
また、上述の実施形態では、ジャイロセンサ１６を用いて読取部１５の移動状態を検出する場合を示したが、３次元空間での移動状態が検出可能なものであれば、他のセンサを用いてもよい。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態に係るバーコード読取装置の主要部構成を示すブロック図。
【図２】本実施形態のバーコード読取装置のＣＰＵの制御の下で実行されるバーコード読取処理を示すフローチャート。
【図３】図２に示した合成処理の詳細を示すフローチャート。
【図４】バーデータの合成方法を説明するための図。
【図５】図２に示した補正処理の詳細を示すフローチャート。
【図６】バーコード面に対する光の照射状態を模式的に示す図であって、バーコード面に近づくように光を照射した状態を示す図。
【図７】読取対象のバーコードのイメージデータ及び光の照射ラインを示す図（ａ）と、図６に示す照射状態において読取部により認識されるバーコードのイメージデータを示す図（ｂ）。
【図８】図６に示す照射状態におけるバー幅の補正方法を説明するための図。
【図９】バーコード面に対する光の照射状態を模式的に示す図であって、バーコード面から遠ざかるように光を照射した状態を示す図。
【図１０】読取対象のバーコードのイメージデータ及び光の照射ラインを示す図（ａ）と、図９に示す照射状態において読取部により認識されるバーコードのイメージデータを示す図（ｂ）。
【図１１】図９に示す照射状態におけるバー幅の補正方法を説明するための図。
【図１２】バーコード面に対する光の照射状態を模式的に示す図であって、ｘ−ｙ平面内において基準方向（ｘ軸方向に平行）から傾斜するように光を照射した状態を示す図。
【図１３】読取対象のバーコードのイメージデータ及び光の照射ラインを示す図（ａ）と、図１２に示す照射状態において読取部により認識されるバーコードのイメージデータを示す図（ｂ）。
【図１４】図１２に示す照射状態におけるバー幅の補正方法を説明するための図。
【図１５】バーコード面に対する光の照射状態を模式的に示す図であって、バーコード面に対してｙ軸方向に移動するように光を照射した状態を示す図。
【図１６】読取対象のバーコードのイメージデータ及び光の照射ラインを示す図（ａ）と、図１５に示す照射状態において読取部により認識されるバーコードのイメージデータを示す図（ｂ）。
【図１７】図１５に示す照射状態におけるスタートマージン幅の補正方法を説明するための図。
【図１８】バーコード面に対する光の照射状態を模式的に示す図であって、バーコード面上の照射ラインがバーの配列方向（ｙ軸方向）に対して傾斜するように光を照射した状態を示す図。
【図１９】読取対象のバーコードのイメージデータ及び光の照射ラインを示す図（ａ）と、図１８に示す照射状態の場合に読取部により認識されるバーコードのイメージデータを示す図（ｂ）。
【図２０】図１８に示す照射状態におけるバー幅の補正方法を説明するための図。
【図２１】図１８に示す照射状態におけるバー幅の補正方法を説明するための図。
【図２２】図１８に示す照射状態におけるバー幅の補正方法を説明するための図。
【符号の説明】
【００７８】
１  バーコード読取装置
１０  ＣＰＵ
１１  表示部
１２  入力部
１３  記憶部
１４  ＲＡＭ
１５  読取部
１６  ジャイロセンサ
１６１  加速度センサ
１６２  傾きセンサ
１８  電源部
【図１】
2008242829.tif 000005
【図２】
2008242829.tif 000006
【図３】
2008242829.tif 000007
【図４】
2008242829.tif 000008
【図５】
2008242829.tif 000009
【図６】
2008242829.tif 000010
【図７】
2008242829.tif 000011
【図８】
2008242829.tif 000012
【図９】
2008242829.tif 000013
【図１０】
2008242829.tif 000014
【図１１】
2008242829.tif 000015
【図１２】
2008242829.tif 000016
【図１３】
2008242829.tif 000017
【図１４】
2008242829.tif 000018
【図１５】
2008242829.tif 000019
【図１６】
2008242829.tif 000020
【図１７】
2008242829.tif 000021
【図１８】
2008242829.tif 000022
【図１９】
2008242829.tif 000023
【図２０】
2008242829.tif 000024
【図２１】
2008242829.tif 000025
【図２２】
2008242829.tif 000026