(57)【要約】【課題】従来のバーコード読み取り装置における読み取り信号に良否を判定する閾値は基準電圧から画一的に正負側に同じ閾値を設定するため、読み取り環境の影響によりノイズとバーコード信号の誤判定が生じて読み取り性能が大きく影響されている。【解決手段】バーコード読み取り装置は、第１閾値設定部で設定した従来と同様な第１の閾値による有効性の判断に加えて、第２極値検出部により有効となった隣り合う極値間の間隔に存在する極値をさらに検出して、第２閾値設定部がこれらの極値から新たな有効性の判断する第２の閾値を設定する。この第２の閾値により、バーコード記号から読み取られた極値に対して有効性を再度判断することにより、ノイズの影響を排除しつつ、真のバーコードのエッジのみを極値として検出するバーコード読み取り装置である。【選択図】      図１
2009295113.tif 000002
【特許請求の範囲】
【請求項１】
光源と、
前記光源から発生した光をバーコード記号に対して走査するための光走査手段と、
前記バーコード記号で反射した反射光を集光する集光手段と、
前記集光手段で集光された光信号を入力し電気信号に変換するセンサ手段と、
前記センサ部により生成された電気信号から微分信号を生成する微分処理手段と、
前記微分処理手段によって生成された微分信号の極値を検出する極値検出手段と、を備えたバーコード読み取り装置であって、
検出された前記極値を所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断手段と、
抽出された複数の前記有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測手段と、
前記極値間隔計測手段において計測された複数の極値間隔の中から最大値を検出する最大極値間隔検出手段と、
最大極値間隔内に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値として判断する第２極値有効性判断手段と、を有し、
前記第１極値有効性判断手段及び前記第２極値有効性判断手段によって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードすることを特徴とするバーコード読み取り装置。
【請求項２】
前記第１極値有効性判断手段は、第１の閾値に基づいて複数の極値の有効性の判断を行い、
前記第２極値有効性判断手段は、前記最大極値間隔内の前記最大極値及び最小極値に基づいて第２の閾値を設定し、当該第２の閾値に基づいて、有効極値を判断することを特徴とする請求項１に記載のバーコード読み取り装置。
【請求項３】
前記第１の閾値は、基準電圧に対して、プラス側及びマイナス側にそれぞれ同じ電圧値となる値を適用することを特徴とする請求項２に記載のバーコード読み取り装置。
【請求項４】
前記第２の閾値は、基準電圧に対して、プラス側及びマイナス側にそれぞれ同じ電圧値となる値を適用することを特徴とする請求項２記載のバーコード読み取り装置。
【請求項５】
前記第２の閾値は、基準電圧に対してプラス側と、基準電圧に対してマイナス側とでは、それぞれに異なる電圧値を適用することを特徴とする請求項２に記載のバーコード読み取り装置。
【請求項６】
前記第２の閾値は、基準電圧に対してプラス側を、前記最大極値間隔内の前記最大極値と同じ電圧値となる値を適用し、基準電圧に対してマイナス側を、前記最大極値間隔内の最小極値と同じ電圧値となる値を適用することを特徴とする請求項５に記載のバーコード読み取り装置。
【請求項７】
前記第１の閾値及び第２の閾値によって有効と判断された有効極値に基づいて生成したバーコード情報をデコードできなかった場合に、
前記極値間隔計測手段は、第１、第２の閾値によって有効と判断された複数の有効極値について、互いに隣接する２つの極値の極値間隔を計測し、
前記最大極値間検出手段は、前記極値間隔計測手段において計測された複数の極値間隔の中から最大値を検出し、
前記第２極値有効性判断手段は、最大極値間隔内に存在する、前記第１及び第２の閾値に基づいて有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらに基づいて新たな第３の閾値を設定し、当該第３の閾値に基づいて、有効極値と判断することを特徴とする請求項２に記載のバーコード読み取り装置。
【請求項８】
前記第２の極値有効性判断手段は、予め設定していた最低電圧値に達するまで、新たな閾値を設定することを特徴とする請求項７に記載のバーコード読み取り装置。
【請求項９】
前記第２の極値有効性判断手段は、予め設定していた閾値設定回数に達するまで、新たな閾値を設定することを特徴とする請求項６に記載のバーコード読み取り装置。
【請求項１０】
光源と、
前記光源から発生した光をバーコード記号に対して走査するための光走査手段と、
前記バーコード記号で反射した反射光を集光する集光手段と、
前記集光手段で集光された光信号を入力し電気信号に変換するセンサ手段と、
前記センサ部により生成された電気信号から微分信号を生成する微分処理手段と、
前記微分処理手段によって生成された微分信号の極値を検出する極値検出手段と、を備えたバーコード読み取り装置であって、
検出された前記極値を所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断手段と、
抽出された複数の前記有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測手段と、
前記極値間隔計測手段において計測された複数の極値間隔の中から最大からＮ番目までの極値間隔を抽出する極値間隔抽出手段と、
前記極値間隔抽出手段によって検出された極値間隔が最大のものからＮ番目までのものの中に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値と判断する第２極値有効性判断手段と、を有し、
前記第１極値有効性判断手段及び前記第２極値有効性判断手段によって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードすることを特徴とするバーコード読み取り装置。
【請求項１１】
光源から出射された光束を走査させて、バーコード記号を反復して横切るように照射させて、前記バーコード記号で反射し集光された戻り光を受光して光電変換によりバーコード信号を生成する信号生成ステップと、
前記バーコード信号に基づく微分信号から極値を検出する極値検出ステップと、
検出された前記極値に対して所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断ステップと、
抽出された複数の有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測ステップと、
計測された複数の前記極値間隔の中から最大値を検出する最大極値間隔検出ステップと、
最大極値間隔内に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値と判断する第２極値有効性判断ステップと、を有し、
前記第１極値有効性判断ステップ及び前記第２極値有効性判断ステップによって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードすることを特徴とするバーコード読み取り方法。
【請求項１２】
光源から出射された光束を走査させて、バーコード記号を反復して横切るように照射させて、前記バーコード記号で反射し集光された戻り光を受光して光電変換によりバーコード信号を生成する信号生成ステップと、
前記バーコード信号に基づく微分信号から極値を検出する極値検出ステップと、
検出された前記極値を所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断ステップと、
抽出された複数の有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測ステップと、
計測された複数の前記極値間隔の中から最大からＮ番目までの極値間隔を抽出する極値間隔抽出ステップと、
前記極値間隔抽出ステップによって検出された極値間隔が最大のものからＮ番目までのものの中に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値と判断する第２極値有効性判断ステップと、を有し、
前記第１極値有効性判断ステップ及び前記第２極値有効性判断ステップによって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードすることを特徴とするバーコード読み取り方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード読み取り装置に読み取られたデータのデコード処理に関する。
【背景技術】
【０００２】
一般に周知なバーコード記号は、物品の管理情報等を太さの異なる複数のバーとスペースの交互配列により表記し、物品の外装に直接印刷又は、ラベル等に印刷されて物品等に貼り付けられて、幅広く活用されている。バーコード記号は、商品販売、物流、生産工程等における情報を持っているため、その情報を正確に読み取ることが重要である。
【０００３】
図１１に示す従来のバーコード読み取り装置１００の構成例を参照して、受光した反射光からバーコード記号に付与された情報の読み取りについて説明する。  
このバーコード読み取り装置１００は、光源１０１から発生させた出射光１０２ａを反射ミラー１０３によって駆動制御部１１４により揺動される走査ミラー１０４に導き、出射光１０２ａがバーコード記号１０５に対して配列方向に走査するように照射される。
【０００４】
バーコード記号１０５からの反射光１０２ｂは、戻り光として走査ミラー１０４に入射して集光ミラーで集光されて、センサ１０６に導かれる。センサ１０６の受光面において、光電変換によりバーコード記号１０５に付与された情報を含む電流信号が生成される。この電流信号は、信号変換部１０７により電圧信号に変換され、さらに、微分処理部１０８によって微分信号に変換される。この微分信号は、ピークホールド／ボトムホールド検出部１０９に入力する。ピークホールド／ボトムホールド検出部１０９では、入力された微分信号の極大値及び極小値からなる極値を検出する。
【０００５】
そして、これらの極大値及び極小値は、閾値設定部１１０に入力される。閾値設定部１１０では、図１２（ａ）乃至（ｃ）に示すように、ピークホールド／ボトムホールド検出部１０９からの出力である極大値及び極小値を所定の比率により分圧し、微分信号のノイズと信号を切り分ける即ち、有効性を判断するための閾値となる閾値信号を出力する。ここで、分圧による閾値は、極大値又は小値の３０％程度に設定されている。
【０００６】
そして比較部１１１によって、検出された極値と閾値信号とを比較し、閾値信号以上のレベルを持つ極値を有効な信号とし、バーコード幅データ生成部１１３において、その極値に基づきバーコード信号が生成される。このバーコード信号に対してデコード処理を行い、そのバーコード信号から情報が取れ出せなかった場合には、再度、後続して読み取った電流信号から検出された極値を検出して、閾値による有効性の検出を行っている。
【特許文献１】特開２００５−３８３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述したように、バーコード記号１０５で反射した戻り光１０２ｂから情報を読み取る場合、その戻り光１０２ｂから生成された電圧信号の極大値及び極小値を検出し、情報の有効性を判断するための閾値信号と比較している。このため、閾値信号の設定状態により読み取り精度が決定されることとなる。
【０００８】
従来の閾値信号の決定は、得られた電圧信号における随時変動する極大値及び極小値に対して、基準電圧から正負側のそれぞれに画一的に閾値を設定しているため、基準電圧に対して閾値電圧を高く、即ち、判断レベルを高く設定すると、ノイズが排除される反面、正しいバーコード信号を構成する極大値及び極小値も排除される可能性がある。反対に閾値を低く、即ち、設定する判断レベルを低くすると、ノイズも有効なバーコード信号を構成する極大値及び極小値として判断されてしまい、読み取り性能が悪くなる。
【０００９】
そこで本発明は、バーコード記号で反射した戻り光から得られたバーコード信号のピーク値及びボトム値による極値の大きさに応じた閾値の設定を複数回繰り返し行い、好適する閾値により有効性判断を行い、ノイズの影響を抑制しつつ高い読み取り精度を有するバーコード読み取り装置及びその読み取りデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記目的を達成するために、光源と、前記光源から発生した光をバーコード記号に対して走査するための光走査手段と、前記バーコード記号で反射した反射光を集光する集光手段と、前記集光手段で集光された光信号を入力し電気信号に変換するセンサ手段と、前記センサ部により生成された電気信号から微分信号を生成する微分処理手段と、前記微分処理手段によって生成された微分信号の極値を検出する極値検出手段とを備えたバーコード読み取り装置であって、検出された極値を所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断手段と、抽出された複数の有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測手段と、極値間隔計測手段において計測された複数の極値間隔の中から最大値を検出する最大極値間隔検出手段と、最大極値間隔内に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値と判断する第２極値有効性判断手段と、を有し、前記第１極値有効性判断手段及び前記第２極値有効性判断手段によって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードするバーコード読み取り装置を提供する。
【００１１】
さらに、光源から出射された光束を走査させて、バーコード記号を反復して横切るように照射させて、前記バーコード記号で反射し集光された戻り光を受光して光電変換によりバーコード信号を生成する信号生成ステップと、前記バーコード信号に基づく微分信号から極値を検出する極値検出ステップと、検出された前記極値に対して所定の基準で有効性の判断を行い、複数の有効極値を抽出する第１極値有効性判断ステップと、抽出された複数の有効極値について、互いに隣接する２つの極値の極値間隔を計測する極値間隔計測ステップと、計測された複数の前記極値間隔の中から最大値を検出する最大極値間隔検出ステップと、最大極値間隔内に存在する、前記第１極値有効性判断手段によって有効と判断されなかった極値の中から、最大極値及び最小極値を抽出すると共に、それらを有効極値と判断する第２極値有効性判断ステップと、を有し、前記第１極値有効性判断ステップ及び前記第２極値有効性判断ステップによって有効と判断された有効極値に基づいて、バーコード情報を生成し、デコードすることを特徴とするバーコード読み取り方法を提供する。
【発明の効果】
【００１２】
本発明によれば、バーコード記号で反射した戻り光から得られたバーコード信号のピーク値及びボトム値による極値の大きさに応じた閾値の設定を複数回繰り返し行い、好適する閾値により有効性判断を行い、ノイズの影響を抑制しつつ高い読み取り精度を有するバーコード読み取り装置及びその読み取りデータ処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の実施形態について詳細に説明する。    
図１は、本発明の第１の実施形態に係るバーコード読み取り装置の構成を示す模式図である。  
このバーコード読み取り装置１は、大別すると、例えばレーザ光からなる光束を出射する光源部２と、レーザ光を走査しつつバーコード記号３に向かって照射する走査ミラー部４と、入射したバーコード記号３で反射した反射光（戻り光）を受光して光電変換により検出信号（バーコード信号）を生成する受光部５と、得られた検出信号に対して、信号処理を施し極値を検出する信号検出部６と、検出信号に基づく閾値信号を生成して検出信号の有効性を判断する閾値設定判断部７と、有効と判断された検出信号に対してバーコード幅データを生成し、デコード処理を行ーコード幅データ生成部８と、バーコード幅データから生成したバーコード情報（物品の管理情報等）を出力するデータ出力部９と、検出された極値及び間隔と後述する検出時のインデックス情報を時系列的に記憶するメモリ１０と、装置全体を制御する制御部１１と、で構成される。
【００１４】
光源部２は、レーザダイオードからなる光源２１と、光源２１を駆動制御する光源制御部２２と、走査ミラー部４にレーザ光を導く反射ミラー２３とで構成される。
【００１５】
走査ミラー部４は、電磁力を利用して軸２４ａを中心として走査ミラー２４ｂを反復するように揺動し、反射ミラー２４ｂから入射されたレーザ光を走査するように出射する走査ミラー本体２４と、走査ミラー本体２４に設けられた永久磁石２４ｃに近接して配置された電磁コイル２５に交番磁界を発生させて走査ミラー本体２４の揺動の制御を行う駆動制御部２６と、で構成される。
【００１６】
受光部５は、走査ミラー本体２４からの反射光（戻り光）を凹面鏡で集光する集光ミラー２７と、集光ミラー２７からの戻り光を受光して、光電変換による電流信号を生成する受光素子（フォトディテクタ）２８と、受光素子２８の受光面の前方に配置される受光絞り部（図示せず）及びバンドパスフィルタ２９と、電流信号を電圧信号に変換する信号変換部３０と、で構成される。
【００１７】
また、信号検出部６は、信号変換部３０から出力された電圧信号を微分信号に変換する微分処理部３１と、微分信号から極値（極大値及び極小値）を検出する極値検出部３２と、で構成される。
【００１８】
閾値設定判断部７は、第１の閾値を設定する第１閾値設定部４１と、第１の閾値又は第２の閾値のそれぞれに対して、極大値及び極小値を比較し有効な極値を検出する極値有効性判断部（第１，第２極値有効性判断手段）４２と、有効と判断された極値の中から、判断対象となる極値（例えば、極大値）と、その極値の直前に検出されている極値（例えば、極小値）との間隔を検出する極値間隔計測部（極値間隔計測手段）４３と、極値間隔計測部によって検出された隣接する極値間の間隔の中から最大間隔を検出する最大間隔検出部（最大極値間隔検出手段）４４と、最大の極値間隔の中で、第１の閾値による有効判断によって有効ではないと判断された極値（非有効な極値）の中から、最大の極大値及び最小の極小値による第２極値を検出する第２極値検出部４５と、第２極値を有効とする第２の閾値を設定する第２閾値設定部４６と、で構成される。
【００１９】
尚、本実施形態において、極値と極値との間隔とは、図３（ｂ）に示すように、先の極値（極小値）が検出された時間ｔ１と後の極値（極大値）が検出された時間ｔ２の差分Ａ（｜ｔ２−ｔ１｜）である。以後の説明において、この時間間隔である差分は、単に「間隔」もしくは「極値間隔」（例えば、極小値と読み出された極大値との間隔等）として表現している。
【００２０】
次に図２Ａ，２Ｂに示すフローチャートを参照して、このように構成されたバーコード読み取り装置１によるバーコードの読み取り及び、読み取られた信号の処理について説明する。
【００２１】
まず、光源２１から出射されたレーザ光は、反射ミラー２３によって偏向され、揺動する走査ミラー２４ｂに入射する。この揺動により、バーコード記号３に対して配列を横切る方向に走査される走査光１２が生成され、走査光１２はバーコード記号３に照射される（ステップＳ１）。
【００２２】
この走査光１２は、バーコード記号３で反射し、戻り光１３として、走査ミラー２４ｂで偏向されて集光ミラー２７に入射される。集光ミラー２７は、戻り光１３を凹面鏡で集光させて、フォトディテクタ２８の受光面に入射させる（ステップＳ２）。フォトディテクタ２８では、光電変換により戻り光１３の光量に基づく電流信号が生成される（ステップＳ３）。さらに、この電流信号は、信号変換部３０で電圧信号に変換され、図３（ａ）に示すような光電変換信号（バーコード信号）となる。
【００２３】
光電変換信号は、微分処理部３１に入力され、微分信号に変換される。微分処理部３１では、信号増幅処理及びフィルタリングによるノイズの除去処理を行った後（ステップＳ４）、微分信号に変換処理する。この時、最大間隔検出部４４における最大間隔ＴＭＡＸを０に設定して初期化を行う（ステップＳ５）。
【００２４】
微分信号は、極値検出部３２に入力され、まず、Ａ／Ｄ変換されて、デジタルサンプリングデータが生成される（ステップＳ６）。その後、デジタルサンプリングデータからバーコード記号のエッジを示唆する極値（極大値及び極小値）が検出される。これらの極値は、検出時のインデックス情報（時間により規定される各極値の位置関係又は順序関係を示唆する）と共に時系列的にメモリ１０に保存される（ステップＳ７）。尚、これらの極値を検出する際には、例えば、極大値が検出されたならば、次に検出される極値は極小値といった具合に、極大値と極小値が交互に検出される。ここでは、図３（ｂ）に示すように最初に検出された極値が極大値であったと仮定して説明する。
【００２５】
次に、第１閾値設定部４１は、メモリ１０から全ての極値を読み出し（ステップＳ８）、読み出した全ての極値に基づき、第１の閾値を設定する（ステップＳ９）。また、必ずしもメモリ１０から読み出す必要はなく、回路構成によっては、極値検出部３２から極値を入力して設定することも可能である。
【００２６】
この第１の閾値は、従来技術と同様に、全ての極値の中で最大値（ピークホールド値）ｍ又は、最小値（ボトムホールド値）ｎに基づいて設定される。設定される第１の閾値は、ノイズの影響を受けにくくするため、極大値（ピーク値）に対しては従来より大きめの設定値、極小値（ボトム値）に対しては従来より小さめ設定値、例えば、ピーク値又はボトム値に対して、係数として、ここでは、６０％程度を掛け合わせた値とし、極大値及び極小値に対して、振幅の中心を基準電圧として、正負方向に同じ電圧値（絶対値）となる値を用いている。勿論、この係数は、６０％程度に限定されるものではなく、経験的に係数を設定してもよい。
【００２７】
次に、極値有効性判断部４２では、メモリ１０から極値を時系列的に古いものから１つずつ読み出し（ステップＳ１０）、有効なデータか否かを第１閾値設定部４１により設定された第１の閾値と比較することによって判断する（ステップＳ１１）。このステップＳ１１の判断で、例えば、極値が有効と判断された場合には（ＹＥＳ）、この極値が最初に有効と判断されたものか否かを判断する（ステップＳ１２）。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ１０に戻り、再度、メモリ１０から次の極値を読み出し、第１の閾値と比較することで有効性の判断を行う。
【００２８】
また、ステップＳ１２の判断において、極値が最初に有効なものであった場合には（ＹＥＳ）、その極値のインデックス情報（例えば、位置情報や時間情報など）をメモリに保存すると共に、メモリ１０に他にも有効な極値が存在する可能性があるため、ステップＳ１０に戻り、次の極値に対して有効性の判断を行う。一方、ステップＳ１２において、最初に有効となった極値ではない場合には（ＮＯ）、直前に有効と判断された極値が存在しているので、極値間隔計測部４３において、メモリ１０から読み出した直前に有効と判断された極値と、続いて有効であると判断された今回の極値との間隔の時間を計測し、その間隔をメモリ１０に保存する（ステップＳ１３）。具体的には、有効と判断された極値が極大値であった場合には、メモリ１０からその直前に有効と判断された極小値を読み出し、その極大値と読み出された極小値との間隔（極大値−極小値間：図３（ｂ）に示す区間Ａ）を求める。又は、その極値が反対順であれば、間隔として、極小値−極大値間を求める。尚、メモリ１０に計測した間隔Ｔを保存する際に、間隔Ｔを構成する２つの極値が識別又は特定できるように極値のインデックス情報も併せて保存する。
【００２９】
その後、最大間隔検出部４４において、計測された間隔Ｔと、これまでで最も大きい最大間隔ＴＭＡＸ（初期値はＴＭＡＸを０に設定：ステップＳ５）と比較して（ステップＳ１４）、間隔Ｔが最大間隔ＴＭＡＸより大きければ（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて（ステップＳ１５）、最大の極値間隔のインデックス情報（位置情報や時間情報）を保存する（ステップＳ１６）。
【００３０】
これらの最大間隔の検出処理は、極値有効性判断部４２に極値検出部３２から次に検出された極値が入力され、同様にその極値が第１の閾値に対して有効であるか否かを判断する。ここで有効と判断された場合には、極値間隔計測部４３において、直前に隣接する有効と判断された極値（極大値又は極小値）との間隔を時間計測し、最大間隔検出部４４による最大間隔を検出する。
【００３１】
この処理を極値検出部３２により検出された全ての極値が終了するまで繰り返される。即ち、ステップＳ１４で計測した間隔Ｔが最大間隔ＴＭＡＸ未満だった場合（ＮＯ）、又はステップＳ１６でインデックス情報を保存した後、検出された極値が最後か否かを判断する（ステップＳ１７）。最後の極値ではなかった場合には（ＮＯ）、今、有効と判断された極値のインデックス情報をメモリ１０に保存すると共に、ステップＳ１０に戻り、間隔を求める。一方、ステップＳ１７で最後の極値まで比較処理が終了したならば（ＹＥＳ）、最大間隔検出部４４において有効と判断された極値の間隔のうち、最大の間隔が決定される。
【００３２】
次に、第２極値検出部４５により、得られた最大の間隔を持つ極値間の中に存在する極値をメモリ１０から検出する。即ち、第２極値検出部４５は、最大間隔の極値間で、第１の閾値によって有効と判断されなかった極値のうちの、最大の極大値及び最小の極小値を検出する（ステップＳ１８）。第２閾値設定部４６は、図３（ｂ）に示すように、最大の極値間隔の中から検出された最大の極大値及び最小の極小値が、かろうじて有効とするような第２の閾値を設定する（ステップＳ１９）。
【００３３】
次に、極値有効性判断部４２は、先立って第１の閾値との比較で有効と判断されなかった全ての極値をメモリ１０から順次読み出して（ステップＳ２０）、第２の閾値と比較し、有効か否かを判断する（ステップＳ２１）。この判断で有効な極値でなければ（ＮＯ）、ステップＳ２０に戻り、再度メモリ１０から次の極値を読み出して有効性の判断を行う。
【００３４】
そして、対象となる極値の全てに対して、有効性の判断を行ったか否かを確認する（ステップＳ２２）。全ての判断が終了していなければ（ＮＯ）、ステップＳ２０に戻り、次の極値をメモリ１０から読み出して有効性の判断を継続する。一方、全ての判断が終了したならば（ＹＥＳ）、バーコード幅データ生成部８において、バーコード幅データの生成を行う（ステップＳ２３）。これは、第１の閾値及び第２の閾値によって、有効と判断された極値を用いて、バーコード幅データ生成部８がバーコード信号を生成する。最後の極値まで処理が終わった段階でデコード処理を行い（ステップＳ２４）、デコードが成功したか否かを判断する（ステップＳ２５）。デコードが成功した場合には（ＹＥＳ）、ここで一連の読み取り動作を終了する。一方、デコードが不成功であった場合には（ＮＯ）、再度、ステップＳ２に戻り、反射光（戻り光）を受光する処理にリターンする。尚、この例では、デコードを失敗したときの再読込みに要する時間を考慮して、デコードが完了するまで、走査光は照射した状態を維持しているが、この状態維持に限定されるものではない。以下に説明する実施形態においても、同様に、デコードが完了するまで、走査光は照射した状態を維持している例としている。
【００３５】
尚、本実施形態では、第１の閾値は、最大の極値又は最小の極値を元に設定しているが、ＡＧＣ（オート・ゲイン・コントロール）を搭載している場合には、固定に設定しても良い。
【００３６】
以上のように本実施形態は、まず、高めの（絶対値として大きい）第１の閾値を設定して、極値の有効性を判断し、さらに、有効となった複数の極値を対象として、その隣り合う極値間の間隔（間隔）が最も大きい間隔を持つ２つの極値を検出する。そして、大きい間隔を持つこれらの極値間において、第１の閾値によって有効と判断されなかった極値のうち、最大の極大値及び最小の極小値を新たな有効性の判断基準として、第２の閾値を設定する。
【００３７】
第１の閾値にて有効と判断されなかった極値に対しても、再度第１の閾値よりも低い（絶対値として小さい）閾値の第２の閾値にて、有効性の判断を行うことによって、ノイズの影響を排除しつつ、真にバーコードのエッジのみを極値として検出することができる。
【００３８】
本実施形態によれば、ノイズの影響を受けにくい第１の閾値と第２の閾値を設定して、有効性の判断処理を行うことによって、読み取り性能が著しく向上する。特に、読み取ったバーコード信号にノイズが多く含まれる、例えば、コントラストが薄いバーコードに対する読み取りに効果的に作用する。
【００３９】
本実施形態において、第２の閾値を設定する際に、最も間隔が大きい極値間を選択しているが、これは、一般的なバーコードの配置上では間隔が大きい極値間には、他にも極値が存在している確率が高くなるため、選択対象としているものである。
【００４０】
従って、バーコードの配置構成に応じて、最も間隔が大きい極値間ではなく、２番目以降に大きい間隔を持つ極値間を選択した方がよいものもあり、これらは容易に変更が可能であるため、適宜設定すればよい。例えば、制御部１１が有する制御用メモリにバーコードの種類（バーコードの配置）に応じて、間隔の順位が選択可能なテーブル等を作成しておき、読み取り対象となるバーコードを指定することで、第２の閾値を設定するための極値が設定されるようにしてもよい。
【００４１】
本実施形態は、有効性の判断に第２の閾値を設定して用いることにより、従来のように１つの閾値（第１の閾値）のみで有効性を判断し、デコード処理を行っていた読み取り方法に比べて、ノイズを有効な極値として判断されることなく、読み取りの不安定性を排除することができる。さらに、読み取られたバーコード信号において、実際のバーコードデータが存在していそうなエリアに関して、第２の閾値を用いて信号値の大きい箇所のみを有効性があると判断するため、ノイズの影響を最小限にすることができる。
【００４２】
次に、第２の実施形態について説明する。  
図４は、本発明の第２の実施形態に係るバーコード読み取り装置の構成を示す模式図である。前述した第１の実施形態では、第１の閾値及び第２の閾値により有効性を判断したが、本実施形態は、順次検出された極値に応じて、第２の閾値以降に閾値を順次更新し、順次更新した閾値で有効性の判断を繰り返し行うことによって、さらに読み取り性能を高めるものである。
【００４３】
本実施形態は、図４に示すように、バーコード幅データ生成部８の出力が第Ｎ極値検出部４７に入力されるように接続されている。また、第Ｎ閾値設定部４８で設定された第Ｎの閾値は、極値有効判断部４２にフィードバックするように接続されている。これ以外の本実施形態の構成部位及び接続関係は、前述した第１の実施形態と同等であり、同じ参照符号を付して、その詳細な説明は省略する。
【００４４】
本実施形態では、第２極値検出部４５及び第２閾値設定部４６に替わって、最大の極値間隔の中で第１の閾値による有効判断で有効ではない極値（非有効な極値）の中から、最大の極大値及び最小の極小値による極値を予め定めた判断回数Ｎまで繰り返し検出する第Ｎ極値検出部４７と、第Ｎ極値検出部４７で検出された極値を有効とする第Ｎの閾値を設定する第Ｎ閾値設定部４８と、で構成される。この構成においては、極値有効性判断部４２は、第Ｎ閾値設定部４８で設定された第Ｎの閾値を用いて第Ｎ極値検出部４７で検出された極値の有効性を判断する。極値有効性判断部４２により有効と判断されなければ、再度、第Ｎ極値検出部４７で極値を検出されるようにフィードバックする。このフィードバックの回数は、判断回数Ｍで予め規定される。
【００４５】
図５Ａ及び図５Ｂに示すフローチャートを参照して、第２の実施形態のバーコード読み取り装置における具体的な信号処理について説明する。尚、以下の説明において、ステップＳ３１からＳ４６（Ｓ３５を除く）は、前述した第１の実施形態におけるステップＳ１からＳ１６（Ｓ５を除く）に対応しており、これらのステップの内容は簡略的に説明する。
【００４６】
まず、光源２１から出射されたレーザ光は、揺動する走査ミラー２４ｂからバーコード記号３に向かうように走査光１２として照射される（ステップＳ３１）。走査光２２はバーコード記号３上で反射し、戻り光１３として、走査ミラー２４ｂ及び集光ミラー２７を経てフォトディテクタ２８に受光される（ステップＳ３２）。フォトディテクタ２８では、光電変換により戻り光１３から電流信号が生成される（ステップＳ３３）。さらに、この電流信号は、信号変換部３０で電圧信号からなるバーコード信号（図３（ａ）に示す光電変換信号）に変換される。
【００４７】
この光電変換信号は、微分処理部３１により信号増幅処理及びフィルタリングによるノイズの除去処理が行われた後、微分処理されて微分信号が生成される（ステップＳ３４）。この時、閾値の設定回数Ｎに１を設定すると共に、有効性の判断回数Ｍに３を設定し、さらに最大間隔検出部４４における最大間隔ＴＭＡＸを０に設定して初期化を行う（ステップＳ３５）。
【００４８】
次に、微分信号は、極値検出部３２により、Ａ／Ｄ変換及びデジタルサンプリングデータ処理される（ステップＳ３６）。さらに、極値検出部３２によりデジタルサンプリングデータから極値が検出され、検出時の時間情報と共にメモリ１０に保存される（ステップＳ３７）。次に、第１閾値設定部４１は、メモリ１０から全ての極値を読み出し（ステップＳ３８）、読み出した全ての極値に基づき、第１の実施形態と同様に、第１の閾値を設定する（ステップＳ３９）。また本実施形態においても、メモリ１０から読み出すのではなく、極値検出部３２から極値を入力して設定することも可能である。尚、第１の閾値は、極大値及び極小値に対して、振幅の中心を基準電圧として、正負方向に同じ電圧値（絶対値）となる値を用いる。
【００４９】
次に、極値有効性判断部４２では、メモリ１０から時系列的に古い極値から順に１つずつ読み出し（ステップＳ４０）、第１の閾値と比較して有効性を判断する（ステップＳ４１）。この判断で、極値が有効と判断された場合には（ＹＥＳ）、この極値が最初に有効と判断されたものか否かを判断する（ステップＳ４２）。この判断で、極値が最初に有効であった場合には（ＹＥＳ）、ステップＳ４０に戻り、再度、メモリ１０から次の極値を読み出し、第１の閾値と比較する。一方、ステップＳ４２において、既に有効となった極値が他にある場合には（ＮＯ）、前述した第１の実施形態と同様に、極値間隔計測部４３において、直前に有効と判断された極値と、続いて今回有効であると判断された極値との時間間隔を計測し、間隔とその間隔に対応する極値が識別又は特定できるようなインデックス情報をメモリ１０に保存する（ステップＳ４３）。このステップＳ４３は、前述したステップＳ１３と同様である。
【００５０】
その後、最大間隔検出部４４において、計測された間隔Ｔと、これまでで最も大きい最大間隔ＴＭＡＸ（初期値：０）と比較する（ステップＳ４４）。この比較で間隔Ｔが最大間隔ＴＭＡＸよりも大であれば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて（ステップＳ４５）、最大の極値間隔のインデックス情報（第１の実施形態と同等）を保存する（ステップＳ４６）。この処理は、検出された全ての極値に対して実施され、最大の間隔とそれらの極値のインデックス情報が決定され、メモリに保存される。この様な最大の間隔の決定が検出された全ての極値が終了するまで繰り返される。一方、ステップＳ４４で最大間隔ＴＭＡＸよりも小さい場合（ＮＯ）、又はステップＳ４６でインデックス情報を保存した後、検出された極値が最後か否かを判断する（ステップＳ４７）。この判断で最後の極値ではなかった場合には（ＮＯ）、ステップＳ４０に戻り、再度、間隔Ｔを求める。一方、ステップＳ４７で最後の極値まで比較処理が終了したならば（ＹＥＳ）、最大間隔検出部において有効と判断された極値の間隔のうち、最大の間隔ＴＭＡＸが決定される。
【００５１】
前述した実施形態では、第１の閾値で検出された最大の極値間隔の中には、さらに有効な極値が存在していると仮定して、第１の閾値よりも小さい第２の閾値に基づいて、第１の閾値で有効と判断されなかった極値を対象に、有効性の判断を行い、少なくとも一組の極大値及び極小値を検出していた。これに対して本実施形態では、新たに設定した第２の閾値でも本来有効と判断されるべき極値が有効と判断されない可能性があると仮定して、さらに第３、第４…第Ｎの閾値を設定して、極値の有効性の判断を行うものである。
【００５２】
まず、極値の有効性を判断する回数Ｎをカウントアップ（Ｎ＝Ｎ＋１）する（ステップＳ４８）。例えば、Ｎ＝１であった場合、このステップＳ４８でＮの値が１だけカウントアップされＮ＝２となり、第２の閾値を設定する。
【００５３】
次に、この設定回数Ｎが予め設定した判断回数Ｍを越えていない（Ｎ≦Ｍ）を判断する（ステップＳ４９）。この判断で閾値の設定回数Ｎが判断回数Ｍを越えたならば（ＮＯ）、再度ステップＳ３２に戻り、バーコード記号３の戻り光を再度、取得して閾値を算出する。一方、設定回数Ｎが判断回数Ｍを越えていなければ（ＹＥＳ）、最大の極値間隔ＴＭＡＸをメモリ１０から読み出し、その最大の極値間隔ＴＭＡＸの中で、第（Ｎ−１）の閾値（例えば、第１の閾値）によって有効と判断されなかった最大の極大値及び最小の極小値を検出する（ステップＳ５０）。
【００５４】
次に、ステップＳ５０で検出された最大の極大値及び最小の極小値に基づき、第Ｎの閾値（例えば、第２の閾値）を設定する（ステップＳ５１）。
【００５５】
次に、第１の閾値を基準にして抽出された極値に基づく最大の極値間隔ＴＭＡＸをリセットする（ステップＳ５２）。  次に、メモリ１０から全ての極値を読み出し（ステップＳ５３）、第Ｎの閾値と読み出した極値とを比較して有効性を判断する（ステップＳ５４）。この判断で極値が有効と判断された場合には（ＹＥＳ）、この極値が最初に有効と判断されたものか否かを判断する（ステップＳ５５）。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ５３に戻り、再度、メモリ１０から次の極値を読み出し、第Ｎの閾値と比較する。また、ステップＳ５５の判断において、極値が最初に有効なものであった場合には（ＹＥＳ）、その極値のインデックス情報（位置情報、時間情報）をメモリ１０に保存すると共に、他にも有効な極値がある可能性があるため、ステップＳ５３に戻り、再度、次の極値に対して有効性の判断を行う。一方、ステップＳ５５において、最初に有効となった極値ではない場合には（ＮＯ）、極値間隔計測部４３において、メモリ１０から読み出した「直前に有効と判断された極値」と、有効であると判断された今回の極値との間隔の時間を計測し、計測した間隔Ｔと、今回有効と判断された極値のデータ（インデックス情報）とメモリ１０に保存する（ステップＳ５６）。このステップＳ５６は、前述したステップＳ４３と同様である。  その後、計測された間隔Ｔと、これまでで最も大きい最大間隔ＴＭＡＸとを最大間隔検出部４４により比較して（ステップＳ５７）、間隔Ｔが最大間隔ＴＭＡＸを超えた値であったならば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて（ステップＳ５８）、最大の極値間隔のインデックス情報を保存する（ステップＳ５９）。この処理を極値検出部３２により検出された全ての極値が終了するまで繰り返される。一方、ステップＳ５７で最大間隔ＴＭＡＸ以下であった場合（ＮＯ）、又はステップＳ５９でインデックス情報を保存した後、検出された極値が最後か否かを判断する（ステップＳ６０）。最後の極値ではなかった場合には（ＮＯ）、ステップＳ５１に戻り再度、間隔Ｔを求める。一方、ステップＳ６０で最後の極値まで比較処理が終了したならば（ＹＥＳ）、バーコード幅データ生成部８において、バーコード幅データの生成を行い（ステップＳ６１）、さらにデコード処理を行う（ステップＳ６２）。このデコードが成功したか否かを判断し（ステップＳ６３）、成功した場合には（ＹＥＳ）、読み取りにおける一連の処理は終了となる。一方、デコードが不成功となった場合には（ＮＯ）、ステップＳ４８に戻る。
【００５６】
即ち、第１、第２の閾値によって有効と判断された隣接する極値間隔の最大の位置をメモリ１０から読み出し、その間隔の中で第１、第２の閾値によって有効と判断されなかった最大の極大値及び最小の極小値を検出し、第２の閾値と同様の方法を用いて、カウントアップ（Ｎ＋１）された第３の閾値を設定する。
【００５７】
この第３の閾値を用いて、第１、第２の閾値によって有効と判断されなかった全ての極値について再度、有効性の判断を行う。ここで、有効と判断された極値に関して、直前に有効と判断されていた極値との間隔を計測し、メモリ１０に保存する。また、第３の閾値に対して、最後の極値まで処理が終わった段階でデコード処理を行い、デコードが成功した場合には、読み取り終了となる。しかし、再度デコードが不成功であった場合には、同様の処理をさらに繰り返す。この処理を設定回数Ｎが判断回数Ｍを越えるまで行うことによって、有効な極値のみを検出することが可能となりノイズの影響を最小限にすることが可能となる。本実施形態では、所定の回数をＭ回としているが、万一、Ｍ回の処理を行ってもデコードが不成功となった場合には、一旦、読み取ったデータをクリアして、前述したステップＳ３２の反射光を受光することから再開する。
【００５８】
以上説明した本実施形態によれば、読み取ったバーコード信号に対して、きめ細かく閾値を設定できるため、これまでノイズとして判定されていたものに対しても、有効性を問うことができる。また、有効性の判断を行う回数が任意に設定できるため、読み取りやすく鮮明なバーコード記号に対しては、少ない回数を設定し、不鮮明又は読み取りにくいバーコード記号に対しては、判断回数を多めに設定することにより、バーコード信号に応じて、より正確な読み取りを実現する。
【００５９】
次に、第３の実施形態について説明する。  
本実施形態におけるバーコード読み取り装置は、前述した図４に示した第２の実施形態の構成に対して、第Ｎ極値検出部４７が第２極値検出部に、第Ｎ閾値設定部４８が第２閾値設定部に置き換わった以外同等であり、以下の説明は同じ参照符号を用いて、ここでの構成の説明は省略する。
【００６０】
前述した第１，２の実施形態では、極大値及び極小値に対して基準電圧を元にプラス方向、マイナス方向に同じ電圧を閾値として設定したが、実際には、バーコード記号の印刷状態及び読み取る際の周辺環境などによって、基準電圧を元にした極大値と極小値の絶対値が一概に同じにならない事態が発生する。そこで、本実施形態では、第１の閾値及び第２の閾値が、それぞれに極大値用の閾値である第１の極大閾値と第１の極小閾値、及び第２の極大閾値と第２の極小閾値を持ち、各閾値と比較の際に極大値の場合には極大閾値を、極小値の場合には極小閾値を適用し、比較することで有効性の判断を行う。
【００６１】
図６Ａ及び図６Ｂに示すフローチャートを参照して、第３の実施形態のバーコード読み取り装置における具体的な信号処理について説明する。尚、以下の説明において、ステップＳ７１からＳ７４は、前述した第２の実施形態におけるステップＳ３１からＳ３４に対応しており、これらのステップの内容は簡略的に説明する。
【００６２】
まず、走査レーザ光は、バーコード記号３に照射され（ステップＳ７１）、反射した戻り光１３がフォトディテクタ２８に受光されて（ステップＳ７２）、光電変換により電流信号が生成される（ステップＳ７３）。この電流信号は、電圧信号の光電変換信号に変換された後、微分処理されて微分信号が生成される（ステップＳ７４）。この時、最大間隔検出部４４における最大間隔ＴＭＡＸを０に設定して初期化を行う（ステップＳ７５）。
【００６３】
次に、微分信号はＡ／Ｄ変換及びデジタルサンプリングデータ処理されて（ステップＳ７６）、極値が検出され、検出時の時間情報と共にメモリ１０に保存される（ステップＳ７７）。その後、メモリ１０から全ての極値を読み出し（ステップＳ７８）、これらの極値に基づき、第１の極大閾値及び第１の極小閾値が設定される（ステップＳ７９）。極大閾値は信号の最大の極大値として、及び極小閾値は最小の極小値として、基準（ベース）となるようにそれぞれ設定する。
【００６４】
次に、メモリ１０から時系列的に古いものから１つずつ極値を読み出し（ステップＳ８０）、その極性が極大値側又は極小値側であるか判断する（ステップＳ８１）。このステップＳ８１の判断で、極性が極大値側であれば、その極値を第１の極大閾値と比較して有効性を判断する（ステップＳ８２）。このステップＳ８２の判断で、極値が有効と判断された場合には（ＹＥＳ）、この極値が最初に有効と判断されたものか否かを判断する（ステップＳ８４）。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ８０に戻り、再度メモリ１０から極値を読み出す。
【００６５】
またステップＳ８１の判断で、極性が極小値側であれば、その極値を第１の極小閾値と比較して有効性を判断する（ステップＳ８３）。このステップＳ８３の判断で、極値が有効と判断された場合には（ＹＥＳ）、ステップ８３に移行し、この極値が最初に有効と判断されたものか否かを判断する。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ８０に戻り、再度メモリ１０から次の極値を読み出す。
【００６６】
ステップ８４の判断において、最初に有効と判断された極値であれば（ＹＥＳ）、その極値のインデックス情報をメモリ１０に保存し、ステップＳ８０に戻る。一方、既に有効と判断された極値が他にあれば（ＮＯ）、極値間隔計測部４３において、直前に有効と判断された極値と、続いて今回有効であると判断された極値との時間間隔を計測し、間隔Ｔとその間隔Ｔに対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する（ステップＳ８５）。このステップＳ８５は、前述したステップＳ４３と同様である。
【００６７】
その後、計測された間隔Ｔと、これまでで最も大きい最大間隔ＴＭＡＸ（初期値：０）と比較する（ステップＳ８６）。この比較で間隔Ｔが最大間隔ＴＭＡＸを越えた値であったならば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて（ステップＳ８７）、最大の極値間隔のインデックス情報を保存する（ステップＳ８８）。この処理は、検出された全ての極値に対して実施される。
【００６８】
一方、ステップＳ８６で計測された間隔Ｔが最大間隔ＴＭＡＸ以下であった場合（ＮＯ）、又はステップＳ８８でインデックス情報を保存した後に、検出された極値が最後か否かを判断する（ステップＳ８９）。この判断で最後の極値ではなかった場合には（ＮＯ）、ステップＳ８０に戻る。一方、ステップＳ８９で最後の極値まで比較処理が終了したならば（ＹＥＳ）、最大間隔検出部４４において有効と判断された極値の間隔のうち、最大の間隔ＴＭＡＸが決定される。
【００６９】
次に、第２極値検出部４７は、最大間隔の極値間で、第２の閾値によって有効と判断されなかった極値のうちの、最大の極大値及び最小の極小値を検出する（ステップＳ９０）。これらの極値に基づき、第２の極大閾値及び第２の極小閾値が設定される（ステップＳ９１）。この第２の閾値の設定方法は、第２の閾値の極大閾値は、最大極値間隔ＴＭＡＸに存在し、第１の極大閾値によって有効と判断されていない極大値のうち、最大の極大値がかろうじて有効となる値を設定され、第２の閾値の極小閾値は、最大極値間隔ＴＭＡＸに存在し、第１の極小閾値によって有効と判断されていない極小値のうち、最小の極小値がかろうじて有効となる値を設定する。
【００７０】
次に、メモリ１０から極値を読み出し（ステップＳ９２）、その極性が基準電圧に対して極大値側又は極小値側であるか判断する（ステップＳ９３）。この判断で、極性が極大値側であれば、その極値を第２の極大閾値と比較して有効性を判断する（ステップＳ９４）。このステップＳ９４の判断で、極値が有効と判断された場合には（ＹＥＳ）、その極値が最後か否かを判断する（ステップ９６）。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ９２に戻り、再度メモリ１０から極値を読み出す。
【００７１】
またステップＳ９３の判断で、極性が極小値側であれば、その極値を第２の極小閾値と比較して有効性を判断する（ステップＳ９５）。このステップＳ９５の判断で、極値が有効と判断された場合には（ＹＥＳ）、ステップ９６に移行し、その極値が最後か否かを判断する。一方、極値が有効ではないと判断された場合には（ＮＯ）、ステップＳ９２に戻り、再度メモリ１０から極値を読み出す
前記ステップ９６の判断において、最後の極値まで比較処理が終了したならば（ＹＥＳ）、バーコード幅データ生成部８において、バーコード幅データの生成を行い（ステップＳ９７）、さらにデコード処理を行い（ステップＳ９８）、デコードが成功したか否かを判断し（ステップＳ９９）、成功した場合には（ＹＥＳ）、読み取りにおける一連の処理は終了となる。一方、デコードが不成功となった場合には（ＮＯ）、ステップＳ７２に戻る。
【００７２】
前述したように、実際のバーコード記号の読み取りには、基準電圧を元にした極大値と極小値の値が一概に同じ値（絶対値）にならない事態が発生する。本実施形態は、このような事態が発生した際に、正確な信号処理を行うものとして非常に有効である。
【００７３】
以上説明したように、本実施形態は、バーコード記号の印刷状態及び読み取る際の周辺環境等により読み取られたバーコード信号の極値に偏りが発生しても、閾値を極性に応じて、個々に設定して、その影響を最小限に抑制し、正確な読み取り動作を実現することができる。
【００７４】
次に、第４の実施形態について説明する。  
図７は、本実施形態におけるバーコード読み取り装置の構成を示す図である。本実施形態は、前述した図４に示した第２の実施形態の構成とほぼ同等であり、違いは第Ｎ閾値設定部４８がないことである。以下の説明は同じ参照符号を用いて、ここでの構成の説明は省略する。
【００７５】
本実施形態では、前述した第１乃至３の実施形態とは、最大間隔検出部における処理および第N極値検出部における処理が異なっている。本実施形態では、最大間隔検出部において閾値の設定は行わない。また、最大間隔のみではなく、最大のものからＮ-1個の間隔を検出し、検出されたそれぞれの間隔内で最大の極大値、最小の極小値を閾値と比較することなく有効とする。
【００７６】
図８Ａ及び図８Ｂに示すフローチャートを参照して、第４の実施形態のバーコード読み取り装置における具体的な信号処理について説明する。尚、以下の説明において、ステップＳ１０１からＳ１０４及びＳ１０６からＳ１１３は、前述した第２の実施形態におけるステップＳ３１からＳ３４及びＳ３６からＳ４３に対応しており、これらのステップの内容は簡略的に説明する。
【００７７】
まず、走査レーザ光は、バーコード記号３に照射されて、反射した戻り光１３がフォトディテクタ２８に受光されて、光電変換により電流信号が生成される（ステップＳ１０１，Ｓ１０２，Ｓ１０３）。この電流信号は、電圧信号に変換された後、微分処理されて微分信号が生成される（ステップＳ１０４）。この時、設定回数Ｎ及び最大間隔ＴＭＡＸ（ｉ）＝０を設定する（ステップＳ１０５）。
【００７８】
次に、微分信号はＡ／Ｄ変換及びデジタルサンプリングデータ処理されて（ステップＳ１０６）、極値が検出され、検出時の時間情報と共にメモリ１０に保存される（ステップＳ１０７）。その後、メモリ１０から全ての極値を読み出して、これらの極値に基づき、第１の閾値を設定する（ステップＳ１０８，Ｓ１０９）。
【００７９】
次に、メモリ１０から極値を読み出し（ステップＳ１１０）、第１の閾値と比較して有効性を判断する（ステップＳ１１１）。この判断で、極値が有効と判断された場合には（ＹＥＳ）、この極値が最初に有効と判断されたものか否かを判断する（ステップＳ１１２）。この判断で、極値が最初に有効であった場合には（ＹＥＳ）、その極値のインデックス情報をメモリ１０に保存する。そして、ステップＳ１１０に戻り、再度、メモリ１０から次の極値を読み出し、第１の閾値と比較する。一方、最初に有効になった極値ではなかった場合には（ＮＯ）、当該極値と、その直前に有効と判断された極値との時間間隔を計測し、得られた間隔とその間隔に対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する（ステップＳ１１３）。
【００８０】
次に、最大間隔ＴＭＡＸ（ｉ）におけるｉをｉ＝１と設定し（ステップＳ１１４）、計測された間隔Ｔと、これまでで最も大きい最大間隔ＴＭＡＸ１と比較する（ステップＳ１１５）。この比較で間隔Ｔが最大間隔ＴＭＡＸ１を越えた値であったならば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸ１に置き換えて（ステップＳ１１６）、新しい最大の極値間隔ＴＭＡＸ１のインデックス情報を保存する（ステップＳ１１７）。また、ステップＳ１１５の比較において、間隔Ｔが最大間隔ＴＭＡＸ１以下であれば（ＹＥＳ）、係数ｉをカウントアップ（ｉ＝ｉ＋１）して（ステップＳ１１８）、その係数ｉが予め定めた回数Ｎに達したか否かを判断して（ステップＳ１１９）、ｉがＮに達していなければ（ＹＥＳ）、ステップＳ１１５に戻り、次に大きい間隔であるＴＭＡＸ２とTの比較を行この比較で間隔Ｔが最大の次に大きい間隔ＴＭＡＸ２を越えた値であったならば（ＹＥＳ）、その間隔Ｔを最大の次に大きい間隔ＴＭＡＸ２に置き換えて（ステップＳ１１６）、新しい最大の次に大きい極値間隔ＴＭＡＸ２のインデックス情報を保存する（ステップＳ１１７）。最大からN-1番目までの間隔を比較するようｉがＮに達するまで比較を行う。一方、ｉがＮに達していたならば（ＮＯ）、又はステップＳ１１７でインデックス情報を保存した後、検出された極値が最後か否かを判断する（ステップＳ１２０）。この判断で最後の極値ではなかった場合には（ＮＯ）、ステップＳ１１０に戻り、再度、間隔を求める。一方、ステップＳ１２０で最後の極値まで比較処理が終了したならば（ＹＥＳ）、ｉを１に設定する（ステップＳ１２１）。
【００８１】
次に、求められた最大間隔ＴＭＡＸ１の中で、第１の閾値によって有効と判断されなかった極値のうちの、最大の極大値及び最小の極小値を検出し、これらを有効と判断する（ステップＳ１２２）。これは、得られた極値の有効性を判断し、隣接する極値間隔を検出、保存するところまでは、前述した第１の実施形態と同等である。
【００８２】
その後、バーコード幅データ生成し（ステップＳ１２３）、デコード処理を行う（ステップＳ１２４）。このデコードが成功したか否かを判別して（ステップＳ１２５）、デコードが成功したならば（ＹＥＳ）、すべての処理が終了となる。
【００８３】
一方、デコードが不成功であった場合には（ＮＯ）、ｉをカウントアップ（ｉ＝ｉ＋１）して（ステップＳ１２６）、その係数ｉが予め定めた回数Ｎに達したか否かを判断して（ステップＳ１２７）、ｉがＮに達していなければ（ＹＥＳ）、再度、ステップＳ１２２に戻り、最大の次に大きい間隔ＴＭＡＸ２の第１の閾値によって有効と判断されなかった極値のうちの、最大の極大値及び最小の極小値を検出し、これらを有効と判断する（ステップＳ１２２）。その後、バーコード幅データ生成し（ステップＳ１２３）、デコード処理を行う（ステップＳ１２４）。このデコードが成功したか否かを判別して（ステップＳ１２５）、デコードが成功したならば（ＹＥＳ）、すべての処理が終了となる。
【００８４】
一方、デコードが不成功であった場合には（ＮＯ）、再度、ｉをカウントアップ（ｉ＝ｉ＋１）して（ステップＳ１２６）、その係数ｉが予め定めた回数Ｎに達するまで（ステップＳ１２７）、同様の処理を行
本実施形態においては、最大の間隔から順番に、その中に存在する極値の中から最大の極大値及び最小の極小値を検出し有効として、バーコード幅データ生成し、デコードする処理を最大からN-1番目間隔になるまで行っている。前述した第１乃至３の実施形態では、最大間隔検出部において、第２の閾値の設定が行われていたが、本実施形態では、最大間隔からＮ−１個の間隔を検出し、検出されたそれぞれの間隔内で最大の極大値、最小の極小値を閾値との比較を行うことなく有効とする。
【００８５】
以上のように本実施形態によれば、閾値の設定が数値で限定されず、有効とされなかった極値に対しても、任意に設定された回数において、極大値と極小値を検出して有効としているため、極値の大小差が大きく、低い値側に極値が多く存在している場合などに有用である。
【００８６】
次に、第５の実施形態について説明する。  
本実施形態のバーコード読み取り装置の構成は、前述した第２の実施形態の構成と同等であり、以下の説明は同じ参照符号を用いて、ここでの構成の説明は省略する。
【００８７】
本実施形態の特徴は、最大間隔の極値に隣接する極値の極性が同じだった場合に、第３の極値検出処理を行うことである。つまり、有効と判断された極値と隣接する極値が極大値どうし、又は小値どうしの場合には、バーコード信号としてはなりたたない。そのため、比較対象の極値と隣接する極値が極大値どうし、又は小値どうしの場合には、その極値間には極性が異なる極値が存在すると仮定する。そして、後述する第３の極値検出処理において、隣接する極値間に存在し、閾値によって有効と判断されていない極値の中で、例えば、極大値どうしの場合には、極小値の最小のもの、極小値どうしの場合には、極大値の最大のものを有効と判断する。第３の極値検出処理は、第１の閾値による有効性の判断後、及び第２以降の閾値による有効性の判断後に適用する。
【００８８】
図９Ａ及び図９Ｂに示すフローチャートを参照して、第５の実施形態のバーコード読み取り装置における具体的な信号処理について説明する。また、図１０に示すフローチャートを参照して、第３の極値検出処理について説明する。尚、以下の説明において、ステップＳ１３１からＳ１６７（但し、Ｓ１３５，Ｓ１４３，Ｓ１４４，１５８，Ｓ１５９を除く）は、前述した第２の実施形態におけるステップＳ３１からＳ６２に対応しており、これらのステップの内容は簡略的に説明する。
【００８９】
まず、走査レーザ光は、バーコード記号３に照射されて、反射した戻り光１３がフォトディテクタ２８に受光されて、光電変換により電流信号が生成される（ステップＳ１３１，Ｓ１３２，Ｓ１３３）。この電流信号を微分処理し、設定回数Ｎ、判断回数Ｍ及び最大間隔ＴＭＡＸ＝０を設定する（ステップＳ１３４，Ｓ１３５）。次に、微分信号をデジタルサンプリングデータ処理して、極値が検出され、検出時の時間情報と共にメモリ１０に保存される（ステップＳ１３６，Ｓ１３７）。その後、メモリ１０から全ての極値を読み出して、これらの極値に基づき、第１の閾値を設定する（ステップＳ１３８，Ｓ１３９）。
【００９０】
次に、メモリ１０から読み出した極値を読み出し（ステップＳ１４０）、第１の閾値と比較して有効性を判断して（ステップＳ１４１）、ここで有効と判断された極値が最初の極値であれば（ステップＳ１４２）、その極値のインデックス情報をメモリ１０に保存する。そして、ステップＳ１４０に戻り、再度、メモリ１０から次の極値を読み出し、読み出した極値と第１の閾値とを比較する。一方、最初の極値ではなかった場合には、その極値と今回得られた極値とが同じ極性か否かを判断する（ステップＳ１４３）。この判断で、同じ極性であれば（ＹＥＳ）、後述する第３の極値を検出する（ステップＳ１４４）し、第３の極値に対して、直前に有効と判断された極値との時間間隔Ｔを計測し、間隔Ｔとその間隔Ｔに対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する（ステップＳ１４５）。一方、同じ極性ではない場合には（ＮＯ）、その極値と直前に有効と判断された極値との時間間隔Ｔを計測し、間隔Ｔとその間隔Ｔに対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する（ステップＳ１４５）。
【００９１】
その後、計測された間隔Ｔと、これまでの最大間隔ＴＭＡＸ（初期値：０）とを比較する。（ステップＳ１４６）。この間隔Ｔが最大間隔ＴＭＡＸを超えた値であったならば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて（ステップＳ１４７）、最大の極値間隔ＴＭＡＸのインデックス情報を保存する（ステップＳ１４８）。一方、間隔Ｔが最大間隔ＴＭＡＸ以下であった場合（ＮＯ）、又はステップＳ１４８でインデックス情報を保存した後、検出された極値が最後か否かを判断する（ステップＳ１４９）。この判断で最後の極値ではなかった場合には（ＮＯ）、ステップＳ１４０に戻り、一方、最後の比較処理まで終了したならば（ＹＥＳ）、最大間隔検出部において有効と判断された極値の間隔のうちで、最大の間隔が決定される。
【００９２】
次に、極値の有効性を判断する回数Ｎをカウントアップ（Ｎ＝Ｎ＋１）し、回数Ｎが予め設定した回数Ｍを越えた否か（Ｎ＜Ｍ）を判断する（ステップＳ１５０，Ｓ１５１）。この判断でＮがＭ未満であれば（ＮＯ）、ステップＳ１４０に戻り、メモリ１０から極値を読み出して同じ処理を行う。一方、ＮがＭ以下であれば（ＹＥＳ）、最大極値間隔ＴＭＡＸの中で、第Ｎ−１の閾値によって有効と判断されなかった最大の極大値及び最小の極小値を検出する（ステップＳ１５２）。次に、検出された最大の極大値及び最小の極小値に基づき、第Ｎの閾値を設定する（ステップＳ１５３）。  ここで、ＴＭＡＸをリセットする（ステップＳ１５４）。
【００９３】
次に、メモリ１０からこれまでの最大の間隔ＴＭＡＸにおける極値を読み出し（ステップＳ１５５）、第Ｎの閾値と比較して、その極値が有効であった場合には（ＹＥＳ）、最初に有効となった極値かを判断する（ステップＳ１５６，Ｓ１５７）。一方、極値が有効でなかった場合には（ＮＯ）、ステップＳ１５５に戻り、再度、次の極値を読み出して第Ｎの閾値と比較する。また、ステップＳ１５７の判断で最初に有効な極値であった場合には（ＹＥＳ）、その極値のインデックス情報をメモリ１０に保存する。そして、ステップＳ１５５に戻り、再度、次の極値に対して有効性の判断を行う。一方、ステップＳ１５７において、最初に有効となった極値ではない場合には（ＮＯ）、その極値と今回得られた極値とが同じ極性か否かを判断する（ステップＳ１５８）。この判断で、同じ極性であれば（ＹＥＳ）、後述する第３の極値を検出する（ステップＳ１５９）し、第３の極値に対して、直前に有効と判断された極値との時間間隔を計測し、間隔とその間隔に対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する（ステップＳ１６０）。一方、同じ極性ではない場合には（ＮＯ）、ステップＳ１６０に移行し、その極値と直前に有効と判断された極値との時間間隔Ｔを計測し、間隔Ｔとその間隔Ｔに対応する極値が識別又は特定できるようなインデックス情報も併せてメモリ１０に保存する。
【００９４】
その後、間隔Ｔと、これまでの最大間隔ＴＭＡＸとを比較して（ステップＳ１６１）、間隔Ｔが最大間隔ＴＭＡＸ以下であれば（ＹＥＳ）、その間隔Ｔを最大間隔ＴＭＡＸに置き換えて、最大の極値間隔のインデックス情報を保存する（ステップＳ１６２，Ｓ１６３）。一方、間隔Ｔが最大間隔ＴＭＡＸを越えていたのであれば（ＮＯ）、又はインデックス情報が保存した後、検出された極値が最後か否かを判断する（ステップＳ１６４）。最後の極値ではなかった場合には（ＮＯ）、ステップＳ１５５に戻り再度、間隔を求める。一方、最後の極値まで比較処理が終了したならば（ＹＥＳ）、バーコード幅データの生成を行い、デコード処理を行う（ステップＳ１６５，Ｓ１６６）。このデコードが成功したか否か判断して（ステップＳ１６７）、成功した場合には（ＹＥＳ）、読み取りにおける一連の処理は終了し、不成功であった場合には（ＮＯ）、ステップＳ１５０に戻る。
【００９５】
次に、図１０に示すフローチャートを参照して、ステップＳ１４３（図９Ａ）における第３の極値の検出について説明する。  
まず、第Ｎの閾値において有効と判断された極値のうち、隣接する極値の極性が正即ち、極大値か否かを判断する（ステップＳ１７１）。この判断で、極性が負、即ち最小値であった場合には（ＮＯ）、隣接する極小値間隔内で第Nの閾値において有効と判断されなかった最大の極大値を求めるため、極大値の大きさＡＭＡＸ＝０を予め設定する（ステップＳ１７２）。メモリ１０から対象となる極小値間隔の第Nの閾値において有効と判断されなかった極大値を読み出す（ステップＳ１７３）。次に、ＡＭＡＸと読み出された極大値とを比較して、読み出された極大値がＡＭＡＸを超えた値であれば（ＹＥＳ）、ＡＭＡＸを読み出された極大値に書き換える（ステップＳ１７４）。この処理によって対象となる極小値間で第Nの閾値において有効と判断されなった最大の極大値を求める。最後の極大値までＡＭＡＸとの比較と書き換えが終了したか否かを判断し（ステップＳ１７６）、最後の極大値まで終了したならば（ＹＥＳ）、最終的なＡＭＡＸとなった極大値を有効とした後（ステップＳ１７７）、リターンする。即ち、対象となる隣接する極小値間で検出され、閾値における有効性の判断において有効と判断されていないすべての極大値をメモリ１０から読み出し、この極大値の中から最大のものを有効とする。
【００９６】
一方、ステップＳ１７１の判断で、極性が正、即ち最大値であった場合には（ＹＥＳ）、隣接する極大値間隔内で第Nの閾値において有効と判断されなった最小の極小値を求めるため、極小値の大きさＡＭＩＮ＝ １００００と予め設定し（ステップＳ１７８）、メモリ１０から対象となる極大値間隔の極小値を読み出す（ステップＳ１７９）。次に、ＡＭＩＮと読み出された極小値とを比較して、読み出された極小値がＡＭＩＮを超えた値であれば（ＹＥＳ）、ＡＭＩＮを読み出された極小値に書き換える（ステップＳ１８０）。最後の極小値までのＡＭＩＮとの比較と書き換えが終了したか否かを判断し（ステップＳ１８１）、最終的な極大値最小間隔内でＡＭＩＮとなった極小値を有効とする（ステップＳ１８２）。即ち、隣接する極値の極性が極大値だった場合には、対象となる隣接する極大値間で検出され、閾値における有効性の判断において有効と判断されていないすべての極小値をメモリ１０から読み出し、この極小値の中から最小のものを検出して有効とする。
【００９７】
以上のことから、有効とされた極値と隣接する極性が同じであった場合には、その間に反対の極性の極値が存在しているものと仮定して、その反対の極値として、隣接する極値が極小値の場合にはその間隔の中で第Nの閾値によって有効と判断されなかった最大の極大値を有効とし、又は隣接する極値が極大値の場合にはその間隔の中で第Nの閾値によって有効と判断されなかった最小の極小値をそれぞれ設定することにより、バーコード記号の読み取り性能が向上される。
【００９８】
以上説明した各実施形態によれば、バーコード記号を読み取った際に、ノイズが多く読み取られていた場合の読み取り性能が改善され、及び設定された条件の下で読み取ったデータが処理されるため、不必要なデータ処理量の増加を防止して、且つメモリに掛かる記憶容量の不可を低減することができる。
【図面の簡単な説明】
【００９９】
【図１】図１は、本発明の第１の実施形態に係るバーコード読み取り装置の構成を示す図である。
【図２Ａ】図２Ａは、第１の実施形態のバーコード読み取り装置によるバーコードの読み取りについて説明するためのフローチャートである。
【図２Ｂ】図２Ｂは、図２Ａに続き、バーコードの読み取りについて説明するためのフローチャートである。
【図３】図３（ａ）は、光電変換信号の一例を示す図、図３（ｂ）は、微分信号の一例を示す図である。
【図４】図４は、本発明の第２の実施形態に係るバーコード読み取り装置の構成を示す図である。
【図５Ａ】図５Ａは、第２の実施形態のバーコード読み取り装置によるバーコードの読み取りについて説明するためのフローチャートである。
【図５Ｂ】図５Ｂは、図５Ａに続き、バーコードの読み取りについて説明するためのフローチャートである。
【図６Ａ】図６Ａは、第３の実施形態のバーコード読み取り装置によるバーコードの読み取りについて説明するためのフローチャートである。
【図６Ｂ】図６Ｂは、図６Ａに続き、バーコードの読み取りについて説明するためのフローチャートである。
【図７】図７は、第４の実施形態におけるバーコード読み取り装置の構成を示す図である。
【図８Ａ】図８Ａは、第４の実施形態のバーコード読み取り装置によるバーコードの読み取りについて説明するためのフローチャートである。
【図８Ｂ】図８Ｂは、図８Ａに続き、バーコードの読み取りについて説明するためのフローチャートである。
【図９Ａ】図９Ａは、第５の実施形態のバーコード読み取り装置によるバーコードの読み取りについて説明するためのフローチャートである。
【図９Ｂ】図９Ｂは、図９Ａに続き、バーコードの読み取りについて説明するためのフローチャートである。
【図１０】図１０は、図９Ａにおける第３の極値の検出について説明するためのフローチャートである。
【図１１】図１１は、従来のバーコード読み取り装置の構成例を示す図である。
【図１２】図１２（ａ）は、光電変換信号の一例を示す図、図１２（ｂ）は、微分信号の一例を示す図、図１２（ｃ）は、バーコード信号の一例を示す図である。
【符号の説明】
【０１００】
１…バーコード読み取り装置、２…光源部、３…バーコード記号、４…走査ミラー部、５…受光部、６…信号検出部、７…閾値設定判断部、８…バーコード幅データ生成部、９…データ出力部、１０…メモリ、１１…制御部、１２…走査光、１３…戻り光、２１…光源、２２…光源制御部、２３…反射ミラー、２４…走査ミラー本体、２４ａ…軸、２４ｂ…走査ミラー、２４ｃ…永久磁石、２５…電磁コイル、２６…駆動制御部、２７…集光ミラー、２８…受光素子（フォトディテクタ）、２９…バンドパスフィルタ、３０…信号変換部、３１…微分処理部、３２…極値検出部、４１…第１閾値設定部、４２…極値有効性判断部、４３…極値間隔計測部、４４…最大間隔検出部、４５…第２極値検出部、４６…第２閾値設定部、４７…第Ｎ極値検出部、４８…第Ｎ閾値設定部。
【図１】
2009295113.tif 000003
【図２Ａ】
2009295113.tif 000004
【図２Ｂ】
2009295113.tif 000005
【図３】
2009295113.tif 000006
【図４】
2009295113.tif 000007
【図５Ａ】
2009295113.tif 000008
【図５Ｂ】
2009295113.tif 000009
【図６Ａ】
2009295113.tif 000010
【図６Ｂ】
2009295113.tif 000011
【図７】
2009295113.tif 000012
【図８Ａ】
2009295113.tif 000013
【図８Ｂ】
2009295113.tif 000014
【図９Ａ】
2009295113.tif 000015
【図９Ｂ】
2009295113.tif 000016
【図１０】
2009295113.tif 000017
【図１１】
2009295113.tif 000018
【図１２】
2009295113.tif 000019