JP3567904B2 - 2次元コード読み取り装置 - Google Patents

2次元コード読み取り装置 Download PDF

Info

Publication number
JP3567904B2
JP3567904B2 JP2001084815A JP2001084815A JP3567904B2 JP 3567904 B2 JP3567904 B2 JP 3567904B2 JP 2001084815 A JP2001084815 A JP 2001084815A JP 2001084815 A JP2001084815 A JP 2001084815A JP 3567904 B2 JP3567904 B2 JP 3567904B2
Authority
JP
Japan
Prior art keywords
edge
dimensional code
cell
value
inclination
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
JP2001084815A
Other languages
English (en)
Other versions
JP2001250079A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2001084815A priority Critical patent/JP3567904B2/ja
Publication of JP2001250079A publication Critical patent/JP2001250079A/ja
Application granted granted Critical
Publication of JP3567904B2 publication Critical patent/JP3567904B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、2次元コードを読み取る2次元コード読み取り装置に関する。
【0002】
【従来の技術】
従来2次元コードを読み取る手段としては、特開平7−234915号公報に示されているようにセンサとしてCCDエリアセンサを使い、(1)CCDエリアセンサから出力されるアナログの画像情報を2値化する、(2)2値化された画像データの中から2次元コードを切り出す、(3)切り出された2次元コードのセルデータを抽出する、という順序で処理が行われていた。
【0003】
この内(1)の処理としては次の3つの方法が行われていた。
【0004】
第1の2値化方法はCCDエリアセンサから送られてきた画像信号を一定のしきい値と比較して2値化を行う。図26(b)は固定しきい値による2値化の回路の例である。CCDエリアセンサから出力されたアナログ信号電圧は入力Vinにはいり、電圧Eoと比較され高ければ1、低ければ0の信号が出力される。図26(a)中で波形Vinのが電圧Eoの値よりも高いところは0(白)、低いところは1(黒)となる。
【0005】
第2の2値化方法は画像信号を少し前の画像信号から求められる浮動しきい値と比較して2値化を行う。図26(c)は浮動しきい値による2値化回路の例である。この2値化回路は入力信号Vinを低周波ろ波(積分)して得られるEvをしきい値としている。このしきい値Evは図26(a)ではEvとなり、VinがEvより高い場合は0(白)、低い場合は1(黒)が出力される。
【0006】
第3の2値化方法はCCDエリアセンサから出力される画像信号をA/D変換して、1画面分の画像信号を画像メモリに記憶し、この濃度分布の情報を用いて2値化する方法である。図23はこの2値化方法の例である。まず画像メモリに記憶された画像に対して輝度ムラ等の影響をのぞくシェーディング(輝度ムラ)補正を画面全体に行う(ステップ51)。このシェーディング補正には例えばhomomorphic filter(準同型フィルタ)によって画像から低周波成分を取り除く方法がある。つぎに画像の濃度値のヒストグラムを作り、2モード法によりしきい値を求める(ステップ52)。
【0007】
また2値化が行われたあと(2)の処理として2次元コードの切り出しを行う。2次元コードの切り出しは2次元コードの位置の検出を行うことであるが、この位置検出には例えば特公平1−35385号公報に見られるようなチェーンコーディングを用いた方法がよく用いられている。
【0008】
このチェーンコーディングは、図形の輪郭線を求める方法で、図24(a)に示すように、黒画素241と白画素242の境界を追跡し(243)、図形の輪郭線を求め、切り出しを行う。
【0009】
また特に2次元コード20のように外側の少なくとも2辺が直線となっている2次元コードの切り出し方法としては特開平7−234915号公報のようにハフ変換を用いる方法が提案されている。
【0010】
ハフ変換は、画像中に直線上に並ぶ点を大局的に抽出する方法で、効果的な直線検出手段として知られている。特開平7−234915号公報ではこのハフ変換を用いて2組の直線を検出し、2次元コードの切り出しを行っている。
【0011】
図25(a)(b)でハフ変換を用いた直線検出を説明する。画像メモリ上を縦方向に一定の間隔を開けて走査して、エッジ点を見つける。そして求められたエッジ点の座標に対応するサイン曲線をθ(角度)−ρ(距離)平面に引く。例えばエッジ点251、252、253、254はθ−ρ平面上に256、257、258、259の曲線に変換される。ここでエッジ点251、252、253のように一直線上に並んでいる場合は図25(b)の点260のようにサイン曲線は3本交わる。実際にはθ−ρ平面上は量子化されており、サイン曲線の通る(θ、ρ)の点に1ずつ投票されていく。よって点260は3票投じられている。点260のように多くの点が投じられている点を見つけることによって直線255を検出できる。
【0012】
上記のように2次元コードの切り出しが行われた後、(3)の処理では切り出された2次元コードの各セルの中心点の位置を求め、各セルの中心点の2値データが抽出される。この時、(1)の処理で2値化がすでに行われているので、セルの中心点の画素の濃度値を読み出すだけでセルの2値データを抽出することができる。
【0013】
【発明が解決しようとする課題】
従来例であげた2値化方法の課題としては以下のことがあげられる。
【0014】
第1の固定しきい値による2値化方法では、2値化を正確に行うことが可能なのは画像のコントラストが良く、輝度ムラ等がない場合で、コントラストが悪い場合や照明光の当たり具合により輝度ムラがある場合は正しく2値化できない。また細い線や小さい点は、センサの受光素子にまたがると図26(a)の221のように十分な出力が得られない場合があるため、無視されることが多い。
【0015】
第2の2値化方法は浮動しきい値による2値化をおこなっているため、第1の2値化方法の課題である輝度ムラの問題、または細い線等の欠落の問題も解決される。しかしこの方法でも輝度ムラによりEo以下の黒信号が長く続くような波形の場合正しく2値化できない。つまり黒が画像信号に沿う向きに連続して続き、かつ輝度ムラがあるような領域の2値化は正しくできない。
【0016】
第3の2値化方法は第1、第2の2値化方法の課題は解決しているが、いったん画像情報を画像メモリにすべて記憶させ、その画像情報すべてに対してシェーディング補正と2値化処理を行うために処理時間が非常にかかるという問題点がある。
【0017】
また従来の2次元コードの切り出しの課題としては以下のことがあげられる。
【0018】
前述したチェーンコーディングによる切り出し処理では、図24(b)のような傷244の付いた図形が読み込まれると、図中の矢印245で示すように傷の部分を輪郭として追跡してしまい、本来の輪郭と違った輪郭を認識してしまい、正しく切り出しができないという問題点がある。
【0019】
また前述したハフ変換を用いた切り出しでは、チェーンコーディングによる切り出し処理と異なり、前述したように大局的な直線検出を行っているため、傷等の影響は受けずに直線検出を行うことができる。しかし、ハフ変換による直線検出を行うためには、多くのエッジ点をサイン曲線に変換するため、計算量が多くなり処理時間がかかるという問題点がある。
【0020】
そこで本発明は、切り出しのための直線分で構成された特徴的なパターンを持つ2次元コードを高速にかつ正確に切り出すことができ、かつセルの2値化を高速かつ正確に行うことができる2次元コードリーダを提供することを目的とする。
【0021】
【課題を解決するための手段】
この目的を達成するために本発明の第1の2次元コード読み取り装置は、2次元コードから反射した光を受光し画像信号に変換する変換手段と、前記画像信号を画像メモリとして記憶する記憶手段と、前記画像メモリの2以上の情報から求めた差分値に基づいて2次元コードの切り出しを行うコード切り出し手段と、前記コード切り出し手段によって切り出された前記2次元コードの各セルの所定画素の値を2値化するセル2値化手段とを備えたものである。
【0022】
また、本発明の第2の2次元コード読み取り装置は、セル2値化手段は、2次元コードの各セルの所定画素の画像信号に基づき前記画素の濃度値を求めるセル濃度値抽出手段と、前記セル濃度値抽出手段で求められた濃度値から局所的なしきい値を求める局所しきい値決定手段と、前記セル濃度値抽出手段で求められた濃度値と前記局所しきい値決定手段で求められたしきい値とを比較しセルの2値データを求めるセル2値決定手段とを備えたものである。
【0023】
また、本発明の第3の2次元コード読み取り装置は、コード切り出し手段は、縦方向及び横方向に画像メモリの走査を行い走査線上にある2次元コードのエッジを検出するエッジ検出手段と、前記エッジ検出手段で求められたエッジの傾きを求めるエッジ傾き検出手段と、前記エッジ傾き検出手段で求められた傾きに従ってエッジを追跡して直線を検出する直線検出手段を備えたものである。
【0024】
【発明の実施の形態】
上記構成により本発明の第1の2次元コード読み取り装置は、2次元コードの切り出しを行った後に、前記コード切り出し手段によって切り出された前記2次元コードの各セルの所定画素の値を2値化するので、2値化する画素数が大幅に削減できることから、2値化処理にかかる時間が非常に短縮できるものである。
【0025】
また、本発明の第2の2次元コード読み取り装置は、前記セル濃度値抽出手段で求められた濃度値と前記局所しきい値決定手段で求められたしきい値とを比較しセルの2値データを求めるセル2値決定手段とを備えることにより、輝度ムラの影響を受けないセルの2値化を行うことができる。また、セルの所定画像のみアクセスするために2値化処理にかかる時間が短縮できるものである。
【0026】
また、本発明の第3の2次元コード読み取り装置は、コード切り出し手段は、縦方向及び横方向に画像メモリの走査を行い走査線上にある2次元コードのエッジを検出するエッジ検出手段と、前記エッジ検出手段で求められたエッジの傾きを求めるエッジ傾き検出手段と、前記エッジ傾き検出手段で求められた傾きに従ってエッジを追跡して直線を検出する直線検出手段を備えることにより、走査線を少なくすることができる、すなわち、画像メモリへのアクセスを少なくできるので、高速に2次元コードの切り出しを行うことができる。
【0027】
以下に本発明の実施の形態におけるタッチ式2次元コードリーダの構成を図6を用いて説明する。
【0028】
このタッチ式2次元コードリーダではセンサとしてエリアセンサ9を、アナログデジタル変換手段としてA/Dコンバータ11を、演算手段として主回路10を用いる。
【0029】
ケース1の先端部に読み取り窓2が形成されている。ケースのヘッド部3内には、例えば複数の発光ダイオード(LED)からなる光源4が配設されており、この光源4から照明光は反射ミラー5に反射して読み取り窓2からケース1の外へ出力され、ラベル6上に印字されている2次元コード7にて乱反射される。そして乱反射された光線は再び読み取り窓2を介してケース1の中へ入射し、レンズ8を介してエリアセンサ9に投影される。
【0030】
エリアセンサ9は主回路10から取り込み要求信号を受け取った時、レンズ8を介して投影された2次元情報をアナログ画像信号に変換して出力する。エリアセンサ9から出力された画像信号はA/Dコンバータ11によって256階調のデジタル画像情報に変換されて画像メモリ12に記憶される。主回路は画像メモリに記憶した画像情報をプログラムに基づいて処理し、2次元コードにコード化されている情報のデコードを行い、データをホストコンピュータ13等に送信するようになっている。
【0031】
主回路の処理の流れを図7を用いて説明する。
【0032】
取り込み処理(ステップ1)で主回路10はエリアセンサ9に取り込み要求信号を出し、取り込み要求信号を受け取ったエリアセンサ9は投影されている画像情報を画像信号として出力する。出力された画像信号はA/Dコンバータ11を介して画像メモリ12に記憶される。画像情報すべてエリアセンサ9から出力されたのち、エリアセンサ9から主回路に取り込み完了信号が出力される。
【0033】
取り込み完了信号を主回路が検出したら、切り出し処理(ステップ2)を行う。切り出し処理は主回路11より画像メモリ12の一部を読み出し、2次元コードの位置、向き及び2次元コードを構成しているセルの数を求める。
【0034】
切り出し処理が成功すれば、セル2値化処理(ステップ3)を行う。セル2値化処理では切り出し処理で求められた2次元コードの位置、向き及び2次元コードを構成しているセルの数から各セルの位置を求めて、そのセルの2値データを画像メモリをアクセスして求める。
【0035】
セル2値化処理で各セルの2値データが求められれば、次にデータ変換処理(ステップ4)で2値データから決められた規則にもとづいて、アスキーコード列に変換する。この時2値データのエラーが許容エラーを超えており、アスキーコード列への変換が失敗すれば切り出し処理(ステップ2)に戻り、他の2次元コードを検出する。画像メモリ内に2次元コードが検出できなくなったら、取り込み処理(ステップ1)へ戻る。
【0036】
データ変換処理(ステップ4)が成功すればアスキーコード列を送信(ステップ5)して取り込み処理に戻る。
【0037】
次に本実施の形態の2次元コードリーダで読み取らせる2次元コードについて説明する。
【0038】
図8にある2次元コード20(いわゆる、データマトリックス)はL字パターン21、タイミングセル22及びデータ領域23より構成されている。L字パターン21は2次元バーコード20の外側2辺に位置するL字型のパターンである。タイミングセル22は2次元コードのL字パターンの他の2辺に位置する。L字パターンはすべて黒セルによって成り立っており、タイミングセルは黒セルと白セルが交互に並んで成り立っている。データ領域23はL字パターン21とタイミングセル22に囲まれて、セルが格子状に並んで構成されている。このデータ領域の白セルと黒セルが2次元コード20にコード化されたデータを表している。
【0039】
図9にある2次元コード24(CODE1)はセンターパターン25、垂直参照パターン26及びデータ領域27から構成されている。
【0040】
センターパターン25は2次元コード24の中央に位置し、2次元コード24の水平方向に長い長方形の領域をしめ、水平方向に平行な複数のバー及びスペースが交互に並んでいる。この水平方向の複数本バーの内の一部のバーの両端には垂直方向に短いバーが接している。バー及びスペースの幅はほぼ等間隔であるが、印刷の条件等によりバーとスペースの幅が若干異なる場合もある。センターパターン25のバーの本数や垂直方向の短いバーの長さによってこの2次元コード2の縦横のセルの数が決定される。また垂直参照パターン26は2次元コード24の決められた位置に垂直方向に複数あり、その1つは1組のバーとスペースによって成り立っている。データ領域27はセンターパターン25の上下に位置し、データ領域27の黒セルと白セルが2次元コード24にコード化されたデータを表している。
【0041】
(実施の形態1)
図10は本発明の第1の実施の形態における2次元コードリーダの切り出し手段を説明する流れ図である。以下本発明の第1の実施の形態における2次元コードリーダの切り出し手段を説明する際に、図8の2次元コード20を使う。
【0042】
まずはじめに2次元画像領域を縦方向、横方向に走査してエッジ点を検出する。(ステップ31)走査を行う走査線は一定の間隔だけ開けることにより画像メモリのアクセスを少なくし、処理時間を短くする。
【0043】
以下にエッジ点の検出方法を図11により説明する。走査は例えば512×512の画像で32ピクセルの幅で縦方向に15本の走査、横方向に15本の走査を行う。一本の走査では走査線上の画素の濃度値を順次読み取り、主回路内のメモリに記憶する。この記憶された濃度値からエッジ点を求める。
【0044】
エッジ点の検出方法を以下に説明する。
【0045】
図11(a)の走査線ア上の画素の濃度値を順次配列a[i]に記憶する。濃度値は0から255までの256階調の値を取り、値が小さいほど暗く、値が大きいほど明るい。図11(b)は濃度a[i]を表したものである。
【0046】
iの値は配列a[i]の要素の番号を表しており、走査線の開始の画素イがi=0に対応している。濃度値a[i]から、差分値d[i]は
【0047】
【式1】
Figure 0003567904
【0048】
で求める。本実施の形態では2画素間隔での差分値を求めたが、この間隔は1画素であってもよいし3画素以上であってもよい。
【0049】
このように求められた差分値d[i]は図11(c)のようになる。差分値d[i]が極大となるi、及び極小となるiを求めることにより走査線上のエッジ点が求まる。
【0050】
図11(c)で差分値d[i]が極大となる点ス、ソは図11(a)のエッジ点エ、カに対応し、図11(c)で差分値d[i]が極小となる点シ、セは図11(a)のエッジ点ウ、オに対応する。差分値が極大となる点では濃度値は立ち上がりとなり、走査の方向に向かって黒セル又はバーから白セル又はスペースに変わるエッジ点であり、図11(a)中では黒丸●で表す。また差分値が極小となる点では濃度値は立ち下がりとなり、走査の方向に向かって白セル又はスペースから黒セル又はバーに変わるエッジ点であり、図11(a)中では白丸○で表す。
【0051】
以上のように走査線上の濃度値から差分値d[i]の極大値と極小値を求めることにより、2種類のエッジ点の座標を求める。
【0052】
次に、ステップ31で求められた各エッジ点が局所的な傾きを持っているか否かを判定し、持っていればその傾きを求める(ステップ32)。
【0053】
あるエッジ点aが局所的な傾きを持っているか否かの判断は同種類のエッジをエッジ点aの近傍に2点検出し、各点ごとにエッジ点aからの方向を求め、方向が同方向もしくは反対方向であるかどうかを調べる。このエッジ点の局所的な傾きの検出方法は図12を用いて説明する。
【0054】
ステップ31で立ち上がりのエッジ点カが検出されている。エッジ点カの左、右に走査線タに平行な短い走査線チ、ツを引き、その走査線チ、ツ上に立ち上がりのエッジ点テ、トを検出する。走査線チ、ツはエッジ点カの傾きが走査線タに対して45゜〜135゜の角度の時、エッジ点テ、トが検出できるよう、走査線チの開始点を点ラ、終点を点リとし、走査線ツの開始点を点ル、終点をレと決める。このようにしてエッジ点テ、トが検出できれば、次はエッジ点カを始点としてエッジ点テ、トを終点とするベクトルc、dを求め、その2本のベクトルc,dの方向成分が等しいかどうかを調べる。ほぼ等しければエッジ点カは局所的な傾きを持っていると判断する。そして、2つのベクトルの方向成分の平均値をエッジ点カの傾きとする。
【0055】
図13ではエッジ点の傾きが検出できない例を示す。エッジ点ナの近傍に走査線ニ、ヌを引く。走査線ヌ上には同種類のエッジ点ネを検出することができた。しかし走査線ニ上にはエッジ点を検出できなかった。この場合エッジの傾きの検出は失敗する。また、もし2本の走査線上に同種類のエッジ点を2点検出できた場合でも、ベクトルの方向が同じでなければエッジ点の傾きとして検出しない。エッジ点の傾きが検出できるエッジ点のみを検出することによって、誤った直線分を検出することを少なくし、処理時間を短くすることができる。
【0056】
なお図14のようにエッジ点(カ)の近傍に同種類のエッジを近傍に3点以上検出して、エッジ点の方向ベクトルを求めて、方向ベクトルの傾きのばらつきが一定値以下であればエッジ点の傾きとして、これらの平均値を求めてエッジ点の傾きの検出を行ってもよい。
【0057】
ステップ32では以上のエッジ点傾き検出をすべてのエッジ点に対して行う。
【0058】
次にステップ32でエッジ点の傾きが求められた各エッジ点からエッジ点の傾きの方向に一定間隔毎に同種類のエッジ点を検出していく(ステップ33)。
【0059】
図15でエッジ点カはエッジ点の傾きが検出されている。求められた傾きの方向へエッジ点ハ、ヒ、フとエッジ点を検出する。もし点へのような汚れなどでエッジが汚れておりエッジ点へが検出できない場合、エッジ点フから同方向に2倍の間隔でエッジ点を探索し、エッジ点ホを求める。もしさらにエッジ点ホが見つからない場合、3倍の間隔でエッジ点を探索する。一定間隔以上エッジ点か見つからなければ処理を終える。この処理はエッジ点カから逆方向へも行い、エッジ点ミ、ムと検出する。検出されたエッジ線は直線分に対応づける。
【0060】
以上の処理をステップ32で検出されたすべてのエッジ点に対して行う。
【0061】
次に2次元コード20の4隅の座標を求める(ステップ34)。ステップ33で求められた複数の直線分から図22の261、262のような直角に交わる1組の組み合わせを求める。その直線を2辺とする長方形の対辺となる端線263、264を引き、この2本の各端線と垂直に交わる短い走査線265を引き、エッジ266を求める。この時2次元コード20の2辺は白セルと黒セルが交互に並ぶタイミングセルであるのでエッジが検出できる走査線と検出できない走査線に分かれる。検出されたエッジ点を端線265、266に対応づける。直線分261、262、263、264に対応づけられたエッジ点をサンプル点として最小2乗近似法により4本の直線267、268、269、270を求める。この4本の直線の4つの交点が2次元コード20の4隅の点となる。
【0062】
2次元シンボルの縦横のセル数を求める(ステップ35)。セル数はタイミングセルの数を数えることにより求めることができる。タイミングセルの数を数えるためには、タイミングセルの上を走査して、そのエッジの数を数えればわかる。2辺のタイミングセルの数を数えることにより、縦方向及び横方向のセルの数を数えることができる。
【0063】
このように、2次元コード20の切り出しパターンである2辺の直線を、まず画像メモリを広い間隔で縦横に走査しエッジを求め、次にエッジの傾きを求めてその方向に従って直線を追跡し、最後に最小2乗近似法を用いて検出することにより、従来法のようなハフ変換による直線抽出にくらべて、処理時間が短く高速に2次元コード20の切り出しができる。また2次元コード20の切り出しパターンである2本の直線上に汚れがある場合でも、直線上の汚れのない部分のエッジからエッジの傾きを求め、このエッジの傾きにもとづいてエッジを追跡し、汚れのある部分は飛び越えて追跡を続け直線を検出することにより、2次元コードの切り出しが正確にできる。またエッジは従来法のように2値化された画像ではなく、多値の画像情報から直接求められているので輝度ムラ等があっても正確にエッジを抽出ができる。
【0064】
実施の形態1では2次元コード20のようにL字パターンを持つ2次元コードの切り出しを例に説明したが、同様に4辺がすべてバー(黒セル)であるような2次元コードの検出もできる。この場合4辺のバーはステップ33ですべて抽出されており、この情報から容易に四隅の座標が検出できるからである。
【0065】
(実施の形態2)
図16は本発明の第2の実施の形態における2次元コードリーダの切り出し手段を説明する図である。以下本発明の第2の実施の形態における2次元コードリーダの切り出し手段を説明するために、図9の2次元コード24を使う。
【0066】
まず2次元画像領域を縦方向、横方向に走査してエッジを検出する(ステップ41)。走査を行う走査線は一定の間隔だけあけることにより画像メモリのアクセスを少なくし、処理時間を短くする。
【0067】
次にステップ41で求められたエッジの座標情報とエッジの種類(○又は●)の情報を元にして、センターパターンを横切った部位であるかどうかを判定する(ステップ42)。2次元コード24はセンターパターンを走査線が横切っている場合、図17のように一定周期で2種類のエッジが交互に現れる。この時、2次元コードの印刷条件によりバーとスペースが同じ太さでない場合がある。そこで、本実施の形態では同じ種類のエッジの間隔が等しくなっているかで、センターパターンを横切る走査線上のエッジの並びであることを判断し、その各エッジの座標及びそのエッジの種類を記憶する。
【0068】
図17のエッジ点列の場合、点42と点44の距離をd1、点43と点45の距離をd2、点44と点46の距離をd3とするとd1、d2、d3がほぼ等しい距離であればセンターパターンを横切った部位であると認識する。
【0069】
次にステップ42で求められたエッジ点列41と対応づけられるエッジ同士を結ぶベクトルの傾きが等しくなるエッジ点列48を近傍に検出し、センターパターンの傾きを求める(ステップ43)。ステップ42で求められたエッジ点列の近傍に走査線40と平行な短い走査線47を引き、ステップ41と同様の方法でエッジを求めていく。この求められたエッジ点とステップ42で求められたエッジ点列のエッジ点を1対1で対応づけていく。エッジの対応づけはもっとも位置が近く同種類のエッジに対して行う。対応づけられたエッジを結んだ線のベクトルをエッジの傾きベクトル(t、ui)とする。iはエッジの番号とする。図18ではエッジは5点あるので5本の傾きベクトルが求められる。これらuiの平均値からセンターパターンの方向が求められる。なお本実施の形態ではuiの平均値によりセンターパターンの方向を求めているが、uiのヒストグラムを求め、頻度が最も多い値をセンターパターンの方向としてもよい。またこの時uiのばらつきが大きい場合は検出失敗とし、再度、ステップ42から処理を行ってもよい。
【0070】
傾きベクトルを求めるための走査線の開始点(a,b1)と終了点(a,b2)は次のように求められる。まずステップ42で求められた複数のエッジの座標からバー間隔の平均値tbとスペースの間隔の平均値tsを求める。tbとtsの内小さい方を走査線40と走査線47の間の間隔tとする。ステップ42で求められたエッジの中で最も上部の座標を(m,n1)、最も下部の座標を(m,n2)とする。このとき(a,b1)(a,b2)は
【0071】
【式2】
Figure 0003567904
【0072】
で求められる。
【0073】
tの値が大きい方がエッジの方向は精度よく求めることができる。しかしながらあまりtの値が大きすぎると走査線1上のエッジと走査線2上のエッジの対応づけができなくなる。t<(tb+ts)/2であればよい。上記の方法でtを決定すると、回転角が45度となったとしても、エッジの対応づけはできる。
【0074】
次にステップ42で求められた複数のエッジの座標からステップ43で求められたエッジの傾きベクトル(t,u)に従って、同種類のエッジを追跡し、センターパターンの水平方向のバーとスペースの境界線上のエッジを求めていく(ステップ44)。以下に具体的な処理について説明する。
【0075】
図19はステップ44のエッジ追跡を表すものである。50はステップ2で求められたエッジ点列である。このエッジ点列から走査線をt2だけ水平方向に移動させて、走査線上のエッジを検出していく。エッジの検出はステップ1で説明した方法と同様の方法を使えばよい。走査線上にエッジを検出した後、求められたエッジとエッジ点列50のエッジをエッジの傾き(t1,u)をもとにして対応させる。この後、さらに走査線をt2だけ右方向に移動させて、走査線上のエッジを検出し、1つ前の走査線上のエッジと対応させていく。対応づけができるエッジが2つ以上の場合は追跡を行い、2つ以上ない場合は右方向の追跡を終える。エッジ点列50の左方向に対しても同様の処理を行う。
【0076】
このようにエッジ追跡を行うことにより、図20のようにセンターパターン上に汚れ51がある場合でも、正しくエッジ点を追跡できる。
【0077】
対応づけられたエッジ点はセンターパターンの水平方向のバーとスペースの境界線上の点となっている。
【0078】
求められた境界線上のエッジ点をサンプル点として最小2乗近似法を用いて、線分を精度良く求める。
【0079】
ステップ45では、ステップ44で求められたセンターパターンの水平方向のバーとスペースの境界線の端線の延長方向にエッジを検出しセンターパターンの位置、回転角を求める。またセンターパターンの境界線の本数の情報から2次元コード24の縦方向及び横方向のセルの数を求めることができる。
【0080】
このように、まず画像メモリを広い間隔で縦横に走査してエッジを求め、次に同種類のエッジが等間隔に並ぶエッジ点列を検出し、さらに検出されたエッジ点列の近傍にエッジを検出することによりセンターパターンの傾きを求め、このセンターパターンの傾きをもとにしてエッジを追跡して行き、最後に最小2乗近似法を用いて複数の直線を検出することによりセンターパターンの切り出しを行うことにより、従来法のようなハフ変換による直線抽出に比べて、処理時間が短く高速に2次元コード24の切り出しができる。
【0081】
また2次元コード24のセンターパターンに汚れがある場合でも、汚れのない部位でセンターパターンの傾きを求めて、直線検出をするため2次元コード24の切り出しを正確に行うことができる。またエッジは従来法のように2値化された画像ではなく、多値の画像情報から直接求められているので輝度ムラ等があっても正確にエッジを抽出できる。
【0082】
なお実施の形態2ではステップ42でエッジの対応づけを行い、傾きを求めていたが、例えば図18の走査線40上のエッジ点列を基本パターンとし、走査線47上に基本パターンに最もマッチングの度合いが大きいパターンを検出することによってセンターパターンの傾きを求め、この傾きにしたがって基本パターンにマッチングの度合いが高いエッジ点列を順次検出していく方法でもよい。この方法はパターンマッチングを用いた方法であるので汚れや傷に強く高精度な切り出しを行うことができる。
【0083】
(実施の形態3)
本発明の第3の実施の形態の2次元バーコードリーダにおける切り出し処理の実施の形態について、2次元コード24を例にして、図7、図16及び図21を用いて説明する。
【0084】
まず、一回目の取り込み処理(ステップ1)を行い、その後切り出し処理(ステップ2)の中で図21の走査線60によってエッジ検出処理(ステップ41)及び特徴エッジパターン検出処理(ステップ42)を行う。しかしながら、この例のシンボルでは、汚れ62があり同種類のエッジの間隔が一定となる部位を検出することができないので、再度取り込み処理を行い、その後切り出し処理を行う。切り出し処理の中で走査線の位置をかえて61の走査線によって再度エッジ検出処理を行う。この時走査線の位置が変わったため、特徴エッジパターン検出処理で同種類のエッジの間隔が一定となる部位63を検出でき、センターパターン64を検出することができる。このように走査線の位置を移動させることによって、走査線間隔を大きくしたままで、汚れコードや小さいコードを確実に読み取ることができる。
【0085】
このように上記方法を用いることにより、傷のあるコードや小さいコードは数回のデコード処理により確実に読み取ることができる。
【0086】
(実施の形態4)
本発明の第4の実施の形態の2次元コードリーダについて説明する。
【0087】
本実施の形態では切り出し手段によって2次元コードの4隅の座標、又は2次元コード24の場合ではセンターパターンの4隅の座標及び2次元コードの縦方向、横方向のセル数が求められ、これらの情報をもとに、セル2値化手段によってセルの2値データが求められる。
【0088】
従来法では切り出し手段によって2次元コードの切り出しを行う前に全画素に対して2値化が行われており、切り出し手段によって得られた情報をもとに各セルの中心点の画素を決定し、その画素に当たる画像メモリのアドレスをアクセスすることによってセル2値データを求めていた。
【0089】
しかし、本実施の形態の2次元コードリーダでは高速でかつ輝度ムラに影響しない切り出し手段を実現するために、多値の画像情報から2次元コード切り出しを行っている。そのために各セルの中心点の画素に当たる画像メモリのアドレスをアクセスしても、画素の多値の濃度値が得られるだけである。そこで何らかの方法で得られた各セルの中心画素の濃度値の2値化を行う必要がある。
【0090】
各セルの中心点の画素の濃度値を2値化するためには、例えば切り出された領域内の全画素の濃度値の最大値と最小値の平均値をしきい値として、各セルの中心画素を2値化する方法が考えられる。
【0091】
しかし、この方法では領域内の全画素をアクセスするために、処理に時間がかかる。また照明の当たり具合の影響で輝度ムラ等が発生した場合、正しく2値化できない。
【0092】
そこで本実施の形態の2次元コードリーダのセル2値化手段では、2値化のしきい値をセルの中心点の画素の濃度値のみから求めることによって処理時間を短くする。また2次元コードの領域を小領域に分割し、その各領域についての局所的なしきい値を求め、セルの2値データを求めることによって輝度ムラの影響を受けにくくする。
【0093】
セル2値化の処理の流れを図1によって説明する。
【0094】
切り出し処理によって得られた情報は図2のように四隅の点14、15、16、17の位置と2次元コードの縦横のセル数である。この情報から各セル18の中心画素19の位置を求めて、その位置の画素の濃度値を順次記憶する(ステップ11)。
【0095】
次に切り出された2次元コードを図3のように縦横数セル(ここでは2×2)ずつから成る小領域に分割して、小領域ごとの濃度値の最大値maxと最小値minを求める(ステップ12)。これはステップ11で求められた各セルの中心画素の濃度値から求める。
【0096】
そして、ステップ12で求められた最大値maxと最小値minをもとにして、小領域のしきい値th及び振幅dを求める。(ステップ13)。
【0097】
各小領域のしきい値thはその小領域のセルの中心点の画素の濃度値の最大値maxと最小値minから求める。また振幅dはmaxとminの差から求める。
【0098】
隣接する小領域の振幅dの値を比較して、振幅dの値が周りに比べて小さい小領域を検出する。次に検出された小領域のしきい値thの値を隣接する複数の小領域のしきい値thの平均値から求める。
【0099】
ここで小領域の振幅dを隣接の小領域の振幅dと比較するのは小領域のセルすべてが黒セルまたは白セルであるかどうかを判断するためのものである。小領域のセルがすべて黒または白セルであると小領域で求められたしきい値では正しく2値化を行うことができない。よって、このような小領域のしきい値は隣接する小領域の中で白セル、黒セルの両方のセルを含む小領域のしきい値を用いて求められることにより正確な2値化を行うことができる。
【0100】
最後に、各セルの中心点の画素の濃度値をそのセルを含む小領域のしきい値thによって2値化する(ステップ13)。
【0101】
実施の形態4の具体例を図4を用いて説明する。ここでは小領域は2×1セルとする。また注目小領域に隣接する小領域を左右2つの領域とする。
【0102】
図4(a)の40は2次元コードのセルの中心画素を通る走査線上の画素の濃度値を表したものである。この波形はベースが右下がりのシェーディングが発生しており、固定のしきい値で正しく2値化できない。
【0103】
本実施の形態の方法ではまずステップ11でセルの中心画素の濃度値41を求める。次にステップ12で各小領域の最大値maxと最小値minを求める。そしてステップ13でステップ12より求められた値から最大値maxと最小値minの差d45及び最大値maxと最小値minの平均値th44を求める。ステップ14でもし隣接する2つの小領域のdの最大値より注目小領域のdが2分の1以下であれば、この小領域は黒セルのみ、又は白セルのみであると判断し、46、47のようにその小領域をラベルづけし、ラベルづけされた小領域のthの値を46のようにその小領域の両隣の小領域のthの内挿によって求める。もし47のように2つの小領域が連続してラベルづけされている場合は両隣の小領域のthの内挿によってthを補間する。その結果、図中43で示す値となる。なお、この値は図4(a)では42で示す値となる。
【0104】
なお、ここでは小領域は2×1セルの領域としたが、小領域を構成するセル数はいくらでもよい。また1セルに対応する画素数によって小領域を構成するセル数を変えてもよい。また各小領域は重複してもよい。また上記の説明では最大値maxと最小値minの差dの比較には右と左の小領域で行ったが、上下左右の4方向で行ってもよい。
【0105】
このように各セルの中心点の画素の濃度値を求め、その中心点の画素の濃度値のみから局所的なしきい値を求め、各セルの中心点の画素の濃度値と局所的なしきい値を比較し2値化を行うことによって、処理時間が短く、かつ輝度ムラに影響されないセルの2値化処理を行うことができる。
【0106】
(実施の形態5)
本発明の第5の実施の形態では切り出された2次元コードの領域に輝度ムラがない場合または白黒のコントラストが強い場合には一定のしきい値によって2値化を行い、輝度ムラがあり、かつ白黒のコントラストが弱い場合は第1の手段と同様の方法で2値化を行うセル2値化を行う。
【0107】
図5は本発明の第5の実施の形態のセル2値化処理の流れ図である。ステップ11の後、濃度値のヒストグラム(濃度分布)を求める(ステップ21)。ステップ11ではセルの中心点の画素の濃度値のみを求めているため、もし輝度ムラがなければ濃度分布は完全に2つの山に分かれるはずである。またもし輝度ムラがある場合でも白黒のコントラストが強ければ2つの山に分かれるはずである。もしこのような分布をしている場合は固定のしきい値で2値化できる。
【0108】
そこで輝度分布が完全に2つの山に分かれている場合は2つの山の間の濃度値をしきい値とし(ステップ23)、求められたしきい値により濃度値を2値化する。
【0109】
輝度分布が2つの山に分かれていない場合は、ステップ12に進み、第1の手段と同様の方法で2値化を行う。
【0110】
このように輝度分布より2値化の方法を変えることにより、切り出された2次元コードの領域に輝度ムラが無い、または白黒のコントラストが強い場合はより高速に2値化を行うことができ、また輝度ムラがある場合は第1の手段と同様の方法により2値化を行うことによって輝度ムラによらず、高速なセル2値化が実現できる。
【0111】
以上説明してきたそれぞれの実施の形態によれば、切り出し手段によって求められた2次元コードの位置、回転角及びセルの数から求められるセルの中心点の画素の濃度値のみから局所的なしきい値を求め、2値化を行っているために、セル2値化手段の処理時間を短くし、かつ輝度ムラの影響を受けずに2値化を行うことができる。
【0112】
また、セルの中心点の画素の濃度値を求めた後、濃度値のヒストグラムを作り、その分布により輝度ムラがないと判断されれば、その濃度値より1つのしきい値を求めすべてのセルの2値化を行うため、さらにセル2値化手段の処理時間を短くすることができる。また、輝度ムラがあると判断されれば局所的なしきい値を求め、2値化を行うことにより輝度ムラの影響を受けずにセル2値化を行うことができる。
【0113】
また、縦横の走査線の間隔を広く開けることができるため画像メモリのアクセス数が少なくなり、かつ切り出し処理の前に画像を2値化する必要がないため、高速に2次元コードの切り出しを行うことができる。また、走査線上の画素の濃度値の変化によって切り出しを行うために、輝度ムラの影響を受けずに2次元コードの切り出しを行うことができる。
【0114】
また、走査線上のエッジが汚れ等でなくなっている場合でも走査線を移動させることにより確実に切り出しを行うことができる。
【0115】
【発明の効果】
以上の説明から明かなように、本発明の第1の2次元コード読み取り装置は、2次元コードの切り出しを行った後に、前記コード切り出し手段によって切り出された前記2次元コードの各セルの所定画素の値を2値化するので、2値化する画素数が大幅に削減できることから、2値化処理にかかる時間が非常に短縮できるものである。
【0116】
また、本発明の第2の2次元コード読み取り装置は、前記セル濃度値抽出手段で求められた濃度値と前記局所しきい値決定手段で求められたしきい値とを比較しセルの2値データを求めるセル2値決定手段とを備えることにより、輝度ムラの影響を受けないセルの2値化を行うことができる。また、セルの所定画像のみアクセスするために2値化処理にかかる時間が短縮できるものである。
【0117】
また、本発明の第3の2次元コード読み取り装置は、コード切り出し手段は、縦方向及び横方向に画像メモリの走査を行い走査線上にある2次元コードのエッジを検出するエッジ検出手段と、前記エッジ検出手段で求められたエッジの傾きを求めるエッジ傾き検出手段と、前記エッジ傾き検出手段で求められた傾きに従ってエッジを追跡して直線を検出する直線検出手段を備えることにより、走査線を少なくすることができる、すなわち、画像メモリへのアクセスを少なくできるので、高速に2次元コードの切り出しを行うことができる。
【図面の簡単な説明】
【図1】本発明の第4の実施の形態におけるセル2値化手段の流れ図
【図2】同セルの中心の画素の説明図
【図3】同2×2の小領域の説明図
【図4】(a)は同しきい値の求め方の第1の説明図
(b)は同しきい値の求め方の第2の説明図
【図5】本発明の第5の実施の形態のセル2値化処理の流れ図
【図6】本発明の実施の形態におけるタッチ式2次元コードリーダの構成図
【図7】同2次元コードリーダの処理の流れ図
【図8】2次元コードラベル(データマトリックス)を示す図
【図9】2次元コードラベル(コード1)を示す図
【図10】本発明の第1の実施の形態における2次元コードリーダの切り出し手段を説明する流れ図
【図11】(a)は同エッジ点の検出の走査線を示す図
(b)は同走査線上の濃度値を説明する図
(c)は同差分値を示す図
【図12】同エッジ点の傾き検出手段について説明する第1の図
【図13】同エッジ点の傾き検出ができない例を示す図
【図14】同エッジ点の傾き検出手段について説明する第2の図
【図15】同直線検出について説明する図
【図16】本発明の第2の実施の形態における2次元コードリーダの切り出し手段を説明する流れ図
【図17】同特徴エッジパターン検出について説明する図
【図18】同センターパターンの傾き検出について説明する図
【図19】同エッジ追跡の説明図
【図20】同センターパターンの汚れについて説明する図
【図21】本発明の第3の実施の形態における走査の説明図
【図22】本発明の第1の実施の形態の2次元コード20の4隅の点を求め方の説明図
【図23】従来のソフトによる2値化方法の流れ図
【図24】(a)は従来のチェーンコーディングの説明図
(b)は従来のチェーンコーディングが正常に読み込みできないことを示す説明図
【図25】(a)は従来のハフ変換の第1の説明図
(b)は従来のハフ変換の第2の説明図
【図26】(a)は従来の2値化のしきい値の説明図
(b)は固定しきい値による2値化の回路を示す図
(c)は浮動しきい値による2値化回路を示す図
【符号の説明】
1 ケース
2 読み取り窓
3 ヘッド部
4 光源
5 反射ミラー
6 ラベル
7 2次元コード
8 レンズ
9 エリアセンサ
10 主回路
11 A/Dコンバータ
12 画像メモリ
13 ホストコンピュータ

