JP3994595B2 - バーコード読取方法及び記録媒体 - Google Patents

バーコード読取方法及び記録媒体 Download PDF

Info

Publication number
JP3994595B2
JP3994595B2 JP27092699A JP27092699A JP3994595B2 JP 3994595 B2 JP3994595 B2 JP 3994595B2 JP 27092699 A JP27092699 A JP 27092699A JP 27092699 A JP27092699 A JP 27092699A JP 3994595 B2 JP3994595 B2 JP 3994595B2
Authority
JP
Japan
Prior art keywords
inspection
bar
scanning
line
image data
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
Application number
JP27092699A
Other languages
English (en)
Other versions
JP2000215268A (ja
Inventor
久志 重草
正己 田中
忠夫 大島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP27092699A priority Critical patent/JP3994595B2/ja
Priority to US09/438,847 priority patent/US6332574B1/en
Publication of JP2000215268A publication Critical patent/JP2000215268A/ja
Application granted granted Critical
Publication of JP3994595B2 publication Critical patent/JP3994595B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/1092Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices sensing by means of TV-scanning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10712Fixed beam scanning
    • G06K7/10722Photodetector array or CCD scanning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/1093Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices sensing, after transfer of the image of the data-field to an intermediate store, e.g. storage with cathode ray tube
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1491Methods for optical code recognition the method including quality enhancement steps the method including a reconstruction step, e.g. stitching two pieces of bar code together to derive the full bar code

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Electromagnetism (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Optical Scanning Systems (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、商品の販売管理などに広く使用されているバーコードの読取方法などに関する。
【0002】
【従来の技術】
従来、商品の販売管理などにバーコードが広く使用されているが、このバーコードには、図16(A)に示すように高さ及び幅が一般的なサイズのものに対し、図16(B)に示すように高さが比較的高いものや、図16(C)に示すように高さが比較的低いものなど様々である。このようなバーコードに対して1次元画像として読み取る場合には、図17(A)に示すように、読取ラインがバー/スペースに垂直な位置関係であることが望ましい。このような位置関係であれば、読取ラインが全てのバー/スペースを貫くこととなるからである。また、図17(B)に示すように、バーコードが回転していたり位置がずれていても、ある程度までであれば読取可能である。但し、図17(C)に示すように、バーコードの回転度合いや位置ずれ度合いが大きくなると、読取ラインが一部のバー/スペースしか貫かなくなるため、読取不可能となる。
【0003】
そこで、バーコード全体を2次元画像として捉え、その2次元画像に基づいてバーコードの読み取りを行う手法が考えられている(図18(A)参照)。例えば特開平7−93451号公報には1次元CCDセンサを移動させて2次元的に走査するものが開示され、特開平10−198754号公報には2次元CCDセンサで2次元的に走査するものが開示されている。
【0004】
特開平10−198754号公報に記載のものは、2次元画像の横方向に主検査線、縦方向に副検査線をそれぞれ複数本設定するものであるが、少なくとも1本の主検査線あるいは副検査線がバーコードを貫いていないと読取は不可能であり、やはり、バーコードの回転に対しては回転程度が大きくなると読取ができなくなる。
【0005】
一方、特開平7−93451号公報に記載のものは、2次元画像中のバーコードの傾き角度を計算し、バーコードの傾きに応じて読取ラインを傾けて設定するようにしている(図18(B)参照)。具体的には、バーコードの端部のバーの傾き角度を計算し、そのバーと垂直な角度に読取走査線を設定するのである。このようにすれば、2次元画像中のバーコードが形状自体は変わらず単に回転するだけであれば、理論上、バーコードがどのように回転していても読み取ることができると言える。また、図18(C)に示すように、バーコードの一部が画像領域からはみ出していても、読取走査線が設定できれば、バーコードの読取は可能となる。
【0006】
【発明が解決しようとする課題】
しかしながら、このような手法によって読取が可能である状態には限界がある。例えば、図19(A)に示すように、読取装置がバーコードを正面から捉えている場合には、図19(イ)に示すようにバーコードの画像自体に歪みがなく、読取は可能である。これに対して、図19(B)に示すように、読取装置がバーコードに対して後方に傾いている場合には、図19(ロ)に示すようにバーコードの画像自体に歪みが生じる。つまり、前方側を上底、後方側を下底とする略台形形状となる。この場合には、歪み度合いが小さければ読取走査線を上手く設定すれば読取は可能であるが、歪み度合いが大きくなると、読取走査線がバーコード全体を貫かなくなる可能性が出てくる。また、図19(C)に示すように、読取装置がバーコードに対して左方に傾いている場合には、図19(ハ)に示すようにバーコードの画像自体に歪みが生じる。つまり、右方側を上底、左方側を下底とする略台形形状となる。この場合には、読取走査線を上手く設定すればバーコード全体を貫くこととなり、読み取れる可能性は高い。
【0007】
そして、図19(B)のように読取装置がバーコードに対して後方に傾くと共に、図19(C)に示すように読取装置がバーコードに対して左方に傾く状態が重なると、元々長方形であったバーコードの画像は、図19(ニ)に示すように平行な辺がない四辺形となる。この状況では、図19(ロ)に示す状態よりも、さらに読取走査線がバーコード全体を貫かなくなる可能性が高くなる。つまり、読取装置とバーコードとの相対的な位置関係によって、取り込んだバーコード画像の歪み度合いが大きくなると、従来の手法では読取ができなくなってくる。
【0008】
読取装置の使用に際しては、このようなバーコード読取の際の制約条件が極力少ない方が好ましい。つまり、2次元画像内においてバーコードがどのように回転していても読み取れることは当然とし、上述したように読取装置とバーコードとの相対的な位置関係によって、取り込んだバーコード画像が歪んでいても読み取れることが希求される。
【0009】
そこで、本発明は、取り込んだバーコード画像が歪んでいても、適切に読み取ることができるようにすることを目的とする。
【0010】
【課題を解決するための手段及び発明の効果】
請求項1記載のバーコードの読取方法は、2次元画像検出手段にて検出された2次元的な画像データを一時的に記憶した画像データメモリ上に、2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応する画像データ検査線を設定し、その設定された画像データ検査線に沿って画像データを走査することにより、画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方を検出する。そして、その検出したガードバー上を起点とすると共に当該ガードバーに垂直な読取走査線を設定し、その設定された読取走査線に沿って所定の走査方向へ走査することにより、画像データ内に含まれているバーコードを読み取ることを前提とする。
【0011】
画像データ検査線は水平方向及び垂直方向の2方向に設定されているため、例えば2次元画像中においてバーコードが水平方向に近い角度で存在すれば、水平方向の画像データ検査線を用いることでガードバーを適切に検出できる。そして、傾く角度が大きくなると、水平方向の画像データ検査線とガードバーとの交差角度が小さくなり、適切にガードバーを検出できなくなる可能性が高いため、その場合には、垂直方向の画像データ検査線を用いれば適切に検出できる。このように、バーコードがどのように回転していても、水平方向及び垂直方向のいずれかを用いればガードバーの検出はできる。
【0012】
但し、一方のガードバー上の起点から読取走査線に沿ってバーコードを走査した結果、その読取走査線がバーコードの他方のガードバーを貫かないでバーコードの存在領域外へ逸れてしまう場合も考えられる。例えば、図19(B)のように読取装置がバーコードに対して後方に傾き、図19(ロ)に示すようにバーコード画像が略台形形状に歪んだ場合、あるいは後方に傾くと共に図19(C)に示すように読取装置がバーコードに対して左方に傾く状態が重なって、図19(ニ)に示すように平行な辺がない四辺形となった場合には、読取走査線がバーコードの他方のガードバーを貫かないでバーコードの存在領域外へ逸れてしまう可能性が高い。この状況では、バーコード端部のガードバーに垂直な読取走査線を設定するだけでは、その読取走査線がバーコード全体を貫かなくなる可能性がある。
【0013】
しかし本発明方法によれば、そのような場合であっても、バーコード全体を走査することができる。つまり、読取走査線がバーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーの位置まで戻り、その確実に認識されているバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する(図7参照)、という処理を、最終的に設定された読取走査線が他方のガードバーを貫くまで繰り返し行うからである。なお、図7に例示した状態では、読取走査線を1回だけ新たに設定するだけで対処できたが、当然ながら、その新たに設定した読取走査線がバーコードの存在領域から外れれば、読取走査線を再度設定することとなる。
【0014】
読取装置の使用に際しては、バーコード読取の際の制約条件が極力少ない方が好ましいのであるが、本発明方法によれば、2次元画像内においてバーコードがどのように回転していても読み取れることは当然であり、さらに読取装置とバーコードとの相対的な位置関係によって、取り込んだバーコード画像が歪んでいても適切にバーコードを読み取ることができる。
【0015】
また、請求項2に示す読取方法であっても同様に、取り込んだバーコード画像が歪んでいても適切にバーコードを読み取ることができる。上述した請求項1の場合には、設定した読取走査線がバーコードの他方のガードバーを貫かないでバーコードの存在領域外へ逸れてしまった場合に、新たな走査線を設定する手法であったが(図7参照)、この請求項2の読取方法の場合には、次のようにして読取走査線を設定する。すなわち、一方のガードバー上の起点から読取走査線に沿って所定距離走査した時点あるいは所定数のバーを走査した時点で、直近のバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する、という処理を、最終的に設定された読取走査線が他方のガードバーを貫くまで繰り返し行うのである(図9参照)。なお、図9の場合には最初の読取走査線に加えて新たな読取走査線を2回設定することでバーコード全体を貫くこととなったが、バーコードの大きさと新たな読取走査線を設定する条件とに応じて変わってくる。
【0016】
この新たな読取走査線を設定する条件は、所定距離走査した時点あるいは所定数のバー及びスペースを走査した時点であるが、例えば請求項3に示すように、所定数のバーを1とすれば、順次設定した読取走査線によって確実にバーコード全体を貫くこととなる。
【0017】
なお、当然であるが、請求項3のように「新たな読取走査線を設定する条件を厳しく」した場合には、読取走査線の再設定処理が多くなるので、処理負荷は増える。所定距離を短くした場合も同様である。また、請求項1の手法と比較しても同様であり、本請求項2の手法の方が、読取走査線の再設定処理が多くなる。但し、バーコード全体を貫く読取走査線の設定という観点からすれば、その確実性は相対的に高いと言える。
【0018】
また、上述したバーコード読取方法において読取走査線の起点を設定する場合には、次の点を工夫することができる。
まず、請求項4に示すように、読取走査線のガードバー上での起点として、画像データ検査線とガードバーとの交点を設定したり、あるいは、新たな読取走査線の確実に認識されているバーあるいは直近のバー上での起点として、直前に設定された読取走査線と確実に認識されているバーあるいは直近のバーとの交点を設定することが考えられる。
【0019】
但し、例えば画像データ検査線とガードバーとの交点がガードバーの上下いずれかの端部付近である場合には、ガードバーと垂直な方向への読取走査線を設定する際に不都合が生じる場合が想定される。例えばその交点付近のガードバーの配置状態を見て傾きを把握しようとした場合、端部であるため上手くいかないことも考えられる。また、ガードバーの端部付近を起点とした読取走査線の場合には、歪んだバーコードに対して早期にバーコードの存在領域外へ逸れてしまう可能性が高くなることも想定される。
【0020】
そこで、請求項5に示すように、読取走査線のガードバー上での起点として、画像データ検査線とガードバーとの交点から、端部付近であると判定された側の端部とは反対側へ所定量だけ移動した位置を設定することが好ましい。同様に、新たな読取走査線と確実に認識されているバーあるいは直近のバーとの交点が、当該確実に認識されているバーあるいは直近のバーの上下いずれかの端部付近である場合には、新たな読取走査線の確実に認識されているバーあるいは直近のバー上での起点として、直前に設定された読取走査線と確実に認識されているバーあるいは直近のバーとの交点から端部付近であると判定された側の端部とは反対側へ所定量だけ移動した位置を設定することが好ましい。
【0021】
あるいは、同様の観点から、請求項6に示すように、読取走査線のガードバー上での起点として、ガードバーの中央位置を設定したり、新たな読取走査線の確実に認識されているバーあるいは直近のバー上での起点として、確実に認識されているバーあるいは直近のバーの中央位置を設定することも好ましい。
【0022】
ところで、これまで説明したバーコード読取方法においては、読取走査線をガードバーと垂直に設定し、その読取走査線がバーコードの他方のガードバーを貫かないでバーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーに垂直な読取走査線を新たに設定することを基本としていた。つまり、バーに垂直な読取走査線を設定することで、バーコードの歪みに対処するようにした。
【0023】
しかし、必ずしもバーに垂直な読取走査線を設定するという技術思想ではなく、請求項7に示すような設定手法も採用できる。すなわち、まず、一方のガードバーの中央位置を起点とした読取走査線を設定する。そして、その読取走査線に沿ってバーコードを走査した結果、その読取走査線がバーコードの他方のガードバーを貫かないでバーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーの位置まで戻り、その確実に認識されているバーの中央位置とガードバー上の起点(つまり中央位置)とを結ぶ新たな読取走査線を設定する、という処理を、最終的に設定された読取走査線が他方のガードバーを貫くまで繰り返し行うのである。この場合には、バーの中央位置同士を結ぶ読取走査線を設定していくことにより、やはりバーコードの歪みに対処することができる。
【0024】
一方、上述したバーコード読取方法においては、水平方向及び垂直方向の画像データ検査線に沿って画像データを走査することにより、画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方を検出することを前提としていたが、請求項8に示すように、この水平方向及び垂直方向の画像データ検査線は、それぞれ複数本設定することが好ましい。こうすれば、ガードバーをより検出し易くなるからである。
【0025】
もちろん、画像データ検査線の間隔を非常に細かく設定すれば、確実にガードバーを設定することはできるが、処理負荷は大きくなる。そこで、複数本設定することを前提としながら、請求項9に示すように、2次元画像検出手段の画面中央付近に相当する範囲では相対的に密に設定することが考えられる。2次元画像検出手段の画面中央付近にバーコードの画像が存在する可能性が高いため、このようにすれば、全体としては画像データ検査線の数を過度に多くせずに済む。
【0026】
また、2次元画像検出手段の画面中央付近にバーコードの画像が存在する可能性が高いという着目点からずれば、請求項10に示すように、複数本の水平方向及び垂直方向の画像データ検査線を用いる順番は、2次元画像検出手段の画面中央付近から外側へ向かう順番とすることが好ましい。このようにすれば、早期にガードバーを検出できることとなる。
【0027】
なお、水平方向及び垂直方向の画像データ検査線の用い方としては、請求項11に示すように、いずれか一方の画像データ検査線を全て用いても検出できなかった場合に他方の画像データ検査線を用いて検出することが考えられる。例えば2次元画像中においてバーコードが水平方向に近い角度で存在する可能性が高いことを前提とするならば、最初に水平方向の画像データ検査線を用いることが好ましい。水平方向から多少傾いていても、水平方向の画像データ検査線のいずれかによってガードバーが検出されるからである。そして、傾く角度が大きくなって水平方向の画像データ検査線では適切にガードバーを検出できなくなった場合には、垂直方向の画像データ検査線を用いればよい。もちろん、2次元画像中においてバーコードが垂直方向に近い角度で存在する可能性が高ければ、最初に垂直方向の画像データ検査線を用いればよい。
【0028】
また、画像データ検査線に沿って走査する対象となる画像データに関しては、画像データメモリ上における1画像領域全てを対象としてもよいが、請求項12に示すように、予めバーコードが存在する可能性の高いと考えられる詳細検査対象領域を設定し、その領域内に限ってガードバーを見つける処理を行っても良い。具体的には、画像データメモリ上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、その区域内に含まれる画像データに基づいて明暗の変化点の数を計数する。そして、その計数された明暗変化点数に基づいてバーコードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を詳細検査対象領域として設定するのである。
【0029】
この詳細検査対象領域設定処理にて設定された詳細検査対象領域内に限定し、上述の請求項1〜11のいずれか記載のバーコード読取方法を適用し、画像データ内に含まれているバーコードを読み取れば、全体として処理効率が向上する。つまり、複数画素を1まとめにした検査区域単位で、コードが存在する可能性の高い領域を詳細検査対象領域として推定し、その後、その推定された領域内においてのみ従来通りの1画素毎の明暗パターンを検査するので、その検査範囲が小さくて済む。また、詳細検査対象領域の推定にあっては、検査区域毎に計数した明暗変化点数の大小比較のみ、すなわち整数値の相対比較であるため、処理負荷は小さくて済む。したがって、概略的な存在領域を推定した後にバーコードの正確な位置を検出してデータ解読をする処理まで含めたコード読取処理に要する時間を短縮させることができる。
【0030】
なお、検査区域に関しては、特にその形状が限定されるものではないが、処理効率を考慮すると、請求項13に示すように設定することが好ましい。すなわち、画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域を検査区域とするのである。2次元画像検出手段(例えばCCDエリアセンサ)においては主走査線及び副走査線方向にマトリックス状に画素が配列されているので、このように矩形領域に設定した方がデータが扱いやすい。
【0031】
また、このように詳細検査対象領域を設定した後のガードバーを検出する手法について、請求項14に示すような工夫をしてもよい。請求項1〜11のいずれか記載のバーコード読取方法においては2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応していた画像データ検査線を用いてガードバーを検出していたが、そのような画像データ検査線に代えて、次に示すような第1の検査線を画像データ検査線として採用する。つまり、詳細検査対象領域設定処理によって設定された詳細検査対象領域を構成する検査区域毎に明暗パターンの特徴を調べて類型化し、最も多数の検査区域が属する類型を検出する。そして、その検出された最頻類型に属する任意の検査区域内に存在するバー又はスペースの傾きを算出し、その算出されたバー又はスペースの傾きに直交する傾きを有する第1の検査線を設定するのである。
【0032】
このように設定された第1の検査線は、当該検査線自体を設定する際に、読み取ろうとしているバーコードのバー又はスペースの傾きと直交するようにしてあるため、この第1の検査線を画像データ検査線として用いれば、ガードバーを検出できる可能性が高くなる。つまり、請求項1で示した水平方向及び垂直方向の画像データ検査線を設定する理由は、画像データ中においてバーコードがどのように傾いているかが判らないため、どのように傾いていても対応できるように考慮したためである。
【0033】
それに対して第1の検査線の場合には、バー又はスペースの傾きと直交、つまりバーコードの傾きを反映した検査線を設定できるため、より処理効率が向上する。つまり、水平方向及び垂直方向の画像データ検査線を設定する場合には、水平方向の検査線でしか見つけられないようにバーコードが傾いていると、垂直方向の検査線で見つけようとする処理が結果的には無駄となってしまうが、この第1の検査線を用いる場合にはそのような無駄がない。
【0034】
なお、請求項15に示すように、画像データ検査線として採用する第1の検査線が、詳細検査対象領域の概略中心位置を通るように設定すれば、より処理効率アップが期待できる。必ずしも、詳細検査対象領域の中心にバーコードが存在しているとは限らないが、確率的には、詳細検査対象領域の中心にバーコードが存在している可能性が高いため、このような第1の検査線によってガードバーを検出できる可能性が高くなる。
【0035】
また、詳細検査対象領域の概略中心位置を通る場合、通らない場合共に、第1の検査線を画像データ検査線として採用した結果、バーコードを読み取れない場合も生じうる。その場合の対処としては、次のようにして設定した第2の検査線を用いてガードバーの検出を行うことが考えられる。
【0036】
請求項16に示す場合には、第1の検査線と平行な第2の検査線を少なくとも1本設定し、その設定された第2の検査線を画像データ検査線として採用する。また、請求項17に示す場合には、第1の検査線とは傾きが異なり、且つ詳細検査対象領域内において第1の検査線と交差する第2の検査線を少なくとも1本設定し、その設定された第2の検査線を前記画像データ検査線として採用する。これらのいずれも、2本以上の第2の検査線を設定した場合には、例えば第1の検査線に近いものから順番に採用して順次ガードバーの検出を行えばよい。
【0037】
なお、第1の検査線とは傾きが異なり、且つ詳細検査対象領域内において第1の検査線と交差するような第2の検査線を設定する際には、請求項18に示すように、第2の検査線が第1の検査線と交差する点を、詳細検査対象領域の概略中心位置とすることが考えられる。
【0038】
ところで、上述した請求項14〜18においては、詳細検査対象領域を構成する検査区域毎に明暗パターンの特徴を調べて類型化していたが、この類型化する際には、例えば請求項19に示すように、検査区域内の明暗変化点数が略同一であるものを同一の明暗パターンを有するものとして類型化することが考えられる。また、請求項20に示すように、検査区域内の縦横の明暗変化点数の比が略同一であるものを同一の明暗パターンを有するものとして類型化してもよい。
【0039】
これらはバーコードの性質に基づいている。つまり、バーコードの場合には、バー又はスペースの太さに差異はあるものの、ある程度の本数が検査区域内に含まれれば、概略の明暗変化点数は近いものとなると考えられる。特に、文字などが含まれる検査区域の場合の明暗変化点数と比べれば、かなり明確な違いとなって現れると考えられるため、明暗変変化点の総数に基づくことは適切である。
【0040】
また、バーコードの場合には、バー又はスペースが直線であるため、バー又はスペースの端部が含まれなければ、縦の明暗変化点数と横の明暗変化点数の比はやはり同じ様な値になる可能性が高い。特に、文字などが含まれる検査区域の場合の明暗変化点数の比と比べれば、総数の場合よりさらに明確に区別できると考えられる。したがって、この比に基づく類型化も非常に有効である。さらに、この縦横の明暗変化点数比を用いる場合には、次のような利点もある。つまり、第1の検査線は、「バー又はスペースの傾きθ」に直交するような傾きを持つように設定する必要がある。ここで、検査区域が矩形の場合には、その縦横の明暗変化点数の比はtanθであると近似しても特に問題がない。そのため、類型化する処理中で、その後の第1検査線の傾きを設定するために必要な「バー又はスペースの傾きθ」も同時に得ることができるため、別個、傾き算出処理をしなくてもよくなる。
【0041】
なお、以上の説明でも判るように、明暗変化点数あるいはその比で類型化する場合には、ある程度の本数のバー又はスペースが検査区域内に含まれている必要がある。例えば、バー又はスペースの幅が検査区域の幅よりも大きければ、明暗変化点数が1となり、また明暗変化点数の比も1となることが考えられ、その場合には適切な類型化が難しくなるからである。そのため、請求項21に示すように、検査区域については、複数のサイズの中から選択可能にしておくことが好ましい。この複数のサイズについては、実際に使用される可能性の高いバーコードの種類などを考慮して設定する。また、選択については、利用者がマニュアルで切り替えて選択してもよいし、自動的に選択できるようにしてもよい。自動的に選択する場合には、例えばあるサイズで処理を実行して適切に読み取れなかった場合には次のサイズに切り替えて再度処理を実行する、といった手法が考えられる。
【0042】
なお、このようなバーコードの読取方法を実行する機能は、例えば、デジタル回路やコンピュータシステム側で起動するプログラムとして備えられる。プログラムで実現する場合、例えば、フロッピーディスク、光磁気ディスク、CD−ROM、ハードディスク等の機械読み取り可能な記録媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ROMやバックアップRAMを機械読み取り可能な記録媒体として前記プログラムを記憶しておき、このROMあるいはバックアップRAMをコンピュータシステムに組み込んで用いても良い。
【0043】
【発明の実施の形態】
以下に、本発明の好適な実施例を図面に基づいて説明する。尚、本発明の実施の形態は、下記の実施例に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【0044】
[第1実施例]
図1は上述した発明が適用された実施例としてのバーコード読取装置1のブロック図を示す。本実施例のバーコード読取装置1は、カメラ部制御装置10とシステム制御装置30の2つの制御装置を備えており、それぞれで分担して制御を行っている。
【0045】
まず、カメラ部制御装置10側に関連する構成としては、CCDエリアセンサ11と、AGCアンプ12と、ローパスフィルタ(LPF)13と、基準電圧生成部14と、負帰還アンプ15と、補助アンプ16と、2値化回路17と、周波数分析器18と、A/D変換器19と、画像メモリ20と、画像メモリコントローラ21と、メモリ22と、照明発光ダイオード(照明LED)30などが挙げられる。
【0046】
CCDエリアセンサ11は、2次元的に配列された複数の受光素子であるCCDを有しており、外界を撮像してその2次元画像を水平方向の走査線信号として出力する。この走査線信号はAGCアンプ12によって増幅されて補助アンプ16及びA/D変換器19に出力される。
【0047】
AGCアンプ12は、外部から入力したゲインコントロール電圧に対応する増幅率で、CCDエリアセンサ11から出力された走査線信号を増幅するのであるが、このゲインコントロール電圧は負帰還アンプ15から出力される。この負帰還アンプ15には、AGCアンプ12から出力される走査線信号をローパスフィルタ13で積分して得た出力平均電圧Vavと、基準電圧生成部14からの基準電圧Vstとが入力されており、これらの電圧差△Vに所定ゲインを掛けたものがゲインコントロール電圧として出力される。
【0048】
補助アンプ16は、AGCアンプ12によって増幅された走査線信号を増幅して2値化回路17に出力する。この2値化回路17は、上記走査線信号を、閾値に基づいて2値化して周波数分析器18に出力する。周波数分析器18は、2値化された走査線信号の内から所定の周波数成分比を検出し、その検出結果は画像メモリコントローラ21に出力される。
【0049】
一方、A/D変換器19は、AGCアンプ12によって増幅されたアナログの走査線信号をディジタル信号に変換して、画像メモリコントローラ21に出力する。
画像メモリコントローラ21は、アドレスバス及びデータバスによって画像メモリ20と接続されていると共に、やはりアドレスバス及びデータバスによってカメラ部制御装置10及びメモリ22と接続されている。
【0050】
カメラ部制御装置10は、ここでは32bitのRISCCPUを用いて構成されており、基準電圧生成部14、A/D変換器19及び照明LED25を制御することができるようにされている。基準電圧生成部14に対する制御とは、基準電圧を変更設定するなどの制御である。また、照明LED25は、読取対象のバーコードに対して照明用の赤色光を照射するものである。
【0051】
また、カメラ部制御装置10は、システム制御装置30との間でデータのやり取りができるようにされている。
一方、システム制御装置30側に関連する構成としては、認識用LED31と、ブザー32と、液晶ディスプレイ(LCD)33と、キーパット34と、読み取り用スイッチ35と、シリアルI/F回路36と、IrDAI/F回路37と、FLASHメモリ38と、DRAM39と、リアルタイムクロック40と、メモリバックアップ用電池41などを備えている。
【0052】
認識用LED31は、読み取り対象の画像情報が適切にデコードされた場合に点灯され、所定時間後に消灯される。また、ブザー32も、読み取り対象の画像情報が適切にデコードされた場合に鳴動される。
液晶ディスプレイ33は、読み込んだバーコードなどを表示するためなどに用いられる。本実施例では2階調表示のLCDとして構成されている。キーパット34は、例えばテンキーや各種ファンクションキーを備えており、情報入力のために用いられる。読み取り用スイッチ35は、利用者が読取処理の開始を指示するためのスイッチである。
【0053】
IrDAI/F回路37は、IrDA(Infrared Data Association )規格に準じた方法により図示しない外部装置との間で通信を行うものであり、図示しない通信用発光素子を介してデータを外部装置に送信したり、図示しない通信用受光素子を介して外部装置からの信号(例えばシステムを動かすためのプログラムや送信を待機する命令等)を受信する。
【0054】
システム制御装置30、FLASHメモリ38、DRAM39、リアルタイムクロック40は、アドレスバス及びデータバスによって相互に接続されている。画像メモリ20と接続されていると共に、やはりアドレスバス及びデータバスによってカメラ部制御装置10及びメモリ22と接続されている。
【0055】
カメラ部制御装置10は、ここでは16bitのCPUを用いて構成されており、上述したキーパット34や読み取り用スイッチ35の入力を受け付けたり、認識用LED31やブザー32への出力を制御したり、シリアルI/F回路36やIrDAI/F回路37を介した通信制御を行なう。そして、カメラ部制御装置10を介して入力したバーコードの画像を液晶ディスプレイ33に表示させることもできる。
【0056】
このような構成を備えた本実施例のバーコード読取装置1は、CCDエリアセンサ11から出力される走査線信号をAGCアンプ12によって増幅し、その増幅された走査線信号をA/D変換器19によってディジタルデータに変換したものを取り込み、そのデータに基づいて、2次元画像内に含まれているバーコードを読み取る。A/D変換器19によってディジタルデータに変換された1画面分のデータは画像メモリ20に一時記憶される。具体的には、図2(A)に示すように、CCDエリアセンサ11の左上の画素を開始点の画素P1とし、左から右へ移動すると共に、上から下へ移動するような順番で最終的には右下の画素が終了点の画素Pnとなる。そして、図2(B)に示すように、その順番(P1〜Pn)で画像メモリ20内の所定のアドレスA(P1)〜A(Pn)に格納される。なお、以下の説明においては、実際には画像メモリ20内のデータを用いて処理するのであるが、視覚的に理解が容易となるように、図2(A)に対応するような2次元の画像領域を想定して進めることとする。
【0057】
本実施例におけるバーコードの読取手法は次の通りである。
まず、この2次元画像領域上に、図3に示すような主検査線及び副検査線を設定する。主検査線は画像領域に対して水平方向の検査線であり、副検査線は画像領域に対して垂直方向の検査線である。なお、主検査線が「水平方向の画像データ検査線」に相当し、副検査線が「垂直方向の画像データ検査線」に相当する。
【0058】
そして、図4,5に示すように、その設定された主検査線又は副検査線に沿って画像データを走査することにより、画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方(図4,5中ではGb1で示す。)を検出する。なお、図3に示すように、主検査線は画像を左から右へ検査していき、副検査線は画像を上から下へ検査していく。
【0059】
そして、その検出したガードバーGb1上を起点とすると共にガードバーGb1に垂直な読取走査線を設定する。本実施例では、最初に主検査線を用いて走査し(図4参照)、全ての主検査線を用いてもガードバーGb1を検出できなければ、次に副検査線を用いてガードバーGb1検出を行うようにしている。
【0060】
ガードバーGb1の検出に際しては、図6に示すように、主検査線がバーの候補に交差した点(交点)の周辺を探索して、そのバー候補が直線であることを認識する。この認識は、次のようにして行う。すなわち、検出したガードバーGb1の交点を中心として所定距離だけ両方向にバーを辿り、水平方向の変化分ΔAと垂直方向の変化分ΔBを所定数求め、全ての傾きΔB/ΔAがほぼ一定値であれば、直線であると判断する。直線でなければバーではない。
【0061】
また、読取走査線の設定は次のようにして行う。読取走査線の起点は、主検査線とガードバーGb1との交点である。また、ガードバーGb1の傾きがΔB/ΔAであれば、それに垂直な直線の傾きはΔA/ΔBである。したがって、主検査線とガードバーGb1との交点を起点とした傾きΔA/ΔBの直線を、読取走査線として設定するのである。つまり、読取走査線の設定に際しては、ガードバーGb1や読取走査線の傾き角度を計算するといった面倒な処理はしない。
【0062】
このようにガードバーGb1の垂直な読取走査線を設定した場合、2次元画像中において元々長方形のバーコードが歪んでいなければ、その読取走査線は、他方のガードバーGb2を必ず貫くこととなる(図4,5参照)。そのため、その読取走査線に沿って走査して得たデータに基づけば、バーコードの情報を適切にデコードすることができる。
【0063】
しかし、バーコード読取装置とバーコードとの位置関係によって、2次元画像中のバーコードが図19(ロ)に示すように略台形形状に歪んだり、図19(ニ)に示すように平行な辺がない四辺形に歪むことが考えられる。この場合、図7に示すように、一方のガードバーGb1上の起点から読取走査線に沿ってバーコードを走査した結果、その読取走査線がバーコードの他方のガードバーGb2を貫かないでバーコードの存在領域外へ逸れてしまう可能性がある。その場合に本実施例では、読取走査線がバーコードの存在領域外へ逸れた位置から読取走査線を走査方向とは逆に辿り、その読取走査線に基づいて確実に認識されているバーの位置まで戻る。そして、その確実に認識されているバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する(図7参照)。なお、図7においては、読取走査線を1回だけ新たに設定するだけで他方のガードバーGb2を貫いているが、必要に応じて2回以上新たな読取走査線を設定すればよい。
【0064】
このようにして、バーコード画像が歪んでいることによって、最初に設定した読取走査線だけでは対処できない場合には、2本以上の読取走査線を設定し、その読取走査線に沿って走査して得たデータに基づくことで、歪んだバーコード画像からも情報を適切にデコードすることができる。バーコード読取装置1の使用に際しては、バーコード読取の際の制約条件が極力少ない方が好ましいため、本実施例は非常に有効である。
【0065】
図8は、カメラ部制御装置10が実行するバーコード読取処理を示すフローチャートである。主要な内容については上述したので、全体的な流れについて簡単に説明する。
最初のステップS110では、変数i,jをそれぞれ1に設定し、続くS120において主検査線(i)を設定する。続いて、その主検査線(i)に沿って検査した結果に基づいてバーコードの特徴パターンの有無を判定し(S130)、無ければ、変数iをインクリメントし(S140)、変数iが主検査線の設定本数Mよりも大きいか否かを判断する(S150)。変数i≦設定本数Mであれば(S150:NO)、S120へ戻って、前回とは別の主検査線を設定する。このようにして、バーコードの特徴パターンを見つけるまで、主検査線を変更しながら検査していく。本実施例では、画像領域中の中央付近にバーコードの画像が存在する可能性が高いという観点から、複数本設定された主検査線の使用順番は、画像領域の中央付近から外側へ向かう順番とされている。
【0066】
そして、S130の判定によりバーコードの特徴パターンが有った場合には、S160へ移行してガードバーGb1を検出する。そして、ガードバーGb1の傾きを検出し(S170)、そのガードバーGb1に垂直な読取走査線を設定する(S180)。そして、その読取走査線に沿って走査し(S190)、その結果、他端のガードバーGb2を検出できなかった場合には(S200:NO)、S210へ移行し、確実に検出されたバーまで戻ってそのバーの傾きを検出する。そして、S180へ戻り、そのバーに垂直な読取走査線を新しく設定し、S190以降の処理を繰り返す。
【0067】
一方、バーコードの他端のガードバーGb2を検出した場合には(S200:YES)、S210にて誤り検査を行い、誤りが無ければ、S220にて読み取ったデータを文字データに変換して出力し、誤りが有ればそのまま本処理ルーチンを終了する。
【0068】
また、S150にて肯定判断、すなわち、設定された主検査線を全て用いて検査してもバーコードの特徴パターンを見つけられなかった場合には、S240〜S270において、今度は副検査線を用いた検査を実行する。この内容は主検査線の場合のS120〜S150の処理と同様であり、副検査線(j)をj=1〜N(設定本数)まで順番に用いてバーコードの特徴パターンを見つける処理を行う。なお、この場合も、複数本設定された副検査線の使用順番は、画像領域の中央付近から外側へ向かう順番とされている。
【0069】
図8に示す例では、「一連の読み取り操作を終えて終了する」としたが、より正確さを期する場合、図8に示す処理を複数回繰り返し、同じ結果が得られた場合に終了するようにすることもできる。
[第2実施例]
上記第1実施例の場合には、設定した読取走査線がバーコードの他方のガードバーGb2を貫かないでバーコードの存在領域外へ逸れてしまった場合に、新たな走査線を設定する手法であったが、次に示す設定手法を用いても同様に実現できる。
【0070】
つまり、第2実施例の場合の読取走査線の設定手法は、一方のガードバーGb1上の起点から読取走査線に沿って所定距離走査した時点あるいは所定数のバー及びスペースを走査した時点で、直近のバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する、という処理を、最終的に設定された読取走査線が他方のガードバーGb2を貫くまで繰り返し行うというものである(図9参照)。なお、図9の場合には最初の読取走査線に加えて新たな読取走査線を2回設定することでバーコード全体を貫くこととなったが、バーコードの大きさと新たな読取走査線を設定する条件とに応じて変わってくる。
【0071】
図10は、この第2実施例の場合のバーコード読取処理を示すフローチャートである。
S1110〜S1170及びS1220〜S1270の処理内容は、上述した第1実施例の場合の図8のフローチャートにおけるS110〜S170及びS220〜S270と全く同様であるので説明は省略し、変更部分についてのみ説明する。
【0072】
S1170にてガードバーGb1の傾きを検出した後、S1180では、そのガードバーGb1の中点に読取走査線の起点を設定し、そのガードバーGb1に垂直な読取走査線を設定する(S1190)。そして、その読取走査線に沿って所定本数のバーを走査する(S1200)。その結果、バーコードの他端のガードバーGb2を検出したかどうかを判断し(S1210)、他端のガードバーGb2を検出しなかった場合には(S1210:NO)、S1190へ戻り、S1200にて所定本数走査したバーを基準とし、そのバーに垂直な読取走査線を設定する。
【0073】
なお、図10に示すように示すフローチャートにおいては、所定本数のバーを走査した時点で(S1200)、新たな読取走査線を設定するようにしているが、所定距離であってもよい。また、所定本数のバーを1とすれば、順次設定した読取走査線によって確実にバーコード全体を貫くこととなる。なお、当然であるが、所定本数を少なくしたり所定距離を短くすることによって、「新たな読取走査線を設定する条件を厳しく」した場合には、読取走査線の再設定処理が多くなるので、処理負荷は増える。但し、バーコード全体を貫く読取走査線の設定という観点からすれば、その確実性は相対的に高いと言える。
【0074】
[第3実施例]
上述した第1あるいは第2実施例の場合には、読取走査線の設定手法に違いはあるが、読取走査線をガードバーGb1等と垂直に設定するという点では共通していた。しかし、必ずしもガードバーGb1等に垂直な読取走査線を設定するという手法ではなくてもよい。
【0075】
本第3実施例での読取走査線の設定手法は次の通りである。すなわち、図11に例示するように、最初は一方のガードバーGb1の中央位置を起点としてガードバーGb1に垂直な読取走査線を設定する。そして、その読取走査線に沿ってバーコードを走査した結果、その読取走査線がバーコードの他方のガードバーGb2を貫かないでバーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーの位置まで戻る。そして、その確実に認識されているバーの中央位置bとガードバー上の起点(つまり中央位置)とを結ぶ新たな読取走査線を設定する。この新たな読取走査線は、最初に設定した読取走査線と異なり、ガードバーGb1に対して垂直ではない。なお、図11の場合には新たな読取走査線を1回設定しただけでバーコード全体を貫くこととなったが、最終的に設定された読取走査線が他方のガードバーGb2を貫くまで必要に応じて2回以上新たな読取走査線を設定する。このようにしても、やはりバーコードの歪みに対処することができる。
【0076】
[第1〜第3実施例の別態様]
以上説明した第1〜第3実施例では、図7,9,11などに示したように、バーコードの両側に存在するガードバーの内、画像領域中において相対的に左側に存在するガードバーGb1に読取走査線の起点を設定する場合について説明した。しかし、例えば図12に示すように画像領域中において相対的に右側に存在するガードバーGb2に読取走査線の起点を設定して、上述した説明の場合とは逆方向、つまり画像領域の右から左へ向かう読取走査線を設定することも可能である。バーコードの配置や傾き状態によっては、主検査線にてガードバーGb2の方を最初に検出する場合もあるからである。なお、図12は、図7にて説明した第1実施例の場合に対応する逆向きの読取走査線を示している。
【0077】
また、読取走査線の起点を設定する際には、次の点を工夫することができる。
上述した第1実施例では、読取走査線のガードバーGb1上での起点として、主検査線とガードバーGb1との交点を設定した。また、最初に設定した読取走査線がバーコードから逸れた場合に新たな読取走査線を設定する際も、同様に交点を起点とした。但し、例えば図13に示すように、主検査線とガードバーGb1との交点がガードバーGb1の端部付近である場合には、ガードバーGb1と垂直な方向への読取走査線を設定する際に不都合が生じる場合が想定される。図6にて説明したように、その交点付近のガードバーGb1の配置状態を見て傾き(ΔB/ΔA)を把握し、それに基づいて読取走査線の傾き(ΔA/ΔB)を設定しているが、端部であるため上手くいかないことも考えられる。また、ガードバーGb1の端部付近を起点とした読取走査線の場合には、歪んだバーコードに対して早期にバーコードの存在領域外へ逸れてしまう可能性が高くなることも想定される。
【0078】
そこで、図13に示すように、読取走査線のガードバーGb1上での起点として、主検査線とガードバーGb1との交点から、端部付近であると判定された側の端部とは反対側へ所定量だけ移動した位置を起点として設定する。もちろん、読取走査線のガードバーGb1上の起点だけでなく、新たな読取走査線を設定する場合の、バー上の起点についても同様である。
【0079】
また、所定量だけ移動するのではなく、同様の観点から、読取走査線の起点として、ガードバーGb1の中央位置や、確実に認識されているバーの中央位置bを起点として設定してもよい(図14参照)。特に、図15に示すように、ガードバーGb1自体が短く、主検査線とガードバーGb1との交点から両側に向かってバーの状態を見ていった場合に、両端に行き着いてしまうことも考えられる。この場合には、バーの長さが所定値以上の場合だけ採用し、その中央位置を起点とした読取走査線を設定することが考えられる。
【0080】
[第4実施例]
上述した第1〜第3実施例では、画像データ20に記憶された1画像領域全てを、画像データ検査線に沿った走査対象としたが、本第4実施例では、予めバーコードが存在する可能性の高いと考えられる詳細検査対象領域を設定し、その領域内に限ってガードバーGb1を見つけるようにしている。
【0081】
本第4実施例のバーコード読取装置の構成は、基本的には、図1に示した第1実施例の構成と同様であるが、本実施例特有の構成の2値化回路50を備えている。したがって、図1に示した2値化回路17とは符号を異ならせて記載する。また、画像メモリ20の内部構成についても多少メモリ構成が異なっている。さらには、A/D変換器19にてディジタル信号に変換された画像データは2値化回路50にも出力され、また、カメラ部制御装置10が2値化回路50にリードライト制御信号やアドレス制御信号を出力できるようにされている。それ以外の構成については、特段変更されていないので、詳しい説明は省略する。
【0082】
まず、画像メモリ20の内部構成について説明する。画像メモリ20は、画像データメモリ20a、変化点数メモリ20b及び2次元画像メモリ20cを備えている。画像データメモリ20aには、A/D変換器19にてディジタル信号に変換された画像データを記憶しておくためのものである。なお、変化点数メモリ20b及び2次元画像メモリ20cについては、以下に説明する2値化回路との関係で説明する。
【0083】
続いて、2値化回路50の詳細について、図20,21を参照して説明する。図20は2値化回路50を構成する要素について概略的な機能別にまとめたブロック図であり、図21は、さらに詳細な機能別にまとめたブロック図である。
図20に示すように、2値化回路50は、明比較器51と、暗比較器52と、明暗判定器53と、カウンタ54と、余裕値記憶ブロック55と、ブロックアドレス制御回路56とを備えている。そして、A/D変換器19にてディジタル信号に変換されて出力された画像データは、明比較器51と、暗比較器52と、明暗判定器53とに入力する。明比較器51及び暗比較器52から出力されるデータは明暗判定器53に入力され、明暗判定器53からの出力データはカウンタ54及び画像メモリ20内の2次元画像メモリ20cへ入力される。また、カウンタ54からの出力、つまりカウント値は、画像メモリ20内の変化点数メモリ20bへ入力される。
【0084】
また、カメラ部制御装置10からのリードライト制御信号は、明比較器51、暗比較器52、明暗判定器53、余裕値記憶ブロック55、ブロックアドレス制御回路56のそれぞれに入力している。一方、カメラ部制御装置10からのアドレス制御信号は、ブロックアドレス制御回路56へ入力しており、そのブロックアドレス制御回路56からの制御信号は、画像メモリ20内の変化点数メモリ20bへ入力されている。なお、カメラ部制御装置10からのアドレス制御信号は、画像メモリ20内の画像データメモリ20a及び2次元画像メモリ20cにも入力されている。
【0085】
以上は、2値化回路50の概略的な説明であったので、図21を参照してさらに詳しく説明する。なお、図21においては、図20に示した要素を構成するブロックであることを示すため、同じ数字の後に小文字の英字を付した。例えば明比較器51であれば、比較ブロック51aと、明データ記憶ブロック51bと、減算ブロック51cと、暗上限記憶ブロック51dとを備えるという具合である。それ以外の要素についても同様に示した。
【0086】
明比較器51の構成要素については説明したが、暗比較器52は、比較ブロック52aと、暗データ記憶ブロック52bと、加算ブロック52cと、明下限記憶ブロック52dとを備える。また、明暗判定器53は、除算ブロック53aと、中間値記憶ブロック53bと、明比較ブロック53cと、暗比較ブロック53dと、中間比較ブロック53eと、明比較ブロック53c、暗比較ブロック53d及び中間比較ブロック53eからの出力信号を入力して、所定の判定条件に基づく明暗判定を行う明暗判定ブロック53fと、直前値記憶回路53gと、比較ブロック53hとを備えている。なお、カウンタ54及び余裕値記憶ブロック55は図2に示したものと同じである。また、ブロックアドレス制御回路56は、主走査区分設定ブロック56aと、副走査区分設定ブロック56bと、区域制御ブロック56cとを備えている。
【0087】
続いて、これらの要素間の信号のやりとりについて説明する。まず、図20の明比較器51に属する構成に関して、図21を参照して説明する。
A/D変換器19(図20参照)から出力された(A/D変換後の)画像データは、比較ブロック51a及び明データ記憶ブロック51bに入力する。比較ブロック51aには明データ記憶ブロック51bからの出力信号も入力しており、すなわち比較ブロック51aでは、順次入力される画像データの明るさを示すデータを従前に入力されたデータと比較し、より明るい方を明データ記憶ブロック51bへ出力する。したがって、明データ記憶ブロック51bには、それまでに入力された中で最も明るいデータ(以下、これを明データと称す。)が更新されながら記憶されることとなる。なお、本実施例においては、具体例として後述するように、明るさを1〜15で示しており、数字が大きくなるほど明るいことを前提として説明を進めることとなる。
【0088】
そして、減算ブロック51cでは、余裕値記憶ブロック55より出力された暗余裕値を、この明データ記憶ブロック51bより出力される明データから減算して暗上限記憶ブロック51dに出力する。したがって、暗上限記憶ブロック51dには、暗上限値として、明データから暗余裕値を減算した値が更新されながら記憶されることとなる。なお、この暗上限値とは、明暗判定の際に「暗」と判定する上限の値を指し、それまでの入力データの内で最も明るいとされる明データから所定の暗余裕値を減算した値よりも大きな値となる範囲ではとても暗とは認められない、という判定のために用いるものである。
【0089】
次に、図20の暗比較器52に属する構成に関して、図21を参照して説明する。
A/D変換後の画像データは、比較ブロック52a及び暗データ記憶ブロック52bに入力する。比較ブロック52aには暗データ記憶ブロック52bからの出力信号も入力しており、すなわち比較ブロック52aでは、順次入力される画像データの明るさを示すデータを従前に入力されたデータと比較し、より暗い方を暗データ記憶ブロック52bへ出力する。したがって、暗データ記憶ブロック52bには、それまでに入力された中で最も暗いデータ(以下、これを暗データと称す。)が更新されながら記憶されることとなる。そして、加算ブロック52cでは、余裕値記憶ブロック55より出力された明余裕値を、この暗データ記憶ブロック52bから出力される暗データに加算して明下限記憶ブロック52dに出力する。したがって、明下限記憶ブロック52dには、明下限値として、暗データに明余裕値を加算した値が更新されながら記憶されることとなる。なお、この明下限値とは、明暗判定の際に「明」と判定する下限の値を指し、それまでの入力データの内で最も暗いとされる暗データに所定の明余裕値を加算した値よりも小さな値となる範囲ではとても明とは認められない、という判定のために用いるものである。
【0090】
次に、図20の明暗判定器53に属する構成に関して、図21を参照して説明する。
除算ブロック53aには明データ記憶ブロック51bからの明データと暗データ記憶ブロック52bからの暗データが入力しており、それらが加算した後に2で除されて、明データと暗データの中間の値が算出されることとなる。つまり、その時点までに入力されている明るさを示すデータの内、最も明るいデータと最も暗いデータの中間の値が算出されて中間値記憶ブロック53bに記憶される。
【0091】
また、明比較ブロック53c、暗比較ブロック53d及び中間比較ブロック53eには、それぞれA/D変換後の画像データが入力している。そして、明比較ブロック53cでは、その入力された画像データの明るさを明下限記憶ブロック52dからの明下限値と比較し、その比較結果を明暗判定ブロック53fに出力する。一方、暗比較ブロック53dでは、その入力された画像データの明るさを暗上限記憶ブロック51dからの暗上限値と比較し、その比較結果を明暗判定ブロック53fに出力する。さらに、中間比較ブロック53eでは、その入力された画像データの明るさを中間値記憶ブロック53bからの中間値と比較し、その比較結果を明暗判定ブロック53fに出力する。
【0092】
この明暗判定ブロック53fにおいては、次のような明暗判定を行う。すなわち、明であるか否かの判定には、明比較ブロック53cにおける判定結果と中間比較ブロック53eからの比較結果を用いて、入力値≧中間値、且つ入力値≧明下限値であれば明と判断する。一方、暗であるか否かの判定には、暗比較ブロック53dにおける判定結果と中間比較ブロック53eからの比較結果を用いて、入力値<中間値、且つ入力値≦暗下限値であれば暗と判断する。明暗の判定ができた場合には、当然その判定結果を出力するが、上述した明暗の判定条件をいずれも満たさない場合には明暗判定ができないものとして、前回の判定結果を出力するようにされている。なお、例えば明であれば1、暗であれば0として出力する。
【0093】
この明暗判定ブロック53fでの判定結果は、図20に示す画像メモリ20内の2次元画像メモリ20cへ出力されると共に、直前値記憶回路53g及び比較ブロック53hにも出力される。そして、比較ブロック53hは、明暗判定ブロック53fからの出力値を、直前値記憶回路53gに記憶された直前値と比較し、変化している場合にのみカウンタ54へ出力する。つまり、明暗が変化するとカウンタ54へ出力されるのである。なお、カウンタ54は、比較ブロック53hからの出力に基づいて明暗が変化した数を計数し、その計数した明暗変化点数を、画像メモリ20中の変化点数メモリ20bへ出力する。
【0094】
次に、図20のブロックアドレス制御回路56に属する構成に関して、図21を参照して説明する。
区域制御ブロック56cは、カメラ部制御装置10(図20参照)からのアドレス制御信号に基づくと共に、主走査区分設定ブロック56a及び副走査区分設定ブロック56bからの設定に応じて区域制御を行う。詳しくは、設定された検査区域の主走査線上の区分点と副走査線上の区分点とから検査区域毎の変化点数の格納アドレスを制御し、カウンタ54を制御する。なお、区域制御ブロック56cからの区域制御信号は、画像メモリ20中の変化点数メモリ20bへも出力されている。
【0095】
また、主走査区分設定ブロック56a及び副走査区分設定ブロック56bは、カメラ部制御装置10(図20参照)からのリードライト制御信号によって制御されている。なお、上述した暗上限記憶ブロック51d、明下限記憶ブロック52d、中間値記憶ブロック53b及び余裕値記憶ブロック55も、このリードライト制御信号によって制御されている。
【0096】
以上は、本実施例のバーコード読取装置の構成説明であったが、次に、カメラ部制御装置10が実行するバーコード読取処理について、図22のフローチャートなどを参照して説明する。
最初のステップS2100では、各検査区域の主走査線方向の明暗変化点数の算出を行う。これについて詳述する。本実施例においては、画像データメモリ20aに一時記憶された1画像領域分のデータの全てを対象としてバーコード読取処理を行うのではなく、バーコードが存在すると思われる領域を詳細検査対象領域として設定した後、バーコード読取処理を行う。そして、このバーコードの詳細検査対象領域の設定に際しては、画像データメモリ20a上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、その区域内に含まれる画像データに基づいて明暗の変化点の数を計数して、その計数値に基づいて推定を行う。そこで、まず、S2100にて実行される明暗変化点数の算出処理について、図23,24を参照して説明する。
【0097】
最初に検査区域について説明する。図24(a)に示すように、画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域を検査区域とする。これは、CCDエリアセンサ11においては主走査線及び副走査線方向にマトリックス状に画素が配列されているので、このように矩形領域に設定した方がデータが扱い易いからである。
【0098】
なお、図24(a)においては、画像領域を横G個×縦H個の検査区域に分割し、各検査区域が横a画素×縦b画素とされている。なお、図においてはG=8,H=10,a=b=8とされており、この想定では、画像領域のサイズが横80×縦64画素となってしまう。一般的に、640×480画素といったレベルの解像度のものが用いられるが、ここでは、図に基づく直感的理解を容易にするために、あえてこのような簡易モデルを用いることとする。
【0099】
そして、このような設定の検査区域において、バーコードの一部を図24(b)に示すように捉えた場合を考える。明暗変化点は、各主走査線について計数するため、この場合は、8本の主走査線について、それぞれ、4,4,4,4,4,3,3,3となり、それらの合計数が29となる。したがって、この検査区域の主走査線方向の明暗変化点数は29となる。このようにして、各検査区域の明暗変化点数を求めるのである。
【0100】
明暗変化点数をカウントするまでの処理内容については、図21の構成説明に際して概略を説明したが、さらに補足説明する。CCDエリアセンサ11から出力される画素毎の画像データについて、それまでに検出された最も明るい画像データと最も暗いデータの中間値を明暗判定の基準値とする。例えば数字が大きくなるほど明るくなる画像データを「1〜15」の範囲で考える。最初15のデータが入ってくると、明データと暗データは共に15であり、中間値も15となる。その後、15が続けて入ってきている間は変化なしであるが、例えば9が入ってくると、暗データが9に更新され、中間値は12となる。さらに、1が入ってくると、暗データが1に更新され、中間値は8となる。これが収束値となる。したがって、その後は8を基準として明暗判定する。
【0101】
また、明暗判定の基本は中間値との比較であるため、入力値≧中間値であれば明、入力値<中間値であれば暗とするが、本実施例では、明暗判定の確実性を増すために不感帯を設けている。つまり、入力値≧中間値であっても、入力値が明下限値未満であれば明とは判定せず、同様に、入力値<中間値であっても、入力値が暗上限よりも大きければ暗とは判定しない。つまり、入力値≧中間値、且つ入力値≧明下限値の場合にのみ明とし、入力値<中間値、且つ入力値≦暗上限値の場合にのみ暗とする。これらの条件に合致しない場合には明暗判定はせず、上述したように前回の判定結果を援用する。
【0102】
そのため、具体的には次のようになる。なお、ここでは暗上限値は最大値−5であるとし、明下限値は最小値+5を想定し、中間値の計算においては小数点以下は切り上げている。また、明暗判定できない場合を×で示してある。
入力順番 ▲1▼ ▲2▼ ▲3▼ ▲4▼ ▲5▼ ▲6▼ ▲7▼ ▲8▼
入力値 15,15, 8, 1, 1, 1, 8,15
最大値(明) 15,15,15,15,15,15,15,15
最小値(暗) 15,15, 8, 1, 1, 1, 1, 1
中間値 15,15,12, 8, 8, 8, 8, 8
暗上限値 10,10,10,10,10,10,10,10
明下限値 20,20,13, 6, 6, 6, 6, 6
明暗判定 × × 暗 暗 暗 暗 明 明
この具体例においては、入力順番▲1▼,▲2▼における入力値が15であるので、最大値、最小値及び中間値が共に15になり、暗上限値は10、明下限値は20となる。入力値(15)≧中間値(15)であるため「明」の可能性があるが、入力値(15)は明下限値(20)以上ではないので、明とは判定されない。当然「暗」とは判定されないので、明暗判定不可能(×)とされる。
【0103】
そして、入力順番▲3▼において入力値が8となると、最小値も8となり、中間値が12となる。すると、入力値(8)<中間値(12)となり、且つ入力値(8)も暗上限値(10)以下となるので、暗と判定される。入力順番▲1▼,▲2▼では明暗判定不可能(×)であったものが▲3▼で暗となったので、この場合には明暗変化があったものと考える。
【0104】
続く▲4▼における入力値は1であるので、最小値も1となり、中間値が8となる。すると、入力値(1)<中間値(8)となり、且つ入力値(1)も暗上限値(10)以下であるので、暗と判定される。なお、この時点で最大値15と最小値1が出現しているので、暗上限値10及び明下限値6はこれ以降同じとなる。入力順番▲5▼,▲6▼でも同様である。
【0105】
そして、入力順番▲7▼において入力値が8となると、入力値(8)≧中間値(8)となり、且つ入力値(8)も明下限値(6)以上となるので、明と判定される。入力順番▲6▼では暗と判定されていたものが▲7▼で明となったので、この場合には明暗変化があったものと考える。したがって、ここで示した例でいえば、明暗変化点数が2となる。
なお、入力順番▲3▼では入力値が8であるが暗と判定されていたが、それは取り得る最小値(1)がその時点で出現していなかったからである。上述したように、入力順番▲4▼までにおいて最大値15と最小値1が出現して、暗上限値10及び明下限値6はこれ以降同じとなるため、今後は、入力値が8以上であれば明と判定され、8未満であれば暗と判定されることとなる。
【0106】
それではここで、各検査区域の明暗変化点数を求めるための処理を図23のフローチャートを参照して説明する。
最初のステップS2110では、変数g,hを共に初期値1に設定し、続くS120においては、J番目の走査線に沿ってI番目の画像データを検査して、変化点数を累積カウントする。
【0107】
続いて、検査した画像データの位置を示すIがa×gであるか否かを判定する(S2130)。これは、主走査線に沿って横方向にg検査区域分だけ検査したか否かを判定する処理であり、Iがa×gとなっていなければ(S2130:NO)、主走査線に沿ってg検査区域分を検査していないので、S2120へ戻る。一方、Iがa×gとなれば、主走査線に沿ってg検査区域分だけ検査したこととなるので(S2130:YES)、S2140へ移行する。
【0108】
S2140では、S2120にて得た累積カウント値を(g,h)区域の明暗変化点数に加算して記憶する。そして、変数gをインクリメント(g=g+1)してから(S2150)、変数gが検査区域の横方向の総数Gよりも大きいか否かを判定する(S2160)。これは、1画像領域の横方向分だけ主走査線による検査をしたか否かを判定する処理であり、g>Gとなっていなければ(S2160:NO)、S2120へ戻る。一方、g>Gとなれば、1画像領域の横方向分だけ主走査線による検査をしたこととなるので(S2160:YES)、S2170へ移行する。
【0109】
S2170では、変数hが検査区域の縦方向の総数Hに一致したか否かを判定する。これは、1画像領域の縦方向分だけ主走査線による検査をしたか否かを判定する処理であり、hとHが一致していなければ(S2170:NO)、検査に用いている走査線が何番目のものであるかを示すJがb×hであるか否かを判定する(S2180)。これは、主走査線に沿った検査を縦方向にh検査区域分行ったか否かを判定する処理であり、Jがb×hとなっていなければ、まだ主走査線に沿った検査を縦方向にh検査区域分行っていないので((S2180:NO)、S120へ戻る。一方、Jがb×hとなれば、主走査線に沿った検査を縦方向にh検査区域分行ったこととなるので(S2180:YES)、S2190へ移行する。
【0110】
S2190で変数hをインクリメント(h=h+1)してから、S2120へ戻る。このような処理を繰り返し、S2170にて肯定判断となった場合には、1画像領域の縦方向分だけ主走査線による検査をした、つまり1画像領域の全てについて検査したこととなるので、本処理を終了し、図22のS2200へ移行する。
【0111】
S210での明暗変化点数の計数処理がなされると、各検査区域単位での明暗変化点数が得られる。その各検査区域における明暗変化点数の表の一例を図24(c)に示す。細い線や小さな点は画素単位で明暗が分かれるので、明暗の「変化」は与えない。また、図柄などの大きな面積を持つ場合は、明暗変化点の数としては少なくなる。したがって、明暗変化点数が多い部分に情報コードが存在する可能性が高いと考えられる。
【0112】
このような状況を踏まえ、各検査区域の明暗変化点数に基づいて、バーコードの存在すると思われる領域を詳細検査対象領域として設定し、バーコードの読取を行う。
図22のS220では、各検査区域の変化点数を所定値と比較し、所定値以上の検査区域を詳細検査対象区域候補として設定する。図24(c)に示した配列表では、理解を容易にするため、所定値を6として、明暗変化点数が6以上の検査区域である詳細検査対象区域候補に斜線を施して他の区域と区別した。
【0113】
続くS2300では、各詳細検査対象区域候補について、今度は、副走査線方向の明暗変化点数の算出を行う。この算出手法は、S2100で説明し主走査線方向の場合と同様であり、それを副走査線方向に変えただけである。但し、S2100では1画像領域の全ての検査区域を対象として行ったが、このS2300では、S2200にて抽出された詳細検査対象区域候補についてのみ行う。例えば、図24(b)に示す場合には、8本の副走査線について、それぞれ、1,1,1,2,1,0,0,1となり、それらの合計数が7となる。
【0114】
続くS2400では、縦横の変化点数比が類似している詳細検査対象区域候補を検査区域として設定する。例えば図24(b)の具体例では、縦(副検査線方向)の変化点数の合計数が7、横(主検査線方向)の変化点数の合計数が29であり、縦横の変化点数比は29/7となる。詳細検査対象区域候補がバーコードの一部を捉えている場合には、1区域に含まれるバー又はスペースの本数が増減しても、この縦横の変化点数比は極端には違わない。したがって、バーコードが存在していると思われる領域に属する詳細検査対象区域候補の縦横の変化点数比は類似していると考えられる。
【0115】
続くS2500では、S2400にて設定された詳細検査対象区域の配列を検査してその連続性を調べる。そして、連続していなければ(S2600:NO)、そのまま本処理を終了するが、連続していれば(S2600:YES)、S2700へ移行して、その連続している詳細検査対象区域群(これが詳細検査対象領域となる)の中心点の座標を算出する。
【0116】
この中心点座標の算出について補足説明する。図25(a)に示すように、破線で示したバーコードが存在すると推定される領域に設定された詳細検査対象領域(太い枠で示した)は、矩形形状とは限らない。但し、ここでは、副走査方向の最大幅Yと主走査方向の最大幅Xを考え、それらを縦横とする矩形形状の領域の中心座標を算出する。具体的には、図25(b)に示すようにX,Y軸を取り、画像領域の左下端を原点とする。そして、詳細検査対象領域が取り得るX座標の最小値x1と最大値x2、及びY座標の最小値y1と最大値y2を考えると、中心座標のX座標を(x2−x1)/2、Y座標を(y2−y1)/2として算出できる。
【0117】
続くS2750では、詳細検査対象領域中に存在すると推定されるバーコードのバー又はスペースの勾配θを推定する。ここでいう勾配θとは、図26に示すように、バー又はスペースが副走査線方向となす角度である。そして、実際のバー又はスペースの形状を調べて勾配θを検出するのではなく、S2100,S2300にて得た主走査線方向及び副走査線方向の変化点数を用いて、下記の関係式を用いて推定する。
【0118】
tanθ≒副走査線方向の変化点数/主走査線方向の変化点数
ある程度の数の変化点数が得られれば上記関係式はほぼ正確に成立する。この関係式の数学的証明は省略するが、具体例を挙げて関係式が成立していることを説明しておく。
【0119】
図26には、バー又はスペースの勾配θ=30°となっている状態を示している。ここで、図24(b)の場合と同様に、それぞれ8本ずつの主走査線方向及び副走査線方向の変化点数の合計を算出すると、主走査線方向の変化点総数は26、副走査線方向の変化点総数は15となる。ここで、tan30°≒0.577である。一方、副走査線方向の変化点数/主走査線方向の変化点数=15/26≒0.576であり、両者がほぼ等しいことが判る。
【0120】
したがって、このS2750においては、バー又はスペースの勾配θを、tanθの近似値として推定した値を得ることとなる。
このように詳細検査対象領域の中心点座標及び勾配θの算出ができれば、次にS2800へ移行して、画像データ検査線の設定〜ガードバー検出〜デコード処理に係る一連の処理を行う。S2800の処理の詳細について図27のフローチャートを参照して説明する。
【0121】
最初のステップS2810では、変数iを1に設定し、続くS2820において画像データ検査線(i)を設定する。最初の設定時(i=1)には、図22のS2700にて算出した詳細検査対象領域の中心点を通り、且つ図22のS2750にて推定したバー又はスペースの勾配θに直交するような画像データ検査線を設定する(図25(a)参照)。
【0122】
続いて、その画像データ検査線(i)に沿って検査した結果に基づいてバーコードの特徴パターンの有無を判定し(S2830)、無ければ、変数iをインクリメントし(S2840)、変数iが画像データ検査線の設定本数Mよりも大きいか否かを判断する(S2850)。変数i≦設定本数Mであれば(S2850:NO)、S2820へ戻って、前回とは別の画像データ検査線を設定する。このようにして、バーコードの特徴パターンを見つけるまで、画像データ検査線を変更しながら検査していく。本実施例では、図28(a)に示すように、詳細検査対象領域の中心点を通り、且つバー又はスペースの勾配θに直交するような画像データ検査線を基準として、それに平行な画像データ検査線が複数設定されている。そして、画像領域中の中央付近にバーコードの画像が存在する可能性が高いという観点から、複数本設定された画像データ検査線の使用順番は、詳細検査対象領域の中心点を通る画像データ検査線を基準として、画像領域の中央付近から外側へ向かう順番とされている。
【0123】
なお、図28(b)に示すように、詳細検査対象領域の中心点を通り、且つバー又はスペースの勾配θに直交するような画像データ検査線を基準とし、詳細検査対象領域の中心点を通るはするが、角度が基準の画像データ検査線とは異なる複数の検査線を設定してもよい。そして、この場合の複数本設定された画像データ検査線の使用順番は、基準の画像データ検査線との角度の差が小さいものから順番に使用していく。
【0124】
図27の説明に戻り、S2830の判定によりバーコードの特徴パターンがあった場合には、S2860へ移行してガードバーGb1を検出する。そして、そのガードバーGb1に垂直な読取走査線を設定する(S2870)。なお、上述した第1実施例の場合には、図8のS170,S180に示すように、ガードバーGb1の傾きを検出し、その傾きに直交するような傾きを持つ読取走査線を設定していた。それに対して本第4実施例では、S2870にて設定する読取走査線の傾きはS2820で設定した画像データ検査線の傾きと同じにする。この画像データ検査線の傾き自体が、バー又はスペースの傾きに直交するように設定されたものだからである。なお、図28(a)に示すような平行な複数の画像データ検査線の中から順番に使用していく場合には、いずれの画像データ検査線であっても傾きは同じであるため問題ない。一方、図28(b)に示すように傾き自体を変える場合には、最初のS2820での処理、すなわち基準となる画像データ検査線を設定した場合の、その検査線の傾きと同じにすればよい。
【0125】
そして、その読取走査線に沿って走査し(S2880)、その結果、他端のガードバーGb2を検出できなかった場合には(S2890:NO)、S2900へ移行し、確実に検出されたバーまで戻ってそのバーの傾きを検出する。そして、S2870へ戻り、そのバーに垂直な読取走査線を新しく設定し、S2880以降の処理を繰り返す。
【0126】
一方、バーコードの他端のガードバーGb2を検出した場合には(S2890:YES)、S2910にて誤り検査を行い、誤りが無ければ、S2920にて読み取ったデータを文字データに変換して出力し、誤りが有ればそのまま本処理ルーチンを終了する。
【0127】
また、S2850にて肯定判断、すなわち、設定された画像データ検査線を全て用いて検査してもバーコードの特徴パターンを見つけられなかった場合には、そのまま本処理を終了する。
なお、本第4実施例で用いた用語の内、特許請求の範囲に記載した用語と異なっているものについて、その対応を簡単に説明しておく。図27のS2820にて設定されるi=1の場合の画像データ検査線が「第1の検査線」に相当し、i=2,3…の場合の画像データ検査線が「第2の検査線」に相当する。また、詳細検査対象領域の中心点が「詳細検査対象領域の概略中心位置」に相当する。
【0128】
このように、本第4実施例においては、予めバーコードが存在する可能性の高いと考えられる詳細検査対象領域を設定し、その領域内に限ってガードバーGb1を見つける処理を行うようにしたため、全体として処理効率が向上する。つまり、複数画素を1まとめにした検査区域単位で、コードが存在する可能性の高い領域を詳細検査対象領域として推定し、その後、その推定された領域内においてのみ従来通りの1画素毎の明暗パターンを検査するので、その検査範囲が小さくて済む。また、詳細検査対象領域の推定にあっては、検査区域毎に計数した明暗変化点数の大小比較のみ、すなわち整数値の相対比較であるため、処理負荷は小さくて済む。したがって、概略的な存在領域を推定した後にバーコードの正確な位置を検出してデータ解読をする処理まで含めたコード読取処理に要する時間を短縮させることができる。
【0129】
また、画像データ検査線自体が、詳細検査対象領域内に存在すると推定されるバーコードのバー又はスペースの傾きに直交するように設定されているため、ガードバーGb1に垂直な読取走査線の設定(図27のS2870)に際しても、その傾きを援用することができる。そして、バー又はスペースの傾きθに関しても、上述したように、実際のバー又はスペースの形状を調べて勾配θを検出するのではなく、主走査線方向及び副走査線方向の変化点数の比から推定できるため、処理効率が向上する。
【0130】
また、上述した第1実施例では、相互に直交する主検査線及び副検査線を用いていたが、これはバーコードがどのように傾いて画像領域中に存在しているかが判らないための対処であった。これに対して本第4実施例の場合には、画像データ検査線自体がバーコードの傾きを反映して設定されているため、より処理効率が向上する。つまり、水平方向及び垂直方向の画像データ検査線を設定する場合には、水平方向の検査線でしか見つけられないようにバーコードが傾いていると、垂直方向の検査線で見つけようとする処理が結果的には無駄となってしまうが、本第4実施例の画像データ検査線を用いる場合にはそのような無駄がない。
【0131】
[第4実施例の別態様]
(1)上記第1実施例に対する第2実施例の関係と同様に、図27に示した処理に代えて、図29のフローチャートに示す処理を実行するようにしてもよい。つまり、読取走査線の設定に際し、一方のガードバーGb1上の起点から読取走査線に沿って所定距離走査した時点あるいは所定数のバー及びスペースを走査した時点で、直近のバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する、という処理を、最終的に設定された読取走査線が他方のガードバーGb2を貫くまで繰り返し行う手法である。
【0132】
図29のS3010〜S3060及びS3110,3120の処理内容は、上述した実施例の場合の図27のフローチャートにおけるS2810〜S2860及びS2910,2920と全く同様であるので説明は省略し、変更部分についてのみ説明する。
【0133】
S3060にてガードバーGb1を検出した後、S3070では、そのガードバーGb1の中点に読取走査線の起点を設定し、そのガードバーGb1に垂直な読取走査線を設定する(S3080)。この場合の傾きについては、図27のS2870で説明した通り、画像データ検査線の傾きをそのまま用いればよい。
【0134】
そして、その読取走査線に沿って所定本数のバーを走査する(S3090)。その結果、バーコードの他端のガードバーGb2を検出したかどうかを判断し(S3100)、他端のガードバーGb2を検出しなかった場合には(S3100:NO)、S3080へ戻り、S3090にて所定本数走査したバーを基準とし、そのバーに垂直な読取走査線を設定する。
【0135】
(2)図27,28などを参照して説明したように、基準の画像データ検査線(i=1)としては、詳細検査対象領域の概略中心点を通るものを採用した。これは、詳細検査対象領域の中心にバーコードが存在しているとは限らないが、確率的には、詳細検査対象領域の中心にバーコードが存在している可能性が高いため、この画像データ検査線によってガードバーGb1を検出できる可能性が高くなると考えられるからである。したがって、この点を考慮しないのであれば、例えば図28に示す画像データ検査線の使用順番i=1,2,3…を入れ替えても構わない。例えば画像領域の上側を走査する画像データ検査線を最初に設定し、その後、画像領域の下側へ向かう順番に用いてもよい。
【0136】
ところで、上述した実施例においては、詳細検査対象領域を構成する検査区域毎に明暗パターンの特徴を調べて類型化する際に、検査区域内の縦横の明暗変化点数比を用いたが、例えば明暗変化点の総数を用いても構わない。この総数に関しても、バーコードが存在する区域ではほぼ同じような値になると考えられるからである。
【0137】
但し、バーコード以外の文字などが含まれる検索区域の変化点の総数がバーコードのみの検査区域と同じになることも想定されるため変化点数比の方が好ましいと言える。つまり、縦横の変化点数比の場合には、文字などが含まれる検査区域の場合と比べれば、かなり明確な違いとなって現れると考えられるからである。そして、バーコードの場合には、バー又はスペースが直線であるため、バー又はスペースの端部が含まれなければ、縦の明暗変化点数と横の明暗変化点数の比はやはり同じ様な値になる可能性が高い。特に、文字などが含まれる検査区域の場合の明暗変化点数の比と比べれば、総数の場合よりさらに明確に区別できると考えられる。したがって、比に基づく類型化が非常に有効である。
【0138】
(3)上述の図22のS2750についての説明中でも述べたが、バー又はスペースの勾配θを推定する際に利用した関係式「tanθ≒副走査線方向の変化点数/主走査線方向の変化点数」は、ある程度の数の変化点数が得られていることが前提である。つまり、例えばバー又はスペースの幅が検査区域の幅よりも大きければ、主検査線方向及び副検査線方向の明暗変化点数の一方あるいは両方が0となり、明暗変化点数比が0となってしまうことが考えられ、その場合は適切な類型化が難しくなるからである。この明暗変化点数の大小には、検査区域の大小が関係している。したがって、検査区域について複数のサイズの中から選択可能にしてもよい。例えば図30に示すように、(b)の「通常の検査区域」に対して、(a)の「より細かな検査区域」及び(c)の「より大きな検査区域」を準備しておく。これら検査区域の複数のサイズについては、実際に使用される可能性の高いバーコードの種類などを考慮して設定すればよい。また、選択する際には、利用者がマニュアルで切り替えて選択してもよいし、自動的に選択できるようにしてもよい。自動的に選択する場合には、例えばあるサイズで処理を実行して適切に読み取れなかった場合には次のサイズに切り替えて再度処理を実行する、といった手法が考えられる。
【0139】
(4)検査区域の形状を正方形としたが、長方形であっても同様に実現できる。また、画像領域の全てにおいて同じサイズの検査区域としたが、複数サイズの検査区域を混在させることを除くものではない。もちろん、サイズを統一した方が処理上の都合はよい。また、正方形や長方形などの矩形以外の形状に設定することも可能ではあるが、上述した処理上の都合の観点からは、やはり矩形が好ましい。特に、検査区域の縦横の明暗変化点数の比でバー又はスペースの傾きθを推定しようとする場合には、正方形の検査区域の方が処理の都合上からも好ましいと言える。
【0140】
(5)明暗変化点として、明から暗への変化点と暗から明への変化点を共に明暗変化点としたが、これは、いずれかの一方のみに着目して処理してもよい。
【図面の簡単な説明】
【図1】実施例としてのバーコード読取装置のブロック図である。
【図2】画像と画像データアドレスとの対応関係を示す説明図である。
【図3】主検査線及び副検査線の説明図である。
【図4】読取走査線の設定手法の説明図である。
【図5】読取走査線の設定手法の説明図である。
【図6】読取走査線の設定手法の説明図である。
【図7】第1実施例の場合の新たな読取走査線の設定手法の説明図である。
【図8】第1実施例の場合のバーコード読取に係る処理を示すフローチャートである。
【図9】第2実施例の場合の新たな読取走査線の設定手法の説明図である。
【図10】第2実施例の場合のバーコード読取に係る処理を示すフローチャートである。
【図11】第3実施例の場合の新たな読取走査線の設定手法の説明図である。
【図12】読取走査線の起点を反対側のガードバーを起点として逆向きに設定する手法の説明図である。
【図13】読取走査線の起点を決定する際の別手法の説明図である。
【図14】読取走査線の起点を決定する際の別手法の説明図である。
【図15】読取走査線の起点を決定する際の別手法の説明図である。
【図16】バーコードのサイズなどの違いを示す説明図である。
【図17】1次元画像に基づくバーコード読取の説明図である。
【図18】2次元画像に基づくバーコード読取の説明図である。
【図19】読取装置とバーコードとの位置関係によって取り込んだバーコード画像が歪むことを示す説明図である。
【図20】第4実施例の2値化回路の概略構成を示すブロック図である。
【図21】第4実施例の2値化回路の詳細構成を示すブロック図である。
【図22】第4実施例のバーコード読取に係るメイン処理を示すフローチャートである。
【図23】第4実施例の明暗変化点の計数処理を示すフローチャートである。
【図24】第4実施例の検査区域などの説明図である。
【図25】第4実施例の詳細検査対象領域の中心点の説明図である。
【図26】第4実施例のバー又はスペースの傾きθの説明図である。
【図27】第4実施例の画像データ検査線の設定〜ガードバー検出〜デコード処理を示すフローチャートである。
【図28】第4実施例の画像データ検査線の設定手法の説明図である。
【図29】第4実施例の画像データ検査線の設定〜ガードバー検出〜デコード処理の別態様を示すフローチャートである。
【図30】第4実施例の別態様として複数の検査区域を持つ場合の説明図である。
【符号の説明】
1…バーコード読取装置 10…カメラ部制御装置
11…CCDエリアセンサ 12…AGCアンプ
13…ローパスフィルタ 14…基準電圧生成部
15…負帰還アンプ 16…補助アンプ
17…2値化回路 18…周波数分析器
19…A/D変換器 20…画像メモリ
21…画像メモリコントローラ 22…メモリ
24…加算器 25…照明LED
30…システム制御装置 31…認識用LED
32…ブザー 33…液晶ディスプレイ
34…キーパット 35…読み取り用スイッチ
36…シリアルI/F回路 37…IrDAI/F回路
20a…画像データメモリ 20b…変化点数メモリ
20c…2次元画像メモリ 50…2値化回路
51…明比較器 51a…比較ブロック
51b…明データ記憶ブロック 51c…減算ブロック
51d…暗上限記憶ブロック 52…暗比較器
52a…比較ブロック 52b…暗データ記憶ブロック
52c…加算ブロック 52d…明下限記憶ブロック
53…明暗判定器 53a…除算ブロック
53b…中間値記憶ブロック 53c…明比較ブロック
53d…暗比較ブロック 53e…中間比較ブロック
53f…明暗判定ブロック 53g…直前値記憶回路
53h…比較ブロック 54…カウンタ
55…余裕値記憶ブロック 56…ブロックアドレス制御回路
56a…主走査区分設定ブロック 56b…副走査区分設定ブロック
56c…区域制御ブロック

Claims (22)

  1. 2次元画像検出手段にて検出された2次元的な画像データを一時的に記憶した画像データメモリ上に、前記2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応する画像データ検査線を設定し、
    その設定された画像データ検査線に沿って画像データを走査することにより、前記画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方を検出し、
    その検出したガードバー上を起点とすると共に当該ガードバーに垂直な読取走査線を設定し、その設定された読取走査線に沿って所定の走査方向へ走査することにより、前記画像データ内に含まれているバーコードを読み取るバーコード読取方法であって、
    前記一方のガードバー上の起点から前記読取走査線に沿って前記バーコードを走査した結果、その読取走査線が前記バーコードの他方のガードバーを貫かないで前記バーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーの位置まで戻り、その確実に認識されているバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する、という処理を、最終的に設定された読取走査線が前記他方のガードバーを貫くまで繰り返し行うことによって、前記バーコード全体を走査すること、
    を特徴とするバーコード読取方法。
  2. 2次元画像検出手段にて検出された2次元的な画像データを一時的に記憶した画像データメモリ上に、前記2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応する画像データ検査線を設定し、
    その設定された画像データ検査線に沿って画像データを走査することにより、前記画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方を検出し、
    その検出したガードバー上を起点とすると共に当該ガードバーに垂直な読取走査線を設定し、その設定された読取走査線に沿って所定の走査方向へ走査することにより、前記画像データ内に含まれているバーコードを読み取るバーコード読取方法であって、
    前記一方のガードバー上の起点から前記読取走査線に沿って所定距離走査した時点あるいは所定数のバーを走査した時点で、直近のバー上を起点とすると共に当該バーに垂直な読取走査線を新たに設定する、という処理を、最終的に設定された読取走査線が前記他方のガードバーを貫くまで繰り返し行うことによって、前記バーコード全体を走査すること、
    を特徴とするバーコード読取方法。
  3. 請求項2記載のバーコード読取方法において、
    前記所定数のバーは1であることを特徴とするバーコード読取方法。
  4. 請求項1〜3のいずれか記載のバーコード読取方法において、
    前記読取走査線の前記ガードバー上での起点として、前記画像データ検査線と前記ガードバーとの交点を設定し、
    前記新たな読取走査線の前記確実に認識されているバーあるいは前記直近のバー上での起点として、前記直前に設定された読取走査線と前記確実に認識されているバーあるいは前記直近のバーとの交点を設定すること、
    を特徴とするバーコード読取方法。
  5. 請求項1〜3のいずれか記載のバーコード読取方法において、
    前記読取走査線と前記ガードバーとの交点が、当該ガードバーの上下いずれかの端部付近である場合には、前記読取走査線の前記ガードバー上での起点として、前記画像データ検査線と前記ガードバーとの交点から前記端部付近であると判定された側の端部とは反対側へ所定量だけ移動した位置を設定し、
    前記新たな読取走査線と前記確実に認識されているバーあるいは前記直近のバーとの交点が、当該確実に認識されているバーあるいは前記直近のバーの上下いずれかの端部付近である場合には、前記新たな読取走査線の前記確実に認識されているバーあるいは前記直近のバー上での起点として、前記直前に設定された読取走査線と前記確実に認識されているバーあるいは前記直近のバーとの交点から前記端部付近であると判定された側の端部とは反対側へ所定量だけ移動した位置を設定すること、
    を特徴とするバーコード読取方法。
  6. 請求項1〜3のいずれか記載のバーコード読取方法において、
    前記読取走査線の前記ガードバー上での起点として、前記ガードバーの中央位置を設定し、
    前記新たな読取走査線の前記確実に認識されているバーあるいは前記直近のバー上での起点として、前記確実に認識されているバーあるいは前記直近のバーの中央位置を設定すること、
    を特徴とするバーコード読取方法。
  7. 2次元画像検出手段にて検出された2次元的な画像データを一時的に記憶した画像データメモリ上に、前記2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応する画像データ検査線を設定し、
    その設定された画像データ検査線に沿って画像データを走査することにより、前記画像データ中に含まれているバーコードの両端に存在するガードバーの内の一方を検出し、
    その検出したガードバーの中央位置を起点とすると共に当該ガードバーに垂直な読取走査線を設定し、その設定された読取走査線に沿って所定の走査方向へ走査することにより、前記画像データ内に含まれているバーコードを読み取るバーコード読取方法であって、
    前記一方のガードバーの中央位置を起点とした前記読取走査線に沿って前記バーコードを走査した結果、その読取走査線が前記バーコードの他方のガードバーを貫かないで前記バーコードの存在領域外へ逸れてしまった場合には、その読取走査線を走査方向とは逆に辿って、その読取走査線に基づいて確実に認識されているバーの位置まで戻り、その確実に認識されているバーの中央位置と前記ガードバー上の起点とを結ぶ新たな読取走査線を設定する、という処理を、最終的に設定された読取走査線が前記他方のガードバーを貫くまで繰り返し行うことによって、前記バーコード全体を走査すること、
    を特徴とするバーコード読取方法。
  8. 請求項1〜7のいずれか記載のバーコード読取方法において、
    前記水平方向及び垂直方向の画像データ検査線は、それぞれ複数本設定されていることを特徴とするバーコード読取方法。
  9. 請求項8記載のバーコード読取方法において、
    前記複数本の水平方向及び垂直方向の画像データ検査線は、前記2次元画像検出手段の画面中央付近に相当する範囲では相対的に密に設定されていることを特徴とするバーコード読取方法。
  10. 請求項8又は9記載のバーコード読取方法において、
    前記複数本の水平方向及び垂直方向の画像データ検査線を用いる順番は、前記2次元画像検出手段の画面中央付近から外側へ向かう順番であることを特徴とするバーコード読取方法。
  11. 請求項8〜10のいずれか記載のバーコード読取方法において、
    前記水平方向及び垂直方向の内、いずれか一方の画像データ検査線を全て用いても検出できなかった場合には、他方の画像データ検査線を用いて検出することを特徴とするバーコード読取方法。
  12. バーコードを2次元画像検出手段にて検出し、前記2次元画像検出手段にて検出したバーコードを含む1画像領域分の画像データを一時的に画像データメモリに記憶しておき、前記画像データメモリ上における1画像領域を複数の検査区域に分割し、その分割された検査区域毎に、その区域内に含まれる画像データに基づいて明暗の変化点の数を計数し、その計数された明暗変化点数に基づいてバーコードが存在する可能性の高い検査区域を抽出し、その抽出された検査区域を詳細検査対象領域として設定する詳細検査対象領域設定処理を行い、
    その設定された詳細検査対象領域内に限定して請求項1〜11のいずれか記載のバーコード読取方法を適用し、前記画像データ内に含まれているバーコードを読み取ること、
    を特徴とするバーコード読取方法。
  13. 請求項12記載のバーコード読取方法において、
    前記検査区域は、前記画像領域を水平方向へ走査するための主走査線及び垂直方向へ走査するための副走査線とそれぞれ平行な線によって区画される矩形の区域であること、
    を特徴とするバーコード読取方法。
  14. 請求項12又は13記載のバーコード読取方法において、
    前記詳細検査対象領域設定処理によって設定された詳細検査対象領域を構成する検査区域毎に明暗パターンの特徴を調べて類型化し、最も多数の検査区域が属する類型を検出し、その検出された最頻類型に属する任意の検査区域内に存在するバー又はスペースの傾きを算出し、その算出されたバー又はスペースの傾きに直交する傾きを有する第1の検査線を設定し、
    前記請求項1〜11のいずれか記載のバーコード読取方法においては前記2次元画像検出手段における水平方向及び垂直方向にそれぞれ対応していた画像データ検査線に代えて、前記設定された第1の検査線を前記画像データ検査線として採用すること、
    を特徴とするバーコード読取方法。
  15. 請求項14記載のバーコード読取方法において、
    前記画像データ検査線として採用する第1の検査線が、前記詳細検査対象領域の概略中心位置を通るように設定されていること、
    を特徴とするバーコード読取方法。
  16. 請求項14又は15記載のバーコード読取方法において、
    前記第1の検査線を前記画像データ検査線として採用した結果、バーコードを読み取れなかった場合には、前記第1の検査線と平行な第2の検査線を少なくとも1本設定し、その設定された第2の検査線を前記画像データ検査線として採用すること、
    を特徴とするバーコード読取方法。
  17. 請求項14又は15記載のバーコード読取方法において、
    前記第1の検査線を前記画像データ検査線として採用した結果、バーコードを読み取れなかった場合には、前記第1の検査線とは傾きが異なり、且つ前記詳細検査対象領域内において第1の検査線と交差する第2の検査線を少なくとも1本設定し、その設定された第2の検査線を前記画像データ検査線として採用すること、
    を特徴とするバーコード読取方法。
  18. 請求項17記載のバーコード読取方法において、
    前記第2の検査線が前記第1の検査線と交差する点は、前記詳細検査対象領域の概略中心位置であること、
    を特徴とするバーコード読取方法。
  19. 請求項14〜18のいずれか記載のバーコード読取方法において、
    前記検査区域毎に明暗パターンの特徴を調べて類型化する際には、前記検査区域内の明暗変化点数が略同一であるものを同一の明暗パターンを有するものとして類型化すること、
    を特徴とするバーコード読取方法。
  20. 請求項14〜18のいずれか記載のバーコード読取方法において、
    前記検査区域毎に明暗パターンの特徴を調べて類型化する際には、前記検査区域内の縦横の明暗変化点数の比が略同一であるものを同一の明暗パターンを有するものとして類型化すること、
    を特徴とするバーコード読取方法。
  21. 請求項12〜20のいずれか記載のバーコード読取方法において、
    前記検査区域は、複数のサイズの中から選択可能であること、
    を特徴とするバーコード読取方法。
  22. 請求項1〜21のいずれか記載のバーコードの読取方法が、コンピュータシステムにて実行するプログラムとして記録されたことを特徴とする記録媒体。
JP27092699A 1998-11-16 1999-09-24 バーコード読取方法及び記録媒体 Expired - Fee Related JP3994595B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP27092699A JP3994595B2 (ja) 1998-11-16 1999-09-24 バーコード読取方法及び記録媒体
US09/438,847 US6332574B1 (en) 1998-11-16 1999-11-12 Method of reading bar code

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-325278 1998-11-16
JP32527898 1998-11-16
JP27092699A JP3994595B2 (ja) 1998-11-16 1999-09-24 バーコード読取方法及び記録媒体

Publications (2)

Publication Number Publication Date
JP2000215268A JP2000215268A (ja) 2000-08-04
JP3994595B2 true JP3994595B2 (ja) 2007-10-24

Family

ID=26549460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27092699A Expired - Fee Related JP3994595B2 (ja) 1998-11-16 1999-09-24 バーコード読取方法及び記録媒体

Country Status (2)

Country Link
US (1) US6332574B1 (ja)
JP (1) JP3994595B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7387253B1 (en) 1996-09-03 2008-06-17 Hand Held Products, Inc. Optical reader system comprising local host processor and optical reader
US20040004128A1 (en) * 1996-09-03 2004-01-08 Hand Held Products, Inc. Optical reader system comprising digital conversion circuit
US6547140B2 (en) * 2000-11-29 2003-04-15 Xerox Corporation Microwave barcode reader using dipole antenna
ATE335246T1 (de) 2001-01-22 2006-08-15 Hand Held Prod Inc Optischer leser mit teilbild-ausschnitt-funktion
US7268924B2 (en) 2001-01-22 2007-09-11 Hand Held Products, Inc. Optical reader having reduced parameter determination delay
US20030086126A1 (en) * 2001-11-08 2003-05-08 Shih-Zheng Kuo Method of enhancing modulation transfer function performance
JP2003168071A (ja) * 2001-11-30 2003-06-13 Sanyo Electric Co Ltd 2次元バーコードの読み取り方法
JP2003168084A (ja) * 2001-11-30 2003-06-13 Sanyo Electric Co Ltd 本人認証システム及び方法
KR100456628B1 (ko) * 2001-12-28 2004-11-10 한국전자통신연구원 물류 정보 자동식별 처리시스템 및 그 방법
US7212682B2 (en) * 2003-03-06 2007-05-01 Sick Auto Ident, Inc. Method and system for enhancing measurement
CN1545074A (zh) * 2003-11-17 2004-11-10 炼 杨 一种具有视觉识别功能的遥控装置
JP4254628B2 (ja) * 2004-06-21 2009-04-15 株式会社デンソーウェーブ 光学的情報読取装置
US7568628B2 (en) 2005-03-11 2009-08-04 Hand Held Products, Inc. Bar code reading device with global electronic shutter control
US7770799B2 (en) 2005-06-03 2010-08-10 Hand Held Products, Inc. Optical reader having reduced specular reflection read failures
DE112007003515T5 (de) * 2007-05-23 2010-04-15 Trimble Jena Gmbh Nivelliergerät und -Verfahren
JP5083521B2 (ja) * 2007-08-06 2012-11-28 株式会社セガ ゲーム装置
US8584951B2 (en) 2008-12-11 2013-11-19 Ncr Corporation Apparatus, method and system for extracting pixel data from an image capture device
JP5776562B2 (ja) * 2012-01-17 2015-09-09 株式会社デンソーウェーブ 二次元コード読み取り装置
JP6455832B2 (ja) * 2014-12-02 2019-01-23 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation バーコード検出方法、バーコード検出システムおよびそのためのプログラム
CN107886026B (zh) * 2016-09-30 2019-12-13 腾讯科技(深圳)有限公司 图形码处理方法及装置
JP6852369B2 (ja) * 2016-11-30 2021-03-31 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4717818A (en) * 1986-06-26 1988-01-05 International Business Machines Corporation Bar code label identification circuit
JPH07101427B2 (ja) * 1989-03-29 1995-11-01 富士通株式会社 バーコード読取り方法及びその装置
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
US5329105A (en) * 1992-08-10 1994-07-12 United Parcel Service Of America, Inc. Method and apparatus for determining the width of elements of bar code symbols
JPH06150043A (ja) * 1992-11-13 1994-05-31 Yamatake Honeywell Co Ltd 枡目コードの読み取り方法
JPH06150044A (ja) * 1992-11-13 1994-05-31 Yamatake Honeywell Co Ltd 枡目コードの読み取り方法
JPH06150042A (ja) * 1992-11-13 1994-05-31 Yamatake Honeywell Co Ltd 枡目コードの読み取り方法
US5304787A (en) * 1993-06-01 1994-04-19 Metamedia Corporation Locating 2-D bar codes
US5457308A (en) * 1993-09-14 1995-10-10 Symbol Technologies, Inc. Bar code scan stitching
JPH0793451A (ja) 1993-09-22 1995-04-07 Olympus Optical Co Ltd バーコードシンボル読取装置
GB2291524B (en) * 1994-07-21 1997-01-29 Fujitsu Ltd Reading bar codes
JP3234405B2 (ja) * 1994-08-05 2001-12-04 富士通株式会社 バーコード読取装置及びその方法
DE4438759C1 (de) * 1994-10-29 1995-11-02 Leica Ag Heerbrugg Ch Niederla Verfahren zur Bestimmung des Kippwinkels von codierten Nivellierlatten
US5739518A (en) * 1995-05-17 1998-04-14 Metanetics Corporation Autodiscrimination for dataform decoding and standardized recording
US5764798A (en) 1996-03-18 1998-06-09 Intermec Corporation Prioritized searching methods for finding a coded symbol in a digitized image
JPH10134130A (ja) * 1996-10-28 1998-05-22 Fujitsu Ltd バーコード読取方法およびバーコード読取装置
JP3758266B2 (ja) 1997-01-08 2006-03-22 株式会社デンソー コード読取装置

Also Published As

Publication number Publication date
JP2000215268A (ja) 2000-08-04
US6332574B1 (en) 2001-12-25

Similar Documents

Publication Publication Date Title
JP3994595B2 (ja) バーコード読取方法及び記録媒体
US6360948B1 (en) Method of reading two-dimensional code and storage medium thereof
US8139117B2 (en) Image quality analysis with test pattern
US6912297B2 (en) Method of determining usability of a document image and an apparatus therefor
US6970606B2 (en) Automatic image quality evaluation and correction technique for digitized and thresholded document images
US5504319A (en) Method and system for bar code acquisition
JP4288756B2 (ja) 情報コード概略存在領域推定方法、情報コード読取方法及び装置、記録媒体
KR20060100376A (ko) 물체 윤곽 이미지를 분석하기 위한 방법 및 이미지 처리장치, 물체를 검출하기 위한 방법 및 이미지 처리 장치,산업용 비전 장치, 스마트 카메라, 이미지 디스플레이,보안 시스템, 및 컴퓨터 프로그램 제품
JPH09510809A (ja) 2次元cddイメージ中のバーコード・シンボルの精細な方位角を求める方法および装置
JPH06119481A (ja) 線分の方向検出装置及びその方法
JPH0737103A (ja) 傾き角度検出装置
JP7062722B2 (ja) 光学コードのモジュールサイズの特定
US5902987A (en) Apparatus and method of rapidly locating edges of machine-readable symbols or other linear images
CN1228733C (zh) 在图像中探测对象的方法
US20030228066A1 (en) Image data processing unit for use in a visual inspection device
CA2648054C (en) Apparatus and method for detection and analysis of imagery
US7382906B2 (en) Method of determining the region of interest in images of skin prints
JPH07167611A (ja) 硬貨中心位置決定方式
JP3043530B2 (ja) ドットパターン検査装置
JP4578000B2 (ja) パターン認識処理装置、方法および情報記憶媒体
JP4055290B2 (ja) 2次元コード存在領域検出方法、2次元コード読取方法及び記録媒体
JPH11142348A (ja) 欠陥検査装置用蛇行追従装置及び欠陥検査装置
JPH07230549A (ja) 画像処理装置およびその方法
JPH07115542A (ja) 画像処理装置
JP3216767B2 (ja) レベル変動補正可能な画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070702

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: 20070710

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070723

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

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: 20100810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110810

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120810

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120810

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120810

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130810

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees