(57)【特許請求の範囲】
【請求項１】
バーコード検出装置であって、バーコードを照明する発光素子と、前記バーコードからの反射光を受光し、受光した光量を光／電気量変換する受光素子と、該受光素子の出力を増幅する増幅器と、該増幅器の出力を入力するＡ／Ｄ変換器と、該Ａ／Ｄ変換器の出力を入力し、前記バーコードの各バーの白黒を判別して、前記バーコードの白黒の幅を検出するマイクロプロセッサとから成り、該マイクロプロセッサが前記Ａ／Ｄ変換器の出力の、バーコードの白バーにおける最大値からの変化量および黒バーにおける最小値からの変化量によってstyle='text-underline:black'>白黒の仮判別を行い、白バーの仮判別ごとに更新する最小白レベルと、黒バーの仮判別ごとに更新する最大黒レベルの中間に設定した閾値を用いて、白バーの仮判別後に、前記Ａ／Ｄ変換器の出力が前記閾値を下回った場合、下回るまでは直前の白バーに含まれると判断して白バーの判別を確定し、黒バーの仮判別後に、前記Ａ／Ｄ変換器の出力が前記閾値を上回った場合、上回るまでは直前の黒バーに含まれると判断して黒バーの判別を確定することを特徴とするバーコードイメージ検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バーコードを光／電気量変換し、各々の白バーおよび黒バーの幅を検出するバーコードイメージ検出装置に関する。
【０００２】
【従来の技術】
従来、バーコードイメージ検出装置において、バーコードを構成する白バーおよび黒バーの判別を行うには、バーコードスキャナの回路のみで構成するにせよ、ソフトウエアによる処理を加えるにせよ、次のように行っていた。まずバーコードの白バーおよび黒バーのパターンを明暗情報として電気信号に変換する。反射光を利用すれば、白バーに対する信号が黒バーに対する信号よりも大きいので、前記バーコードの白バーおよび黒バーを表す電気量の間に閾値を設定して、バーコーのパタ−ンの明暗情報としての信号が閾値よりも大きいか小さいかによって白バーか黒バーかを検出する。また、あるバーコードイメージ検出装置においては、白バーと黒バー対して異なる閾値を設定する方法を採るものも知られている。そして、白および黒の連続する時間を測定し、バーの幅の情報としてメモリ内に蓄え、バーコードをデコードする装置やソフトウエアに受け渡していた。
【０００３】
【発明が解決しようとする課題】
上述の方法では、読み取るバーコードの細さや印刷状態などによって、鮮明な信号が得られず、特に細いバーに対する信号が上や下に偏って、閾値を超えることができないようなときには、白黒を判別することができない。図５にそのような信号の例を示す。バーコード５０を読み取り、比較的鮮明な信号５１に対し、細いバーに対する信号が上や下に偏った信号５２では、閾値５３のみから白黒を判別することができない。
【０００４】
また、ソフトウエアにより処理をする場合には、バーコードのパターン全体の信号をＡ／Ｄ変換してメモリに蓄え、その後に白黒判別を行うならば、前後のデータを調べることによって閾値を調整し、白黒判別を行えると考えられる。しかしバーの幅の情報でなく、信号自体を保持しておくには大量のメモリが必要になる上、逆に搭載するメモリの量によって一度に読むことのできるバーコードの長さが制限されてしまうことも考えられる。
【０００５】
【課題を解決するための手段】
本発明は如上の問題点に鑑みてなされたものであり、バーコードを照明する発光素子と、前記バーコードからの反射光を受光し光／電気量変換する受光素子と、該受光素子の出力を増幅する増幅器と、該増幅器の出力を入力するＡ／Ｄ変換器と、該Ａ／Ｄ変換器の出力を入力し前記バーコードの各バーの白黒を判別して幅を検出するマイクロプロセッサとから成り、該マイクロプロセッサが前記Ａ／Ｄ変換器の出力の、前記バーコードの白バーにおける最大値からの変化量および黒バーにおける最小値からの変化量によってstyle='text-underline:black'>白黒の仮判別を行い、白バーの仮判別ごとに更新する最小白レベルと、黒バーの仮判別ごとに更新する最大黒レベルの中間に設定した閾値を用いて、白バーの仮判別後に、前記Ａ／Ｄ変換器の出力が前記閾値を下回った場合、下回るまでは直前の白バーに含まれると判断して白バーの判別を確定し、黒バーの仮判別後に、前記Ａ／Ｄ変換器の出力が前記閾値を上回った場合、上回るまでは直前の黒バーに含まれると判断して黒バーの判別を確定することを特徴とするバーコードイメージ検出装置を提案するものである。
【０００６】
【発明の実施の形態】
本装置は、バーコードの白黒を読み取るにあたって、マイクロプロセッサによるソフトウエア処理により、閾値と、信号の最大値および最小値からの変化量とを利用して、十分に白黒を再現していないような信号に対しても白黒判別をしてバーの幅の情報に変換するバーコードイメージ検出装置である。
【０００７】
【実施例】
以下、本発明の詳細を、添付図面を参照して説明する。図１は本装置の電気的構成概要図である。本実施例では、ペン型のバーコード読み取り装置であって、ペン先（図示せず）でバーコード１を走査するとそれを読み取り、液晶などの組み込まれた表示装置１０に読み取った結果を表示するような装置を例に説明する。
【０００８】
本実施例による装置の動作を説明する。電源２（＋Ｖ）からの電源供給により、定電流源３が発光素子４（発光ダイオードなど）に一定電流を供給する。すると発光素子４は光を放射し、バーコード１を照明する。発光素子４とバーコード１との間には通常レンズや導光体などの光学部材（図示せず）があり、発光素子４の放射光を効率よくバーコード１の印刷面に伝達する。受光素子５（フォトトランジスタ、ＣＣＤラインセンサなど）は発光素子４が照明したバーコード１からの反射光の一部を受光し、光／電気量変換を行う。受光素子５とバーコード１との間にはレンズや導光体などの光学部材（図示せず）があり、反射光を効率よく受光素子５に伝達すると共に、バーコード１を読み取る解像度を高くしている。受光素子５の出力電流は、バーコード１の白／黒の変化に応じて変化する。本実施例ではペン型のバーコード読み取り装置であるので、ペン先でバーコード１を走査してその白／黒パターンを検出する。また、詳細は述べないが、装置がペン型でなく、ラインセンサを用いる場合（ＣＣＤラインセンサもしくは振動ミラーなど）は、バーコード１を電気的もしくは機械光学的に走査して、バーコード１の白／黒パターンを検出することができる。
【０００９】
演算増幅器７は受光素子５の出力電流を増幅する。Ａ／Ｄ変換器８は増幅された信号を入力とし、Ａ／Ｄ変換してデジタル値化し、それをマイクロコンピュータ９に入力する。マイクロコンピュータ９は信号の白黒判別を行い、その後バーコードの切り出しおよびデコードを行って、結果を表示装置１０に表示する。
【００１０】
マイクロコンピュータ９に内蔵された読み取り動作のソフトウエア部（図示せず）は、図３のような流れになっている。読み取り動作が始まると（ステップ１）、常に信号をＡ／Ｄ変換し監視する。バーが黒で印刷されているとすると、白のマージンがあるはずなので、それを仮定して最初は白バ−（マ−ジン）と見なし、ステップ２で白から黒へ変化するのを待つ。黒に変化したなら、ステップ３で白の持続時間を白バ−の幅としてメモリに保持し、今度はステップ４で黒から白に変化するのを待つ。ただし後述するように、信号のその後の変化によって、直前の白の幅を補正する。黒から白に変化したなら、ステップ５で黒の持続時間を黒バ−の幅としてメモリに保持し、ステップ２に戻って再び白から黒へ変化するのを待つ。
【００１１】
白もしくは黒が一定時間連続した場合には、バーコード１のパターンの読み取りを終了したものと見なし、ステップ６に移って、読み取った白黒の幅のデータを白バーおよび黒バーの幅と見なし、デコードを試みる。データからバーコード部のみを切り出したり、特定の種類のバーコードにデコードする方法については、本発明に本質的な部分ではないので、ここでは述べない。白もしくは黒がどの程度連続したなら読み取りを終了するかについては、読み取るべきバーの太さと、走査する速度とから決めることができる。
【００１２】
次に、閾値の決め方を図２および図４を用いて説明する。ペン型のバーコード読み取り装置（図示せず）がバーコード１１を走査して、信号１２を得たとする。マイクロコンピュータ９は、得られた信号１２をＡ／Ｄ変換器８でＡ／Ｄ変換し、このデータを調べる。そのときにマイクロコンピュータ９は閾値１３を設定し、信号が閾値１３よりも大きくなったり小さくなったりするたびに、白に変化した、もしくは黒に変化した、と見なして白黒を判別する。閾値１３自体は、最小白レベル１６と、最大黒レベル１５との中間に設定する。幅の広い白バーに対しては、信号は白レベル１４まで達するが、幅の狭い白バーに対しては、信号は白レベル１４まで達せず、それよりも小さくなる。その最小値を保持し、最小白レベル１６と呼ぶ。ソフトウエアは、最小白レベル１６と最大黒レベル１５を監視して更新し、どちらかが更新されたなら閾値１３をそれらに合わせて更新する。読み取り動作を始めてから初めて白から黒に変化するときは、最大黒レベルが不明であるので、閾値１３を、予め白レベル１４から一定量下がったところに設定しておく。すると、結果として出力１６を得るため、それぞれの持続時間を測定して幅を得ることができる。
【００１３】
ところが、読み取るバーコードが細すぎたり、印刷が不鮮明な場合には、得た信号が１７に示すようであったとする。このとき最小白レベル１８があまりに小さいために、その時点での閾値１９を超えられなかったとすると、その白バーのデータを取り損ねてしまうため、模式的にその後閾値を更新しなかったとすると、正しくない出力２０を得てしまう。これを解決するために、図４に示すような判別方法を用いる。
【００１４】
図４では、白から黒に変化するのを調べるステップ２の内容を示す。ステップ９で持続時間を測定するためのタイマをリセットする。次にステップ１０で信号のＡ／Ｄ値を取得する。得たＡ／Ｄ値をステップ１５で直前の値と比較し、Ａ／Ｄ値が上昇中であったらステップ１６で現在連続中の白における最大値を更新する。ステップ１７でＡ／Ｄ値を閾値と比較し、閾値よりも高かったら、その時点で実質的に白バーに入ったものと判断して、それ以前は実は黒バーであったと判断し直し、ステップ１８でそこまでの持続時間を直前の黒の持続時間に繰り込んでそれを補正する。そしてステップ１９でタイマを改めてリセットする。一方、ステップ１７においてＡ／Ｄ値が依然閾値よりも小さい場合は、ステップ２０において現在の白の持続時間を評価し、それが既定の時間よりも短い場合には再びステップ１０でＡ／Ｄ値を取得してループを繰り返す。
【００１５】
ステップ２０において、白の持続時間が既定値よりも長い場合には、タイムアウトと判断して白黒判別を終了する。一旦ステップ１７において、Ａ／Ｄ値が初めて閾値を超えた後は、Ａ／Ｄ値が上昇中であっても再び直前の黒の持続時間を補正することはしない。その後Ａ／Ｄ値が上昇から下降に転じると、ステップ１５における判断からステップ２１で、Ａ／Ｄ値が現在連続中の白における最大値よりもある既定の値だけ下降したならば、一応白から黒に変化したと仮判別し、ステップ２２でその白における最大値が最小白レベルよりも小さかったらその値でもって更新する。そしてステップ３で白の幅を記憶し、黒に移る。ステップ２１でＡ／Ｄ値が既定値だけ下降しないうちは、ステップ２０でタイムアウトの判断をし、ループを続行する。
【００１６】
Ａ／Ｄ値が現在連続中の白における最大値よりもどれだけ下降したら黒に変化したと見なすかを決定する既定値は、ノイズよりも十分に大きく、白レベルと黒レベルとの差の半分よりも十分に小さく、また最小白レベルと黒レベル、および最大黒レベルと白レベルの差よりも十分に小さいような値を実験的に調べることで決めることができる。またステップ２０におけるタイムアウトの判断時間は、読み取るべきバーの太さと、走査する速度とから決めることができる。
【００１７】
持続時間の情報を後から補正するため、信号全体の値をメモリに保持することなく、白と黒を切り換えた後で、切り換え後の情報をもとに以前の値を補正することができる。従って、大量のメモリを必要としない構成になっている。このようにすると、信号１７に対して出力２０ではなく、出力２１を得ることができる。出力２１はいわば出力２０を補正したものであって、信号１２に対して出力１６を得たときほど正しい結果ではない。補正したために、白黒の幅は多少実際の幅とは異なってしまう。しかし、本装置による白黒判別は、鮮明な信号が得られないときにも白黒を判別しようとするものであって、それによる誤差は、ある程度までならバーコード自体のコーディングルールによって、デコード時に回復することが可能である。
【００１８】
【発明の効果】
本発明は以上のような構成となっているので、バーコードのバーの太さや印刷状態などによって、十分に白黒を再現できないような信号に対しても、白黒判別を行ってバーの幅の情報に変換することができ、従ってバーコードの読み取り率が向上した。
【図面の簡単な説明】
【図１】  実施例の電気的構成図
【図２】  バーコードパターンと読み取り信号図
【図３】  白黒判別部のフローチャート
【図４】  白判断部のフローチャート
【図５】  従来例
【符号の説明】
１    バーコード
２    電源
３    定電流源
４    発光素子
５    受光素子
６    基準電圧源
７    演算増幅器
８    Ａ／Ｄ変換器
９    マイクロコンピュータ
１０    表示装置
１１    バーコードパターン
１２    バーコード読み取り信号
１３    閾値
１４    白レベル
１５    最大黒レベル
１６    出力
１７    得た信号
１８    最小白レベル
１９    閾値
２０    正しくない出力
２１    正しい出力
【図１】
0004096434.tif 000002
【図２】
0004096434.tif 000003
【図３】
0004096434.tif 000004
【図４】
0004096434.tif 000005
【図５】
0004096434.tif 000006