(57)【要約】【課題】  大きなメモリ容量を必要とせず、かつ、短時間で高精度の読取りを行うことのできる光学的情報読取装置を実現する。【解決手段】  明暗パターンの各幅値を配列順および走査線別に累積して累積幅値を算出する。汚れｅ１の明暗の変化点Ｐ４（累積幅値１８０＋１＝１８１の位置）は、走査線Ｌ２上では汚れｅ１、つまり暗パターンに属する。しかし、変化点Ｐ４が走査線Ｌ１，Ｌ３上に存在すると仮定した場合、変化点Ｐ４は走査線Ｌ１，Ｌ３上では明パターンに属する。明パターンに属するとの判定回数が暗パターンに属するとの判定回数よりも多いため、変化点Ｐ４は明パターンに属すると決定する。同様に変化点Ｐ５は明パターンに属すると決定する。これにより、変化点Ｐ４，Ｐ５は、明暗パターンの明暗の境界として扱われない。このように累積幅値を用いるため、大きなメモリ容量を必要としない。【選択図】  図４
2009123096.tif 000002
【特許請求の範囲】
【請求項１】
明パターンおよび暗パターン（以下、明暗パターンという）を配列して構成された１次元コードを複数の走査線に沿って光で走査する走査手段と、
前記走査により前記１次元コードにて反射した反射光に基づいて前記明暗パターンの各幅値を算出する第１の算出手段と、
前記幅値を前記明暗パターンの配列順及び前記走査線別に累積して累積幅値を算出する累積手段と、
前記累積幅値を基に各走査線上における明暗の変化点を求め、当該各変化点に基づいて前記明暗パターンの境界を抽出する境界抽出手段と、
前記抽出された境界間の幅値を前記累積幅値に基づいて算出する第２の算出手段と、
前記第１または第２の算出手段により算出された幅値に基づいて前記１次元コードを読取る読取手段と、
を備えたことを特徴とする光学的情報読取装置。
【請求項２】
前記境界抽出手段は、
前記各累積幅値の中から所定の累積幅値を選択し、その選択した累積幅値により特定される走査線上の前記変化点が明暗パターンのどちらに属するかの判定を総ての走査線に対して行う第１の判定と、この第１の判定の判定結果のうち、同じ判定結果の数が閾値を超えたかを判定する第２の判定とを、総ての累積幅値について行い、前記第２の判定の判定結果が変化する境界を前記明暗パターンの境界として前記第２の判定の判定結果に基づいて抽出することを特徴とする請求項１に記載の光学的情報読取装置。
【請求項３】
各走査線に共通の明暗パターンであって走査線の一端に最も近い明暗パターン（以下、第１基準パターンという）を総ての走査線を対象に検索する第１の検索手段を備えており、
前記累積手段は、
前記検索された第１基準パターンのうち、前記一端に最も近いパターンの幅値を初期値とし、前記第１の算出手段により算出された幅値を前記初期値から走査線の他端まで配列順及び前記走査線別に累積することを特徴とする請求項１または請求項２に記載の光学的情報読取装置。
【請求項４】
前記第１の算出手段は、
算出した幅値が所定の幅値以下であった場合に、その算出した幅値とその前に算出した幅値と後に算出した幅値とを加算して１つの幅値とする加算手段をさらに備えることを特徴とする請求項１ないし請求項３のいずれか１つに記載の光学的情報読取装置。
【請求項５】
前記第１の算出手段により算出された幅値の出現度数を計数する第１の出現度数計数手段を備えており、
前記加算手段は、
前記第１の出現度数計数手段による計数値が所定値以上の幅値のうち、最小の幅値から前記所定の幅値を算定することを特徴とする請求項４に記載の光学的情報読取装置。
【請求項６】
各走査線間で対応するパターンに対する各走査線別の幅値のうち、所定の走査線に対する幅値と他の走査線に対する幅値との比の値を、前記他の走査線別に算出する第３の算出手段と、
前記比の値を、算出の対象となった前記他の走査線の各幅値にそれぞれ乗ずることにより、前記他の走査線に対する各幅値を補正する第１の補正手段と、
を備えたことを特徴とする請求項１ないし請求項５のいずれか１つに記載の光学的情報読取装置。
【請求項７】
各走査線に共通の明暗パターンであって走査線の他端に最も近い明暗パターン（以下、第２基準パターンという）を総ての走査線を対象に検索する第２の検索手段と、
前記第１基準パターンのうち前記一端に最も近いパターンから、前記第２基準パターンのうち前記他端に最も近いパターンまでに存在する明暗パターンの各幅値の合計（以下、合計幅値という）を各走査線別に算出する合計幅値算出手段と、
前記算出された合計幅値のうち、所定の走査線に対する合計幅値と、他の走査線に対する合計幅値との比の値を前記他の走査線別に算出する第４の算出手段と、
前記比の値を、算出の対象となった前記他の走査線の各幅値に乗ずることにより、前記他の走査線に対する各幅値を補正する第２の補正手段と、
を備えたことを特徴とする請求項１ないし請求項５のいずれか１つに記載の光学的情報読取装置。
【請求項８】
前記累積手段は、
前記走査線の総数よりも少ない所定数の走査線を選択し、前記第１の算出手段により算出された幅値を前記初期値から走査線の他端まで配列順及び前記選択した各走査線別に累積し、さらに、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合は、前記選択する走査線の数を増やして再度前記累積を行うことを特徴とする請求項１ないし請求項７のいずれか１つに記載の光学的情報読取装置。
【請求項９】
前記累積手段は、
走査線の総数が３本以上の場合に最上部および最下部の走査線以外の走査線を最初に選択することを特徴とする請求項８に記載の光学的情報読取装置。
【請求項１０】
前記第１の算出手段により算出された所定個数の幅値に基づいて、前記明暗パターンの幅値のそれぞれの出現度数を計数する第２の出現度数計数手段と、
前記第２の出現度数計数手段によって計数された明暗パターンの幅値のそれぞれの出現度数に基づいて、明暗パターンのどちらが相対的に太く算出されている傾向にあるかを判定し、その判定結果に基づいて前記閾値を変更する閾値変更手段と、
を備えたことを特徴とする請求項２ないし請求項９のいずれか１つに記載の光学的情報読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バーコードなどの１次元コードを光で複数回走査し、１次元コードにて反射した反射光に基づいて１次元コードを読取る光学的情報読取装置に関する。
【背景技術】
【０００２】
従来、この種の光学的情報読取装置では、バーコードの明パターン上に汚れが存在した場合、その汚れの上を走査すると、誤って汚れを暗パターンとして読み取ってしまい、バーコードの読取り精度が低下するという問題があった。また、暗パターンがかすれている場合、そのかすれの上を走査すると、誤ってかすれを明パターンとして読み取ってしまい、バーコードの読取り精度が低下するという問題もあった。
【０００３】
そこで、そのような問題を解決するものとして、特許文献１（特開平６−２３０９３１号公報）に記載のバーコード読取り装置が提案されている。この装置は、光源からの光ビームを光スキャナによって複数本の平行な走査ラインに沿ってバーコードを順次走査する構成を備える。
【０００４】
そして、バーコードからの反射光を反射強度に対応した２値データに変換し、その２値データを走査ラインの走査方向と垂直な方向で総和する。次に、その総和値がバー閾値よりも大きな領域はバー領域とし、スペース閾値よりも大きな領域はスペース領域とする。そして、両閾値の間の領域は、汚れやかすれの領域と判断することにより、汚れやかすれの領域における２値データを除外し、バーコードの読取り精度を向上させる。
【特許文献１】特開平６−２３０９３１号公報（第２１〜３５段落、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、前述のバーコード読取り装置は、複数の走査ラインの２値データを格納しておき、かつ、２値データを走査ラインの走査方向と垂直な方向で総和した総和値を格納する必要があるため、データ量が大きくなり、大きなメモリ容量が必要となるという問題がある。
しかも、サンプリングクロックと同期させて総和値を算出するため、読取り時間が長くなるし、読取り時間を短縮するために総和値を算出する間隔を長くすると、読取り精度が低下するという問題もある。
【０００６】
この発明は、上述の諸問題を解決するためになされたものであり、大きなメモリ容量を必要とせず、かつ、短時間で高精度の読取りを行うことのできる光学的情報読取装置を実現することを目的とする。
【課題を解決するための手段】
【０００７】
この発明は、上記目的を達成するため、請求項１に記載の発明では、明パターンおよび暗パターン（以下、明暗パターンという）を配列して構成された１次元コード（Ｂ）を複数の走査線（Ｌ１〜Ｌｎ）に沿って光で走査する走査手段（２，３）と、前記走査により前記１次元コードにて反射した反射光に基づいて前記明暗パターンの各幅値を算出する第１の算出手段（Ｓ３）と、前記幅値を前記明暗パターンの配列順及び前記走査線別に累積して累積幅値を算出する累積手段（Ｓ７）と、前記累積幅値を基に各走査線上における明暗の変化点を求め、当該各変化点に基づいて前記明暗パターンの境界を抽出する境界抽出手段（Ｓ３０〜Ｓ４２）と、前記抽出された境界間の幅値を前記累積幅値に基づいて算出する第２の算出手段（Ｓ４３）と、前記第１または第２の算出手段により算出された幅値に基づいて前記１次元コードを読取る読取手段（Ｓ９）と、を備えたという技術的手段を用いる。
【０００８】
請求項２に記載の発明では、請求項１に記載の光学的情報読取装置において、前記境界抽出手段は、前記各累積幅値の中から所定の累積幅値を選択し、その選択した累積幅値により特定される走査線上の前記変化点が明暗パターンのどちらに属するかの判定を総ての走査線に対して行う第１の判定（Ｓ３３）と、この第１の判定の判定結果のうち、同じ判定結果の数が閾値を超えたかを判定する第２の判定（Ｓ３７，Ｓ３９）とを、総ての累積幅値について行い、前記第２の判定の判定結果が変化する境界を前記明暗パターンの境界として前記第２の判定の判定結果に基づいて抽出するという技術的手段を用いる。
【０００９】
請求項３に記載の発明では、請求項１または請求項２に記載の光学的情報読取装置において、各走査線に共通の明暗パターンであって走査線の一端に最も近い明暗パターン（以下、第１基準パターンという）を総ての走査線を対象に検索する第１の検索手段（Ｓ５）を備えており、前記累積手段は、前記検索された第１基準パターンのうち、前記一端に最も近いパターンの幅値を初期値とし、前記第１の算出手段により算出された幅値を前記初期値から走査線の他端まで配列順及び前記走査線別に累積するという技術的手段を用いる。
【００１０】
請求項４に記載の発明では、請求項１ないし請求項３のいずれか１つに記載の光学的情報読取装置において、前記第１の算出手段は、算出した幅値が所定の幅値以下であった場合に、その算出した幅値とその前に算出した幅値と後に算出した幅値とを加算して１つの幅値とする加算手段（Ｓ５０〜Ｓ５９）をさらに備えるという技術的手段を用いる。
【００１１】
請求項５に記載の発明では、請求項４に記載の光学的情報読取装置において、前記第１の算出手段により算出された幅値の出現度数を計数する第１の出現度数計数手段を備えており、前記加算手段は、前記第１の出現度数計数手段による計数値が所定値以上の幅値のうち、最小の幅値から前記所定の幅値を算定するという技術的手段を用いる。
【００１２】
請求項６に記載の発明では、請求項１ないし請求項５のいずれか１つに記載の光学的情報読取装置において、各走査線間で対応するパターンに対する各走査線別の幅値のうち、所定の走査線に対する幅値と他の走査線に対する幅値との比の値を、前記他の走査線別に算出する第３の算出手段（Ｓ７０〜Ｓ７７）と、前記比の値を、算出の対象となった前記他の走査線の各幅値にそれぞれ乗ずることにより、前記他の走査線に対する各幅値を補正する第１の補正手段（Ｓ７８）と、を備えたという技術的手段を用いる。
【００１３】
請求項７に記載の発明では、請求項１ないし請求項５のいずれか１つに記載の光学的情報読取装置において、各走査線に共通の明暗パターンであって走査線の他端に最も近い明暗パターン（以下、第２基準パターンという）を総ての走査線を対象に検索する第２の検索手段と、前記第１基準パターンのうち前記一端に最も近いパターンから、前記第２基準パターンのうち前記他端に最も近いパターンまでに存在する明暗パターンの各幅値の合計（以下、合計幅値という）を各走査線別に算出する合計幅値算出手段と、前記算出された合計幅値のうち、所定の走査線に対する合計幅値と、他の走査線に対する合計幅値との比の値を前記他の走査線別に算出する第４の算出手段と、前記比の値を、算出の対象となった前記他の走査線の各幅値に乗ずることにより、前記他の走査線に対する各幅値を補正する第２の補正手段と、を備えたという技術的手段を用いる。
【００１４】
請求項８に記載の発明では、請求項１ないし請求項７のいずれか１つに記載の光学的情報読取装置において、前記累積手段は、前記走査線の総数よりも少ない所定数の走査線を選択し、前記第１の算出手段により算出された幅値を前記初期値から走査線の他端まで配列順及び前記選択した各走査線別に累積し、さらに、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合は、前記選択する走査線の数を増やして再度前記累積を行うという技術的手段を用いる。
【００１５】
請求項９に記載の発明では、請求項８に記載の光学的情報読取装置において、前記累積手段は、走査線の総数が３本以上の場合に最上部および最下部の走査線以外の走査線を最初に選択するという技術的手段を用いる。
【００１６】
請求項１０に記載の発明では、請求項２ないし請求項９のいずれか１つに記載の光学的情報読取装置において、前記第１の算出手段により算出された所定個数の幅値に基づいて、前記明暗パターンの幅値のそれぞれの出現度数を計数する第２の出現度数計数手段（Ｓ９１）と、前記第２の出現度数計数手段によって計数された明暗パターンの幅値のそれぞれの出現度数に基づいて、明暗パターンのどちらが相対的に太く算出されている傾向にあるかを判定し、その判定結果に基づいて前記閾値を変更する閾値変更手段（Ｓ９２〜Ｓ９５）と、を備えたという技術的手段を用いる。
【００１７】
なお、上記の各括弧内の符号は、後述する発明の実施形態との対応関係を示すものである。
【発明の効果】
【００１８】
（請求項１に係る発明の作用）
明暗パターンの幅値は、明暗の変化点に対応した値であるため、その幅値を累積した累積幅値は、１次元コードを構成する明暗パターンの各明暗の変化点に対応した値となるので、累積幅値によって各明暗の変化点を特定することができる。また、正規の明暗パターンには総ての走査線が通過するのに対して、明パターン中の汚れや暗パターン中のかすれには特定の走査線のみが通過することが多い。
【００１９】
つまり、汚れやかすれによって形成される変化点は、特定の走査線上にのみ存在し、他の走査線上には存在しないことが多い。
そこで、特定の走査線上にのみ存在するような変化点は、汚れやかすれに起因するものであるとみなし、明暗パターンの境界の抽出には用いないようにすることにより、汚れやかすれが明暗パターンとして誤って読取られないようにする。
【００２０】
（請求項１に係る発明の効果）
走査線上における明暗の変化点を求めるときに用いる累積幅値は、明暗パターンの各幅を示す幅値を明暗パターンの配列順及び走査線別に累積した値であるため、累積幅値を格納しておくためのメモリ容量は、従来のように、複数の走査で得た２値データを格納しておくものよりも少なくすることができる。
しかも、累積幅値は、幅値を累積して算出するものであるため、従来のようにサンプリングクロックと同期させて２値データの総和値を算出するものよりも、１次元コードを短時間で読取ることができる。また、明暗の変化点は累積幅値と対応するため、高精度の読取りを行うことができる。
【００２１】
（請求項２に係る発明の作用）
特定の走査線上にのみ存在する変化点は、汚れまたはかすれによるものであるとみなし、明暗パターンの境界の抽出には用いないようにする。特定の走査線上にのみ存在する変化点であるか否かは、選択した累積幅値により特定される走査線上の変化点が明暗パターンのどちらに属するかの判定を総ての走査線に対して行い（第１の判定）、その判定結果のうち、同じ判定結果の数が閾値を超えたかを判定することにより決定する（第２の判定）。
【００２２】
例えば、走査線の総数が３本であり、閾値が１である場合に、変化点が明パターンに属するという判定結果の数が２または３であった場合は、明パターンと判定した判定結果の数が閾値を超えたと判定する。つまり、その変化点が存在する領域は明パターンであると判定する。ここで、暗パターンと同じ明暗レベルの汚れが明パターン中に存在し、その汚れを１本の走査線のみが通過していると仮定すると、明パターンから汚れによる暗パターンに変化する変化点は、その汚れを通過する走査線上にのみ存在し、他の２本の走査線上には存在しないことになる。
【００２３】
このため、暗パターンと判定した判定結果の数は１であるのに対して明パターンと判定した判定結果の数は２であるため、明パターンと判定した判定結果の数が閾値を超えたと判定する。つまり、その変化点が存在する領域は明パターンであると判定する。この判定により、汚れの部分が暗パターンと判定されなかったことになる。
そして、上記のように汚れやかすれに起因する明暗パターンが除外された状態になったところで、第２の判定の判定結果が変化する境界を正規の明暗パターンの境界として第２の判定の判定結果に基づいて抽出する。
【００２４】
（請求項２に係る発明の効果）
第１および第２の判定という判定処理を行うだけで、第２の判定の判定結果に基づく明暗パターンの境界を抽出することができるため、判定結果および境界を格納するメモリ領域として大きなメモリ容量が不要であり、かつ、短時間で読取りを行うことができる。
【００２５】
（請求項３に係る発明の効果）
１次元コードを複数の走査線に沿って走査する場合、各走査線の一端に最も近い明暗パターンが相互に一致しない場合がある。例えば、光学的情報読取装置を操作する者の手振れにより、隣接する他の光学的情報の一部が走査されてしまう場合がある。このような場合に、各走査線の一端から累積幅値を算出すると、走査線間で累積幅値が異なるという事態が発生する。つまり、１次元コードの読取り精度が低下するおそれがある。
【００２６】
そこで、各走査線に共通の明暗パターンであって走査線の一端に最も近い明暗パターンを第１基準パターンとし、第１基準パターンのうち、走査線の一端に最も近いパターンの幅値を初期値とし、初期値から走査線の他端までの幅値を配列順及び走査線別に累積するため、走査線間で累積幅値が異なるという事態の発生をなくすことができる。つまり、１次元コードの読取り精度を高めることができる。
【００２７】
（請求項４に係る発明の効果）
所定の幅値以下の汚れやかすれが存在する場合に、その幅値と、その前に算出した幅値と、後に算出した幅値とを加算して１つの幅値とすることができるため、汚れやかすれを明暗パターンに吸収することにより、汚れやかすれに起因して１次元コードの読取り精度が低下してしまうおそれをなくすことができる。
【００２８】
（請求項５に係る発明の効果）
汚れやかすれなどの幅値を算定する際に、出現度数と無関係に総ての幅値を対象とするのではなく、出現度数が所定値以上の幅値を対象とし、それらの幅値のうち、最小の幅値から算定するするため、読取りに要する時間を短縮することができる。
【００２９】
（請求項６または請求項７に係る発明の効果）
読取り距離の違いなどが原因で、走査線によって明暗パターンの幅に差違が存在する場合であっても、補正によってその差違をなくすことができるため、１次元コードの読取り精度を高めることができる。
【００３０】
（請求項８に係る発明の効果）
最初から総ての走査線を対象にして累積幅値を算出するのではなく、走査線の総数よりも少ない所定数の走査線を対象にして累積幅値を算出し、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合に、選択する走査線の数を増やして再度累積を行うため、１次元コードの読取り時間を短縮することができる。
【００３１】
また、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合は、その差は、汚れやかすれに起因するものである可能性があるため、走査線の数を増やすことにより、結果として汚れやかすれを通過しない走査線が増え、請求項２に係る発明における同じ判定結果の数を増やすことができる。
従って、同じ判定結果の数が閾値を超える可能性が高くなるため、汚れやかすれが誤って明暗パターンと判定される可能性が低くなるので、読取り精度を高めることができる。
【００３２】
（請求項９に係る発明の効果）
走査線の総数が３本以上のとき、１次元コードの一部に汚れが付いていた場合、他の走査線を増やして判定をするが、その場合に最初に最上部または最下部の走査線を選択すると、その後、走査線を上下方向に増やすことができない。
従って、最初に最上部および最下部の走査線以外の走査線を選択することによって、汚れやかすれを正確に検索することができる。
【００３３】
（請求項１０に係る発明の効果）
明暗パターンのどちらが相対的に太く算出されている傾向にあるかを判定し、その判定結果に基づいて、明暗パターンの境界の判定基準となる第２の判定における閾値を変更することができるため、印刷のにじみやかすれなどに起因する読取り誤差を是正し、読取り精度を高めることができる。
【発明を実施するための最良の形態】
【００３４】
＜第１実施形態＞
この発明に係る実施形態について図を参照しながら説明する。
以下の各実施形態では、この発明に係る光学的情報読取装置として、１次元コードとしてのバーコードを読取るバーコードリーダを代表に説明する。なお、バーコードとは、ＥＡＮ／ＵＰＣ、インターリーブド２オブ５、コーダバー、コード３９／１２８、スタンダード２オブ５、ＲＳＳなどの１次元コードを意味する。
【００３５】
［主な電気的構成］
この実施形態に係るバーコードリーダの主な電気的構成について、それをブロックで示す図１を参照しながら説明する。
【００３６】
バーコードリーダ１は、光源２、光スキャナ３、受光部４、信号処理部５および制御回路６などを備える。光スキャナ３は光源から出射された出射光により、バーコードＢ上を走査する。受光部４は、光スキャナ３の走査によりバーコードＢの記録面にて反射した反射光を受光し、その受光した反射光の光強度に対応したアナログ信号を信号処理部５へ出力する。信号処理部５は、入力したアナログ信号を明暗のどちらかに対応した２値データに変換する。
【００３７】
制御回路６は、ＣＰＵ７、メモリ８，９およびＲＯＭ１０などを備える。ＣＰＵ７は、信号処理部５から出力された２値データを計数し、その計数値を明暗パターンの幅を示す幅値としてメモリ８に格納する。また、ＣＰＵ７は、メモリ８に格納された各幅値に基づいてコード体系を判別し、バーコードＢにエンコード（符号化）されている光学的情報をデコード（復号）する。
また、ＣＰＵ７は、バーコードＢのデコード処理を行う際に、バーコードＢに存在する汚れやかすれなどによって読取り精度が低下しないようにする処理を実行する。この処理内容に本願発明の特徴が存在するが、これについては後で詳述する。
【００３８】
また、ＣＰＵ７は、光源２、光スキャナ３、受光部４および信号処理部５などの動作を制御する。ＲＯＭ１０は、ＣＰＵ７が各種の制御および処理などを実行するためのシステムプログラムおよびテーブルなどを格納する。システムプログラムおよびテーブルなどは、バーコードリーダ１の電源が立ち上がったときにＲＯＭ１０から読出され、メモリ９のワークエリアに一時的に格納される。
【００３９】
この実施形態では、バーコードリーダ１は、レーザー方式を採用したハンディタイプであり、光源２としてレーザー光源を使用し、光スキャナ３として、光源２から出射されたレーザー光を反射する反射ミラーを使用する。反射ミラーは、揺動装置（図示せず）によって揺動し、反射したレーザー光をバーコードＢの一端から他端に向けてバーコードＢ上を走査する。また、受光部４としてレーザー受光素子を使用する。
【００４０】
図２は、バーコードＢ上を複数回走査した場合の走査線の説明図である。光スキャナ３は、バーコードＢ上を一端のマージンＱから他端のマージンＱを通過するように走査する。光スキャナ３は、バーコードＢをｎ回走査する。レーザ光が通過したラインを走査線とすると、Ｌ１〜Ｌｎの計ｎ本の走査線が存在する。図２に示す例では、走査線Ｌ１〜Ｌｎは、バーコードＢの上端近傍から下端近傍まで等間隔に存在するが、バーコードリーダ１を操作するユーザの手振れの程度、あるいは、バーコードリーダ１およびバーコードＢの相対的な位置関係などによって各走査線間の間隔が変化する。
【００４１】
［バーコードの読取り処理］
次に、ＣＰＵ７が実行するバーコードの読取り処理について図を参照して説明する。
【００４２】
図３は、３本の走査線に対応するバーコードの説明図であり、（ａ）は走査開始位置のズレを示す説明図、（ｂ）は走査開始位置を揃えた状態を示す説明図である。図４は、明パターン中に汚れが存在する場合の明暗の変化点および累積幅値を示す説明図である。図５は、幅値テーブルの説明図である。図６は、累積幅値テーブルの説明図である。図７は、明暗判定結果テーブルの説明図である。図８は、明暗パターンテーブルの説明図である。図９は、復元したバーコードのイメージを示す説明図である。
【００４３】
図１０は、ＣＰＵが実行するバーコードの読取り処理の流れを示すフローチャートである。図１１は、ＣＰＵが図１０のＳ５において実行する第１基準パターン設定処理の流れを示すフローチャートである。図１２は、ＣＰＵが図１０のＳ７において実行する累積幅値算出処理の流れを示すフローチャートである。図１３は、ＣＰＵが図１０のＳ８において実行する明暗パターンテーブル作成処理の流れを示すフローチャートである。
【００４４】
（バーコードの説明）
ここでは、技術内容を分かり易くするため、図４に示す例を用いて説明する。図４に示すように、走査開始側の端部におけるバーコードＢは、暗パターンｂａ１と、明パターンｓｐ１と、暗パターンｂａ２とから構成されている。明パターンｓｐ１の中に汚れｅ１が存在し、この汚れｅ１は、暗パターンと誤って読取られる程度の明度を有する。
【００４５】
また、バーコードＢを計３回走査し、バーコードＢを通過する走査線がＬ１，Ｌ２，Ｌ３の計３本存在するものとする。また、３本の走査線は、いずれも暗パターンｂａ１、明パターンｓｐ１，暗パターンｂａ２を通過しているが、汚れｅ１には、走査線Ｌ２の１本のみが通過しているものとする。このため、走査線Ｌ２に対応する明暗パターンは、暗パターンｂａ１，明パターンｓｐ２，汚れｅ１（暗パターン），明パターンｓｐ３，暗パターンｂａ２になっている。さらに、暗パターンｂａ１の右端および暗パターンｂａ２の両端が、印刷のにじみなどに起因していびつになっている。Ｐ１〜Ｐ１１は、明暗の変化点を示す。
【００４６】
（バーコード走査から幅値格納まで）
ＣＰＵ７は、光源２および光スキャナ３（図１）を駆動してバーコードＢを走査し（図１０のステップ（以下、ステップをＳと略す）１）、その走査により信号処理部５から出力される信号を２値化する（Ｓ２）。続いて、その２値化した信号に基づいて明暗パターンの幅値を算出し、その算出した幅値を幅値テーブルｔａ１（図５）に算出順に格納する（Ｓ３）。例えば、２値化した信号の「０」を計数し、その計数値を明パターンの幅値として幅値テーブルｔａ１に格納し、「１」を計数し、その計数値を暗パターンの幅値として幅値テーブルｔａ1に格納する。
【００４７】
図５に示す幅値テーブルｔａ１は、幅値テーブル番号Ｙａ＝１〜ｎの計ｎ個、つまり走査線の総数ｎと同数の幅値テーブルから構成されている。幅値テーブル番号Ｙａは、走査線Ｌ１〜Ｌｎと対応している。
各幅値テーブルには、それぞれパターン番号Ｘａ＝１〜ｍの計ｍ個の幅値が明暗パターンの配列順に対応付けられている。パターン番号Ｘａの個数ｍは明暗パターンの個数に対応している。図中ハッチングを施したパターンが暗パターンの幅値であり、白抜きのパターンが明パターンの幅値である。
【００４８】
図５に示す例では、図４に示す明暗パターンの各幅値が配列順および走査線別に格納されている。幅値テーブル番号Ｙａ＝１には、走査線Ｌ１に対応する暗パターンｂａ１，明パターンｓｐ１，暗パターンｂａ２の各幅値として、幅値１００，２１０，１３０が配列順に格納されている。幅値テーブル番号Ｙａ＝２には、走査線Ｌ２に対応する暗パターンｂａ１，明パターンｓｐ２，汚れｅ１（暗パターン），明パターンｓｐ３，暗パターンｂａ２の各幅値として、幅値９０，９０，５０，７０，１６０が配列順に格納されている。幅値テーブル番号Ｙａ＝３には、走査線Ｌ３に対応する暗パターンｂａ１，明パターンｓｐ１，暗パターンｂａ２の各幅値として、幅値１２０，１７０，１８０が配列順に格納されている。
【００４９】
そして、ＣＰＵ７は、ｎ回の走査により発生したｎ本の走査線総てに対応する明暗パターンの幅値を幅値テーブルｔａ１に格納したか否かを判定し（Ｓ４）、走査線ｎ本分格納していないと判定した場合は（Ｓ４：Ｎｏ）、再度、バーコードＢの走査から幅値格納までを実行する（Ｓ１〜Ｓ３）。ここでは、走査線の総数ｎが３本であるため、走査線３本分格納したときにＳ４において肯定判定する。
【００５０】
（第１基準パターン設定処理）
そして、ＣＰＵ７は、走査線ｎ本分の幅値を格納したと判定した場合は（Ｓ４：Ｙｅｓ）、第１基準パターン設定処理を実行する（Ｓ５）。ここで、第１基準パターンについて説明する。
バーコードＢの走査開始位置近傍に他のバーコードなどが存在すると、そのバーコードの一部を走査してしまうことがある。このため、図３（ａ）に示すように、バーコードＢを３回走査したときの各走査線に対応する明暗パターンの組合せは、各走査線毎に異なる場合がある。しかし、明暗パターンの境界を正確に抽出するためには、総ての走査線において、できるだけ同じ組合せの明暗パターンの累積幅値を算出する必要がある。
【００５１】
そこで、先ず、幅値テーブルｔａ１を参照し（図１１のＳ１０）、各走査線に共通の明暗パターンのうち、走査線の始点に最も近い明暗パターンを検索する（Ｓ１１）。続いて、検索された明暗パターンを第１基準パターンに設定し、その第１基準パターンの走査線始点側の端部を基準位置に設定する（Ｓ１２）。
【００５２】
各走査線に共通の明暗パターンの検索方法は、例えば、所定の走査線を選択し、その走査線の始点に最も近い複数個の明暗パターンを選択する。そして、その選択した明暗パターンの各幅値の比を算出し、その比と所定の誤差範囲内にある明暗パターンを各走査線毎に検索する。
【００５３】
例えば、図３（ａ）において走査線Ｌ１を選択し、その始点に最も近い５個の明暗パターンＢ３を選択したとする。そして、その明暗パターンＢ３を構成する各パターンの幅値の比が先頭から順に２：１：１：１：２であったとすると、その比と所定の誤差範囲内にある明暗パターンを他の走査線Ｌ２，Ｌ３において検索する。共通の明暗パターンを検索できなかった場合は、共通の明暗パターンが検索されるまで検索対象となる明暗パターンを変更しながら検索を繰り返す。
【００５４】
図３（ａ）に示す例では、明暗パターンＢ３が各走査線に共通であり、かつ、走査線の始点に最も近い。このため、図３（ｂ）に示すように、明暗パターンＢ３を各走査線における先頭の明暗パターンに設定し、明暗パターンＢ３の走査線始点側端部を基準位置に設定する。図４に示す例は、第１基準パターン設定処理が終了し、基準位置が設定された状態である。
【００５５】
（累積幅値算出）
そして、ＣＰＵ７は、第１基準パターンを設定したか否かを判定し（図１０のＳ６）、設定したと判定した場合は（Ｓ６：Ｙｅｓ）、累積幅値算出処理（累積幅値テーブル作成処理）を実行する（Ｓ７）。
ＣＰＵ７は、幅値テーブル番号Ｙａ＝１（初期値）にセットし、幅値テーブル番号Ｙａ＝１に対応付けられた各幅値を累積する準備を行う（図１２のＳ２０）。幅値は２値データであるため、明暗の変化点を座標のように特定することができないが、幅値を累積して累積幅値を算出することにより、基準位置から計測した明暗の変化点を特定することができる。
【００５６】
続いて、幅値テーブルｔａ１を参照し、幅値テーブル番号Ｙａ＝１に対応付けられたパターン番号Ｘａ＝１の幅値を読出す（Ｓ２１）。つまり、第１基準パターンのうち、走査線の始点に最も近いパターンの幅値を初期値として読出す。続いて、パターン番号（Ｘａ←Ｘａ＋１）の幅値、つまり配列順で次の順位の幅値を読出し（Ｓ２２）、前回算出した累積幅値とＳ２２で読出した幅値とを累積して累積幅値を算出する（Ｓ２３）。最初のルーチンでは、前回累積幅値は算出されていないため、Ｓ２１において読出したパターン番号Ｘａ＝１の幅値と、Ｓ２２において読出したパターン番号Ｘａ＝２の幅値とを加算する。図５に示す例では、パターン番号Ｘａ＝１の幅値は１００であり、パターン番号Ｘａ＝２の幅値は２１０であるから、１００＋２１０＝３１０を算出する。
【００５７】
続いて、Ｓ２３において算出した累積幅値を累積幅値テーブルｔａ２に格納する（Ｓ２４）。図６に示す累積幅値テーブルｔａ２は、累積幅値テーブル番号Ｙｂ＝１〜ｎの計ｎ個、つまり走査線の総数ｎと同数の累積幅値テーブルから構成されている。累積幅値テーブル番号Ｙｂは、走査線Ｌ１〜Ｌｎと対応している。
【００５８】
続いて、パターン番号Ｘａ＝ｍになったか否か、つまり幅値テーブル番号Ｙａ＝１に対応付けられた総ての幅値の累積を終了したか否かを判定し（Ｓ２５）、終了していないと判定した場合は（Ｓ２５：Ｎｏ）、次の累積幅値の算出を行う（Ｓ２２〜Ｓ２４）。図５に示す例では、パターン番号Ｘａ＝３の幅値が１３０であるから、前回Ｓ２３において算出した累積幅値３１０に幅値１３０を累積して累積幅値４４０を算出し、それを累積幅値テーブルｔａ２の累積幅値テーブル番号Ｙｂ＝１の累積幅値番号Ｘｂ＝３に格納する。
【００５９】
また、ＣＰＵ７は、幅値テーブル番号Ｙａ＝１に対応付けられた総ての幅値の累積を終了したと判定した場合は（Ｓ２５：Ｙｅｓ）、累積幅値を算出する対象を次の幅値テーブル番号（Ｙａ←Ｙａ＋１）に設定する（Ｓ２６）。続いて、幅値テーブル番号Ｙａ＞ｎであるか否か、つまり総ての幅値テーブルについて幅値の累積処理が終了したか否かを判定する（Ｓ２７）。ここで、終了していないと判定した場合は（Ｓ２７：Ｎｏ）、Ｓ２６において設定した幅値テーブル番号に対応付けられた幅値の累積処理を実行する（Ｓ２１〜Ｓ２６）。
【００６０】
図５に示す例では、幅値テーブルｔａ１の幅値テーブル番号Ｙａ＝２に対応付けられた幅値の累積処理を実行する。つまり、パターン番号Ｘａ＝１，２の各幅値９０と９０を加算して累積幅値１８０を算出し、それを累積幅値テーブルｔａ２の累積幅値テーブル番号Ｙｂ＝２の累積幅値番号Ｘｂ＝２に格納する（図６）。続いて、前回算出した累積幅値１８０と、幅値テーブルｔａ１の幅値テーブル番号Ｙａ＝２のパターン番号Ｘａ＝３の幅値５０とを累積して累積幅値２３０を算出し、それを累積幅値テーブルｔａ２の累積幅値テーブル番号Ｙｂ＝２の累積幅値番号Ｘｂ＝３に格納する（図６）。つまり、汚れｅ１の幅値５０も暗パターンと同様に取り扱い、累積幅値の算出に用いる。
【００６１】
続いて、前回算出した累積幅値２３０と、幅値テーブルｔａ１の幅値テーブル番号Ｙａ＝２のパターン番号Ｘａ＝４の幅値７０とを累積して累積幅値３００を算出し、それを累積幅値テーブルｔａ２の累積幅値テーブル番号Ｙｂ＝２の累積幅値番号Ｘｂ＝４に格納する（図６）。続いて、前回算出した累積幅値３００と、幅値テーブルｔａ１の幅値テーブル番号Ｙａ＝２のパターン番号Ｘａ＝５の幅値１６０とを累積して累積幅値４６０を算出し、それを累積幅値テーブルｔａ２の累積幅値テーブル番号Ｙｂ＝２の累積幅値番号Ｘｂ＝５に格納する（図６）。
【００６２】
続いて、幅値テーブル番号Ｙａ＋１＝３となり（Ｓ２６）、Ｙａ＞３ではないため（Ｓ２７：Ｎｏ）、次の幅値テーブル番号Ｙａ＝３に対応付けられた幅値の累積処理を実行する。つまり、幅値テーブル番号Ｙａ＝３のパターン番号Ｘａ＝１，２の各幅値１２０と１７０とを加算して累積幅値２９０を算出し、それを累積幅値テーブルｔａ２の累積幅値番号Ｘｂ＝２に格納する（図６）。続いて、前回算出した累積幅値２９０と、パターン番号Ｘａ＝３の幅値１８０とを累積して累積幅値４７０を算出し、それを累積幅値テーブルｔａ２の累積幅値番号Ｘｂ＝３に格納する（図６）。
【００６３】
また、幅値テーブルｔａ１のパターン番号Ｘａ＝１に対応する各走査線の幅値１００，９０，１２０は、累積幅値ではないが、そのまま累積幅値テーブルｔａ２の累積幅値番号Ｘｂ＝１に対応する各走査線の累積幅値として格納される。なお、図６に示すように、累積幅値テーブル番号Ｙｂ＝１，３については、それぞれ累積幅値が３つずつ格納されており、累積幅値テーブル番号Ｙｂ＝２については、累積幅値が５つ格納されているが、これは、走査線Ｌ２のみが汚れｅ１を通過しており、走査線Ｌ１，Ｌ３と比較して明パターンおよび暗パターンがそれぞれ１個ずつ多いためである。
【００６４】
以上のように、幅値テーブルｔａ１に格納されている各幅値を明暗パターンの配列順および走査線別に累積して累積幅値を算出し、それらを累積幅値格納テーブルｔａ２に格納することにより、累積幅値テーブルｔａ２を作成する。
【００６５】
ところで、前述した従来のもの（特許文献１）は、特許公報の図２（ｅ）に示されるように、複数の走査ラインの２値データを格納しておき、かつ、２値データを走査ラインの走査方向と垂直な方向で総和した総和値を格納する必要があるため、データ量が大きくなり、大きなメモリ容量を必要とする。
しかし、この実施形態の累積幅値テーブルｔａ２は、累積幅値を示すデータのみを格納すれば良いため、大きなメモリ容量を必要としない。
従って、累積幅値テーブルｔａ２が格納されるメモリ９のメモリ容量を格段に小さくすることができる。
【００６６】
また、従来のものは、サンプリングクロックと同期させて２値データの総和値を算出するため、読取り時間が長くなるし、読取り時間を短縮するために総和値を算出する間隔を長くすると、読取り精度が低下するという問題もある。
しかし、この実施形態における累積幅値を算出する処理は、幅値を累積するだけであるため、従来のものよりも１次元コードを短時間で読取ることができる。
【００６７】
（明暗パターンテーブルの作成）
次に、ＣＰＵ７は、バーコードＢの読取りに用いる明暗パターンテーブルを作成する（図１０のＳ８）。
ＣＰＵ７は、累積幅値テーブルｔａ２の中から所定の累積幅値を１つ選択する（図１３のＳ３０）。例えば、累積幅値テーブルｔａ２に格納されている累積幅値の中から最小の累積幅値を選択する。図６に示す例では、累積幅値テーブル番号Ｙｂ＝２の累積幅値番号Ｘｂ＝１に格納されている累積幅値９０を選択する。
【００６８】
続いて、選択した累積幅値に「１」を加算した値を、次のＳ３２における判定に用いる判定値に設定する（Ｓ３１）。続いて、Ｓ３１において設定した判定値が各走査線上において明暗パターンのどちらに属するかを判定する（Ｓ３２）。例えば、Ｓ３０において累積幅値９０を選択し、Ｓ３１において９１（＝９０＋１）を判定値に設定した場合は、判定値９１が走査線Ｌ１〜Ｌ３において明暗パターンのどちらに属するかを判定する。
【００６９】
続いて、Ｓ３２における判定結果が明パターンであったか否かを判定し（Ｓ３３）、明パターンであったと判定した場合は（Ｓ３３：Ｙｅｓ）、明パターンと判定した回数を示す明判定数に１を加算する（Ｓ３４）。
【００７０】
続いて、Ｓ３２〜Ｓ３４の処理を総ての走査線に対して行ったか否かを判定し（Ｓ３５）、行っていないと判定した場合は（Ｓ３５：Ｎｏ）、再度Ｓ３２〜Ｓ３４の処理を次の走査線に対して行う。
図７に示す明暗判定結果テーブルｔａ３は、Ｓ３３における判定結果を第１判定結果として、Ｓ３４における加算結果を明判定数としてそれぞれ格納する。
【００７１】
明暗パターンのどちらに属するかの判定は、幅値テーブルｔａ１（図５）を参照し、判定値がパターン番号Ｘａの何番に属するかに基づいて行うことができる。
例えば、幅値テーブルｔａ１において奇数のパターン番号Ｘａ＝１，３，５・・・に属する場合は暗パターンに属することになり、偶数のパターン番号Ｘａ＝２，４・・・に属する場合は明パターンに属することになる。
【００７２】
例えば、判定値９１は、幅値テーブル番号Ｙａ＝１のパターン番号Ｘａ＝１に格納されている幅値１００よりも小さいから、パターン番号Ｘａ＝１に属し、暗パターンに属すると決定する。また、判定値９１は、幅値テーブル番号Ｙａ＝２のパターン番号Ｘａ＝１に格納されている幅値９０よりも大きいから、パターン番号Ｘａ＝２に属し、明パターンに属すると決定する。
【００７３】
また、判定値９１は、幅値テーブル番号Ｙａ＝３のパターン番号Ｘａ＝１に格納されている幅値１２０よりも小さいから、パターン番号Ｘａ＝１に属し、暗パターンに属すると決定する。
従って、判定値９１の走査線Ｌ１〜Ｌ３に対する第１判定結果は、それぞれ暗パターン、明パターン、暗パターンとなるから、明判定数は「１」となる。
【００７４】
また、Ｓ３２〜Ｓ３４の処理を総ての走査線に対して行ったと判定した場合は（Ｓ３５：Ｙｅｓ）、明判定数が閾値Ｌｗを超えたか否かを判定する（Ｓ３６）。ここで、閾値Ｌｗを超えたと判定した場合は（Ｓ３６：Ｙｅｓ）、先のＳ３１において設定した判定値は、明パターンに属すると決定する（Ｓ３７）。
【００７５】
また、明判定数が閾値Ｌｗを超えていないと判定した場合は（Ｓ３６：Ｎｏ）、先のＳ３１において設定した判定値は、暗パターンに属すると決定する（Ｓ３８）。また、Ｓ３３において明パターンではなかったと判定した場合は（Ｓ３３：Ｎｏ）、Ｓ３２〜Ｓ３４の処理を総ての走査線に対して行ったか否かを判定する（Ｓ３５）。
【００７６】
例えば、閾値Ｌｗ，Ｌｂをそれぞれ走査線の総数の１／２に設定し、多数決の原理によって明暗パターンを決定する。図７に示す例では、閾値Ｌｗが「１」に設定されており、判定値９１に対する明判定数は「１」であるため、暗パターンに決定する。つまり、走査線の総数３本に対して閾値が「１」であるため、２本以上の走査線において同じ判定結果が出た場合は、その判定結果に対応するパターンに決定される。
【００７７】
ここで、汚れｅ１が関係する判定値１８１，２３１に着目すると、図７に示すように、判定値１８１の走査線Ｌ１〜Ｌ３に対する第１判定結果は、それぞれ明パターン、暗パターン、明パターンであり、明判定数が２であるため、第２判定結果は明パターンになる。また、判定値２３１についても同様に第２判定結果は明パターンになる。
【００７８】
つまり、判定値１８１〜２３１の区間は、明パターンであるとみなされ、汚れｅ１は暗パターンとみなされない。
これが、バーコードリーダ１の特徴であり、累積幅値に基づいて上記の各判定処理を実行することにより、汚れｅ１を明暗パターンから除外することができる。
【００７９】
そして、ＣＰＵ７は、累積幅値テーブルｔａ２に格納されている総ての累積幅値についてＳ３０〜Ｓ３８の処理を実行したか否かを判定し（Ｓ３９）、実行していないと判定した場合は（Ｓ３９：Ｎｏ）、累積幅値テーブルｔａ２の中から次の累積幅値を選択し、その累積幅値について再度Ｓ３０〜Ｓ３８を実行する。
【００８０】
図７に示す例では、境界１〜境界２の区間における第２判定結果は明パターンになっており、累積幅値１８０〜２３０に存在する汚れｅ１（暗パターン）が明パターンと見なされている。これにより、汚れｅ１が暗パターンと判定されることによるバーコードＢの読取り誤りをなくすことができる。
【００８１】
また、総ての累積幅値についてＳ３０〜Ｓ３８の処理を実行したと判定した場合は（Ｓ３９：Ｙｅｓ）、先のＳ３７，Ｓ３８において決定した結果が変化する境界を、読取対象とすべき明暗パターンの境界に決定する（Ｓ４０）。
【００８２】
例えば、図７に示す例では、判定値１００と１０１との間で決定結果が暗パターンから明パターンに変化しているため、判定値１００と１０１との間を、基準位置から数えて１番目の境界１に決定する。また、判定値３００と３０１との間で決定結果が明パターンから暗パターンに変化しているため、判定値３００と３０１との間を２番目の境界２に決定する。さらに、判定値４６０と４６１との間で決定結果が暗パターンから明パターンに変化しているため、判定値４６０と４６１との間を３番目の境界３に決定する。
【００８３】
次に、ＣＰＵ７は、Ｓ４０において決定した各境界間の累積幅値に基づいて明暗パターンテーブルを作成する（Ｓ４１）。例えば、図７に示す例では、基準位置から境界１までの幅値は１００であるから、図８に示す明暗パターンテーブルｔａ４のパターン番号Ｘｄ＝１には幅値１００が格納される。
【００８４】
また、図７において境界１から境界２までの幅値は、２００（＝３０１−１０１）であるから、明暗パターンテーブルｔａ４のパターン番号Ｘｄ＝２には幅値２００が格納される。また、図７において境界２から境界３までの幅値は、１６０（＝４６１−３０１）であるから、明暗パターンテーブルｔａ４のパターン番号Ｘｄ＝３には幅値１６０が格納される。
【００８５】
そして、ＣＰＵ７は、Ｓ４３において作成した明暗パターンテーブルｔａ４の各幅値に基づいてコード体系を判別し、バーコードＢにエンコード（符号化）されている光学的情報をデコード（復号）する。このデコードされた光学的情報を復元すると、図９に示すバーコードを得る。この復元したバーコードには、汚れｅ１が存在しないため、汚れｅ１に起因する読取り誤りが発生することがない。
なお、Ｓ３３〜Ｓ３７では、明パターンを基準として判定および処理を実行したが、暗パターンを基準として判定および処理を実行することもできる。また、Ｓ３３において明パターンではないと判定した場合に（Ｓ３３：Ｎｏ）、暗パターンと判定した回数を示す暗判定数に「１」を加算する処理を実行し、全走査線に対する判定が終了した後に、暗判定数が閾値を超えているか否かを判定する処理を実行し、肯定判定した場合に暗パターンに決定する処理を実行することもできる。
【００８６】
［第１実施形態の効果］
（１）以上のように、第１実施形態のバーコードリーダ１を使用すれば、走査線上における明暗の変化点を求めるときに用いる累積幅値は、明暗パターンの各幅を示す幅値を明暗パターンの配列順及び走査線別に累積した値であるため、累積幅値を格納しておくためのメモリ容量は、従来のように、複数の走査ラインの２値データを格納しておき、かつ、２値データを走査ラインの走査方向と垂直な方向で総和した総和値を格納しておくものよりも少なくすることができる。
【００８７】
（２）しかも、累積幅値は、幅値を累積して算出するものであるため、従来のようにサンプリングクロックと同期させて２値データの総和値を算出するものよりも、１次元コードを短時間で読取ることができる。また、明暗の変化点は累積幅値と対応するため、高精度の読取りを行うことができる。
【００８８】
（３）明暗パターンテーブル作成処理（図１３）では、主として判定処理（Ｓ３２，Ｓ３３，Ｓ３６）を行うだけで第２判定結果（Ｓ３７，Ｓ３８）に基づく明暗パターンの境界を抽出することができるため（Ｓ４０）、判定結果および境界を格納するメモリ領域として大きなメモリ容量が不要であり、かつ、短時間で読取りを行うことができる。
【００８９】
（４）各走査線に共通の明暗パターンであって走査線の始点に最も近い明暗パターンを第１基準パターンとし、第１基準パターンのうち、走査線の始点に最も近いパターンの幅値を初期値とし、初期値から走査線の終点までの幅値を配列順及び走査線別に累積するため、走査線間で累積幅値が異なるという事態の発生をなくすことができる。つまり、１次元コードの読取り精度を高めることができる。
【００９０】
＜第２実施形態＞
次に、この発明の第２実施形態について図を参照して説明する。
この実施形態に係るバーコードリーダは、汚れやかすれなどの極小パターンをその前後のパターンに吸収することを特徴とする。図１４は、極小パターンの吸収を示す説明図である。図１５は、極小パターン吸収処理の流れを示すフローチャートである。なお、この実施形態に係るバーコードリーダは、ＣＰＵ７が極小パターン吸収処理を実行する以外は、前述の第１実施形態のバーコードリーダと同一であるため、同一部分の説明を省略する。
【００９１】
図１５に示す極小パターン吸収処理は、例えば、図１０のＳ３において実行する。ＣＰＵ７は、幅値テーブルｔａ１の幅値テーブル番号Ｙａを初期値の「１」に設定し（図１５のＳ５０）、幅値テーブルｔａ１から読込む幅値のパターン番号Ｘａを初期値の「１」に設定する（Ｓ５１）。続いて、幅値テーブルｔａ１から幅値を読出す（Ｓ５２）。最初のルーチンでは、パターン番号Ｘａ＝１に対応する幅値を読出す。
【００９２】
続いて、その読み込んだ幅値が、予め設定されている閾値以下であるか否かを判定する（Ｓ５３）。この閾値は、例えば、１次元コードを構成する明暗パターンの幅値のうち、最小の幅値よりも小さい値に設定する。
ここで、閾値以下であると判定した場合は（Ｓ５３：Ｙｅｓ）、今回Ｓ５１において読出した幅値と、その読出した幅値の１つ前に格納されている幅値と、１つ後に格納されている幅値とを加算する（Ｓ５４）。
【００９３】
つまり、今回Ｓ５１において読出した幅値が閾値以下である場合は、今回読出した幅値と、その読出した幅値の１つ前に格納されている幅値と、１つ後に格納されている幅値とを加算することにより、今回読出した幅値を前後の幅値に吸収させる。
続いて、Ｓ５４において算出された加算値を新たな幅値として幅値テーブルｔａ１に格納する（Ｓ５５）。この場合、この新たな幅値は、上記の読出した幅値の１つ前に格納されている幅値に上書きし、上記の読出した幅値の１つ後に格納されている幅値以降の各幅値を１つずつ格納順位を繰り上げて移動するようにしてもよい。
【００９４】
続いて、パターン番号Ｘａに「１」を加算し（Ｓ５６）、パターン番号Ｘａがｍになったか否か、つまり幅値テーブルの終端まで幅値を読出したか否かを判定する（Ｓ５７）。ここで、幅値テーブルの終端まで幅値を読出していないと判定した場合は（Ｓ５７：Ｎｏ）、先のＳ５６において算出したパターン番号の幅値を読出し（Ｓ５２）、極小パターンの吸収処理を実行する（Ｓ５３〜Ｓ５６）。
【００９５】
また、幅値テーブルの終端まで幅値を読出したと判定した場合は（Ｓ５７：Ｙｅｓ）、幅値テーブル番号Ｙａに「１」を加算する（Ｓ５８）。続いて、幅値テーブル番号Ｙａが幅値テーブル番号の最後の番号ｎを超えたか否か、つまり総ての幅値テーブルに対して極小パターンの吸収処理を実行したか否かを判定する（Ｓ５９）。ここで、否定判定した場合は（Ｓ５９：Ｎｏ）、先のＳ５８において算出した幅値テーブル番号の各幅値に対して極小パターンの吸収処理を実行する（Ｓ５１〜Ｓ５８）。
【００９６】
図１４に示す例は、本来であれば暗パターンｂａ３は幅値１１の１つの暗パターンであるが、その一部にかすれが存在するために、幅値６の暗パターンｂａ３−ａと、かすれに起因する幅値１の極小の明パターンｆ１と、幅値４の暗パターンｂａ３−ｂとに分割されている。閾値が２カウント（２値データ２カウント分の幅値）であるとすると、極小の明パターンｆ１の幅値「１」と、その１つ前に位置する暗パターンｂａ３−ａの幅値６と、極小の明パターンｆ１の１つ後に位置する暗パターンｂａ３−ｂの幅値４とを加算し、幅値１１（＝６＋１＋４）を算出する。これにより、極小パターンｆ１は、その前後の暗パターンに吸収され、元の暗パターンｂａ３が復元される。
【００９７】
また、上記の例では、暗パターン中にかすれに起因する極小の明パターンが存在する場合を説明したが、明パターン中に汚れに起因する極小の暗パターンが存在する場合も上記の極小パターン吸収処理を実行することにより、極小の暗パターンをその前後の明パターンに吸収させることができる。
【００９８】
［第２実施形態の効果］
以上のように、第２実施形態に係るバーコードリーダを使用すれば、明暗パターン中に所定の幅値以下の汚れやかすれが存在する場合に、その幅値と、その前に算出した幅値と、後に算出した幅値とを加算して１つの幅値とすることができるため、汚れやかすれを明暗パターンに吸収することにより、汚れやかすれに起因して１次元コードの読取り精度が低下してしまうおそれをなくすことができる。
【００９９】
＜変更例＞
上述の第２実施形態では、予め設定した閾値以下の幅値を有するパターンを極小パターンとみなす手法を説明したが、幅値として幅値テーブルｔａ１における出現度数が所定値以上の幅値のうち、最小の幅値よりも小さい幅値のパターンを極小パターンとみなすこともできる。
【０１００】
図１６は、幅値の出現度数の分布を示すヒストグラムである。このヒストグラムは、算出された各幅値に基づいてＣＰＵ７が作成する。図示の例では、出現度数の閾値として予め出現度数Ｒ１が設定されており、出現度数Ｒ１以上の幅値のうち、最小の幅値よりも小さい幅値Ｗ１を極小パターン判定に用いる閾値に設定する。つまり、出現度数Ｒ１未満であり、かつ、幅値Ｗ１以下は、汚れ、かすれ、あるいは、信号処理部５（図１）から出力される信号のノイズ成分であるとみなす。
【０１０１】
上記の変更例に係るバーコードリーダを使用すれば、極小パターンを判定する際の閾値を算定する際に、幅値の出現度数と無関係に総ての幅値を対象とするのではなく、幅値の出現度数の分布を示すヒストグラムを作成して出現度数が所定値以上の幅値を対象とし、それらの幅値のうち、最小の幅値から算定するため、読取りに要する時間を短縮することができる。
例えば、幅値の出現度数と無関係に閾値を設定すると、小さなバーコードあるいは遠くのバーコードを読取った場合、取得した幅値が全体的に小さな値になり、設定していた幅値よりも小さな幅値の中に読取りに必要な幅値が含まれ、読取りから除去されてしまうことがある。この場合、作成する明暗パターンテーブルが誤った情報を含む可能性が高くなり、誤読あるいは不読の可能性が高まる。
そこで、上記の変更例のように、取得した幅値の出現度数に応じて閾値を設定できれば、誤読の可能性が低くなり、読取り精度が高まるし、あるいは、不読の可能性が低くなり、読取り時間が短縮できる。
なお、上記のヒストグラムを作成するためにＣＰＵ７が実行する処理が、この発明の請求項５に記載の第１の出現度数計数手段として機能する。
【０１０２】
＜第３実施形態＞
次に、この発明の第３実施形態について図を参照して説明する。
この実施形態に係るバーコードリーダは、走査線によって明暗パターンの幅に差違が存在する場合であっても、補正によってその差違をなくすことができることを特徴とする。
図１７は、明暗パターンの幅値を補正する原理を示す説明図であり、（ａ）は補正前の明暗パターンの一部を示し、（ｂ）は補正後の明暗パターンの一部を示す。図１８は、幅値補正処理の流れを示すフローチャートである。
【０１０３】
ＣＰＵ７は、前述の第１実施形態において説明した第１基準パターン設定処理（図１１）と同じ処理を実行して第１基準パターンを設定する（図１８のＳ７０）。続いて、第１基準パターンがあるか否かを判定し（Ｓ７１）、あると判定した場合は（Ｓ７１：Ｙｅｓ）、幅値テーブルｔａ１の中から所定の幅値テーブルを基準の幅値テーブルとして選択する（Ｓ７２）。続いて、先のＳ７２において選択した基準の幅値テーブルの中から幅値を一部の所定個数読出し（Ｓ７３）、その読出した各幅値を累積し、その累積幅値をａとする（Ｓ７４）。
【０１０４】
続いて、先のＳ７２において選択した基準の幅値テーブル以外の幅値テーブルの中から所定の幅値テーブルを選択し、先のＳ７３において基準の幅値テーブルから読出した各幅値に対応する幅値を読出す（Ｓ７５）。続いて、その読出した各幅値を累積し、その累積幅値をｂとする（Ｓ７６）。続いて、先のＳ７４において算出した累積幅値ａと、先のＳ７６において算出した累積幅値ｂとの比の値ｒ（＝ａ／ｂ）を算出する（Ｓ７７）。
【０１０５】
続いて、先のＳ７５において幅値を読出した幅値テーブルに対応付けられた各幅値に先のＳ７７において算出した比の値ｒを乗じ、各幅値を基準の幅値テーブルの幅値に補正する（Ｓ７８）。続いて、総ての幅値テーブルに対する幅値の補正を終了したか否かを判定し（Ｓ７９）、終了していないと判定した場合は（Ｓ７９：Ｎｏ）、次の幅値テーブルに対して幅値の補正を実行する（Ｓ７５〜Ｓ７８）。以降、Ｓ７９において肯定判定するまで各幅値テーブルに対して幅値の補正を実行する。これにより、基準の幅値テーブル以外の幅値テーブルに対応付けられた各幅値は、基準の幅値テーブルに対応付けられた各幅値に補正される。
【０１０６】
図１７は、複数の走査線のうち３本の走査線に対応する明暗パターンＢ１，Ｂ２，Ｂ３を例示している。図中、Ａ，Ｂ、Ｃは、それぞれ各明暗パターンに共通の７個の明暗パターンの各幅値の累積幅値を示す。各累積幅値の比は、ａ：ｂ：ｃである。明暗パターンＢ１の各幅値が格納された幅値テーブルを基準の幅値テーブルとすると、明暗パターンＢ１の合計値Ａと、明暗パターンＢ２の合計値Ｂとの比の値は、（ａ／ｂ）となる。
【０１０７】
そこで、明暗パターンＢ２の各幅値に比の値（ａ／ｂ）をそれぞれ乗じ、各幅値を明暗パターンＢ１の幅値に補正する。また、明暗パターンＢ１の合計値Ａと、明暗パターンＢ３の合計値Ｃとの比の値は、（ａ／ｃ）となるから、明暗パターンＢ３の各幅値に（ａ／ｃ）をそれぞれ乗じ、各幅値を明暗パターンＢ１の幅値に補正する。
【０１０８】
［第３実施形態の効果］
以上のように、第３実施形態に係るバーコードリーダを使用すれば、読取り距離の違いなどが原因で、走査線によって明暗パターンの幅に差違が存在する場合であっても、補正によってその差違をなくすことができるため、１次元コードの読取り精度を高めることができる。
【０１０９】
＜変更例＞
明暗パターンの各幅値を総て合計した合計幅値の比の値を用いることもできる。この場合、各走査線に共通していない明暗パターンが走査線の終点側に存在すると、合計幅値を正確に算出することができない。そこで、各走査線に共通の明暗パターンであって走査線の終点に最も近い明暗パターンを第２基準パターンを抽出する。また、第１基準パターンも抽出する。これにより、各走査線に対応する各明暗パターンは、第１基準パターンから第２基準パターンまでが同一のパターンに揃う。
【０１１０】
そして、各明暗パターンについて第１基準パターンの先頭のパターンから、第２基準パターンの最後尾のパターンまでの各幅値を合計して合計幅値をそれぞれ算出する。次に、所定の走査線に対応する明暗パターンの合計幅値を基準の合計幅値とし、その基準の合計幅値と、上記所定の走査線以外の他の走査線に対応する明暗パターンの合計幅値との比の値を、他の走査線別に算出する。次に、算出した比の値を、算出の対象となった他の走査線の各幅値に乗じ、他の走査線に対応付けられた各幅値を上記所定の走査線に対応付けられた幅値に補正する。なお、第２基準パターンの抽出には、前述の第１基準パターンの抽出方法と同じ方法を用いることができる。
【０１１１】
上記の変更例に係るバーコードリーダを使用すれば、１次元コードの印刷のにじみなどが原因で、走査線によって明暗パターンの幅に差違が存在する場合であっても、補正によってその差違をなくすことができるため、１次元コードの読取り精度を高めることができる。
【０１１２】
なお、ＣＰＵ７が上記の第２基準パターンを検索するために実行する処理が、この発明の請求項７に記載の第２の検索手段として機能し、合計幅値を算出するために実行する処理が合計幅値算出手段として機能し、比の値を他の走査線別に算出するために実行する処理が第４の算出手段として機能し、比の値を各幅値に乗じて補正するために実行する処理が第２の補正手段として機能する。
【０１１３】
＜第４実施形態＞
次に、この発明の第４実施形態について図を参照して説明する。
この実施形態に係るバーコードリーダは、最初から総ての走査線に対応する累積幅値を用いて明暗パターンを作成しないことを特徴とする。図１９は、汚れと明暗パターンとの間隔を示す説明図である。図２０は、明暗パターンテーブル作成処理の一部を省略して示すフローチャートである。
【０１１４】
図１９に示す例は、明パターンｓｐ１の中に小さな暗パターンｅ２が存在する状態を示している。最上部の走査線Ｌ１、走査線Ｌ４および最下部の走査線Ｌ５は、暗パターンｅ２を通過しないため、走査線Ｌ１，Ｌ４，Ｌ５に対応する明暗パターンは、暗パターンｂａ１、明パターンｓｐ１および暗パターンｂａ２から構成されている。
一方、走査線Ｌ２，Ｌ３は暗パターンｅ２を通過するため、走査線Ｌ２，Ｌ３に対応する明暗パターンは、暗パターンｂａ１、明パターンｓｐ２、暗パターンｅ２、明パターンｓｐ３および暗パターンｂａ２から構成されている。
【０１１５】
ここで、明パターンｓｐ２および暗パターンｅ２間の境界（２）と、明パターンｓｐ３（明パターンｓｐ１）および暗パターンｂａ２間の境界（３）との間の幅ΔＷが所定値以下である場合、つまり暗パターンｅ２が暗パターンｂａ２の近くに存在する場合は、そのΔＷは、暗パターンｂａ２の印刷のにじみであるとみなし、暗パターンｂａ２の本来の幅値がΔＷ分太くなったものとして処理することができる。
一方、幅ΔＷが所定値を超える場合は、暗パターンｅ２は、暗パターンｂａ２から離れた箇所に存在する汚れである可能性があるため、暗パターンｅ２が汚れであるか暗パターンであるかを判定し、汚れであった場合は、それを誤って暗パターンとして読取らないようにする必要がある。
【０１１６】
（明暗パターン作成処理）
ＣＰＵ７は、累積幅値テーブルｔａ２（図６）の中から優先累積幅値テーブルを選択する（図２０のＳ２９）。ここで、優先累積幅値テーブルとは、明暗パターンテーブル作成処理を実行するに際して最初に用いる累積幅値テーブルのことで、累積幅値テーブルｔａ２の中から最上部および最下部の走査線に対応する累積幅値テーブルを除いたものから、所定数を選択して設定する。
【０１１７】
続いて、Ｓ２９において選択した優先累積幅値テーブルの中から所定の累積幅値を選択する（Ｓ３０ａ）。例えば、優先累積幅値テーブルの中で最小の累積幅値を選択する。続いて、Ｓ３０ａにおいて選択した所定の累積幅値と、優先累積幅値テーブルにおける他の各累積幅値（上記所定の累積幅値以外の累積幅値）との差をそれぞれ算出する（Ｓ３０ｂ）。続いて、Ｓ３０ｂにおいて算出した差が所定値を超える累積幅値が格納されているか否かを判定し（Ｓ３０ｃ）、格納されていると判定した場合は（Ｓ３０ｃ：Ｙｅｓ）、Ｓ２９において選択した優先累積幅値テーブル以外の累積幅値テーブルも選択する（Ｓ３０ｄ）。
【０１１８】
つまり、所定の累積幅値との差が所定値を超える累積幅値が存在するということは、図１９に示すような暗パターンｅ２が存在する可能性がある。そこで、暗パターンｅ２が汚れであるか否かの判定精度を高めるために走査線の最上部および最下部に対応する累積幅値テーブルも選択する。
【０１１９】
図１９に示す例において、走査線Ｌ２〜Ｌ４に対応する累積幅値テーブルが優先累積幅値テーブルに設定されているとする。また、暗パターンｅ２に起因して形成された明パターンｓｐ３の累積幅値と明パターンｓｐ２の累積幅値との差がΔＷであるとする。そして、ΔＷが所定値を超えている場合は、暗パターンｅ２は汚れである可能性があるため、最上部の走査線Ｌ１および最下部の走査線Ｌ５を増やし、暗パターンｅ２が汚れであるか否かの判定精度を高める。
【０１２０】
以降、前述の第１実施形態における明暗パターンテーブル作成処理（図１３）と同じ処理（Ｓ３１〜Ｓ４１）を実行することにより、汚れである暗パターンｅ２が誤って暗パターンとして読取られることのない明暗パターンテーブルを作成する。
なお、暗パターン中にかすれが存在する場合も上記の明暗パターンテーブル作成処理を実行することにより、かすれである明パターンが誤って明パターンとして読取られることのない明暗パターンテーブルを作成する
【０１２１】
［第４実施形態の効果］
（１）以上のように、第４実施形態に係るバーコードリーダを使用すれば、最初から総ての走査線を対象にして累積幅値を算出するのではなく、最上部および最下部の走査線以外の所定数の走査線を対象にして累積幅値を算出し、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合に、総ての走査線を対象にして再度累積を行うため、１次元コードの読取り時間を短縮することができる。
【０１２２】
（２）また、各走査線間で対応するパターンに対する所定の走査線間の累積幅値の差が所定値を超えた場合は、その差は、汚れやかすれに起因するものである可能性があるため、走査線の数を増やすことにより、汚れやかすれを通過しない走査線を増やし、汚れやかすれであるか否かの判定精度を高めることができる。
【０１２３】
＜変更例＞
明暗パターンテーブル作成処理において、最初は、総ての走査線のうち、中央付近の所定数の走査線を選択し、汚れやかすれが存在する可能性が出た場合に、走査線を上下方向に所定数ずつ増やし、それでも汚れやかすれであると判定できない場合にさらに走査線を上下方向に所定数ずつ増やすようにすることもできる。
また、走査線を増やす方向は限定されるものではなく、例えば、最上部から最下部に向けて増やしてもよく、最下部から最上部に向けて増やしてもよい。
【０１２４】
＜第５実施形態＞
次に、この発明の第５実施形態について図を参照して説明する。
この実施形態に係るバーコードリーダは、明暗パターンの一方の幅値が太く算出される傾向にあることに起因する読取り精度の低下をなくすことができることを特徴とする。図２１は、明パターン幅および暗パターン幅の各出現度数分布を示すヒストグラムである。図２２は、閾値決定処理の流れを示すフローチャートである。
【０１２５】
（閾値決定処理）
この閾値決定処理は、前述の明暗パターンテーブル作成処理（図１３）のＳ３０の前、あるいは、Ｓ３０〜Ｓ３５のどこかで実行する。ＣＰＵ７は、暗パターンに決定する際の基準となる閾値Ｌｂおよび明パターンに決定する際の基準となる閾値Ｌｗの基準値をそれぞれ決定する（図２２のＳ９０）。続いて、明パターン幅および暗パターン幅の出現度数分布をそれぞれ作成する（Ｓ９１）。
【０１２６】
続いて、Ｓ９１において作成した各出現度数分布に基づき、明パターン幅および暗パターン幅の各出現度数分布のピーク値地点における幅値の大小を比較する（Ｓ９２）。続いて、暗パターン幅値が明パターン幅値よりも大きいか否か、つまり暗パターン幅値が相対的に太く算出される傾向にあるか否かを判定する（Ｓ９３）。
例えば、図２１に示す例では、明パターン幅値のピーク値地点における幅値が、暗パターン幅値のピーク値地点における幅値よりも大きいため、明パターン幅値が相対的に太く算出される傾向にあると判定する（Ｓ９３：Ｎｏ）。
【０１２７】
ここで、暗パターン幅値が相対的に太く算出される傾向にあると判定した場合は（Ｓ９３：Ｙｅｓ）、閾値Ｌｗの値を基準値から所定割合だけ小さく設定する（Ｓ９４）。つまり、閾値Ｌｗを小さくすることで、各走査線において明パターンと判定され易くする。これにより、暗パターン幅値が相対的に太く算出される傾向を是正することができる。
【０１２８】
また、暗パターン幅値が相対的に太く算出される傾向にはない、つまり図２１に示す例のように、明パターン幅値が相対的に太く算出される傾向にあると判定した場合は（Ｓ９３：Ｎｏ）、閾値Ｌｗの値を基準値から所定割合だけ大きく設定する（Ｓ９５）。つまり、閾値Ｌｗを大きくすることにより、各走査線において明パターンと判定され難くする。これにより、明パターン幅値が相対的に太く算出される傾向を是正することができる。
【０１２９】
［第５実施形態の効果］
以上のように、第５実施形態に係るバーコードリーダを使用すれば、明暗パターンのどちらが相対的に太く算出されている傾向にあるかを判定し、その判定結果に基づいて、明暗パターンの境界の判定基準となる閾値を変更することができるため、印刷のにじみやかすれなどに起因する読取り誤差を是正し、読取り精度を高めることができる。
【０１３０】
＜他の実施形態＞
（１）この発明は、受光部４としてＣＣＤ(Charge Coupled Device)を１次元に配列してなるラインセンサ（リニアセンサ）を用いたバーコードリーダにも適用することもできる。また、光源およびスキャナを備えない、自然光のバーコードにおける反射を利用した方式のバーコードリーダにも適用することもできる。
【０１３１】
（２）幅値補正処理（図１８）では、所定個数の幅値を累積した累積幅値の比の値に基づいて各幅値を補正したが、所定個数の幅値の平均値を算出し、その平均値の比の値に基づいて各幅値を補正することもできる。
【０１３２】
（３）閾値決定処理（図２２）において、明パターン幅値のピーク値地点における幅値と、暗パターン幅値のピーク値地点における幅値との差の大きさに対応して閾値の増減割合を決定することもできる。
【図面の簡単な説明】
【０１３３】
【図１】この発明の実施形態に係るバーコードリーダの主な電気的構成ブロックで示す説明図である。
【図２】バーコードＢ上を複数回走査した場合の走査線の説明図である。
【図３】３本の走査線に対応するバーコードの説明図であり、（ａ）は走査開始位置のズレを示す説明図、（ｂ）は走査開始位置を揃えた状態を示す説明図である。
【図４】明パターン中に汚れが存在する場合の明暗の変化点および累積幅値を示す説明図である。
【図５】幅値テーブルの説明図である。
【図６】累積幅値テーブルの説明図である。
【図７】明暗判定結果テーブルの説明図である。
【図８】明暗パターンテーブルの説明図である。
【図９】復元したバーコードのイメージを示す説明図である。
【図１０】ＣＰＵが実行するバーコードの読取り処理の流れを示すフローチャートである。
【図１１】ＣＰＵが図１０のＳ５において実行する第１基準パターン設定処理の流れを示すフローチャートである。
【図１２】ＣＰＵが図１０のＳ７において実行する累積幅値算出処理の流れを示すフローチャートである。
【図１３】ＣＰＵが図１０のＳ８において実行する明暗パターンテーブル作成処理の流れを示すフローチャートである。
【図１４】極小パターンの吸収を示す説明図である。
【図１５】極小パターン吸収処理の流れを示すフローチャートである。
【図１６】幅値の出現度数を示すヒストグラムである。
【図１７】明暗パターンの幅値を補正する原理を示す説明図であり、（ａ）は補正前の明暗パターンの一部を示し、（ｂ）は補正後の明暗パターンの一部を示す。
【図１８】幅値補正処理の流れを示すフローチャートである。
【図１９】汚れと明暗パターンとの間隔を示す説明図である。
【図２０】明暗パターンテーブル作成処理の一部を省略して示すフローチャートである。
【図２１】明パターン幅および暗パターン幅の各出現度数分布を示すヒストグラムである。
【図２２】閾値決定処理の流れを示すフローチャートである。
【符号の説明】
【０１３４】
１・・バーコードリーダ（光学的情報読取装置）、２・・光源（走査手段）、
３・・光スキャナ（走査手段）、４・・受光部、５・・信号処理部、６・・制御回路、  ７・・ＣＰＵ、８，９・・メモリ、Ｂ・・バーコード、Ｌ１〜Ｌｎ・・走査線。
【図１】
2009123096.tif 000003
【図２】
2009123096.tif 000004
【図３】
2009123096.tif 000005
【図４】
2009123096.tif 000006
【図５】
2009123096.tif 000007
【図６】
2009123096.tif 000008
【図７】
2009123096.tif 000009
【図８】
2009123096.tif 000010
【図９】
2009123096.tif 000011
【図１０】
2009123096.tif 000012
【図１１】
2009123096.tif 000013
【図１２】
2009123096.tif 000014
【図１３】
2009123096.tif 000015
【図１４】
2009123096.tif 000016
【図１５】
2009123096.tif 000017
【図１６】
2009123096.tif 000018
【図１７】
2009123096.tif 000019
【図１８】
2009123096.tif 000020
【図１９】
2009123096.tif 000021
【図２０】
2009123096.tif 000022
【図２１】
2009123096.tif 000023
【図２２】
2009123096.tif 000024