JPH08329185A - シンボル情報読取装置 - Google Patents
シンボル情報読取装置Info
- Publication number
- JPH08329185A JPH08329185A JP7135256A JP13525695A JPH08329185A JP H08329185 A JPH08329185 A JP H08329185A JP 7135256 A JP7135256 A JP 7135256A JP 13525695 A JP13525695 A JP 13525695A JP H08329185 A JPH08329185 A JP H08329185A
- Authority
- JP
- Japan
- Prior art keywords
- label
- information
- variable
- image
- barcode
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 103
- 230000008569 process Effects 0.000 claims description 76
- 238000003384 imaging method Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 abstract description 13
- 230000003287 optical effect Effects 0.000 abstract description 7
- 238000001514 detection method Methods 0.000 description 65
- 238000010586 diagram Methods 0.000 description 25
- 230000000694 effects Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 7
- 230000007547 defect Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- AYFVYJQAPQTCCC-GBXIJSLDSA-N L-threonine Chemical compound C[C@@H](O)[C@H](N)C(O)=O AYFVYJQAPQTCCC-GBXIJSLDSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 102100035767 Adrenocortical dysplasia protein homolog Human genes 0.000 description 1
- 101100433963 Homo sapiens ACD gene Proteins 0.000 description 1
- 208000032005 Spinocerebellar ataxia with axonal neuropathy type 2 Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 208000033361 autosomal recessive with axonal neuropathy 2 spinocerebellar ataxia Diseases 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Abstract
ーコードシンボル情報を高速に確実に読取るシンボル情
報読り取装置を提供することを目的とする。 【構成】本発明は、ベルトコンベアー等の搬送系3によ
り移動する物品1等に貼付された、例えばPDF−41
7フォーマットのスタックドバーコードラベル2と、該
バーコードラベル2を光学的に結像する撮像光学系4
と、結像されたバーコードラベル2を光電変換面で読み
取る2次元撮像部5と、読み取ったラベル画像データ
(映像信号)を一時的に記憶するフレームメモリ6と、
ラベル画像データを元のシンボル情報に復号するデータ
処理装置7とで構成され、移動するバーコードシンボル
のシンボル情報を読取るシンボル情報読取り装置であ
る。
Description
ル情報を読み取るシンボル情報読取装置に関する。
貼付けられたタグ等に印刷された、その物品に関する情
報を示すバーコード記号と呼ばれる記号がある。このバ
ーコード記号は、普及しつつある販売時点情報管理(ポ
イント・オブ・セールス:POS)システムに使用さ
れ、広く一般に知られるようになった。
とスペースが平行に組合せられ、1つのパターンからな
るバーコードキャラクタを形成する。必要であれば、チ
ェックデジットを含む必要なキャラクタ群を平行に配列
し、例えば前後にスタート/ストップキャラクタのよう
な特徴的な所定パターンを配して構成したシンボルもあ
る。
は、JAN(Japan Article Numbe
r)として標準化されている。また、バーコードの他の
応用としては、物流シンボルがある。この物流シンボル
は、前記JANコードの前に、1桁又は2桁の物流識別
コードが追加されたものである。
も、1次元バーコードと呼ばれるものであり、これらの
コード体系が持つことができる情報量は、数十バイト程
度であり、実際に使用する場合に不十分なものであっ
た。
求に従い、構造が異なる2次元バーコードと呼ばれるシ
ンボル体系が提案されている。それらのシンボル体系に
よれば、いずれも1次元バーコードに比べ格段に多い情
報をコード化できる特徴を持っている。これらの体系
は、スタックドバーコードと称され、1次元のバーコー
ドをバーの方向に積み重ねることによって、情報量を増
加させる方式である。このスタックドバーコードの代表
として、PDF−417と呼ばれるコード体系がある。
るシンボル情報読取り装置としては、例えば、特開平2
−268382号公報に開示されているようなレーザー
走査型の読取り装置が知られている。この読取り装置に
おいては、レーザー光を2次元に投射し、スキャンする
ことで、所定のバーコードを読み取り、シンボル情報を
復号している。
は、2次元撮像装置でバーコードを撮像し、バーコード
の画像をメモリに取り込んで、このデータを元にバーコ
ードシンボル情報を復号する装置が開示されている。
actory Automation)に於けるデータ
キャリアとして使用したいという要求が高まっている。
これは、流通物がベルトコンベアなどの上を移動してい
る最中に、流通物の品名、行き先等を認識するためのも
のである。
Fタグ等が用いられていたが、タグとしては比較的高価
であり、これがバーコードで代用できれば、低コストの
データキャリアが実現される。
しては、特開昭56−118177号公報には、移動す
る物体の像を走査して得られるビデオ信号に基づいて所
定の検査を行なう光学検査装置が記載され、物体が検査
視野内を通過したことをビデオ信号から検出する回路が
開示されている。
昭56−118177号公報の問題点として、ビデオ信
号の幅データからその物体の存在を認識しているため、
前記JAN等の1次元バーコードの認識は可能なもの
の、前記PDF417等の2次元スタックドバーコード
において、バーコードラベルが完全に検査視野内に入っ
ていない場合であっても、不完全なバーコードラベルを
認識し、読取り処理に行く恐れがある。このような場合
には、バーコード情報を読取ることができず、読取りの
信頼性及び読取り速度の低下を招く結果になる。
2次元スタックドバーコードの情報を読取るには、イン
タレース型撮像素子を用いてフレーム画像により撮像す
ると、最初に読み取った位置から次に読み取る位置まで
移動してしまっているため、2つのフィールド画像を組
み合わせた時にフィールド成分のずれが生じるという問
題が生じる。そこで本発明は、移動している2次元バー
コードのバーコードシンボル情報を高速に確実に読取る
シンボル情報読り取装置を提供することを目的とする。
するために、バーとスペースとからなり任意の情報をパ
ターンとして表すバーコードを2次元像として撮像する
撮像手段と、前記撮像手段により順次得られた2次元像
を一時的に記憶する記憶手段と、前記撮像手段から前記
記憶手段に2次元像を転送する転送手段と、前記記憶手
段に記憶された2次元像を順次読出し、撮像範囲内での
バーコードシンボルの有無を認識する認識手段と、前記
認識手段により認識されたバーコードの前記撮像範囲内
での存在位置及び傾きを検出し、バーコードのスキャン
方向を検出する位置検出手段と、前記位置検出手段によ
り検出されたスキャン方向によりバーコードの2次元像
から該バーコードの情報を順次読み取る読取手段と、前
記読取手段からのバーコードの情報から、前記任意の情
報に復号する復号手段とで構成されるシンボル情報読取
装置を提供する。
た2次元像を圧縮して転送するシンボル情報読取装置を
提供する。さらに、前記転送手段は、撮像手段により撮
像された2次元像のフィールド成分の1スキャンライン
を転送した後、記憶手段の1ラインを空けてまたスキャ
ンラインを転送し、1フィールド分の画像情報を転送す
るまでそれを繰り返し、終了後に空いているラインにそ
のラインの1ライン上または下のラインの画像情報を複
写をする処理操作を含み、転送するシンボル情報読取装
置を提供する。
は、移動している2次元バーコードを2次元像として撮
像し、得られた2次元像に所定の圧縮等の処理を適宜施
し一時的に記憶させ、撮像画像を記憶手段に転送して、
バーコードシンボルの有無を自動認識した後、バーコー
ドシンボルの位置を認識し、バーコードの情報を順次読
み取り、バーコードの情報から元の情報に復号する。
に説明する。図1には、第1実施例としてのシンボル情
報読取り装置の概略的な構成を示し、説明する。このシ
ンボル情報読取り装置は、移動する物品等に貼付された
バーコードシンボルのシンボル情報を読取るための構成
例である。ここで、本実施例においては、シンボル情報
は物品に関する情報を例とし、例えば、物品名、送付先
等であるものとする。勿論、シンボル情報は、使用する
ものによって異なっている。
ンベアー等の搬送系3により移動する物品1等に貼付さ
れた、例えばPDF−417フォーマットのスタックド
バーコードラベル(以下、バーコードラベルと称する)
2と、該バーコードラベル2を光学的に結像する撮像光
学系4と、結像されたバーコードラベル2を光電変換面
で読み取る2次元撮像部5と、読み取ったラベル画像デ
ータ(映像信号)を一時的に記憶するフレームメモリ6
と、ラベル画像データを元のシンボル情報に復号するデ
ータ処理装置7とで構成される。また、外部には、シン
ボル情報を処理するためのマイクロコンピュータ等のホ
スト装置16が設けられている。また、前記2次元撮像
部5で読み取ったラベル画像データ(フレーム画像)
に、画像圧縮等の画像処理を施し、フレームメモリ6に
処理画像データを記憶させる画像転送部17を設けても
良い。
モリ6に記憶されたラベル画像データが撮像光学系4の
撮影範囲にバーコードラベル2が読取り可能に入ってい
るかを検出するラベル検出部8と、バーコードラベル2
(ラベル画像データ)をスキャンしてラベル情報として
読取る読取り部9と、読取ったラベル情報がデコードで
きるものかを判定するデコード判定部10と、デコード
できると判定されたラベル情報を元のシンボル情報に復
元する復号部11と、メモリ(各種定数及び変数を格納
するための種々のレジスタを含む)12と、これらの各
部位を制御する制御部13とで構成される。
えば、CCDカメラからなる。また前記ラベル検出部8
は、前記フレームメモリ6に記憶されたラベル画像デー
タが撮像光学系4の撮影範囲に収まっているか、すなわ
ち撮影範囲内で撮像されるバーコードラベル2に欠けが
ない位置を検出する位置検出部14と、そのバーコード
ラベル2の傾き具合を検出する傾き検出部15とで構成
される。
メモリで構成されるパーソナルコンピュータでも代用す
ることができる。次に、前述したスタックドバーコード
について説明する。
て、PDF−417のラベル構造を示している。このバ
ーコードラベル2は、バーとスペースの組合せでなるバ
ーコードキャラクタ群で構成された復号されるべき情報
成分の領域であるラベル部21と、その前後に配された
スタート/ストップキャラクタであるスタートコード2
2及びストップコード23とを有している。そして、1
コードは、ストップコード23を除いて4つのバーとス
ペースとからなっている。また、スタート及びストップ
コード22,23は、“ビッグバー”と呼ばれる大きな
バー22A,23Aから始まっている。
及びストップコード23の隣に存在するロウインディケ
ータ21Aと呼ばれるコードと、それらの間に挟まれた
実際のデータが記述されている複数のデータカラム21
Bでなるラベルマトリックス21Cとにより構成され
る。ロウインディケータ21Aには、ラベルのロウ方
向,カラム方向のサイズやセキュリティレベル等が記述
されている。従って、このロウインディケータの情報を
解読すれば、ラベルの情報サイズや修復可能なコード数
等が決定できる。
ックス有するバーコードラベルを示している。図4に示
すフローチャートを参照して、データ処理装置7におけ
るラベル検出、ラベル情報読出し及び復号についてを説
明する。図3には、仮想的にフレームメモリ6の画素配
列に前述したようなPDF−417のラベル画像を投影
した模式図を示す。
ローバル変数等の種々のパラメータを初期設定する(ス
テップS1)。次に、後述する画像取り込みルーチンを
コールしてラベル画像データ(映像信号)をフレームメ
モリ6に取り込む(ステップS2)。次に、後述するラ
ベル検出ルーチンをコールし、この取り込まれたラベル
画像データを用いてバーコードラベルが存在するかをチ
ェックし、さらにはバーコードラベルが存在するならば
ラベル画像データを検出する(ステップS3)。
検出処理の結果を判断し(ステップS4)、ラベルが存
在しない場合には(NO)、再度、前記ステップS1に
移行して、再度、画像取り込み処理を行う。
S)、後述する閾値決定ルーチンをコールし、後述する
ステップS11の埋め込チェック及びステップS12の
最適スキャンルーチン及び、ステップS15のインテリ
ジェントスキャンルーチンに於いて、処理対象となるラ
インデータからエッジ間の幅情報を抽出するための処理
に利用される閾値(変数THRESHOLD)を求める
(ステップS5)。
コールし、ラベル2のロウインディケータ21Aを読み
取り、ラベルサイズ等を決定する(ステップS6)。そ
して、前記ステップS6の決定ルーチンに於いてラベル
サイズ等が決定されたか否かを判断し(ステップS
7)、決定されていない場合は(NO)、再度ステップ
S1に移行して、再度、画像取り込み処理を行う。一
方、ラベルサイズ等が決定された場合には(YES)、
後述する傾き再定義ルーチンをコールし、より正確なラ
ベルの傾きを求める(ステップS8)。
ンをコールし、ラベル2を全面走査するための各種変数
を定義する(ステップS9)。次に、後述する埋め込チ
ェックルーチンをコールし、各コードワードの位置の推
定を行い、更に各コードワードの位置が画面内か否かを
チェックしている(ステップS10)。
不能と推定されたコードの数が、修復可能な数を上回っ
たか否かを判断し(ステップS11)、上回った場合に
はデコード不能とし(NO)、再度ステップS1に移行
して、再度、画像取り込み処理を行う。一方、下回った
場合には、デコード可能とし(YES)、後述するよう
な最適スキャンルーチンをコールし、前記ステップS9
で定義された各種変数を用いてラベルを最適な間隔で全
面走査し、ラベル情報を読み取る(ステップS12)。
なおここで、最適スキャンとは、最も計算量が少なくて
ラベル情報を全て確定できるような最適な間隔でのスキ
ャンのことをいうものとする。
ンで読み取った情報でデコード可能か否かを判断し(ス
テップS13)、デコード可能の場合は(YES)、ス
テップS16に移行してデコード処理を行う。しかし、
デコード不能の場合は(NO)、後述するインテリジェ
ントスキャンルーチンをコールし、前記ステップS10
で定義された各種変数とを用いて、前記ステップS12
で読取れなかったコード位置を走査し、ラベル情報を読
取る(ステップS14)。
コード可能か否かを判断し(ステップS15)、デコー
ド可能の場合(YES)、及びステップS12で読取っ
た情報がデコード可能の場合に、デコード処理を行う
(ステップS16)。このデコード処理の終了の後、ス
テップS1に戻り、新たなバーコードラベルを読取りに
いく。
不能の場合は(NO)、再度、前記ステップS1に移行
して、画像取り込みを行う。前記ステップS16のデー
コード処理では、前記最適スキャンルーチンと前記イン
テリジェントスキャンルーチンにより、読取った情報を
復号し、復号したシンボル情報をホスト装置14に出力
する。
理ルーチンを、以下に詳しく説明する。まず、図5に示
すフィールド画面のみを取り込む図及び、図6に示すフ
ローチャートとを参照して、図4に示した前記ステップ
S2でコールされる画像取り込みルーチンについて説明
する。
部5に撮像されたラベル画像データ(映像信号)を転送
し、フレームメモリ6に一時的に記憶させる処理を含ん
でいる。
ルの読取りに際して、インターレース方式の2次元撮像
部5を使用した場合、通常、そのフレーム画面からはバ
ーコード情報を読取ることは出来ない。すなわち、従来
技術の課題において説明したように、インターレース方
式の2次元撮像装置5では、1行ずつとばしながら画像
を走査するフィールド画面を2つ(奇数成分と偶数成
分)合成して1つのフレーム画面を構成するが、撮像対
象となるバーコードラベルが常に移動しているため、1
回目のフィールド画像の走査と、2回目のフィールド画
像の走査との間に位置的なずれが生じており、2つのフ
ィールド画像を合成すると、バーコードラベル像にズレ
が生じてしまうからである。
の2次元撮像装置5を用いて、移動するバーコードラベ
ルを読取るときには、フィールド画面のみの画像情報を
転送して取り込むようにする。
数成分または奇数成分)のフィールド画面を転送し取り
込む(ステップS21)。この場合、フィールド画像を
行を空けずにフレームメモリ6に取り込むので、そのと
きのフレームメモリ6の内容は、図5に示す様になって
いる。図5に於いて、フィールド画像は奇数成分と偶数
成分のどちらでも構わない。この処理終了の後、メイン
フローチャート(図4)にリターンする。
フィールド画像は、縦方向に圧縮された形になるので、
バーコードラベルの1行当たりの高さが減ってしまい、
読取り条件はフレーム画像よりも厳しくなる。そこで、
この方法を用いることが出来るのは、対象画像に対しバ
ーコードラベル像が占める割合が大きくて、バーコード
ラベルの1行の高さが十分な場合である。
像が占める割合が小さくバーコードラベルの1行の高さ
が十分でない場合には、種々の方法が考えられる。その
1つとして、まず、2つのフィールド画面(偶数成分と
奇数成分)を両方別々に転送し取り込む。この場合、奇
数成分だけを行を空けずにフレームメモリ6に取り込
み、次に偶数成分だけを行を空けずに取り込む。そのと
きのフレームメモリ6の内容は図7の様になっている。
但し、図7において、奇数成分と偶数成分はどちらが上
になっても構わない。
る理由は、元は同じ対象を撮像した2つのフィールド画
像を別の画像と考え、図7の上の画像が読めなければ、
下の画像を読みに行くことで読取の信頼性を上げること
が出来るからである。
プS15の1回目の判断が(NO)であれば、図7の下
の画面に対し、再度ステップS12の最適スキャンをト
ライすることになる。ここで、移動するバーコードラベ
ルの速度が既知であれば、ステップS3で求めた図7の
上の画面のバーコードラベルの位置情報A、B、C、D
に、バーコードラベルの移動速度、走査速度を考慮する
ことにより図7の下の画面のバーコードラベルの位置
A′、B′、C′、D′を算出することが出来るので、
再度バーコードラベル検出ルーチンをコールする必要は
ない。
速度に対し十分無視できる速度であれば、図7の上の画
面のバーコードラベルの位置情報をそのまま使用するこ
とも出来る。
隔を置いてフレームメモリ6に取り込み、空いている行
にその1行上の行のフレームメモリの内容を複写して、
読取の信頼性を上げる方法もある。この方法において、
複写はハードウエアにより簡単に実現できるので、何等
バーコードラベル読取の高速性を失うものではない。
分な場合には図8に示すように、全ての画素情報に対
し、任意数の画素を加算し1つの画素にして、フレーム
メモリ6に格納する方法がある。これもハードウエアで
簡単に実現可能であり、しかもノイズを抑制する効果も
持っている。図8は、縦2行横2列の計4画素を加算し
1つの画素にする例を示している。
像装置5を使用した場合には、ステップS21はフレー
ム画像取り込みとなる。次に、図9に示すフローチャー
ト及び図10に示すバーコードラベル投影像の図を参照
して、前記ステップS3でコールされるバーコードラベ
ル検出ルーチンを説明する。このバーコードラベル検出
ルーチンは、バーコードラベルの有無を検出すること
と、バーコードラベルの位置情報を検出すること即ちバ
ーコードラベルに平行に画像データをフレームメモリ6
から抽出するための抽出範囲(変数STARTTOP及
びSTOPBOTTOM)とバーコードラベルの傾き
(変数SLOPE)を求めることとの2種類のバーコー
ドラベル検出処理を含む。ここで、変数STARTTO
Pの値は、バーコードラベルのトップ座標を示し、また
変数STOPBOTTOMの内容はバーコードラベルの
ボトム座標を示す。また変数SLOPEの内容はバーコ
ードラベルの傾きを示す。
ては、まず、後述するバーコードラベル画面内検出ルー
チンをコールし、フレームメモリ6に記憶される画面
(ラベル画像データ)内からバーコードラベルを検出す
る(ステップS31)。検出されたバーコードラベルが
完全に画面内にあるか否かの判断を行ない(ステップS
32)、画面内にない場合には(NO)、バーコードラ
ベル無しの情報を持ってリターンする。しかし画面内に
ある場合には(YES)、後述するスキャン及び検出ル
ーチンをコールし、フレームメモリ6のラベル画像デー
タに、スタートコードが存在するか否かを検出する(ス
テップS33)。つまり、図10に示す座標e、gを検
出する。このルーチンにより、スタートコードが検出さ
れて確定されれば、図11に示すフレームメモリ6上の
座標変数e、gが定義される。ここで、座標変数eはス
タートコード22を検出したいくつかの座標の中で最も
Y座標が小さいものの座標、gはスタートコード22を
検出したいくつかの座標の中で最もY座標が大きいもの
の座標をそれぞれ示している。
るか否かを判断し(ステップS34)、定義されていな
い場合は(NO)、バーコードラベル無しとして、メイ
ンフローチャートにリターンする。即ち、バーコードラ
ベル無しの情報を持って、リターンする。以上のように
して、バーコードラベルの有無の検出が行われる。
出、即ちバーコードラベルに平行に画像データをフレー
ムメモリ6から抽出するための抽出範囲(変数STAR
TTOP及びSTARTBOTTOM)とバーコードラ
ベルの傾き(変数SLOPE)の算出が行われる。
変数e、gの両方が定義されていると判断された場合は
(YES)、バーコードラベルの位置情報の検出、即ち
バーコードラベルに平行に画像データをフレームメモリ
6から抽出するための抽出範囲(変数STARTTOP
及びSTARTBOTTOM)の算出(ステップS3
5)とバーコードラベルの傾き(変数SLOPE)の算
出(ステップS36)が行われる。そして、バーコード
ラベルありの情報を持ってリターンする。
チン中のステップS31でコールされるバーコードラベ
ル画面内検出ルーチンとステップS32の画面内のバー
コードラベルが完全に入っているか否かの判断につい
て、図12に示すフローチャートと図13に示すバーコ
ードラベル画面内検出を説明する。
は、前述したように、移動しているバーコードラベルが
完全にフレームメモリ6の中に入っているか否かを確認
するものである。仮に、バーコードラベルがフレームメ
モリ6の中に完全に入っていなくても、後述するインテ
リジェントスキャンを用いれば、画面外のコード数によ
っては、その位置を推定してバーコードシンボル情報を
読取ることは可能であるが、その分読取速度が遅くなっ
てしまうので、このようなルーチンを設け移動するバー
コードラベルに対応させる。ここで、バーコードラベル
は画像に対し上下方向に移動しているものとする。
若しくはストップコード23を検出する(ステップS4
1)。この検出法の詳細は後述する。次に検出したか否
かを判断する(ステップS42)。ここで、どちらかが
検出されたと判断した場合(YES)、図13に示すよ
うにバーコードラベルの上部が画像内に入っていないこ
とを意味している。従って、そのような場合には、バー
コードラベルが画面内にないという情報をもってリター
ンする。また、検出されなかった場合は(NO)、画像
の下端行でスタートコード22若しくはストップコード
23を検出する(ステップS43)。
S44)。前述したように、ここでもどちらかが検出さ
れたと判断した場合は(YES)、バーコードラベルの
下部が画像内に入っていないことを意味しており、バー
コードラベルが画面内にないという情報をもってリター
ンする。
画像の中心行でスタートコード22若しくはストップコ
ード23を検出する(ステップS45)。次に検出した
か否かを判断し(ステップS46)、ここでは検出しな
かった場合に(NO)、バーコードラベルが画面内にな
いという情報をもってリターンする。しかし検出した場
合は(YES)、バーコードラベルが画面内にあるとい
う情報を持ってリターンする。
チン中のステップS33でコールされるスキャン及び検
出ルーチンを、図14に示すフローチャートと図15に
示すスキャン方法を説明する図を参照して説明する。
たように座標変数e及びgの両方を検出するものであ
る。即ち、まずループ回数のカウントに使用される変数
iと検出したスタートコードの数を格納する変数sta
rt numを初期化する(ステップS51)。次に、
スキャンする行番号nとスキャン間隔nnを決定する
(ステップS52)。ここでrow numは対象にな
る画像の行数である。このサブルーチンでスキャンする
行番号は図15に示すように、検索幅を徐々に狭めてい
く方式をとっている。これは、反復的に方程式の解を求
めるNEWTON法に類似している。
コードラベル像がフレームメモリ内のどの位置に存在し
ても、スタートコード22を高速に検出することが可能
になる。次に、1つのループiにつき、2のi乗回のス
キャンを行なうため、jを初期化する(ステップS5
3)。そしてjが“0”か否かを判断する(ステップS
54)。ここでjが0でない、即ちステップS54の命
題が真だった場合には(NO)、行番号nにステップS
52で求めたスキャン間隔nnを2倍したものを加える
(ステップS55)。jが“0”である、即ちステップ
S54の命題が偽だった場合には(YEA)、ステップ
S55をスキップして、ステップS56に移行し、n行
目の画像データを取り込む(ステップS56)。
タートコード22の検出を行なう(ステップS57)。
次に、スタートコード22を検出したか否かを判断し
(ステップS58)、存在しなければ(NO)、ステッ
プS62に移行する。またスタートコード22が存在す
る場合には(YES)、その検出座標を座標配列sta
rt posに格納する(ステップS59)。そして、
前記変数start numに1を加える(ステップS
60)。
定められている規定個数を越えたか否かを判断する(ス
テップS61)。ここで、越えていた場合は(YE
S)、ステップS66に移行する。しかし、越えていな
かった場合には(NO)、前記変数jをインクリメント
し(ステップS62)、jが2のi乗より小さいか否か
の判断を行なう(ステップS63)。jの方が小さい場
合には(YES)、前記ステップS54に戻る。しかし
jが2のi乗より小さくない場合には(NO)、前記変
数iをインクリメントし(ステップS64)、iが規定
定数Loopより小さいか否かの判断を行なう(ステッ
プS65)。ここで、iが小さかった場合には(YE
S)、前記ステップS52まで戻る。しかしiが規定定
数Loopより小さくない場合には(NO)、バーコー
ドラベル非検出の情報を持って、リターンする。従っ
て、このサブルーチンでは最大(2のLoop乗)−1
回のスキャンが行なわれることになる。
rt numが規定個数を越えていた場合は、後述する
Y座標の最大値最小値を求めるルーチンをコールする
(ステップS66)。そして、バーコードラベル検出の
情報を持って、リターンする。このようにスタートコー
ドが規定個数以上検出できた場合に、ループ処理の途中
であっても上位ルーチンに制御を戻すことにより、処理
の高速化を図ることができる。
ーチン中のステップS57でコールされるスタートコー
ド検出ルーチンについて、図16に示すフローチャート
を参照して説明する。
に変換する(ステップS71)。次に、変換した幅情報
を正規化し(ステップS72)、マッチングを行なう
(ステップS73)。そして、前記幅情報がスタートコ
ードにマッチしたか否かを判断し(ステップS74)、
スタートコードであると判断した場合には(YES)、
スタートコード有りの情報を持って、リターンする。ス
タートコードでない場合は(NO)、スタートコード無
しの情報を持って、リターンする。
幅情報に変換ルーチンを、図17、図18に示す一連の
フローチャートを参照して説明する。本ルーチンは、バ
ーコードラベルのバーとスペースとの幅を求めるもので
あり、微分信号によりバーとスペースとの境界を求め、
このとき2次曲線に近似することによりデータのピーク
を求めているものである。そして、順次ピークを求め
て、その位置の差を求めることにより、幅が求められて
いる。
みバッファ配列scan lineをラインデータの配
列とし、この取り込まれて変数numにストアされてい
る値をデータ個数と定義する(ステップS81)。次
に、この変数numの値をデクリメントした結果を位置
標識カウンタiに格納し、また変数jを“0”に初期設
定する(ステップS82)。
lineのi番目(位置標識カウンタiにより示され
る)の位置の値から取り込みバッファ配列scan l
ineのi−1番目の位置の値を引き、その解を取り込
みバッファ配列scan lineのi番目の位置に再
設定する(ステップS83)。この後、位置標識カウン
タiをデクリメントし(ステップS84)、その結果i
が“0”よりも大きいか否かを判断する(ステップS8
5)。iが0より大きくなければ(NO)、前記ステッ
プS83に戻り、即ち、このステップS81からステッ
プS85で、ラインデータを一次微分する。また結果i
が“0”よりも大きいければ(YES)、位置標識カウ
ンタiを2に初期化する(ステップS86)。
lineのi番目の位置の値が、閾値変数THRESH
OLDの値よりも大きく、且つ取り込みバッファ配列s
can lineのi−1番目の位置の値よりも大き
く、且つ取り込みバッファ配列scan lineのi
+1番目の位置の値以上か否かを判断し(ステップS8
7)、そうであれば(YES)、符号指標flagをU
Pとする(ステップS88)。しかし、そうでなければ
(NO)、次のステップS89に移行する。
lineのi番目の位置の値が、符号を負とした閾値変
数THRESHOLDの値(−THRESHOLD)よ
りも小さく、且つ取り込みバッファ配列scan li
neのi−1番目の位置の値よりも小さく、且つ取り込
みバッファ配列scan lineのi+1番目の位置
の値以下か否かを判断し(ステップS89)、そうであ
れば(YES)、符号指標flagをDOWNとする
(ステップS90)。そうでなければ(NO)、次のス
テップS91に移行する。
ントする(ステップS91)。iが変数numの値から
1引いた数よりも小さいか判断する(ステップS9
2)。小さければ(YES)、前記ステップS87へ戻
り、小さくなければ(NO)、ステップ72のルーチン
へ戻る。
92で、閾値変数THRESHOLDの値を越える最初
のピーク、つまり図19の1番目のピークを検出する。
そして、検出されたピークの符号が正の場合は、符号指
標flagをUPとして、次のステップS93に移行
し、検出されたピークの符号が負の場合は、符号指標f
lagをDOWNとし、ステップS94に移行する。ま
た、ラインデータを走査してもピークが検出されない場
合には、上位のルーチンに制御を戻す。
されたならば、次に、位置標識カウンタiの値をx1と
し、また取り込みバッファ配列scan lineのi
−1番目の位置の値をy1、取り込みバッファ配列sc
an lineのi番目の位置の値をy2、取り込みバ
ッファ配列scan lineのi+1番目の位置の値
をy3とすることにより、検出されたピーク位置とその
両隣データを2次曲線でフィッティングを行う(ステッ
プS93)。そして、−0.5(−y1−2x1y1+
4x1y2+y3−2x1y3)/y1−2y2+y3
なる計算を行って、前記2次曲線のピーク位置を求め、
それを変数lastposに格納する(ステップS9
4)。
umの値から2引いた数よりも小さく、且つ前記変数j
がWIDTH NUMより小さいか否か判断する(ステ
ップS95)、前記変数jが小さくなければ(NO)、
上位のルーチンへ戻る。
さいという命題について説明する。WIDTH NUM
は求めるべき幅数が格納されている定数であり、jは求
めたピークの数が格納されている変数である。ここで、
スタートコード22の位置を検出するために、スタート
コード22が必ず、フレームメモリ6の向かって左側に
位置するという条件と、フレームメモリ6の中にバーコ
ードラベル以外の情報がないという条件があれば、前記
配列scan lineに格納されている微分情報を全
て幅情報に変換する必要はない。
必要なピークの数は9個であるから、定数WIDTH
NUMは、それ以上の数ならばよいということになる。
通常、WIDTH NUMは画像のSN比により決定さ
れる。即ち、フレームメモリ6内にバーコードラベル以
外の情報が全くなければ、WIDTH NUMは“9”
に設定できる。そうでなければ、WIDTH NUMは
“9以上”の数にしなければならない。
テップS95の判断に入っている。この命題が判断に入
ることにより、全ての幅情報を求めることなくルーチン
を終了させられるので、処理の高速化が図れる。後述す
るが、微分情報から全ての幅情報を求めたいときは、も
ちろんこの命題を外せばよい。
てば(YES)、位置標識カウンタiをインクリメント
する(ステップS96)。そして、符号指標flagが
DOWNであり、且つまた取り込みバッファ配列sca
n lineのi番目の位置の値が、閾値変数THRE
SHOLDの値よりも大きく且つ取り込みバッファ配列
scan lineのi−1番目の位置の値よりも大き
く且つ取り込みバッファ配列scan lineのi+
1番目の位置の値以上であるか否かを判断する(ステッ
プS97)。全ての項が成り立てば(YES)、符号指
標flagをUPとする(ステップS98)。
成り立たなければ(NO)、次に、符号指標flagが
UPであり、且つまた取り込みバッファ配列scan
lineのi番目の位置の値が、符号を負とした閾値変
数THRESHOLDの値よりも小さく且つ取り込みバ
ッファ配列scan lineのi−1番目の位置の値
よりも小さく且つ取り込みバッファ配列scan li
neのi+1番目の位置の値以下であるか否かを判断す
る(ステップS99)。全ての項が成り立たなければ
(NO)、前記ステップS95に戻り、全ての項が成り
立てば(YES)、符号指標flagをDOWNとする
(ステップS100)。
たならば、次に、位置標識カウンタiの値をx1とし、
また取り込みバッファ配列scan lineのi−1
番目の位置の値をy1、取り込みバッファ配列scan
lineのi番目の位置の値をy2、取り込みバッフ
ァ配列scan lineのi+1番目の位置の値をy
3とすることにより、検出されたピーク位置とその両隣
データを2次曲線でフィッティングを行う(ステップS
101)。
4x1y2+y3−2x1y3)/y1−2y2+y3
なる計算を行って、前記2次曲線のピーク位置を求め、
それを変数nowposに格納する(ステップS10
2)。
のピーク位置lastposと今回求めたピーク位置n
owposが得られる。そして、こうして得られた両ピ
ーク位置の差を取ることによりピーク間距離を求め、そ
れを幅情報格納配列変数widthの変数jで示される
位置に格納する(ステップS103)。
ピーク位置変数nowposの値に更新し(ステップS
104)、また変数jをインクリメントしてから(ステ
ップS105)、前記ステップS95に移行する。
S105で、順次ピークを検出し、ピーク間距離を幅情
報格納配列変数widthに格納していく。ここで、前
記ステップS87からステップS92に於ける最初のピ
ーク検出と異なる点は、例えば現在の符号指標flag
がDOWNの場合、次に見つけなくては行けないピーク
は正符号のピークとしている点である。
ルーチン中のステップS82でコールされる正規化ルー
チンを、図21に示すフローチャートを参照して説明す
る。まず、ループカウント変数iと変数sumに“0”
を代入し、初期化する(ステップS111)。次に、変
数sumに前記幅情報に変換ルーチンで求めた幅情報を
格納した配列width[i]を加算し、再びsumに
格納する(ステップS112)。
(ステップS113)。次に、この変数iが“8”より
小さいか否かを判断し(ステップS114)、この変数
iが“8”より小さければ(YES)、前記ステップS
112に戻る。変数iが“8”より大きければ(N
O)、次のステップS115に移行する。なお、ここで
変数iが“0”から“7”まで変化しているのは、PD
F417のコードワードがバー4本、スペース4本の計
8個の幅情報から構成されており、8個の幅情報全てを
用いてスタートコードの正規化を行なうためである。
て初期化する(ステップS115)。次に、“17”を
前記変数sumで除算し、前記幅情報配列のi番目wi
dth[i]に格納されている値を乗じたものをその値
に一番近い整数に丸める(ステップS116)。ここで
図21中のroundは、丸めを意味している。そして
前記変数iをインクリメントし(ステップS117)、
変数iが“8”より小さいか否かを判断する(ステップ
S118)。この変数iが“8”より小さければ(YE
S)、前記ステップS116まで戻り、変数iが“8”
より大きければ(NO)、上位のルーチンにリターンす
る。
ートコード検出ルーチン中のステップS73のスタート
コードマッチングについて説明する。これは、どのよう
なマッチング方法を用いてもよいが、バーコードラベル
を印刷する際にバー部分が意図した太さよりも太くなっ
てしまうことがよくある。バー部分が太過ぎると、デコ
ード性能は著しく低下する。しかし、このような場合に
は、バーが太くなった分スペース部分が細くなるので、
バーの太さとスペースの太さを加算した幅情報をマッチ
ングの対象にする方式を採用した方がよい。
ステップS66でコールされるY座標の最大値最小値検
出ルーチンについて、図22に示すフローチャートを参
照して説明する。このY座標の最大値最小値検出ルーチ
ンは、規定個数検出したスタートコードの座標の中で、
そのY座標が最大のものと最小のものを求めるルーチン
である。
値(MAXyとMINy)に、前記ステップS57(図
14)で検出したスタートコードの検出座標の配列の0
番目に格納されているStart pos[0]のY座
標の値(start pos[0]y)を代入する(ス
テップS121)。次に、データの数だけループするの
に必要な変数iに1を代入する(ステップS122)。
start pos[i]のY座標の値(start
pos[i]y)がMAXyより大きいか否かを判断す
る(ステップS123)。ここでMAXyより大きい場
合(YES)、即ちステップS123の命題が真の場合
には、前記座標配列のi番目のstart pos
[i]を前記座標変数MAXに代入し(ステップS12
4)、ステップS127に移行する。しかし、MAXy
より小さい場合(NO)、即ちステップS123の命題
が偽の場合には、ステップS125に移行する。
start pos[i]のY座標の値(start
pos[i]y)がMINyより小さいか否かを判断す
る(ステップS125)。ここでMINyより小さい場
合(YES)、即ちステップS125の命題が真の場合
には、前記座標配列のi番目のstart pos
[i]を前記座標変数MINに代入し(ステップS12
6)、ステップS127に移行する。しかしMINyよ
り大きい場合(NO)、即ちステップS125の命題が
偽の場合には、ステップS127に移行する。
(ステップS127)。次に、変数iが前記ステップS
57で求めたstart numよりも大きいか否かを
判断し(ステップS128)、変数iの方が小さければ
(NO)、即ちステップS128の命題が偽の場合に
は、ステップS123に移行する。しかし変数iの方が
大きい場合には(YES)、即ちステップS128の命
題が真の場合には、座標変数MAXを図10に於ける座
標gに、座標変数MINを座標eに格納した後(ステッ
プS129)、図14の上位のルーチンにリターンす
る。
ーチン中のステップS35でコールされるラベルの範囲
を求めるルーチンについて、図23に示すフローチャー
トを参照して説明する。
定義、例えば線分e−gの方程式y=ax+bを求める
(ステップS131)。次に、この直線がスタートビッ
クバー22Aをクロスするように、切片bを定義する
(ステップS132)。スタートコード22の構造は、
例えば、8個のバーでなるスタートビックバー22A
と、3対の白バーと黒バーと、3個の白バーの合計17
個のバーで構成されており、これを撮像した結果がN画
素であったとする。また、方程式y=ax+bで表わさ
れる直線は、切片bを変化させることにより並行移動す
ることが知られている。従って、ビックバー22Aをク
ロスする直線を得るためには、前記線分e−gを{(1
7−8/2)/17}×N画素分左に移動させるような
切片bとすれば良いことになる。
Aをクロスする直線が得られたならば、次に、その直線
と画面を定義する方程式との交点をそれぞれA,A′
(図10参照)とする(ステップS133)。
Aに向けてデータを順に見ていき(ステップS13
4)、エッジが存在するか否かをチェックする(ステッ
プS135)。このチェックは、例えば、輝度変化を見
る強度比較、微分法、2次微分法、等により行なうこと
ができる。こうして、エッジが検出されたならば、その
検出座標を座標変数iに格納する(ステップS13
6)。即ち、検出座標を点iとする。
はA′に向けてデータを準に見ていき(ステップS13
7)、エッジが存在するか否かをチェックする(ステッ
プS138)。こうして、エッジが検出されたならば、
その検出座標を座標変数mに格納する(ステップS13
9)。即ち、検出座標を点mとする。
gを通る直線に座標変数iで示される点iから垂線を下
ろし、その交点の座標を座標変数aに格納する(ステッ
プS140)。即ち、点iを通るラインA−A′と直交
する直線の方程式を求めて、それと点e、gを通る直線
の交点を求め、その交点を点aとする。
gを通る直線に座標変数mで示される点mから垂線を下
ろし、その交点の座標を座標変数dに格納する(ステッ
プS141)。即ち、点mを通るラインA−A′と直交
する直線の方程式を求めて、それと点e,gを通る直線
の交点を求め、その交点を点dとする。
標変数STARTTOPに、また座標変数dの値を座標
変数STARTBOTTOMにそれぞれ格納した後(ス
テップS142)、上位のルーチンへ制御を戻す。
中のステップS36でコールされるラベルの傾きを求め
るルーチンを、図24に示すフローチャート及び図11
に示すラベルの傾きを求めるための説明図を参照して説
明する。
x座標の値を、座標変数STARTBOTTOMのy座
標の値から座標変数STARTTOPのy座標の値を差
し引いた結果の値で割り、また座標変数STARTTO
Pのx座標の値を、座標変数STARTBOTTOMの
y座標の値から座標変数STARTTOPのy座標の値
を差し引いた結果の値で割り、これら2つの商の差を傾
き変数Slopeに格納する(ステップS151)。
y座標と座標変数STARTTOPのx座標とを乗じた
結果を、座標変数STARTBOTTOMのy座標の値
から座標変数STARTTOPのy座標の値を差し引い
た結果の値で割り、また座標変数STARTBOTTO
Mのx座標と座標変数STARTTOPのy座標とを乗
じた結果を、座標変数STARTBOTTOMのy座標
の値から座標変数STARTTOPのy座標の値を差し
引いた結果の値で割り、これら2つの商の差を切片変数
intersectに格納する(ステップS152)。
なお、図中のアスタリスク*の上付き文字は、乗算記号
×を意味する。
れる閾値決定ルーチンについて、図25に示すフローチ
ャートと図26に示す閾値算出のための説明図を参照し
て説明する。
pに代入する(ステップS161)。次に、座標変数p
のy座標の値で示されるライン、つまり図26(a)に
示すようなデータ取り込みラインのデータをフレームメ
モリ6から取り込み(ステップS162)、スタートコ
ード22の終わりx座標を点qのx座標とする(ステッ
プS163)。
する(ステップS164)。これにより、例えば、図2
6(a)に示すデータ取り込みラインの場合には、図2
6(b)に示すようなスタートコード22の微分波形が
求まる。そして、この微分データの3番目のピークの絶
対値を変数MAXとする(ステップS165)。
は、概念的に、バーコード領域内で最もコントラストが
低くなる(即ち、エッジの微分ピークが最も低い)とこ
ろで閾値を決定したいということから、ラベルのバーと
スペースの間隔が最も狭いところであるスタート若しく
は、ストップコードの第3エッジを選択するようにして
いるということによる。これにより、ラベルサイズやラ
ベルの照明条件によらず安定的なデコードが可能とな
る。
ピークに対する比率の定数THRESHOLD RAT
IOで割り、その結果を閾値変数THRESHOLDに
代入する(ステップS166)。即ち、求められたデー
タから閾値を仮に求める。なお、変数THRESHOL
D RATIOとは、ピークの何分の一を閾値に選ぶか
を示す値であり、通常は、“2”あるいは“3”に設定
される。
の値が、最小閾値定数THRESHOLD SMALL
よりも大きく(ステップS167)、且つ、最大閾値定
数THRESHOLD BIGよりも小さいか否かを判
断する(ステップS168)。つまり、仮に求めた閾値
が、閾値の取り得る範囲内に存在するか否かを判断す
る。定数THERESHOLD SMALLで示される
最大値を越える場合には(YES)、定数THRESH
OLD SMALLで示される最大値を閾値変数THE
RESHOLDに代入、つまり閾値を最小値に設定する
(ステップS169)。
示される最小値未満の場合は(YES)、THERES
HOLD BIGで示される最小値を閾値変数THRE
SHOLDに代入、つまり閾値を最大値に設定する(ス
テップS170)。
れるインディケータ情報決定ルーチンについて、図27
に示すローチャート及び図28に示すフレームメモリへ
の投影像の図を参照して説明する。
めの基準座標の始点として、ラベルのトップ座標TOP
の値を座標変数WORKに格納する(ステップS17
1)。次に、この座標変数WORKを通り、ラベルの傾
き変数Slopeで示される傾きを持つ直線Iを定義し
(ステップS172)、この直線Iが画面枠とクロスす
る点W1,W2を定義する(ステップS173)。
取り込み(ステップS174)、その中に含まれるロウ
インディケータ情報を読取る(ステップS175)。こ
こで、ロウインディケータ情報の読取りは、例えば次の
ようにして行う。即ち、前記ステップS174で取り込
まれた対象ライン上の画像データつまり白黒の画素値か
らエッジを検出し、幅情報に変換する。そして、この幅
情報からスタートコード22を検出し、そのスタートコ
ード22の次のコードがロウインディケータ21Aであ
ることがわかっているので、それを読み込む。
のストップコード23の直前のコードがロウインディケ
ータ21Aであることもわかっているため、それを読み
込む。こうして、ロウインディケータ21Aが読取れた
ならば、それを不図示のバーコード表と比較し、一致す
る部分をコードに、つまり行数,列数,セキュリティレ
ベル等の情報に変換する。なお、幅情報への変換は、種
々の手法があるが、例えば後述するような幅情報への変
換ルーチンをコールすることにより行うことができる。
か否かをチェックし(ステップS176)、確定したな
らば(YES)、ステップS180に移行する。確定し
ないならば(NO)、ステップS177に移行する。こ
こで、確定とは、何回かロウインディケータ21Aを読
み込み、情報の信頼度が十分上がった場合のことを意味
する。例えば、ロウインディケータ21Aに書かれてい
る情報(行数,列数,セキュリティレベル)が10回読
んだならば、その10回とも同じ情報が得られた場合、
確定されたとする。
ディケータ情報が確定しない場合は(NO)、座標変数
WORKのy座標の値に所定の増分L INCを加え
て、その結果を新たな座標変数WORKのy座標値とし
て代入する(ステップS177)。また、ラベルの傾き
変数Slopeの値に座標変数WORKのy座標の値を
乗じ、その結果にラベルの切片変数intersect
を加えて、その結果を新たな座標変数WORKのx座標
値として代入する(ステップS178)。こうして新た
にスキャンするための基準座標を座標変数WORKに再
設定する。
Kのy座標値がラベルのボトム座標変数BOTTOMの
y座標値を越えているか否か、つまりラベル領域内か否
かを判断し(ステップS179)、ラベル領域内であれ
ば前記ステップS172から繰り返し、ラベル領域外の
場合はマトリックスの未定義の情報を持って上位のルー
チンへリターンする。
ディケータ21Aが確定したと判断した場合には(YE
S)、ロウインディケータ情報から得られたセキュリテ
ィレベルから修復可能なデータ数を算出し、REST
NUMに格納される(ステップS180)。さらに、ロ
ウインディケータ情報から得られたラベルの行数が、ラ
ベルのロウ数変数ROW NUMBERに格納される
(ステップS181)。また、ロウインディケータ情報
からラベルの列数が抽出され、ラベルのカラム数変数C
OLUMN NUMBERに格納される(ステップS1
82)。その後、マトリックスが定義されたという情報
を持って上位のルーチンへ制御を戻す。
れる傾き再定義ルーチンについて、図29に示すフロー
チャート及び図30に示す傾きを再定義するための説明
図を参照して説明する。ここで、傾きを再定義する理由
を以下に述べる。
タートコード22の情報のみから求めた傾きは印字品
質、CCDの精度等の問題により、正確な値ではない。
そこで、前記ステップS8によりインディケータ情報が
決定した後で、ストップコード23に近い位置からスト
ップコード23に検出し、スタートコード22とストッ
プコード23の両方の情報から傾きを求めれば、より正
確な傾きの値が求まる。前記ステップSCの最適スキャ
ンの前に、より正確な傾きの値を求めることはスキャン
の高速化につながる。
S191)。pは、前記インディケータ情報決定ルーチ
ンで求まった、右行インディケータの列の左端の上端の
点uと下端の点vを結ぶ直線Iを4等分し、uからIに
沿って4等分した距離を進んだ点である。次に、p、
p′間のデータを取り込む(ステップS192)。p′
は前記点pからx軸に平行に進みy=列数の直線と交わ
った点である。
をコールする(ステップS193)。そして、ストップ
コードを検出したか否かを判断し(ステップS19
4)、検出しなかった場合には(NO)、傾きの再定義
無しの情報を持って、リターンする。検出した場合は
(YES)、検出点の座標を図10に示すfに格納し、
fを定義する(ステップS195)。
S196)。この点qは前記インディケータ情報決定ル
ーチンで求められた右行インディケータの列の左端の上
端の点uと下端の点vを結ぶ直線Iを4等分し、vから
Iに沿って4等分した距離を進んだ点である。次に、点
q,q′間のデータを取り込む(ステップS197)。
点q′は、前記点qからx軸に平行に進みy=列数の直
線と交わった点である。 次に前記ステップS193に
於けるストップコード検出ルーチンをコールし、ストッ
プコードの検出を行う(ステップS198)する。そし
て、ストップコードを検出したか否かを判断し(ステッ
プS199)、検出しなかった場合には(NO)、傾き
の再定義無しの情報を持って、リターンする。検出した
場合は(YES)、検出点の座標を図10に示すhに格
納し、hを定義する(ステップS200)。
ルーチンをコールし(ステップS201)、傾きの計算
を行なう(ステップS202)。そして、傾き再定義の
情報を持って、リターンする。
されるストップコード検出ルーチンを、図31に示すフ
ローチャートを参照して説明する。このルーチンは基本
的に図16に示したスタートコード検出と同じである
が、図16とは、マッチングの部分が異なっている。こ
れは、PDF417のスタートコード22とステップコ
ード23それぞれの持つ幅情報が異なるためである。マ
ッチング法に関しては、前述したようにバーコードラベ
ルの印刷精度に影響されないマッチング方法が望まし
い。
ールされるラベルの範囲検出ルーチンについて、図32
に示すフローチャートを参照して説明する。まず、線分
f−hに平行な直線の方程式を定義、例えば、線分f−
hの方程式y=ax+bを求める(ステップS22
1)。
Aをクロスするように、切片bを定義する(ステップS
222)。ストップコード23の構造は、例えば、8個
のバーでなるストップビックバー23Aと、3対の白バ
ーと黒バーと、3個の白バーの合計17個のバーで構成
されており、これを撮像した結果がN画素であったとす
る。また、方程式y=ax+bで表わされる直線は、切
片bを変化させることにより並行移動することが知られ
ている。
線を得るためには、前記線分f−hを{(17−8/
2)/17}×N画素分左に移動させるような切片bと
すれば良いことになる。
スする直線が得られたならば、次に、その直線と画面を
定義する方程式との交点をそれぞれB,B′(図10参
照)とする(ステップS223)。
Bに向けてデータを順に見ていき(ステップS22
4)、エッジが存在するか否かをチェックする(ステッ
プS225)。このチェックは、例えば、輝度変化を見
る強度比較、微分法、2次微分法、等により行なうこと
ができる。こうして、エッジが検出されたならば、その
検出座標を座標変数jに格納する(ステップS22
6)。即ち、検出座標を点jとする。
は点B′に向けてデータを順に見ていき(ステップS2
27)、エッジが存在するか否かをチェックする(ステ
ップS228)。こうして、エッジが検出されたなら
ば、その検出座標を座標変数kに格納する(ステップS
229)。即ち、検出座標を点kとする。
hを通る直線に座標変数jで示される点jから垂線を下
ろし、その交点の座標を座標変数bに格納する(ステッ
プS230)。即ち、点jを通るラインB−B′と直交
する直線の方程式を求めて、それと点f,hを通る直線
の交点を求め、その交点を点bとする。
hを通る直線に座標変数kで示される点kから垂線を下
ろし、その交点の座標を座標変数cに格納する(ステッ
プS231)。即ち、点kを通るラインB−B′と直交
する直線の方程式を求めて、それと点f,hを通る直線
の交点を求め、その交点を点cとする。
座標変数STOPTOPに、また座標変数cの値を座標
変数STOPBOTTOMにそれぞれ格納した後(ステ
ップS232)、図29の上位のルーチンへ戻る。
ールされるラベルの傾き再計算ルーチンについて、図3
3に示すフローチャートを参照して説明する。まず、座
標変数STOPTOPのy座標の値を、座標変数STO
PTOPのx座標の値から座標変数STARTTOPの
x座標の値を差し引いた結果の値で割り、また座標変数
STARTTOPのy座標の値を、座標変数STOPT
OPのx座標の値から座標変数STARTTOPのx座
標の値を差し引いた結果の値で割り、これら2つの商の
差を傾き変数Slope1に格納する(ステップS24
1)。
座標の値を、座標変数STOPBOTTOMのx座標の
値から座標変数STARTBOTTOMのx座標の値を
差し引いた結果の値で割り、また座標変数STARTB
OTTOMのy座標の値を、座標変数STOPBOTT
OMのx座標の値から座標変数STARTBOTTOM
のx座標の値を差し引いた結果の値で割り、これら2つ
の商の差を傾き変数Slope2に格納する(ステップ
S242)。
プS36で求めた傾き変数Slopeの差の絶対値が閾
値定数SLOPETHRESH1より小さく、且つ傾き
変数Slope2とSlopeの差の絶対値が閾値定数
SLOPETHRESH1より小さいか否かを判断する
(ステップS243)。ここで、図中のabsは絶対値
を意味する。前記ステップS243の命題が偽だった場
合には(NO)、再計算なしの情報をもってリターンす
る。そうでない場合は(YES)、前記変数Slope
1とSlope2の差の絶対値をとり、それが閾値定数
SLOPETHRESH2よりも大きいか否かを判断す
る(ステップS244)。
い場合には(NO)、ステップS250に移行し、大き
い場合には、次のステップS245に移行する。次に、
前記ステップS36で求めた傾き変数Slopeと前記
変数Slope1の差の絶対値を変数aに格納する(ス
テップS245)。次に、前記ステップS36で求めた
傾き変数Slopeと前記変数Slope2の差の絶対
値を変数bに格納する(ステップS246)。
か否かを判断する(ステップS247)。前記変数bが
大きい場合には(YES)、前記傾き変数Slopeに
Slope1を代入する(ステップS248)。前記変
数bが小さい場合は(NO)、前記傾き変数Slope
にSlope2を代入する(ステップS249)。ま
た、前記ステップS244で傾き変数SlopeとSl
ope2の差の絶対値が閾値定数よりも小さかった場合
には(NO)、傾き変数Slopeに傾き変数Slop
e1とSlope2の和を2で割ったもの、即ちSlo
pe1とSlope2の平均を代入する(ステップS2
50)。そして、再計算ありの情報を持ってリターンす
る。
では、図34に示すように、PDF417バーコードラ
ベルのスタートコード22もしくはストップコード23
のどちらか一方に欠損が存在し、ラベルの範囲が正しく
求まっていない場合を考慮している。図34の場合、直
線nの傾きSlope1とn′の傾きSlope2の値
は大きく違う。それを、このルーチンで検出し、図10
中の点e、gから計算したラベルの傾きSlopeに近
い値を新しい傾きとして採用している。このような方法
を用いることにより、スタートコード22もしくはスト
ップコード23のどちらか一方に欠損が存在した場合で
も、より正確なラベルの傾きを求めることができる。
場合というのは、スタートコード22もしくはストップ
コード23のどちらか一方の上下に欠損がある場合であ
り、この場合には傾きの再計算は行なわない。
れるスキャン方程式決定ルーチンについて、図36に示
すフローチャート及び図35に示すフレームメモリへの
投影像の図を参照して説明する。なお、図35は行スキ
ャンでスタートコード22が基準に選択された場合の例
を示している。
初期化し(ステップS251)、また基準座標変数WO
RKをラベルのトップ座標変数TOPの値に初期化する
(ステップS252)。
Mのy座標値とラベルのトップ座標変数TOPのy座標
値との差を、変数count endに代入する(ステ
ップS253)。即ち、決定しなければならないパター
ン数(図36の場合ではラベルの列方向の画素数)を求
め、変数count endに格納する。つまり、パタ
ーン数とは、ラベル全面を走査するための数である。
座標値に変数counterの値を加算し、その結果を
基準座標変数WORKのy座標値として代入する(ステ
ップS254)。また、ラベルの傾き変数Slopeの
値に基準座標変数WORKのy座標の値を乗じ、その結
果にラベルの切片変数intersectを加えて、そ
の結果を新たな基準座標変数WORKのx座標値として
代入する(ステップS255)。このように、変数co
unter値の増加にともない基準座標変数WORKを
再設定している。
を通り、ラベルの傾き変数Slopeで示される傾きを
持つ直線Iを定義し(ステップS256)、この直線I
が画面枠交差する2点を求め、それぞれを座標変数の配
列DIM POINT P及びDIM POINT Q
のcounter番目(変数counterの値が示す
配列の番号)に格納する(ステップS257)。
メントし(ステップS258)、その結果の再設定され
た変数counter値が必要数、即ち変数count
er endに達したか否かをチェックする(ステップS
259)。必要数に達しない場合は(YES)、前記ス
テップS254に戻り、必要数に達した場合は(N
O)、ステップS260に移行する。以上の動作によっ
て、ラベルを順次走査する場合の始点と終点の組み合わ
せが定義される。
初期化する(ステップS260)、そして、ラベルの傾
き変数Slopeの値に変数counter値を乗じる
ことにより、計算されているラベルの傾きSlopeの
位置による増加分が計算され、この計算結果を変数の配
列LINE INCの所定の位置(変数counter
で示される位置)に格納する(ステップS261)。
ントした後(ステップS262)、この再設定された変
数counterが配列の最大サイズ定数MAX NU
Mに達したか否かをチェックする(ステップS26
3)。達していない場合は(YES)、前記ステップS
261に戻り、達した場合には(NO)、図4のルーチ
ンにリターンする。
263のループによって、ラベル情報を1ライン取り込
む場合の傾きパターンが得られる。なお、前記配列の最
大サイズ定数MAX NUMは、プログラム作成時に定
める変数のサイズを示すもので、例えば、フレームメモ
リ6のサイズが“640×480画素”であると仮定す
れば、“1000程”とっておけば良い。
される埋め込チェックルーチンについて、図37に示す
フローチャート及び図38に示すフレームメモリへの投
影像の図を参照して説明する。なお、図38は、行スキ
ャンでスタートコード22が基準に選択された場合の例
を示している。またラベルサイズは、“4×3”である
ものとする。
ルし、ラベルをスキャンした場合、最初と最後に見つか
るロウの各種情報(検出ライン番号、コードの長さ、ロ
ウ番号、検出位置等)を検出し(ステップS271)、
それぞれ変数ROW FIRST,ROW LASTに
格納する。
LASTとも確定したか否かを判断し(ステップS27
2)、確定したならば(YES)、ステップS273に
移行する。しかし確定しないならば(NO)、デコード
不可能として、図4の上位ルーチンにリターンする。
OW FIRSTとROW LASTとも確定している
ならば(YES)、コードワードマトリックスの各コー
ドの先頭位置座標を推定し、2次元配列変数CODE
POSのそれぞれのコードのロウ番号,カラム番号番目
に格納する(ステップS273)。ここで、各コードワ
ード先頭座標位置の推定は、図38に示すように、ラベ
ルの傾きと、最初と最後に見つかるロウの検出ライン番
号,コードの長さ,ロウ番号,検出位置、更にマトリッ
クスサイズ(ROW NUMBER×COLUMN N
UMBER)などから決めることができる。
ち画面外にコードがはみ出してしまう恐れのあるものの
個数を集計し、変数error numに格納する(ス
テップS274)。図38に示す例では、(ロウ番号,
カラム番号)=(0,2)、(1,2)、(2,2)、
(3,1)、(3,2)の5個のコードが読取不能と判
断され、error numに5が格納される。
前記ステップS180で求めた修復可能コード数の変数
REST NUMと比較し(ステップS275)、er
ror numがREST NUM以下であれば(YE
S)、デコード可能として図4の上位ルーチンにリター
ンする。一方、error numがREST NUM
を越えている場合は(NO)、デコード不可能として図
4の上位ルーチンにリターンする。
置を推定することができ、また画面外と推定されるコー
ド数をカウントできるため、デコード可能か否かをこの
段階で判断することが出来る。これにより、長い時間処
理を行ったにも係わらず、デコードされないという最悪
のパターンは激減する。
ールされるROW検出ルーチンについて、図39に示す
フローチャート及び図36に示すフレームメモリへの投
影像の図を参照して説明する。
Mのy座標値とラベルのトップ座標変数TOPのy座標
値との差、つまりラベルのy方向の画素数を計算し、そ
の計算結果を変数pos numに格納する(ステップ
S281)。
プS282)、変数counterの値を“0”に(ス
テップS283)、変数endの値を前記ステップS2
82もしくはS283で求めたpos numとする
(ステップS284)。
4で求めた各変数(初期値counter,増分in
c,終了位置end)を用いて、後述するROW番号検
出ルーチンをコールする(ステップS285)。正しく
インディケータ情報からロウ番号を検出できた場合は、
変数ROW POSに検出ライン番号,コード長さ,ロ
ウ番号,検出位置などの情報が格納される。
タ情報からロウ番号を検出できたか否かを判断し(ステ
ップS286)、検出された場合は(YES)、ステッ
プS287へ移行し、検出できなかった場合は(N
O)、デコード不可能として上位ルーチンに戻る。
データROW POSをROW FIRSTに格納する
(ステップS287)。即ち、前記ステップS282か
らS287でラベルのTOPからBOTTOMに向かっ
てスキャンラインを次々設定し、最初に検出されたイン
ディケータ位置がROW FIRSTに格納される。
ラベルをBOTTOMからTOPに向かって、スキャン
ラインを次々設定し、最初に検出されたインディケータ
位置がROW LASTに格納される。
処理不能(例えば画面外にとび出しているとか)になっ
ているか否かが分かるわけである。なぜなら、ロウ数4
のラベルで、ROW FIRSTでロウ番号0が検出さ
れ、ROW LASTでロウ番号2が検出された場合、
ロウ番号3は検出不能であるので、処理できないのが分
かる。
ールされるROW番号検出ルーチンについて、図40に
示すフローチャートを参照して説明する。まず、現在の
変数counter値に於ける走査始点及び終点を前記
座標変数の配列DIM POINT P,DIM PO
INT Qから求め、x方向増分を“1”且つy方向増
分を前記傾き増分配列LINE INCで、フレームメ
モリ6から画像データを1ライン取出して、取り込みバ
ッファ配列scan lineに格納し、そのデータの
個数を変数numに格納する(ステップS301)。
コールして(ステップS302)、この取り出したデー
タを幅情報に変換する。次に、この幅情報を元に、不図
示バーコード表と一致する部分をコードに変換し、その
情報の中からインディケータ情報を抽出し保存する(ス
テップS303)。ここで、インディケータ情報が読め
たか否かを判断し(ステップS304)、読めなかった
場合は(NO)、その後、変数counterを増分、
即ち前記間隔変数incの値で再設定し(ステップS3
05)、この再設定された変数counter値が、前
記変数end、つまり、ラベル範囲を越えるか否かを判
断する(ステップS306)。ここで越えない場合は
(NO)、前記ステップS301に戻り、越える場合は
(YES)、デコード不能と判断し、図39の上位ルー
チンにリターンする。
めたと判断した場合は(YES)、その時の検出ライン
番号とコード長さとロウ番号と検出位置を変数ROW
POSに格納し(ステップS307)、デコード可能と
して、図39の上位ルーチンにレターンする。従って、
このルーチンに入ってから最初に検出されたインディケ
ータの各種情報をROW POSに格納することにな
る。
される最適スキャンルーチンについて、図41に示すフ
ローチャート及び図42に示すフレームメモリへの投影
像の図を参照して説明する。
OW LASTの検出位置y座標値とROW FIRS
Tの検出位置y座標値との差、つまりラベルのy方向の
画素数を計算し、その計算結果を変数endに格納する
(ステップS311)。
(変数ROW LASTのロウ番号−変数ROW FI
RSTのロウ番号の絶対値)で割ることにより、図42
に示すように各行の中心を一度だけ走査するための間隔
を計算し、それを変数incに格納する(ステップS3
12)。そして、変数ROW FIRSTの検出ライン
番号を変数counterの初期値とする(ステップS
313)。
る走査始点及び終点を前記座標変数の配列DIM PO
INT P,DIM POINT Qから求め、x方向
増分を“1”且つy方向増分を前記傾き増分配列LIN
E INCで、フレームメモリ6から画像データを1ラ
イン取出して、それを取り込みバッファ配列scan l
ineに格納し、またそのデータの個数を変数numに
格納する(ステップS314)。
同じ、幅情報に変換ルーチンをコールして(ステップS
315)、この取り出したデータを幅情報に変換する。
次に、この幅情報を元に、不図示バーコード表と一致す
る部分をコードに変換し、その情報を保存する(ステッ
プS316)。
前記間隔変数incの値で再設定し(ステップS31
7)、この再設定された変数counter値が、前記
変数endつまりラベル範囲を越えるか否かを判断する
(ステップS318)。この判断で越えない場合は(Y
ES)、前記ステップS314に戻り、越える場合は
(NO)、格納されたコード情報がラベルに記述されて
いる情報が完全に復号可能か否かを判断する(ステップ
S318)。復号可能の場合は(YES)、デコード可
能の情報を持って図4の上位ルーチンへリターンする。
しかし復号不可能の場合は(NO)、デコード不可能の
情報を持って図4の上位ルーチンへリターンする。
されるインテリジェントスキャンルーチンについて、図
43に示すフローチャートを参照して、説明する。この
スキップスキャンルーチンは、前記最適スキャンで取り
こぼしたコード位置のみをスキャンするルーチンであ
る。
なかったコードワードのうち、画面内と思われるコード
数をiと定義する(ステップS321)。さらに、その
各コードのロウ番号とカラム番号をそれぞれ配列RとC
に格納する(ステップS322)。以上より、最適スキ
ャンで埋め込むことの出来なかったコードワードの個数
とその位置が求められる。この位置は、後述するよう
に、カラム番号とロウ番号が分かれば、前記ステップS
10で求めたCODE POSよりその座標が分かる。
カウンターnを“0”に初期化する(ステップS32
3)。そして、counter番目の未検出場所の座標
CODE POS[[R[counter]][C[c
ounter]]を通り、Slope+dt[n]の傾
きを持つ直線Iを定義する(ステップS324)。この
直線Iが画面枠とクロスする点W3,W4を定義し、線
分W3−W4上の画像データを取り込む(ステップS3
25)。
同じ、幅情報に変換ルーチンをコールして(ステップS
326)、この取り出したデータを幅情報に変換する。
次に、この幅情報を元に、当該バーコードの用途に応じ
て予め決められた不図示バーコード表と一致する部分を
コードに変換し、その情報を保存する(ステップS32
7)。
S326で狙った場所のコードが埋めこめたか否かを判
断する(ステップS328)。この判断で埋めこめなか
った場合には(NO)、傾きパターンカウンターnをイ
ンクリメントし(ステップS329)、それが傾きパタ
ーン数N PAT(例えば傾きの種類を10種類予め配
列dtに用意しておく場合は“10”に設定)未満か否
かをチェックし(ステップS330)、未満の場合は前
記ステップS324へ戻り、以上の場合はスップS33
1へ移行する。
した場合(YES)、あるいは傾きパターンカウンター
nが傾きパターン数N PAT以上の場合は、変数co
unterをインクリメントし、傾きパターンカウンタ
nを“0”に再設定する(ステップS331)。この再
設定された変数counter値が、前記変数iつまり
最適スキャンで埋め込むことの出来なかったコードワー
ドのうち、画面内と思われるコード数を越えるか否かを
チェックする(ステップS332)。越えない場合は
(YES)、前記ステップS324に戻り、越える場合
は(YES)、格納されたコード情報がラベルに記述さ
れている情報を、完全に復号可能か否かを判断する(ス
テップS333)。
S)、デコード可能の情報を持って図4の上位のルーチ
ンへリターンする。しかし復号不可能の場合は(N
O)、デコード不可能の情報を持って図4の上位ルーチ
ンへリターンする。
332において、最適スキャンで埋め込むことの出来な
かったコードワードのうち、画面内と思われるコード毎
に、複数種類の傾きで画像データを取り込み、そのコー
ドを確定しようとしている。これにより、必要な部分の
みを取り込む操作となるため、最小のトライ数でコード
ワードマトリクッスが確定される。
ップS326で、コールされる幅情報に変換ルーチンに
ついて、図44及び図45に一連のフローチャートを参
照して説明する。
8で説明したルーチンと同一のものであるが、ステップ
S95とステップS355の部分だけが異なる。即ち、
図17及び図18のルーチンでは、スタートコード22
で検出するのみの目的であったため、幅情報は、WID
TH NUM個求めれば良かったが、図44及び図45
のルーチンでは、ラベルの全ての情報が必要であるか
ら、幅は全て求めなければいけない。そこで、ステップ
S355では、前記ステップS95に見られたjに関す
る判断は取り除くようにする。
のではなく、種々の変形実施が可能なことは勿論であ
る。例えば、2次元撮像装置5は、2次元CCDや撮像
管に代表されるエリアセンサを用いたものに限定される
ものでなく、1次元撮像素子と1次元スキャン機構の組
み合せや、光電検出器と2次元スキャン機構の組み合せ
でも良い。
ベルにPDF−417フォーマットのラベルを用いた
が、これに限定されるものでなく、Code49等、他
のスタックドバーコードや、JAN等の1次元バーコー
ドでも良い。
細書には、以下のような発明も含まれる。 (1) バーとスペースとからなるバーコードを2次元
像として撮像する撮像手段と、前記撮像手段により得ら
れた2次元像を一時的に記憶する記憶手段と、前記撮像
手段から該記憶手段に撮像画像を転送する転送手段と、
前記撮像手段により得られたバーコードの2次元像か
ら、バーコードシンボルの有無を自動認識する認識手段
と、前記撮像手段により得られたバーコードの2次元像
から、バーコードシンボルの位置を認識する位置認識手
段と、前記撮像手段により得られたバーコードの2次元
像から前記バーコードの情報を順次読み取る読取手段
と、前記読取手段からのバーコードの情報から、元の情
報に復号する復号手段と、を具備してなることを特徴と
するシンボル情報読取装置。
ードを2次元像として撮像し、得られた2次元像を一時
的に記憶し、撮像画像を記憶手段に転送し、バーコード
シンボルの有無を自動認識し、バーコードシンボルの位
置を認識し、バーコードの情報を順次読み取り、バーコ
ードの情報から、元の情報に復号する。
は、移動しているバーコードの2次元像を、撮像手段に
より得られる撮像画面のバーコード情報読み取り可能な
位置で認識するシンボル情報読取装置。
像を、撮像手段により得られる撮像画面のバーコード情
報読み取り可能な位置で認識する。よって効果は、移動
しているバーコードラベルを読み取る際に、バーコード
ラベルが完全に画像内に入っている場合にのみ読取処理
に進ようにしたので、画像からはみ出しているバーコー
ドを読みに行くようなことはなく、高速に読取が行なえ
て、尚且つ信頼性を上げることができることである。
は、撮像手段により撮像された2次元像を圧縮して転送
するシンボル情報読取装置。従って、撮像手段により撮
像された2次元像を圧縮して転送する。
ームメモリ6に転送するので、処理する画素数が少なく
なり、バーコードシンボル情報を高速に読み取ることが
可能となることである。
は、撮像した2次元像の1つのフィールド成分のみを記
憶手段に転送するシンボル情報読取装置。従って、従っ
て撮像した2次元像の1つのフィールド成分のみを記憶
手段に転送する。
ラベル像が占める割合が大きくて、バーコードラベルの
1行の高さが十分な場合には、フレームメモリにフィー
ルド画像のみを転送し、読取処理を行なうため安価なイ
ンタレース型撮像素子でバーコード情報を読み取ること
ができることである。フィールド画像は偶数成分奇数成
分のどちらでもかまわない。
は、撮像した2次元像の2つのフィールド成分を別々に
記憶手段に転送するシンボル情報読取装置。従って、撮
像した2次元像の2つのフィールド成分を別々に記憶手
段に転送する。
ドラベル像が占める割合が小さくて、バーコードラベル
の1行の高さが十分でない場合には、2つのフィールド
画像(偶数成分と奇数成分)を1つのフレームメモリに
別々に取り込み、1つのフィールド画像に対し読取処理
を行ない、それが失敗した場合にはもう1つのフィール
ド画像に対し読取処理を行ない、読取の信頼性を上げる
ことができることである。
段は、記憶手段により記憶された1つのフィールド成分
に対し読み取り処理を行ない、処理が失敗したときは記
憶手段により記憶された別のフィールド成分に対し再度
読み取り処理に行く処理操作を含み、バーコード情報を
読み取るシンボル情報読取装置。
フィールド成分に対し読み取り処理を行ない、処理が失
敗したときは記憶手段により記憶された別のフィールド
成分に対し再度読み取り処理に行く処理操作を含み、バ
ーコード情報を読み取る。
より撮像された2次元像のフィールド成分の1スキャン
ラインを転送した後、記憶手段の1ラインを空けてまた
スキャンラインを転送し、1フィールド分の画像情報を
転送するまでそれを繰り返し、終了後に空いているライ
ンにそのラインの1ライン上または下のラインの画像情
報を複写をする処理操作を含み、転送するシンボル情報
読取装置。
像のフィールド成分の1スキャンラインを転送した後、
記憶手段の1ラインを空けてまたスキャンラインを転送
し、1フィールド分の画像情報を転送するまでそれを繰
り返し、終了後に空いているラインにそのラインの1ラ
イン上または下のラインの画像情報を複写をする処理操
作を含み、転送する。
1行ずつ間隔を置いてフレームメモリ6に取り込み、空
いている行にその1行のフレームメモリの内容を複写し
て、読取処理を行なうことにより、読取の信頼性を上げ
ることができることである。複写はハードウエアにより
簡単に実現できる。
は、撮像手段により撮像した2次元像の任意数の画素情
報を加算し1つの画素にして、転送するシンボル情報読
取装置。
撮像手段により撮像した2次元像の任意数の画素情報を
加算し1つの画素にして、転送する。よって、効果は、
バーコードラベルの1行の高さが十分な場合には、全て
の画素情報に対し、任意の画素数を加算し1の画素にし
てフレームメモリに格納することにより、バーコードシ
ンボル情報を高速に読み取ることが可能となることであ
る。これもハードウエアで簡単に実現可能であり、しか
もノイズを抑制する効果も持っている。
段は、記憶装置の1行の画素情報を任意数だけ幅情報に
変換して、当該バーコードの種類によって定められる所
定パターンの位置を認識するシンボル情報読取装置。
数だけ幅情報に変換して、当該バーコードの種類によっ
て定められる所定パターンの位置を認識する。よって、
効果は、対象となる画像内にバーコードラベル以外の情
報が存在せず、尚且つPDF417バーコードラベルの
スタートコードが画像の向かって左側に位置した場合、
フレームメモリから行単位で取り込んだ画素情報を全て
幅情報に変換せずに、スタートコードを検出するのに十
分なだけの幅情報だけ求めるので、高速にスタートコー
ドを検出することができることである。
手段は、記憶手段から選択的に行を選ぶ処理操作を含
み、当該バーコードの種類によって定められる所定パタ
ーンの位置を認識するシンボル情報読取装置。
理操作を含み、当該バーコードの種類によって定められ
る所定パターンの位置を認識する。よって、効果は、画
素を取り込む行の決定法において、方程式の解を反復的
に求めるNEWTON法に類似した方法で、行間を徐々
に狭めていく方法を採用しているので、スタートコード
を大域的にしかも高速に検出することができることであ
る。
手段は、当該バーコードの種類によって定められる所定
パターンを少なくとも2箇所検出し、バーコードラベル
の傾きを求め、既に検出されているパターンとは異なる
当該バーコードの種類によって定められる所定パターン
を検出し、両方のパターンからバーコードラベルの傾き
を再定義する処理操作を含み、バーコード情報を読み取
るシンボル情報読取装置。
められる所定パターンを少なくとも2箇所検出し、バー
コードラベルの傾きを求め、既に検出されているパター
ンとは異なる当該バーコードの種類によって定められる
所定パターンを検出し、両方のパターンからバーコード
ラベルの傾きを再定義する処理操作を含み、バーコード
情報を読み取る。
た後にバーコードラベルのインディケータ情報から各コ
ード位置を推定し、ストップコードに近い位置からスト
ップコードを検出して、スタートコードとストップコー
ド両方からバーコードラベルの傾きを再定義しているの
で、より正確な傾きを求めることができ、読み取りの信
頼性を上げることができる。
手段は、バーコードラベルの1隅が欠損していた場合
に、当該バーコードの種類によって定められる所定パタ
ーンの1つのみの情報から求めたバーコードラベルの傾
きを参考に傾きを再定義する処理操作を含み、バーコー
ド情報を読み取るシンボル情報読取装置。
ていた場合に、当該バーコードの種類によって定められ
る所定パターンの1つのみの情報から求めたバーコード
ラベルの傾きを参考に傾きを再定義する処理操作を含
み、バーコード情報を読み取る。
の2次元像を縦に3等分し、バーコードラベルの大きさ
により決まる一番上のエリアの任意の行と一番下のエリ
アの任意の行で当該バーコードの種類によって定められ
る所定パターンを検出できず、なおかつ中心のエリアの
任意の行で当該バーコードの種類によって定められる所
定パターンを検出した場合にバーコードラベルが読み取
り可能な位置に存在すると判断する処理操作を含み、バ
ーコードラベルの存在の有無を認識するシンボル情報読
取装置。
し、バーコードラベルの大きさにより決まる一番上のエ
リアの任意の行と一番下のエリアの任意の行で当該バー
コードの種類によって定められる所定パターンを検出で
きず、なおかつ中心のエリアの任意の行で当該バーコー
ドの種類によって定められる所定パターンを検出した場
合にバーコードラベルが読み取り可能な位置に存在する
と判断する処理操作を含み、バーコードラベルの存在の
有無を認識する。
ベルを読み取る際に、バーコードラベルが完全に画像内
に入っている場合にのみ読取処理に進ようにしたので、
画像からはみ出しているバーコードを読みに行くような
ことはなく、高速に読取が行なえて、尚且つ信頼性を上
げることができることである。
識手段は、最初に記憶手段の2次元像の中心の行を選択
し、その次には2次元像の上半分の中心と下半分の中心
の行を選択し、以下同様に分割された画像の中心の行を
順次選択する処理操作を含み、当該バーコードの種類に
よって定められる所定パターンの位置を認識するシンボ
ル情報読取装置。
の行を選択し、その次には2次元像の上半分の中心と下
半分の中心の行を選択し、以下同様に分割された画像の
中心の行を順次選択する処理操作を含み、当該バーコー
ドの種類によって定められる所定パターンの位置を認識
する。
憶手段の2次元バーコードラベル像の4隅の内の上の2
隅からバーコードラベルの傾きを求め、次に4隅の内の
下の2隅からバーコードラベルの傾きを求め、2つの傾
きからバーコードラベルの傾きを求める処理操作を含
み、バーコード情報を読み取るシンボル情報読取装置。
手段は、記憶手段の2次元バーコードラベル像の4隅の
内の上の2隅からバーコードラベルの傾きを求め、次に
4隅の内の下の2隅からバーコードラベルの傾きを求
め、2つの傾きからバーコードラベルの傾きを求める処
理操作を含み、バーコード情報を読み取る。
り手段は、記憶手段の2次元バーコードラベル像の4隅
の内の上の2隅からバーコードラベルの傾きを求め、次
に4隅の内の下の2隅からバーコードラベルの傾きを求
め、2つの傾きの差が予め定められているしきい値以上
であれば、当該バーコードの種類によって定められる所
定パターンを少なくとも2箇所検出して求めた傾きに近
い値をバーコードラベルの傾きとする処理操作を含み、
バーコード情報を読み取るシンボル情報読取装置。
ル像の4隅の内の上の2隅からバーコードラベルの傾き
を求め、次に4隅の内の下の2隅からバーコードラベル
の傾きを求め、2つの傾きの差が予め定められているし
きい値以上であれば、当該バーコードの種類によって定
められる所定パターンを少なくとも2箇所検出して求め
た傾きに近い値をバーコードの傾きとする処理操作を含
み、バーコード情報を読み取る。
憶手段の2次元バーコードラベル像の4隅の内の上の2
隅からバーコードラベルの傾きを求め、次に4隅の内の
下の2隅からバーコードラベルの傾きを求め、2つの傾
きの差が予め定められているしきい値未満であれば、2
つの傾きの平均値をバーコードラベルの傾きとする処理
操作を含み、バーコード情報を読み取るシンボル情報読
取装置。
ル像の4隅の内の上の2隅からバーコードラベルの傾き
を求め、次に4隅の内の下の2隅からバーコードラベル
の傾きを求め、2つの傾きの差が予め定められているし
きい値未満であれば、2つの傾きの平均値をバーコード
ラベルの傾きとする処理操作を含み、バーコード情報を
読み取る。
手段は、再度読取処理に行くときに前フィールド画面の
バーコードラベルの位置情報を用いる処理操作を含み、
バーコード情報を読み取るシンボル情報読取装置。
ールド画面のバーコードラベルの位置情報を用いる処理
操作を含み、バーコード情報を読み取る。よって、効果
は、再度読取処理に行くときに前フィールド画面のバー
コードラベルの位置情報を用いることが出来るので、再
度ラベル検出をする必要はなく、バーコード情報の高速
な読み取りが実現できることである。新たなバーコード
ラベル位置はラベルの速度と撮像装置の走査速度から計
算することが出来る。また、バーコードラベルの速度が
撮像装置の走査速度に比べ、十分無視できる場合にはそ
のまま前フィールド画面のバーコードラベルの位置情報
を用いることができる。
動している2次元バーコードのバーコードシンボル情報
を高速に確実に読取るシンボル情報読り取装置を提供す
ることができる。
概略的な構成を示す図である。
417のラベル構造を示す図である。
417のラベル画像を投影した模式図を示す図である。
報読出し及び復号について説明するためのフローチャー
トである。
ための図である。
フローチャートである。
を取り込むことを説明するための図である。
るための図である。
チャートである。
像を示す図である。
ベルの傾きを説明するための図である。
のフローチャートである。
のバーコードラベル投影像を示す図である。
トである。
ベル投影像を示す図である。
チャートである。
チャートの前半部である。
チャートの後半部である。
ある。
めの図である。
トである。
るためのフローチャートである。
フローチャートである。
フローチャートである。
ートである。
明するための図、図26(b)はスタートコードの微分
波形を示す図である。
めのフローチャートである。
モリへのバーコードラベル投影像を示す図である。
明するためのフローチャートである。
明するためのバーコードラベル投影像を示す図である。
フローチャートである。
るためのフローチャートである。
するためのフローチャートである。
めの図である。
いて説明するためのバーコードラベル投影像を示す図で
ある。
フローチャートである。
ーチャートである。
コードラベル投影像を示す図である。
ャートである。
ーチャートである。
チャートである。
ムメモリへのバーコードラベル投影像を示す図である。
ためのフローチャートである。
チャートの前半部である。
チャートの後半部である。
像光学系、5…2次元撮像部、6…フレームメモリ、7
…データ処理装置、8…ラベル検出部、9…読取り部、
10…デコード判定部、11…復号部、12…メモリ、
13…制御部、14…位置検出部、15…傾き検出部、
16…ホスト装置。
Claims (3)
- 【請求項1】 バーとスペースとからなり任意の情報を
パターンとして表すバーコードを2次元像として撮像す
る撮像手段と、 前記撮像手段により順次得られた2次元像を一時的に記
憶する記憶手段と、 前記撮像手段から前記記憶手段に2次元像を転送する転
送手段と、 前記記憶手段に記憶された2次元像を順次読出し、撮像
範囲内でのバーコードシンボルの有無を認識する認識手
段と、 前記認識手段により認識されたバーコードの前記撮像範
囲内での存在位置及び傾きを検出し、バーコードのスキ
ャン方向を検出する位置検出手段と、 前記位置検出手段により検出されたスキャン方向により
バーコードの2次元像から該バーコードの情報を順次読
み取る読取手段と、 前記読取手段からのバーコードの情報から、前記任意の
情報に復号する復号手段と、を具備することを特徴とす
るシンボル情報読取装置。 - 【請求項2】 前記転送手段は、撮像手段により撮像さ
れた2次元像を圧縮して転送することを特徴とする請求
項1記載のシンボル情報読取装置。 - 【請求項3】 前記転送手段は、撮像手段により撮像さ
れた2次元像のフィールド成分の1スキャンラインを転
送した後、記憶手段の1ラインを空けてまたスキャンラ
インを転送し、1フィールド分の画像情報を転送するま
でそれを繰り返し、終了後に空いているラインにそのラ
インの1ライン上または下のラインの画像情報を複写す
る処理操作を含み、転送することを特徴とする請求項2
記載のシンボル情報読取装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13525695A JP3580901B2 (ja) | 1995-06-01 | 1995-06-01 | シンボル情報読取装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13525695A JP3580901B2 (ja) | 1995-06-01 | 1995-06-01 | シンボル情報読取装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08329185A true JPH08329185A (ja) | 1996-12-13 |
| JP3580901B2 JP3580901B2 (ja) | 2004-10-27 |
Family
ID=15147463
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP13525695A Expired - Fee Related JP3580901B2 (ja) | 1995-06-01 | 1995-06-01 | シンボル情報読取装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3580901B2 (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002230475A (ja) * | 2001-01-08 | 2002-08-16 | Symbol Technologies Inc | 双光学系バーコード読取り装置 |
| JP2006172267A (ja) * | 2004-12-17 | 2006-06-29 | Toyo Kanetsu Solutions Kk | 移動物体上のシンボル認識システム |
| JP2009020611A (ja) * | 2007-07-10 | 2009-01-29 | Toshiba Tec Corp | スキャナ装置 |
| JP2022165311A (ja) * | 2021-04-19 | 2022-10-31 | 株式会社ディスコ | バーコードの読み取り方法及びバーコード読み取り装置 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116362274B (zh) * | 2023-05-30 | 2023-08-25 | 深圳市华众自动化工程有限公司 | 一种高速的条码阅读器 |
-
1995
- 1995-06-01 JP JP13525695A patent/JP3580901B2/ja not_active Expired - Fee Related
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002230475A (ja) * | 2001-01-08 | 2002-08-16 | Symbol Technologies Inc | 双光学系バーコード読取り装置 |
| JP2006172267A (ja) * | 2004-12-17 | 2006-06-29 | Toyo Kanetsu Solutions Kk | 移動物体上のシンボル認識システム |
| JP2009020611A (ja) * | 2007-07-10 | 2009-01-29 | Toshiba Tec Corp | スキャナ装置 |
| JP2022165311A (ja) * | 2021-04-19 | 2022-10-31 | 株式会社ディスコ | バーコードの読み取り方法及びバーコード読み取り装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3580901B2 (ja) | 2004-10-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100271245B1 (ko) | 바코드 판독장치 | |
| US5635697A (en) | Method and apparatus for decoding two-dimensional bar code | |
| EP0669593B1 (en) | Two-dimensional code recognition method | |
| US7111787B2 (en) | Multimode image capturing and decoding optical reader | |
| US8254683B2 (en) | Code image processing method | |
| JPH05324887A (ja) | シンボル情報読取装置 | |
| KR100275006B1 (ko) | 자동판독개시기능이 달린 바코드 판독장치 | |
| EP1619604A2 (en) | Code type determining method and code boundary detecting method | |
| EP0353842A2 (en) | Technique for reading bar codes | |
| JP5140820B2 (ja) | シンボル情報読取装置及びシンボル情報読取方法 | |
| JPH0612515A (ja) | Ccd/cmdカメラを使用して二次元バーコードを復号する方法及び装置 | |
| US5550363A (en) | Optical information reading apparatus | |
| JP2788604B2 (ja) | 2次元情報パターンを有する情報表示タグ、それを用いた画像処理方法及び画像処理装置 | |
| JPH0157394B2 (ja) | ||
| KR100257128B1 (ko) | 심볼정보판독장치 | |
| US4797940A (en) | Optical character reader | |
| EP0576220B1 (en) | Bar-code reader device | |
| JP3580901B2 (ja) | シンボル情報読取装置 | |
| US5038391A (en) | Optical character reader | |
| JP2007081458A (ja) | 画像処理装置および画像処理装置の制御方法 | |
| EP0651337A1 (en) | Object recognizing method, its apparatus, and image processing method and its apparatus | |
| US5054104A (en) | Optical character reader | |
| JPH05233867A (ja) | バーコード読取装置 | |
| US20020089699A1 (en) | Handling system and device for determining a state of a slip | |
| JP2000057250A (ja) | 2次元コードの読取方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040413 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040614 |
|
| 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: 20040713 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040721 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080730 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090730 Year of fee payment: 5 |
|
| LAPS | Cancellation because of no payment of annual fees |