Claims (3)

  1. 2次元コードから反射した光を受光し画像信号に変換する変換手段と、前記画像信号を画像メモリとして記憶する記憶手段と、前記画像メモリの2以上の情報から求めた差分値に基づいて2次元コードの切り出しを行うコード切り出し手段と、前記コード切り出し手段によって切り出された前記2次元コードの各セルの所定画素の値を2値化するセル2値化手段とを備えた2次元コード読み取り装置。
  2. セル2値化手段は、2次元コードの各セルの所定画素の画像信号に基づき前記画素の濃度値を求めるセル濃度値抽出手段と、前記セル濃度値抽出手段で求められた濃度値から局所的なしきい値を求める局所しきい値決定手段と、前記セル濃度値抽出手段で求められた濃度値と前記局所しきい値決定手段で求められたしきい値とを比較しセルの2値データを求めるセル2値決定手段とを備えた請求項1記載の2次元コード読み取り装置。
  3. コード切り出し手段は、縦方向及び横方向に画像メモリの走査を行い走査線上にある2次元コードのエッジを検出するエッジ検出手段と、前記エッジ検出手段で求められたエッジの傾きを求めるエッジ傾き検出手段と、前記エッジ傾き検出手段で求められた傾きに従ってエッジを追跡して直線を検出する直線検出手段を備えた請求項1記載の2次元コード読み取り装置。
JP2001084815A 2001-03-23 2001-03-23 2次元コード読み取り装置 Expired - Fee Related JP3567904B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001084815A JP3567904B2 (ja) 2001-03-23 2001-03-23 2次元コード読み取り装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001084815A JP3567904B2 (ja) 2001-03-23 2001-03-23 2次元コード読み取り装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP22211196A Division JP3209108B2 (ja) 1996-08-23 1996-08-23 2次元コード読み取り装置

Publications (2)

Publication Number Publication Date
JP2001250079A JP2001250079A (ja) 2001-09-14
JP3567904B2 true JP3567904B2 (ja) 2004-09-22

Family

ID=18940430

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001084815A Expired - Fee Related JP3567904B2 (ja) 2001-03-23 2001-03-23 2次元コード読み取り装置

Country Status (1)

Country Link
JP (1) JP3567904B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069851B (zh) * 2020-09-07 2023-12-22 凌云光技术股份有限公司 一种dm码区域的获取方法及装置

Also Published As

Publication number Publication date
JP2001250079A (ja) 2001-09-14

Similar Documents

Publication Publication Date Title
JP3209108B2 (ja) 2次元コード読み取り装置
JP2835274B2 (ja) 画像認識装置
US6015089A (en) High speed image acquisition system and method of processing and decoding bar code symbol
US7337970B2 (en) Barcode scanner decoding
EP1836646B1 (en) Bar code scanner decoding
US7636483B2 (en) Code type determining method and code boundary detecting method
JPH1063772A (ja) データマトリックスシンボルを有する機械読取り可能なシンボルを探し、デコードするための方法及び装置
EP3462372B1 (en) System and method for detecting optical codes with damaged or incomplete finder patterns
CN104732183A (zh) 一种基于图像采样线灰度信息分析的一维条码识别方法
JP2002133426A (ja) 多値画像から罫線を抽出する罫線抽出装置
JP2010123090A (ja) 文字列認識方法及び文字列認識装置
US7311262B2 (en) Method of decoding a symbol with a low contrast
JP3567904B2 (ja) 2次元コード読み取り装置
Liang et al. Real time recognition of 2D bar codes in complex image conditions
CN110263597B (zh) 一种快速准确的qr码校正方法及系统
Pârvu et al. A method for fast detection and decoding of specific 2d barcodes
Wu et al. A Distortion Rectification Method for Distorted QR Code Images Based on Self-Adapting Structural Element
CN115719374A (zh) 一种二维码检测方法与系统
JP2019113477A (ja) 欠陥検査装置、及び欠陥検査方法

Legal Events

Date Code Title Description
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: 20040525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040607

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

Free format text: PAYMENT UNTIL: 20080625

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080625

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090625

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100625

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100625

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110625

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120625

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120625

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees