JP4555952B2 - バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 - Google Patents
バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 Download PDFInfo
- Publication number
- JP4555952B2 JP4555952B2 JP2000064031A JP2000064031A JP4555952B2 JP 4555952 B2 JP4555952 B2 JP 4555952B2 JP 2000064031 A JP2000064031 A JP 2000064031A JP 2000064031 A JP2000064031 A JP 2000064031A JP 4555952 B2 JP4555952 B2 JP 4555952B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- count data
- start margin
- bar code
- margin candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
この発明は、バーコード記号を有する物品などの流通システムにおけるバーコード記号を、光学的読取手段によりバーコードデータとして読み取るバーコード記号読取装置に関し、さらに、そのバーコード記号読取装置を用いてバーコード記号の読み取りを開始するためのスタートマージン候補を検出するスタートマージン候補検出方法、ならびにその検出結果を使用するバーコード記号読取方法に関する。
【0002】
【従来の技術】
バーコード記号読取装置によってバーコード記号の読み取りを行う場合、バーコード記号データのデコードを行う前処理として、スタートマージン候補の検出を行う必要がある。そのスタートマージン候補を検出する手段として、従来から広く用いられている方法として、ソフトウェアによる処理によってこれに対応することが知られている。ここで「スタートマージン候補」とは、バーコード記号の先頭の候補と同義である。
【0003】
従来のバーコード記号読取装置における、一般に知られているソフトウェアによりスタートマージン候補を検出してバーコード記号を読み取る方法の例を、図5に示すバーコード記号の各部の幅を示す時系列データ例と、図6のフローチャートとによって説明する。
【0004】
この方法によれば、図5に示す時系列データから、ソフトウェアでスタートマージン候補の検出を行うために、図6に示すように、読み取った記号の格納データにおけるm番目のデータを読み出し、それが黒データであったとき、そのデータ値(バー幅)のn倍(この例では3倍で、d=格納データm×3)と、その直前のm−1番目の白データのデータ値とを比較演算し、前者より後者の方が大きかったときにスタートマージン候補と判別することによって実現している。ここで、上記演算に使用する「n」の値は、一般的に3〜7程度とする。またmは読み終わった全データのうちの任意の場所である。
【0005】
このような、従来のソフトウェアを用いてスタートマージン候補を検出する場合には、ソフトウェアはこのスタートマージン候補が検出されるまで、すなわちバーコード記号の先頭の候補が検出されるまで、読み取ったデータ値の全てに対して繰り返して上記の比較演算を行い、その後にデコード処理に移行することによってバーコード記号を読み取っている。
【0006】
図5は、時系列的に格納されたバーコード記号のm−2番目からm+3番目までのバー幅のデータ例を示す。図6は、上記「n」を「3」にした場合のソフトウエアによるスタートマージン候補検出処理例を示すフローチャートである。
この例によれば、黒いバーの3倍以上の幅の白いバーが直前にあった時に、その黒いバーがスタートマージン候補であると判断する。
また、他の従来例として、バーコードの位置をマイクロプロセッサ(CPU)を用いないで検出する方法もある。
【0007】
例えば、特開平3−144787号公報に見られるように、走査されたイメージを白と黒に対応する2つのレベルのデータとして読み取るスキャナから“白”に対応するレベルのデータの連続入力期間を計測する計測回路と、この計測回路によって計算された上記連続入力期間と予め設定された期間とを比較する比較回路と、この比較回路による比較の結果に基づいて、データ処理を行うCPUに対してバーコード記号の認識処理を起動させる起動回路とを備え、ハード的にバーコード記号の開始位置を検出してバーコード記号の認識処理を開始させる方法も提案されている。
【0008】
【発明が解決しようとする課題】
しかしながら、上述したような従来のバーコード記号を読み取る方法において、スタートマージン候補の検出をソフトウェアで行う場合には、スタートマージン候補が検出されるまで、すなわちバーコード記号の先頭の候補が検出されるまでデコード処理を開始することができない。従って読み取ったバーコード記号データに対し、スタートマージン候補の検出が成されるまで繰り返し演算をしなければならない。よってバーコード記号データのデコード処理の前に、スタートマージン候補を検出するためのある程度の時間は必要不可欠であり、結果的にバーコード記号の読み取り時間に影響を与えるものである。
【0009】
また、上述したバーコード記号の開始位置をハード的に検出してCPUにバーコード記号の認識処理を開始させる方法も、その検出された黒バーの位置がバーコード記号の先頭の候補であるという1つ(単独)の検出信号をCPUに伝達し、その信号に基づいてCPUが処理することとなり、結果としてソフトウェアの処理に頼らざるを得ないことになる。
【0010】
すなわち、この場合、スタートマージンレジスタとマージンカウンタの値を比較するコンパレータ(比較回路)の出力信号を、直接CPUが取り込むので、CPUは直ちに演算処理に入ることになり、仮に印刷汚れその他の外的要因による汚れ等により、このスタートマージン候補の検出に誤りがあった場合、ソフトウェア処理で再度スタートマージン候補の頭出しをしなければならず、やはり検出時間がかかっていた。
【0011】
この発明は、このような従来の問題を解決するためになされたものであり、上述した従来例のようなソフトウェアを用いることなく、簡単なハードウェアにより、効率良くバーコード記号の読み取りを行うことができるようにし、しかも、印刷されたバーコード記号に印刷汚れその他の外的要因による汚れ等が存在した場合でも、誤りなくスタートマージン候補の検出ができるようにすることを目的とする。それによって、バーコード記号読取装置の製造コストの低減を図ることも目的とする。
【0012】
【課題を解決するための手段】
この発明は上記目的を達成するために、バーコード記号を読み取ってその濃度差により2値化した信号の各部の幅を示すカウントデータを、任意のm段分だけ一時格納しておくm段データバッファ部と、上記カウントデータをn倍するn倍器と、上記m段データバッファ部に格納されたm段分のカウントデータのうちk段前までのデータを比較対象として選択するセレクタ部と、先に上記m段データバッファ部に格納されて上記セレクタ部が選択したデータと、上記n倍器によりn倍された新たなカウントデータとを比較して、n倍された新たなカウントデータの方が小さいときにスタートマージン候補検出フラグを出力する比較器と、その比較器によって検出されたスタートマージン候補検出フラグのデータを時系列的に格納するスタートマージン候補格納部とを有し、少なくとも上記n倍器のn倍および上記セレクタ部が比較対象として選択するデータの段数kは、それぞれ任意に設定可能であることを特徴とするバーコード記号読取装置を提供する。
【0013】
上記バーコード記号のカウントデータを任意の段数分だけ一時格納するm段データバッファ部は、フリップフロップ回路又はメモリ等の記憶回路で構成することができる。
また、上記バーコード記号のカウントデータをn倍するn倍器は、演算回路によって構成するとよい。
【0014】
また、この発明によるスタートマージン候補検出方法は、上記バーコード記号読取装置を用いて、上記n倍器のn倍および上記セレクタ部が比較対象として選択するデータの段数kを、読み取るバーコード記号の印刷状態等の状態に応じて設定し、バーコード記号を読み取ってその濃度差により2値化した信号の各部の幅を示すカウントデータにおける黒バーのカウントデータの設定値のn倍と、それ以前のバーの設定されたk段分の各カウントデータとを比較し、上記カウントデータのn倍の値が、それ以前のバーのk段分の各カウントデータ値のいずれよりも小さいとき、その黒バーのカントデータをスタートマージン候補として検出し、スタートマージン候補格納部に時系列的に格納することを特徴とする。
【0015】
さらに、この発明によるバーコード記号読取方法は、上記スタートマージン検出方法によって上記スタートマージン候補格納手段に時系列的に格納されたスタートマージン候補を、マイクロプロセッサが時系列的に早い方から順次呼び出して、その呼び出したスタートマージン候補に対応するカウントデータからバーコード記号の認識処理を試みる。
【0016】
そして、バーコード記号データであると認識できなかったときは次のスタートマージン候補に対応するカウントデータからバーコード記号の認識処理を試みることを繰り返し、バーコード記号データであると認識できた時系列的に最初のスタートマージン候補に対応するカウントデータから開始したバーコード記号の認識処理を最後まで行って、バーコード記号をデコードすることを特徴とする。
【0017】
【発明の実施の形態】
以下、この発明の実施の形態を図面を用いて具体的に説明する。
図1は、この発明によるバーコード記号読取装置におけるバーコード記号のスタートマージン候補の検出用ハードウェアのブロック図であり、この発明の特徴を最も良く表わす図である。
【0018】
図1において、1は読み取り対象であるバーコード記号、2はバーコード記号読取装置における光学読取部、3はバーコードデータ値カウント部であり、光学読取部2から出力されるバーコードデータを入力して、サンプリングクロック発生回路4からのサンプリングクロックによってカウント動作を行い、白データおよび黒データの幅を示すカウントデータ(数値)に変換する。
【0019】
5はバーコードデータ値カウント部3から出力されるカウントデータを、m段分(mは任意の整数)だけ一時格納するm段データバッファ部であり、フリップフロップ回路やメモリ等の記憶回路で構成される。6はカウントデータ値格納部で、バーコードデータ値カウント部3から順次出力されるカウントデータを、時系列的にすべて格納して保存するフリップフロップ回路やメモリのような記憶回路からなる。7はカウントデータをn倍する演算回路によって構成されるn倍器である。
【0020】
8はセレクタ部であり、m段データバッファ部5に一時格納されたm段分のカウントデータのうち、比較対象とするデータを選択する。9はセレクタ部8からのデータとn倍器7からのデータとを比較する比較器であり、比較の結果によってn倍器7からのデータの方が小さいときにスタートマージン候補検出フラグを出力する。
10はフリップフロップ回路のような記憶機能を有するスタートマージン候補格納部であり、比較器9から出力されるスタートマージン候補検出フラグSMFを、そのとき比較対象としたカウントデータ値と対応させて格納する。
【0021】
11はスタートマージン候補格納部10とカウントデータ値格納部6の各データをマイクロプロセッサ(CPU)12に入力させるためのインタフェイス部である。
CPU12は、インタフェイス部11を介して入力されるスタートマージン候補検出フラグとカウントデータとによって、バーコードの認識処理を実行するマイクロプロセッサであるが、そのプログラムメモリであるROMおよびデータメモリであるRAM等を含むマイクロコンピュータであってもよい。
【0022】
このバーコード読取装置は、上記の構成において、バーコード記号1に対して光学読取部2から、発光ダイオード(LED)やレーザダイオード(LD)等の光源による光を照射し、その反射光をフォトダイオードやフォトトランジスタ等の受光素子で受光して電気信号に変換し、その電気信号を2値化してバーコード記号の濃淡すなわち黒色バー又は白色バーを示すデジタルのバーコードデータに変換する。
【0023】
これをサンプリングクロック発生回路4によって発生されるサンプリングクロックによってカウント動作するバーコードデータ値カウント部3に入力し、CPU12が扱えるカウントデータに変換する。そのカウントデータは、バーコード記号1における各白データおよび黒データの幅を示す数値データ列となる。
そのカウントデータは、カウントデータ値格納部6に保存されるとともに、バーコード記号の印刷状態により「m段」を任意に定めたm段データバッファ部5にも一時格納する。
【0024】
スタートマージン候補を検出するにあたっては、カウントデータ値格納部6に今まさに格納しようとしているカウントデータと、先に一時保存しているm段データバッファ部5のカウントデータとを比較する必要がある。このm段分のデータのうち、どのデータを比較するかを選択するのが、セレクタ部8である。
【0025】
このセレクタ部8には、予めCPU12等によりm段データバッファ部5中の何段前までのデータを比較対象として選択するかを、バーコード記号の印刷状態、印刷汚れ、外的要因による汚れ等の状態に準じて設定しておくことができる。これを、この発明の説明においては設定値kと定義する。
【0026】
また、データを比較するにあたっては、m段データバッファ部5からのカウントデータが、今バーコードデータ値カウント部3から出力されたカウントデータの値の何倍より大きいことをもってスタートマージン候補とするかも、予め設定しておく必要がある。その何倍かを示す「n」の設定及びそのn倍の演算を行うのがn倍器7である。なお、このn倍器7においてカウントデータを何倍にするかの設定も、バーコード記号の印刷状態等の状態により、予めCPU12等により行っておく。これを、この発明の説明においては設定値nと定義する。
【0027】
n倍器7から出力されるデータと、セレクタ部8において選択して出力されたm段データバッファ部5中のk段前までの各データを、比較器9において比較する。このとき、n倍器7から出力されるデータの方が小さいときは、スタートマージン候補があったと判定し、スタートマージン候補検出フラグSMFを出力する。
そのフラグSMFは、スタートマージン候補格納部10に、どのカウントデータによってスタートマージン候補となったかも判るように、カウントデータ値格納部6に格納された最新のカウントデータと対応させて保存される。
【0028】
スタートマージン候補は1つだけとは限らないが、スタートマージン候補検出フラグSMFが発生するたびに、そのフラグSMFとそのとき比較対象になったカウントデータとが、スタートマージン候補格納部10に対応して逐次格納される。ただし、スタートマージン候補は、バーコード記号1における黒色バーの手前に、ある一定以上の幅の白バーが存在しているときに発生させるものである。
【0029】
また、このスタートマージン候補格納部10に格納されているスタートマージン候補検出フラグSMFおよび、カウントデータ値格納部6に格納されているカウントデータは、インタフェイス部11を介してCPU12によって読み出し可能である。これらの構成は全てハードウェアで構築されている。
【0030】
この図1に示したバーコード記号読取装置を用いたスタートマージン候補検出方法のいくつかの実施例を、図2から図4によってそれぞれ説明する。
図2は、図1によって説明したこの発明によるスタートマージン候補を検出するためのハードウェアにおけるバーコードデータの流れと、スタートマージン候補を検出するまでの動作を説明するための図であり、第1の実施例を示す。
【0031】
図2において、(A)に示すバーコード記号を光学読取部2によって読み取って、(B)に示すように2値のバーコードデータに変換する。この例では白レベルを“0”に、黒レベルを“1”にしている。このバーコードデータを、バーコードデータ値カウント部3によって各レベル毎にその継続時間(幅)をサンプリングクロックの周期でカウントし、(C)に示すカウントデータに変換する。
【0032】
すなわち、このカウントデータが、バーコード記号1における記号の濃淡(黒バーと白バー)の幅を示しており、記号の幅が広い方がカウントデータの値が大きい。すなわち、このカウントデータの値は、バーコード記号1を構成する黒バー又は白バーの幅に比例する。
なお、このカウントデータは、図1に示したサンプリングクロック発生回路4からのサンプリングクロックのパルス数により、バーコード記号の各幅を表すようにしている。
【0033】
さらに、図2の(C)には、カウントデータのうち(a)部分から(h)部分のデータを記しているが、時系列的に(a)部分のデータが一番古く、(h)部分のデータが一番新しいものである。すなわち、このカウントデータは、図1に示したm段データバッファ部5に時系列的に格納されている。
【0034】
この第1の実施例においては、予め図1のセレクタ部8に、m段データバッファ部5中の何段前までのデータを比較対象として選択するかの設定値kを「2」とし(k=2)、常に2つ前までのデータと比較することが人為的に設定されている。また、図1のn倍器7には、予め設定値nを「3」とし、常にカウントデータを3倍することが、これも人為的に設定されている。
図2に示す(C)のカウントデータのうち、(a)部について説明すると、ここには白色のバー記号の幅に相当する「100」という値が格納されている。
【0035】
次に(b)部に、上記白色のバー記号の直後の黒色のバー記号の幅に相当した「20」という値が格納されている場合、この第1の実施例では、設定値n=3が予め設定されているので、この黒色のバー記号が、n倍器7を通してカウントデータとして出力される時、その出力値は「20×3=60」となる。この値が、図1の比較器9において、カウントデータの(a)部の時点で既にm段データバッファ部5に格納されているデータ値である「100」と比較される(図2で丸付数字1の比較1)。
【0036】
その比較の結果、60<100となり、スタートマージン候補が検出され、(D)のスタートマージン候補検出フラグが、カウントデータの(b)部に相当する部分で“1”となる。なお、このスタートマージン候補検出フラグは、“1”のとき検出あり、“0”のときは検出なしを示す。
【0037】
次に、(C)に示すカウントデータの(d)部に着目すると、この時のカウントデータは「20」である。ここで、設定値k=2であるので、時系列でその2つ前までのデータ(b)部および(c)部が比較の対象となる。またn倍器7の設定値n=3が設定されており、この黒色のバー記号がカウントデータとして出力されたとき、n倍器7の出力値は「20×3=60」となる。この値が、比較器9においてカウントデータの(b)部および(c)部と比較される(図2で丸付数字2の比較2)が、(b)部の20および(c)部の35よりも大きいため、スタートマージン候補検出フラグは発生せず、“0”となる。
【0038】
以下、これを繰り返し、スタートマージン候補を逐次ハードウェアで自動検出し、そのスタートマージン候補検出フラグを図1のスタートマージン候補格納部10に保存していく。
【0039】
そして、図2の(C)に示すカウントデータの(h)部に着目すると、この時のカウントデータは「20」であり、n倍器7の出力値は「(h)×3=20×3=60」となる。この値が、比較器9において、カウントデータの(g)部および(f)部と比較される(図2で丸付数字4の比較4)。その結果、(g)部のカウントデータは「35」であるから(g)<(h)×3になるため、時系列的にその1つ前の(f)部のカウントデータと比較することになる。(f)部のカウントデータは「70」であるから、(f)>(h)×3となり、スタートマージン候補が検出され、スタートマージン候補検出フラグが(h)部に相当する部分で“1”となり、スタートマージン候補格納部10に格納される。
【0040】
かくして、検出されたスタートマージン候補検出フラグは、図1のスタートマージン候補格納部10に、図2の(D)に示すように(C)のカウントデータの(a)部から(h)部……で示す時系列(カウントデータ値格納部6に格納されたカウントデータ列)と対比できる形で格納される。
【0041】
図1におけるCPU12は、予め定められたバーコード認識用のコード、例えばJANコードをメモリに記憶させており、このスタートマージン候補格納部10からそこに格納されているデータを順次呼び出し、その呼び出したスタートマージン候補からのカウントデータ列によってJANコードによるバーコード記号の認識処理(デコード動作)を試み、バーコード記号データであると認識できなかったときは、次のスタートマージン候補からのカウントデータ列によってバーコード記号の認識処理を試みることを繰り返し、バーコード記号データであると認識できた時系列的に最初のスタートマージン候補のカウントデータから開始したバーコード記号の認識処理を、最後まで行ってバーコード記号を読み取る。
【0042】
図3は、図1に示したバーコード記号読取装置を用いたスタートマージン候補検出方法の第2の実施例を示す。この第2の実施例は、バーコード記号より前の位置に印刷汚れあるいは手その他の外的要因による汚れが存在する場合に、スタートマージン候補を検出するケースであって、その汚れがバーコード記号の比較的前に存在する場合の例を示す。
【0043】
この図3の(A)に示すバーコード記号を図1の光学読取部2で読み取って、(B)に示す2値のバーコードデータに変換し、さらにそれをバーコードデータ値カウント部3によって(C)に示すでカウントデータに変換し、それをm段データバッファ部5およびカウントデータ値格納部6にそれぞれ時系列に格納することは、第1の実施例の場合と同様である。したがって、そのプロセスの詳細な説明は省略する。
【0044】
また、この第2の実施例においても、予め図1のセレクタ部8に設定する設定値kは2(k=2)で、n倍器7に設定する設定値nも3(n=3)であり、第1の実施例の場合と同じである。
図3に示す、この第2の実施例では、前記したようにバーコード記号より前の位置に幾つかの汚れがある場合の、スタートマージン候補を検出する例であるので、その点に絞って以下に説明する。
【0045】
図3の(C)に示すカウントデータのうち、(a)部には白色のバー記号の幅に相当する「60」という値が格納されている。
次に、(b)部には、上記白色のバー記号の直後の黒色のバー記号の幅に相当する「15」という値が格納されている。
この第2の実施例でも、第1の実施例と同様に、設定値n=3が設定されているので、この黒色のバー記号に相当する汚れが、カウントデータとして出力されたとき、n倍器7の出力値は、「15×3=45」となる。
【0046】
この値が、図1における比較器9によって、カウントデータの(a)部の時点で既にm段データバッファ部5に格納されているデータ値である「60」と比較される(図3で丸付数字1の比較1)。その結果として、(a)>(b)×3であるため、スタートマージン候補が検出されたことになり、図3の(D)に示すスタートマージン候補検出フラグが、カウントデータの(b)部に相当する部分で1となる。この検出フラグがスタートマージン候補格納部10に格納される。
【0047】
次に、図3の(C)に示すカウントデータの(d)部に着目すると、この時のカウントデータの値は「8」であるから、n倍器7の出力値は、「8×3=24」となる。ここで設定値kは2であるため、この値と時系列で2つ前までのデータが比較の対象となる(図3で丸付数字2の比較2)が、この値「24」は、(b)部および(c)部の時点で既に格納されているデータ値「15」および「8」よりも大きい。そのため、スタートマージン候補検出フラグは発生せず“0”である。
【0048】
以下このような動作を繰り返し、スタートマージン候補を逐次図1に示したハードウェアで自動的に検出し、その検出フラグをスタートマージン候補格納部10に保存する。
【0049】
次に、図3の(C)に示すカウントデータにおける(h)部に着目すると、この時のカウントデータは「20」であり、従ってn倍器7の出力値は「20×3=60」であり、直前の(g)部のデータは「65」であるから、それと比較すると(図3で丸付数字4の比較4)、(g)>(h)×3となるため、ここでもスタートマージン候補が検出されたことになり、(D)に示すスタートマージン候補検出フラグが、カウントデータの(h)部に相当する部分で“1”となる。
【0050】
このように、この第2の実施例においても、スタートマージン候補を一度検出したという条件で、スタートマージン候補検出動作を停止することはなく、上述した比較演算をハードウェアで継続し、スタートマージン候補をすべて逐次検出して保存をしていく。このようにして検出されたスタートマージン候補検出フラグは、図1のスタートマージン候補格納部10に、図3の(D)に示すように(C)に示すカウントデータの(a)部から(h)部……で示した時系列(カウントデータ値格納部6に格納されたカウントデータ列)と、1:1に対比できる形で格納されている。
【0051】
ところで、この第2の実施例の図3を観察すると、(C)のカウントデータにおける(b)部に相当する部分でスタートマージン候補が検出されているが、図3を見て明らかなように、バーコードデータ上では黒バーに相当するように見える(b)部は、デコードしたいバーそのものではなく、黒色の汚れ部分である。
【0052】
そのため、仮にCPU12がこの部分をバーコード記号のスタートマージンとみなして、カウントデータ値格納部6から読み出したカウントデータ列のデコード処理を開始すると、正常なコードとはならないため、CPU12はこれを所定のバーコード記号であるとは認識しない。かかる場合、CPU12はそのデコード処理を直ちに中止し、正常のバーコード記号をデコードするために、次のスタートマージン候補検出フラグを探す。
【0053】
そして、CPU12は次の動作に移り、図3の(D)に示すスタートマージン候補検出フラグの(h)部を検出する。そして、CPU12は、カウントデータ値格納部6から読み出したカウントデータ列に対して、この(h)部をバーコード記号のスタートとみなしてデコード処理を開始する。このデコード処理の過程において、この場合は前回と異なり、CPU12はこのスタートマージン候補検出フラグが対応する(h)部以降のカウントデータ列をバーコードデータであると認識し、デコード処理を最後まで続行してバーコードを読み取る。
【0054】
このように、図1に示したCPU12は、スタートマージン候補格納部10から格納データを呼び出し、第1の実施例の場合と同様に、どの時点でスタートマージン候補があったかを認識し、バーコード記号データであると認識した時系列的に最初のスタートマージン候補検出フラグを検知して、カウントデータ値格納部6から読み出したカウントデータ列に対する認識(デコード)処理を行って、バーコードを読み取る。
【0055】
ここで、CPU12が図3の(C)における(b)部をスタートマージン候補として取り扱っているにもかかわらず、バーコード記号データとして認識処理しないのは、前述した第1の実施例おいて説明したように、CPU12には、予め定められた、例えばJANコードをメモリに記憶させており、このCPU12が(b)部のデータも最初はスタートマージン候補として扱うが、この(b)部のスタートマージン候補以降のカウントデータ列(データ構成)に対して、それがバーコード記号のデータであるか否かを認識(デコード)処理する。
【0056】
すなわち、CPU12は、このようなスタートマージン候補が正常なものか、又は汚れ等によるものなのかを、デコード処理において判断・処理する。
【0057】
次に、第3の実施例を図4によって説明する。この第3の実施例も前述の第2の実施例と同様、バーコード記号の前に印刷汚れや油汚れ等のある場合のバーコード記号のスタートマージン候補の検出に関する例であるが、その汚れがバーコード記号の直前に存在する場合の例である。
【0058】
かかる場合は、第2の実施例で説明したように予め図1のセレクタ部8に設定する設定値k(比較段数)を2にしたのでは、バーコード記号のスタートマージン候補の検出に不都合を生ずる。すなわち、図4に示す第3の実施例において、第2の実施例の場合と同様に、設定値kをk=2、n倍量のnをn=3と設定すると、(C)に示すカウントデータの(f)部のデータ値は「12」であるので、n倍量の出力値は「12×3=36」となり、これがk段分即ち2段分前のカウントデータの(e)部及び(d)部の「20」および「15」とそれぞれ比較され、それより大であるので、この(f)部ではスタートマージン候補検出フラグは検出されない。このような場合にも、バーコード記号の先頭のスタートマージン候補の検出を行えるようにしたのが、この第3の実施例である。
【0059】
そのため、この第3の実施例では、設定値kをk=4、n倍量のnはn=3とする。
図4の(C)に示すカウントデータのうち、(a)部には白色バー記号の幅に相当する「60」という値が格納されている。次いで(b)部分では、上記白色バーの直後に黒色バーに相当する記号(汚れ)がカウントデータ「15」として出力され、n倍器7の出力値は「15×3=45」となる。この値が、図3に示した第2の実施例と同様に比較器9で比較され、45<60であるため、(a)>(b)×3である。したがって、スタートマージン候補が検出されたことになり、(D)に示すスタートマージン候補検出フラグが(b)部に相当する部分で“1”となる。
【0060】
次に、バーコード記号の直前の黒い汚れ(黒色バー)の幅に相当する(d)部に着目すると、この時のカウントデータの値は「15」であり、n倍器7の出力値は、設定値n=3であるので、「15×3=45」となる。ここで設定値k=4であるため、時系列的に4つ前までのデータがn倍器7の出力値との比較の対象となる。まず、このカウントデータの(d)部の直前の(c)部の格納値「65」と比較され、45<65となり、ここでもスタートマージン候補が検出され、(D)に示すスタートマージン候補検出フラグが、カウントデータの(d)部に相当する部分で“1”となる。
【0061】
次いで、カウントデータにおける(f)部に着目すると、この時のカウントデータは「12」であり、n倍器7の出力値は「12×3=36」となる。ここでこの実施例では、設定値kは、k=4(時系列で4つ前までのカウントデータが比較対象)に設定されているので、まず(e)部のカウントデータ「20」と比較した時、20<36であるから(e)<(f)×3であり、スタートマージン候補は検出されない。
【0062】
次に、その前の(d)部のカウントデータ「15」と比較した時、15<36であるから(d)<(f)×3であり、やはりスタートマージン候補は検出されない。さらに、その前の(c)部のカウントデータ「65」と比較した時、65>36であるから(c)>(f)×3となり、ここで初めてスタートマージン候補が検出されたことになり、(D)に示すスタートマージン候補検出フラグが、(C)に示すカウントデータの(f)部に相当する部分で“1”となる。
【0063】
また、この第3の実施例においても、図4の(C)に示すカウントデータにおける(b)部および(d)部でスタートマージン候補が検出されているが、図4の(A)から明らかなように、バーコードデータ上では黒バーに相当するように見える(b)部及び(d)部は、デコードしたいバーそのものではなく、黒色の汚れの部分である。
【0064】
そこで、この実施例でも前述した第2の実施例の場合と同様に、図1におけるCPU12は、正常なバーコード記号をデコードするために、スタートマージン候補格納部10に格納されているスタートマージン候補フラグを、時系列的に早い方から順次読み出して、そのカウントデータからのカウントデータ列に対してデコード処理を試み、バーコード記号データであると認識した時系列的に最初のスタートマージン候補検出フラグ、図4に示した例では(f)部のスタートマージン候補検出フラグを検出する。そして、そのフラグに対応するカウントデータから開始したバーコード記号の認識(デコード)動作を最後まで続行して、バーコード記号を読み取る(デコードする)。
【0065】
ところで、以上説明した3つの実施例において、比較段数の設定値kを2および4に設定した例を説明したが、この設定値kは、バーコード記号の印刷状態や汚れ等の状態により、人為的に任意に設定することが可能であり、その任意に設定するタイミングや方法には、次のような方法がある。
【0066】
1.バーコード記号読取開始前に、人間が印刷状態や汚れの状態を見てCPU12を介して設定する方法。
2.バーコード記号の読取が不可能な場合には、人為的操作によりCPU12を介して再設定する方法。
3.バーコード記号の読取が不可能であるとCPU12が判断した時、CPU12自身が光学読取部1に次の読取動作を行わせる前に再設定する方法。
【0067】
この発明を実施する際には、これらの何れの方法を用いて比較段数の設定値kを設定してもよい。
また、n倍器7の設定値nについても、上述の各実施例ではその設定倍数を3とした場合についてのみ説明したが、バーコード記号の特徴如何により、3〜7程度に設定すればよい。
【0068】
なお、上述の各実施例におけるバーコード記号を構成する各部のデータ幅(カウントデータ値)の比率は、実際のバーコードのものではなく、あくまで実施例の説明のためのものである。
【0069】
【発明の効果】
以上説明してきたように、この発明によれば、バーコード記号読取装置にm段データバッファ部を設けたことにより、そこに一時保存されたm段分のカウントデータのうちセレクタ部によって選択される任意のk段前までのデータと、現在のカウントデータとを比較することができるので、スタートマージン候補検出の範囲を大きく広げることができる。
またn倍器を設けたことにより、現在のカウントデータを任意のn倍の値にして比較することが可能であり、バーコードの種類等によって倍率を最適値に設定することにより、スタートマージン候補の検出精度を高めることができる。
【0070】
さらに、スタートマージン候補を、カウントデータ格納時にハードウェアで自動検出して、その検出フラグをスタートマージン候補格納部に格納することにより、CPUによるスタートマージン候補検出処理(演算)を省くことができ、また、スタートマージン候補を複数格納することが可能なため、ある1つのスタートマージン候補が誤りであった場合でも、すばやく次のスタートマージン候補からCPUによるバーコードデータのデコード処理を再開できるので、ソフトウェアを簡略化することが可能となり、且つバーコード記号読取時間を短縮することができる。
【図面の簡単な説明】
【図1】 この発明によるバーコード記号読取装置におけるバーコード記号のスタートマージン候補を検出するハードウェアのブロック図である。
【図2】 図1のハードウエアを使用してバーコード記号のスタートマージン候補を検出する第1の実施例を説明するための説明図である。
【図3】 同じく第2の実施例を説明するための説明図である。
【図4】 同じく第3の実施例を説明するための説明図である。
【図5】 従来のバーコード記号のスタートマージン候補検出方法を説明するための時系列に格納されたバーコード記号のバー幅のカウントデータ列を示す図である。
【図6】 従来のソフトウエアによってスタートマージン候補を検出するための処理のフローチャートである。
【符号の説明】
1:バーコード記号 2:光学読取部
3:バーコードデータ値カウント部
4:サンプリングクロック発生回路
5:m段データバッファ部
6:カウントデータ値格納部 7:n倍器
8:セレクタ部 9:比較器
10:スタートマージン候補格納部
11:インタフェイス部
12:マイクロプロセッサ(CPU)
Claims (5)
- バーコード記号を読み取ってその濃度差により2値化した信号の各部の幅を示すカウントデータを、任意のm段分だけ一時格納しておくm段データバッファ部と、
前記カウントデータをn倍するn倍器と、
前記m段データバッファ部に格納されたm段分のカウントデータのうちk段前までのデータを比較対象として選択するセレクタ部と、先に前記m段データバッファ部に格納されて前記セレクタ部が選択したデータと、前記n倍器によりn倍された新たなカウントデータとを比較して、n倍された新たなカウントデータの方が小さいときにスタートマージン候補検出フラグを出力する比較器と、
該比較器によって検出されたスタートマージン候補検出フラグのデータを時系列的に格納するスタートマージン候補格納部と
を有し、少なくとも前記n倍器のn倍および前記セレクタ部が比較対象として選択するデータの段数kは、それぞれ任意に設定可能であることを特徴とするバーコード記号読取装置。 - 前記m段データバッファ部をフリップフロップ回路又はメモリ等の記憶回路で構成した請求項1記載のバーコード記号読取装置。
- 前記n倍器を演算回路によって構成した請求項1記載のバーコード記号読取装置。
- 請求項1乃至3のいずれか一項に記載のバーコード記号読取装置を用いて、前記n倍器のn倍および前記セレクタ部が比較対象として選択するデータの段数kを、読み取るバーコード記号の印刷状態等の状態に応じて設定し、前記バーコード記号を読み取ってその濃度差により2値化した信号の各部の幅を示すカウントデータにおける黒バーのカウントデータの設定値のn倍と、それ以前のバーの設定されたk段分の各カウントデータとを比較し、前記カウントデータのn倍の値が、それ以前のバーのk段分の各カウントデータ値のいずれよりも小さいとき、その黒バーのカンウトデータをスタートマージン候補として検出し、スタートマージン候補格納部に時系列的に格納することを特徴とするバーコード記号のスタートマージン候補検出方法。
- 請求項4記載のバーコード記号のスタートマージン検出方法によって前記スタートマージン候補格納手段に時系列的に格納されたスタートマージン候補を、マイクロプロセッサが時系列的に早い方から順次呼び出して、その呼び出したスタートマージン候補に対応するカウントデータからバーコード記号の認識処理を試み、バーコード記号データであると認識できなかったときは次のスタートマージン候補に対応するカウントデータからバーコード記号の認識処理を試みることを繰り返し、バーコード記号データであると認識できた時系列的に最初のスタートマージン候補に対応するカウントデータから開始したバーコード記号の認識処理を最後まで行って、バーコード記号をデコードすることを特徴とするバーコード記号読取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000064031A JP4555952B2 (ja) | 2000-03-08 | 2000-03-08 | バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000064031A JP4555952B2 (ja) | 2000-03-08 | 2000-03-08 | バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001256431A JP2001256431A (ja) | 2001-09-21 |
JP2001256431A5 JP2001256431A5 (ja) | 2007-06-07 |
JP4555952B2 true JP4555952B2 (ja) | 2010-10-06 |
Family
ID=18583799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000064031A Expired - Fee Related JP4555952B2 (ja) | 2000-03-08 | 2000-03-08 | バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4555952B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012115046A1 (ja) | 2011-02-21 | 2012-08-30 | 株式会社オプトエレクトロニクス | 光学情報読取装置、光学情報読取方法、コンピュータが読み取り可能なプログラム及び記録媒体 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04263381A (ja) * | 1991-02-18 | 1992-09-18 | Fujitsu Ltd | バーコード読取装置 |
JPH08185463A (ja) * | 1994-12-28 | 1996-07-16 | Pentel Kk | バ−コ−ド切り出し方法 |
-
2000
- 2000-03-08 JP JP2000064031A patent/JP4555952B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04263381A (ja) * | 1991-02-18 | 1992-09-18 | Fujitsu Ltd | バーコード読取装置 |
JPH08185463A (ja) * | 1994-12-28 | 1996-07-16 | Pentel Kk | バ−コ−ド切り出し方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012115046A1 (ja) | 2011-02-21 | 2012-08-30 | 株式会社オプトエレクトロニクス | 光学情報読取装置、光学情報読取方法、コンピュータが読み取り可能なプログラム及び記録媒体 |
US9361504B2 (en) | 2011-02-21 | 2016-06-07 | Optoelectronics Co., Ltd. | Optical information reading device, optical information reading method, computer-readable program and recording medium |
Also Published As
Publication number | Publication date |
---|---|
JP2001256431A (ja) | 2001-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4488678A (en) | Method and apparatus for reading a bar code | |
JPH0844809A (ja) | 多値レベル・バー・コードまたは二値レベル・バー・コードのデコーディング方法及び装置 | |
JP4449993B2 (ja) | 光学情報読取装置 | |
US5077463A (en) | Bar code reading apparatus | |
US5393968A (en) | Method and device for reading bar code | |
JP4555952B2 (ja) | バーコード記号読取装置及びそれによるスタートマージン候補検出方法並びにバーコード記号読取方法 | |
JPH0612516A (ja) | バーコード読取り装置 | |
JP2500859B2 (ja) | バ−コ−ド読取装置 | |
JP2729168B2 (ja) | バーコードおよびバーコード読取装置およびその読取方法 | |
US5196685A (en) | Bar code reader | |
EP0895175B1 (en) | Process for scanning a bar-code | |
JPH0981660A (ja) | バーコード読取装置及びバーコード読取方法 | |
JPH05151381A (ja) | バーコード読取装置 | |
JP2011191957A (ja) | バーコード情報読取方法及びバーコード情報読取装置 | |
JP2949958B2 (ja) | バーコード読取装置 | |
JP3711725B2 (ja) | 画像認識装置 | |
JP3891072B2 (ja) | バーコード読取方法およびバーコード読取装置 | |
US6478224B1 (en) | Symbology-independent method and apparatus for identifying potential bar code data | |
JP2677806B2 (ja) | 符号読取装置 | |
JPH06195497A (ja) | バーコードデコーダ | |
JP2742140B2 (ja) | 光学読取装置 | |
JPH08235300A (ja) | バーコード読取装置 | |
JPS621080A (ja) | バ−コ−ド読取装置 | |
JP2004234553A (ja) | バーコード読み取り装置 | |
JPS594747B2 (ja) | バ−コ−ド読取装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040422 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040426 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040604 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040604 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041029 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070302 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070316 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070412 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070412 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090811 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091013 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100525 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20100622 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20100622 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100623 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100623 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130730 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |