JP3627416B2 - 2次元コード読取装置および記憶媒体 - Google Patents
2次元コード読取装置および記憶媒体 Download PDFInfo
- Publication number
- JP3627416B2 JP3627416B2 JP34135496A JP34135496A JP3627416B2 JP 3627416 B2 JP3627416 B2 JP 3627416B2 JP 34135496 A JP34135496 A JP 34135496A JP 34135496 A JP34135496 A JP 34135496A JP 3627416 B2 JP3627416 B2 JP 3627416B2
- Authority
- JP
- Japan
- Prior art keywords
- cell
- dimensional code
- cells
- isolated
- determined
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、2進コードで表されるデータをセル化して、2次元のマトリックス上にパターンとして配置した2次元コードを読み取るための2次元コード読取装置に関する。
【0002】
【従来の技術】
2次元コードは、バーコードに比べ、大量の情報を記録でき、情報が2次元的な広がりを持っているため、画像データの読み取りに、より大きな時間を必要とする。このような2次元コードの読取装置の例としては、特開平8−180125号公報に記載されている装置が存在する。
【0003】
2次元コードは、図12に例示するごとく2次元コードを構成するセルの種類(白/黒)で情報を表している。2次元コード読取装置が、2次元コードを正しく解読するためには、各セルの白黒の判別が正確に行われなくてはならない。このためには、各セルの中心位置の決定が重要となる。
【0004】
図12に示すような2次元コードの読み取り処理においては、最初にパターンの特徴から3つの位置決め用シンボルA,B,Dを検出し、次いで、この位置決め用シンボルA,B,Dの間に存在する白黒を交互に配列したタイミングセルE,Fを検出することで、画像処理によって、位置決め用シンボルA,B,DおよびタイミングセルE,Fの各セルの中心位置を検出している。これらのセルの中心位置が決定されると、これらのセルの中心位置の座標を利用して、他のセルの中心位置が計算にて求めらる。
【0005】
すなわち、位置決め用シンボルについては、走査した場合に特定の周波数成分比が得られることから、まず位置決め用シンボルA,B,Dの中心座標が決定し、更に、位置決め用シンボルA,B,Dの全体形状は予め定められているため、位置決め用シンボルA,B,Dを構成する各セルの中心位置も計算で求められる。そして、位置決め用シンボルA,B,D間の特定の位置に配置されているタイミングセルE,Fの位置も計算で得られ、タイミングセルE,Fを構成する各セルも、タイミングセルE,Fが1セル毎に白と黒とを交互に配列したものであることから、画像処理によりセルの境界を見つけてタイミングセルE,Fの各セルの中心位置も決定できる。
【0006】
そして、位置決め用シンボルA,B,DやタイミングセルE,F以外のセル、いわゆるデータセルの位置は、前述のごとく決定された位置決め用シンボルA,B,DおよびタイミングセルE,Fを構成する各セルを基準セルとして、その基準セルの座標値から、セルの幅や高さに基づき計算して得ることができる。
【0007】
このように、全てのデータセルの位置が決定できるので、その位置からデータセルの種類を読み取ることにより、2次元データが表すコードが検出できる。
【0008】
【発明が解決しようとする課題】
しかし、2次元コードは、図12のごとく歪みなく検出されるとは限らず、例えば、図13に示すごとく、2次元コードが斜めに読み取られ、画像に歪みが生じる場合がある。
【0009】
このような場合には、位置決め用シンボルA,B,DやタイミングセルE,Fに近いところのデータセルについては、計算して求めた読み取り位置と実際のセル位置との間の位置ずれは小さいので、セルの種類の読み取りは正確に行われるが、位置決め用シンボルA,B,DやタイミングセルE,Fから離れるにしたがって、読み取り位置と実際のセル位置との位置ずれが大きくなり、セルの種類を正確に判定できなくなった。
【0010】
本発明は、検出した2次元画像に歪みが存在していても、セルの種類を読み取るための位置を適切に設定することができる2次元コード読取装置の提供を目的とするものである。
【0011】
【課題を解決するための手段及び発明の効果】
ここには、前記課題を解決するための発明が記載され、以下に述べるような構成および効果を有する。
本発明の2次元コード読取装置は、2進コードで表されるデータをセル化して、2次元のマトリックス上にパターンとして配置した2次元コードを読み取るに際して、2次元画像検出手段にて検出された2次元画像内において特定セルが存在する基準位置を、該特定セルのパターンの性質に基づいて基準位置決定手段が決定する。そして、これらの特定セルのパターンからセルサイズ決定手段がセルのサイズを決定する。次に、セル位置決定手段が、基準位置決定手段にて決定された基準位置から、セルサイズ決定手段にて決定されたセルのサイズに基づく計算により、順次、セル位置を決定する。
【0012】
次に、セル位置決定手段にて決定されたセル位置からセル読み取り手段が、セルの種類を読み取る。こうして、読み取られて種類が決定しているセルが、孤立セル検出手段により孤立セルであるか否かが検出される。
孤立セル検出手段にて孤立セルであると検出された場合、実位置決定手段が孤立セルの画像に基づく実位置を決定する。すなわち、孤立セルについては、計算上のセル位置とは別個に、実際のセル位置を画像から直接求める。
【0013】
そして、計算上のセル位置と実位置とから、セル位置補正値算出手段がセル位置の補正値を求める。そしてこの補正値が、セル位置補正手段にて、セル位置決定手段の処理に反映されて、セル位置決定手段にて求められているセル位置が補正される。
【0014】
この孤立セルが出現したことで行われる補正値の計算により、以後のセル位置については、計算上のセル位置をそのまま用いて読み取るのではなく、計算上のセル位置が補正されて正確な読み取り位置が求められ、その読み取り位置からセルの種類が読み取られる。したがって、特定セルから離れるにしたがって位置ずれが大きくなっても、セル位置が孤立セルが現れる毎に補正されるので、常に正確なセル位置からそのセルの種類が読み取られる。このため、検出した2次元画像に歪みが存在していても、セルの種類を読み取るための位置を適切に設定でき、正確に2次元コードの内容を読み取ることができる。
【0015】
前記孤立セルとしては、x方向またはy方向にて異なる種類のセルに挟まれているものが挙げられる。
例えば、孤立セルが、x方向に異なる種類のセルに挟まれているものである場合には、明確な境界が画像に現れているので、画像処理上、その孤立セルのx方向での隣接セルとの境界を探すのは容易である。画像処理にて得られた境界は、画像上での実際の孤立セルの境界のx座標を示しているので、孤立セルの中心位置の実際のx座標も容易に求められる。したがって、孤立セルの計算上のx座標と実際のx座標との比較により、この孤立セルの位置では実際のx座標と計算上のx座標がどの程度ずれているかが判明する。このため、以後のセルの計算上のx座標を、そのずれの程度から求められた補正値にて補正して用いれば、容易にx座標のずれを補正できる。
【0016】
同様にして、y方向にて異なる種類のセルに挟まれた孤立セルが存在すれば、正確なy座標が得られるので、容易にy座標のずれを補正できる。
したがって、この補正値を以後に処理される孤立セル以外のセルの位置補正に用いれば、2次元コード全体においても、セルの位置ずれが補正されて、セルの正確な位置を特定でき、正確にコードを読み取ることができる。
【0017】
なお、孤立セルは、x方向およびy方向にて異なる種類のセルに挟まれているものであっても良い。このように、1つの孤立セルがx方向およびy方向にて異なる種類のセルに挟まれている場合には、1つの孤立セルにて、計算上のx座標のずれおよび計算上のy座標のずれを補正する補正値を同時に得ることができるので、以後のセルの位置決定において、一層正確に行うことができるようになる。
【0018】
前記特定セルは、2次元コードの少なくとも2箇所の所定位置に、各々中心をあらゆる角度で横切る走査線において同じ周波数成分比が得られるパターンからなる位置決め用シンボルを含むものであることとしても良い。
このような位置決め用シンボルを形成すると、周波数成分比を検出する回路にてハード的に容易かつ迅速に位置決め用シンボルを検出できる。周波数成分比とは、例えば、実施の形態で後述する明暗成分比が挙げられる。
【0019】
また、特定セルとして、更に、位置決め用シンボル間に存在し、種類が異なるセルが交互に配列されたタイミングセルを含むこととしても良い。このようにすると、2次元コード内の全てのセルについて計算上の位置決めが、位置決め用シンボルおよびタイミングセルの各セルの座標から容易に求められるようになり、一層、正確な位置決めと読み取り作業が可能となる。
【0020】
更に、具体的には、位置決め用シンボルは、2次元コードのマトリックスの四隅内の3箇所に存在し、セル位置決定手段は、位置決め用シンボルの内で、両側が他の位置決め用シンボルにて挟まれている位置決め用シンボルの周辺のセルからセル位置を決定してゆくこととしても良い。
【0021】
このようにすることにより、位置の正確さを最初から維持したまま、2次元セル全体のセルの正確な位置決めと読み取りが可能となる。
なお、このような2次元コード読取装置の各手段をコンピュータシステムにて実現するを実行する機能は、例えば、コンピュータシステム側で起動するプログラムとして備えられる。このようなプログラムの場合、例えば、フロッピーディスク、光磁気ディスク、CD−ROM等の記憶媒体に記憶し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ROMやバックアップRAMを記憶媒体として前記プログラムを記憶しておき、このROMあるいはバックアップRAMをコンピュータシステムに組み込んで用いても良い。
【0022】
【発明の実施の形態】
図1のブロック図に、上述した発明が適用された2次元コード読取装置2の概略構成を示す。
2次元コード読取装置2は、CCD4、2値化回路6、画像メモリ8、クロック信号出力回路14、アドレス発生回路16、変化点検出回路18、比検出回路20、アドレス記憶メモリ22および制御回路28から構成されている。
【0023】
制御回路28は、CPU、ROM、RAM、I/O等を備えたコンピュータシステムとして構成され、ROMに記憶されているプログラムに従って、後述する2次元コード読み取り処理等を実行し、2次元コード読取装置2の各構成を制御している。
【0024】
ここで、2次元コード読取装置2にて検出される2次元コードの一例の概略図を図2に示す。この2次元コード52は、白色の台紙53の上に印刷されており、3個の位置決め用シンボル54A,54B,54D、データ領域56、タイミングセル58A,58B、原点セルCstから構成されている。これら全体はセル数が縦横同数(29セル×29セル)の正方形状に配置されている。各セルは、光学的に異なった2種類のセルから選ばれており、図および説明上では白(明)・黒(暗)で区別して表す。なお、図2では便宜上、データ領域56のデータセルのパターンは省略している。
【0025】
位置決め用シンボル54A,54B,54Dは、2次元コード52の4つの頂点の内、3つに配置されている。そのセルの明暗配置は、黒部からなる枠状正方形54a内の中心に白部からなる縮小した枠状正方形54bが形成され、その内側の中心に黒部からなる更に縮小した正方形54cが形成されているパターンである。
【0026】
制御回路28は、以下に述べるごとくの読み取り制御を行う。
まず制御回路28が指示することにより、2次元画像検出手段としてのCCD4が2次元コード52が通過する場所の2次元画像を検出する。CCD4は、2次元画像を検出すると、図4(a)に示すごとくの多段階のレベルからなる信号にて2次元画像データを出力する。この2次元画像データを、2値化回路6が制御回路28から指示された閾値にて2値化して、図4(b)に示すごとくの1(ハイ)/0(ロー)の2つのレベルからなる信号に変換する。
【0027】
一方、CCD4から出力される同期パルスに応じて、クロック信号出力回路14がCCD4から出力される2次元画像データのパルスより十分に細かいクロックパルスを出力する。アドレス発生回路16はこのクロックパルスをカウントして、画像メモリ8に対するアドレスを発生させる。2値化された2次元画像データは、このアドレス毎に8ビット単位で書き込まれる。
【0028】
一方、2値化回路6からの信号における「1」から「0」への変化あるいは「0」から「1」への変化時に、変化点検出回路18は、比検出回路20にパルス信号を出力する。比検出回路20は、変化点検出回路18からのパルス信号入力から次のパルス信号入力までに、クロック信号出力回路14から出力されたクロックパルスをカウントすることにより、2次元画像の中の明(1)の連続する長さおよび暗(0)の連続する長さを求める。この長さの比から、2次元コード52の位置決め用シンボル54A,54B,54Dに該当するパターンを検出する。
【0029】
図3(A)に示すように、位置決め用シンボル54A,54B,54Dのほぼ中心を代表的な角度で横切るCCD4の走査線(a),(b),(c)での明暗パターンは、図3(B)に示すごとく、すべて同じ明暗成分比を持つ構造になっている。すなわち、位置決め用シンボル54A,54B,54Dの中心を横切るそれぞれの走査線(a),(b),(c)の明暗成分比は暗:明:暗:明:暗=1:1:3:1:1となっている。勿論、走査線(a),(b),(c)の中間の角度の走査線においても比率は1:1:3:1:1である。また、図3(A)の図形が、CCD4側から見て斜めの面に配置されていたとしても、前記走査線(a),(b),(c)の明暗成分比は暗:明:暗:明:暗=1:1:3:1:1を維持する。なお、図3(B)は、2値化回路6からの2値化された信号に該当する。
【0030】
このことにより、比検出回路20は、この「1:1:3:1:1」なる明暗成分比を検出し、検出した場合は、そのタイミングにアドレス発生回路16にて発生されている画像メモリ8のアドレスをアドレス記憶メモリ22に記憶する。
したがって、CCD4が1フレーム分の2次元画像データを検出すると、画像メモリ8に2値化された2次元画像データが記憶され、アドレス記憶メモリ22には、検出された分の位置決め用シンボル54A,54B,54Dのアドレスが記憶されている。
【0031】
なお、最初の2次元画像の1フレーム分の画像が得られると、制御回路28は、画像メモリ8およびアドレス記憶メモリ22のデータに基づいて後述する2次元コード読み取り処理を行い、この処理が終了すれば、制御回路28は、続けて、CCD4に次の1フレームの2次元画像の検出を指示する。したがって、CCD4からは、再度、2次元画像が2値化回路6に出力され、上述したごとくの処理が繰り返される。
【0032】
次に、1フレーム分の2次元コード52の画像とその位置決め用シンボル54A,54B,54Dのアドレスが、画像メモリ8とアドレス記憶メモリ22とにそれぞれ記憶された後に、制御回路28は、2次元コード読み取り処理を実行する。この2次元コード読み取り処理を図5のフローチャートに示す。なお、画像は図8のごとく歪んで検出されているものとする。なお、図8においては、見易くするために、位置決め用シンボル54A,54B,54Dおよびタイミングセル58A,58B以外のセルについては、黒か白かの種類については表していない。
【0033】
処理が開始されると、まず、位置決め用シンボル54A,54B,54Dの検出処理が行われる(S100)。
この処理では、画像メモリ8およびアドレス記憶メモリ22に対してアクセスし、その記憶内容から位置決め用シンボル54A,54B,54Dが適切な位置に、3つ存在しているか否かの判断と位置決め用シンボル54A,54B,54Dの画像上での正確な中心位置を決定する。
【0034】
この処理は、まずアドレス記憶メモリ22に多数検出された位置決め用シンボル54A,54B,54Dのアドレスが、位置的に3つのグループに分けられるかを、そのアドレス値と画像メモリ8の画像とを参照しつつ判断する。更に、各位置決め用シンボル54A,54B,54Dの中心位置を、画像メモリ8の画像の1(白)/0(黒)のパターンから決定し、その3つが図2に示したごとく3つの頂点に存在する配置状態になっているかを判断する。
【0035】
次に、ステップS100にて適切な3つの位置決め用シンボル54A,54B,54Dが検出されたか否かが判定され(S110)、検出されていなければ(S110で「NO」)、次の画像の検出をCCD4に指示して(S180)、処理を終了する。
【0036】
適切な3つの位置決め用シンボル54A,54B,54Dが検出されると(S110で「YES」)、次に新しい2次元コード52か否かが判定される(S120)。この処理は、前回以前に検出された2次元コード52がいまだCCD4により検出され続けている場合に、別の2次元コードとして解読するのを防止するためである。例えば、前回または所定回数前の本処理にて、適切な3つの位置決め用シンボル54A,54B,54Dが検出され、更にそのコード内容も適切に読み取られていた場合には、同一の2次元コード52を検出しているものとして(S120で「NO」)、次の画像の検出をCCD4に指示して(S180)、処理を終了する。
【0037】
新しい2次元コード52であると判定すると(S120で「YES」)、次に各位置決め用シンボル54A,54B,54Dの形状に応じてセルの形状が計算される(S130)。すなわち、まず、位置決め用シンボル54A,54B,54Dは、図9(a)に示すごとく、黒の枠状正方形54aの幅が1セル分、白の枠状正方形54bの幅が1セル分、および黒の正方形54cの幅が3セル分の形状であることから、画像メモリ8内の位置決め用シンボル54A,54B,54D全体の高さLyと幅Lxとを測定して、次式のごとく、その高さLyと幅Lxとをそれぞれ7で割ることにより、各位置決め用シンボル54A,54B,54Dの位置におけるセルの高さWyと幅Wxの値を各3つ得る。
【0038】
【数1】
【0039】
次に、このようにして求められた各位置決め用シンボル54A,54B,54Dにおけるセルの高さWyと幅Wxに基づいて、図8の2次元コード52の画像説明図に示すごとく、他のセル位置を決定するために基準セルの中心位置を決定する(S135)。
【0040】
すなわち、まず、位置決め用シンボル54A,54B,54Dの外形とセルの高さWyと幅Wxとが判明していることから、位置決め用シンボル54A,54B,54Dの縁からセルの半分の高さおよび半分の幅分内側の位置を求めることにより、3つの位置決め用シンボル54A,54B,54Dの黒の枠状正方形54aの各4つの各頂点セルa1,a2,a3,a4,b1,b2,b3,b4,d1,d2,d3,d4の中心位置を決定する。
【0041】
そして、位置決め用シンボル54Aについて、頂点セルa2と頂点セルa4との中心位置の距離を6等分することにより、頂点セルa2から頂点セルa4までの各セルの中心位置を決定する。更に、頂点セルa3と頂点セルa4との中心位置の距離を6等分することにより、頂点セルa3から頂点セルa4までの各セルの中心位置を決定する。他の位置決め用シンボル54B,54Dについても同様に、頂点セルb2と頂点セルb4の間の各セルの中心位置、頂点セルb3と頂点セルb4の間の各セルの中心位置、頂点セルd2と頂点セルd4の間の各セルの中心位置、および頂点セルd3と頂点セルd4の間の各セルの中心位置を検出する。
【0042】
次に、3つの位置決め用シンボル54A,54B,54D間に存在する白黒が交互に配置された2つのタイミングセル58A,58Bを、位置決め用シンボル54A,54B,54Dの頂点セルa4と頂点セルb4との間および頂点セルa4と頂点セルd4との間から、白黒の画像の境界と白または黒の画像の大きさとを測定することにより、タイミングセル58A,58Bの各セルの中心位置を決定する。
【0043】
そして、次に、このタイミングセル58A,58Bと位置決め用シンボル画像54A,54B,54Dとにおいて中心位置が決定されたセルを基準セルとして、この中心位置に基づいて、他のセル、すなわち、データ領域56内の各セルの中心位置を決定し、かつその中心位置の画素からセルの種類を決定する(S140)。
【0044】
ステップS140の詳細を図6のフローチャートに示す。
まず、セル位置補正量Δx,Δyをクリアする(S210)。次に、処理するセルのライン番号nを1に設定する(S220)。このセルのラインは図10に示すごとく、図で左上の位置決め用シンボル画像54Aの下側および右側に隣接する略L字状に並んだライン1から順に、右下へ向かって、ライン番号が設定されている。具体的には、ライン1〜ライン21まで存在する。
【0045】
次にラインnにおけるセル番号mを1に設定する(S230)。このセル番号mは、各ライン毎に、図の左端から順に上端へ向かって設定されている。
次に、ラインnのm番目のセル位置のx座標xpとy座標ypとが次式のごとく、計算される(S240)。
【0046】
【数2】
【0047】
ここで、計算上のx座標xtと計算上のy座標ytとは次のようにして求められる。
ライン1を例にして説明すると、まず、ライン1のx方向のセル配列部分については、縦方向に並んだタイミングセル58Bの最上部のセル58bの中心位置のy座標から、ライン1のx方向のセル配列部分の傾きを考慮して、計算上のy座標ytが求められる。また、位置決め用シンボル画像54Aの頂点セルa3〜頂点セルa4までの各セルの中心位置のx座標から、ライン1のy方向のセル配列部分の傾きを考慮して、計算上のx座標xtが求められる。
【0048】
ライン1のy方向のセル配列については、横方向に並んだタイミングセル58Aの最左部のセル58aの中心位置のx座標から、ライン1のy方向のセル配列部分の傾きを考慮して、計算上のx座標xtが求められる。また、位置決め用シンボル画像54Aの頂点セルa2〜頂点セルa4までの各セルの中心位置のy座標から、ライン1のx方向のセル配列部分の傾きを考慮して、計算上のy座標ytが求められる。
【0049】
なお、各ラインのx方向のセル配列部分の傾きは、位置決め用シンボル画像54Aの頂点セルa3と頂点セルa4とを結ぶ直線の傾きとして得られ、y方向のセル配列部分の傾きは、位置決め用シンボル画像54Aの頂点セルa2と頂点セルa4とを結ぶ直線の傾きとして得られる。
【0050】
画像の傾きを考慮する方法としては、これ以外に、例えば、図9(b)に示すごとく、位置決め用シンボル画像54Aの画像が得られているとすると、次式のごとく、各ラインのx方向のセル配列部分の傾きを表すパラメータWxx,Wxy(Wxx:セル位置がxプラス方向に進んだ場合のx座標値の増加分、Wxy:セル位置がxプラス方向に進んだ場合のy座標値の増加分)および各ラインのy方向のセル配列部分の傾きを表すパラメータWyx,Wyy(Wyx:セル位置がyプラス方向に進んだ場合のx座標値の増加分、Wyy:セル位置がyプラス方向に進んだ場合のy座標値の増加分)を計算して用いても良い。
【0051】
【数3】
【0052】
他のラインについても、位置決め用シンボル画像54B,54Dの基準セルの中心位置、タイミングセル58Aと頂点セルb4との中間位置f1、およびタイミングセル58Bと頂点セルd4との中間位置f2を用いて、計算上の計算上のx座標xtと計算上のy座標ytとを求めることができる。
【0053】
このように計算上のx座標xtと計算上のy座標ytとを求め、このx座標xtとy座標ytとを、セル位置補正量Δx,Δyにて、前記式のごとくそれぞれ補正することにより、実際に読み取りがなされるセル位置(xp,yp)が決定する。
【0054】
次に、ステップS240にて計算された1つのセルの中心位置の画像を読み取って、そのセルが黒か白かの種類を決定する(S250)。例えば、セルの中心位置の所定数の画素の内で黒が過半数であればセルは黒と決定し、白が過半数であればセルは白と決定する。
【0055】
次に、セル位置補正値決定処理が行われる(S260)。
この処理はステップS210にてクリアしたセル位置補正量Δx,Δyに必要な補正値を設定する処理である。この処理の詳細を、図7のフローチャートに示す。
【0056】
まず、今回のステップS250にて種類が決定したセルに隣接するセルの内で、x方向の孤立セルが発生したか否かの判定(S410)と、この判定にてx方向の孤立セルが発生していないと判定されると(S410で「NO」)、y方向の孤立セルが発生したか否かの判定(S420)が行われる。
【0057】
ここで孤立セルとは、図11に示すごとく、上下あるいは左右の両セルとは種類が異なるセルを意味している。図11(a)では、セルp11自身は白であるが左右の両セルが黒であることから、x方向(横方向)での孤立セルである。図11(b)の場合は、セルp12自身は黒であるが上下の両セルが白であることから、y方向(縦方向)での孤立セルである。また、図11(c)の場合は、セルp13自身は白であるが、上下および左右の4つのセルが黒であることから、x方向(横方向)とy方向(縦方向)との両方向での孤立セルである。
【0058】
孤立セルか否かの判断は、周囲のセルの種類、少なくとも上下または左右のセルの種類が判明した時点で可能となることから、直前のステップS250にてセルの種類が決定したセルそのものについての判断ではなく、前回以前にセルの種類が決定されているセルの内で、直前のステップS250にて新たなセルの種類が決定したことにより、上下または左右のセルの種類が判明したセルについて行われる。実際には、1回前に種類が決定された隣接セルあるいは1ライン前の隣接セルが、判定対象とされる。
【0059】
このような隣接セルの一つを判定して、それが、x方向の孤立セルでもなく、y方向の孤立セルでもない場合には、ステップS410,S420にて共に「NO」と判定されて、ステップS455の処理に移る。
x方向の孤立セルである場合には(S410で「YES」)、その孤立セルについて、x方向に隣接するセルとの境界位置を画像から検出する(S430)。
この場合、x方向の隣接するセルは、孤立セルとはセルの種類が異なることから、画像の白黒の境界をチェックすることにより、境界位置は容易に決定できる。
【0060】
次に、このx方向に隣接するセルとの2つの境界位置の中間点のx座標xrを計算する(S440)。このxrの値は、基準セルのセル形状に基づいた計算にて求められたものではなく、画像上の孤立セルの実際のx座標を示している。
次に、次式のごとく、実x座標xrと、ステップS240で求めた計算上のセル位置のx座標xtとの差を計算し、その値をΔxとする(S450)。
【0061】
【数4】
【0062】
続いて、同セルについて、y方向の孤立セルであるか否か判定される(S420)。これは、図11(c)に例示したごとく、x方向とy方向の両方で孤立セルである場合を処理するためである。y方向の孤立セルではない場合は(S420で「NO」)、ステップS455に移る。
【0063】
y方向の孤立セルでもある場合には(S420で「YES」)、その孤立セルについて、y方向に隣接するセルとの境界位置を画像から検出する(S460)。この場合も、y方向に隣接するセルは、孤立セルとはセルの種類が異なることから、画像の白黒をチェックすることにより、境界位置は容易に決定できる。
【0064】
次に、このy方向に隣接するセルとの2つの境界位置の中間点のy座標yrを計算する(S470)。このyrの値は、基準セルのセル形状に基づいた計算にて求められたものではなく、画像上の孤立セルの実際のy座標を示している。
次に、次式のごとく、実y座標yrと、ステップS240で求めた計算上のセル位置のy座標ytとの差を計算し、その値をΔyとする(S480)。
【0065】
【数5】
【0066】
ステップS480の次には、隣接するセルの内で未だ本処理を行っていないセルがないか否かが判定され(S455)、未処理の隣接セルが存在していれば(S455で「NO」)、その未処理の隣接セルについて、再度、ステップS410の判定から処理が行われる。
【0067】
このようにして、孤立セルが存在すれば、セル位置補正値Δx,Δyが新たに設定され、ステップS240で示した式により、セル位置の補正に用いられる。
全ての隣接セルの処理が終了すると(S455で「YES」)、セル位置補正値決定処理(S260)が終了し、次にラインnのセルについて処理が終了したか否かが判定される(S270)。いまだ未処理のセルがラインnに残っていれば(S270で「NO」)、セル番号がインクリメントされて(S280)、次のセルが指示され、再度、ステップS240から処理が行われる。
【0068】
ラインnについて全てのセルの処理が終了すれば(S270で「YES」)、次にラインが全て終了したか否かが判定される(S290)。具体的には、ライン21まで到達していない場合は、未処理のラインが存在するので(S290で「NO」)、ライン番号がインクリメントされて(S300)、次のラインが指示され、再度、ステップS230から処理が行われる。
【0069】
こうして、全てのラインについて処理が終了すれば(S290で「YES」)、2次元コード52についての各セルの位置と種類とが決定され、2次元コード52が表しているコード内容が得られる。
次にこのコード内容が正常なものか否かが判定される(S160)。例えば、白と黒とのセル数が特定の数になっているか否か、あるいは表されているデータが8ビットデータであるとした場合に合計が特定の数になっているか否か等により、正常にコードが読み取られているか否かが判定される。
【0070】
正常なコードでなければ(S160で「NO」)、次の画像の検出をCCD4に指示して(S180)、処理を終了する。
正常なコードであれば(S160で「YES」)、そのコード内容をホストコンピュータ等の他の装置へ出力したり、そのコード内容を特定のメモリに記憶したり、そのコード内容に対応した処理を実行したり、あるいはそのコード内容に対応した指示を出力したりする処理が行われる(S170)。
【0071】
そして、次の新たな2次元コードの読み取りのために、画像の検出をCCD4に指示して(S180)、処理を終了する。
上述したごとく、本2次元コード読取装置2は、セルの種類を読み取るのに、ステップS240にて説明したごとく、単なる計算上のセル位置(x座標:xt、y座標:yt)でなく、補正値Δx,Δyにて補正した位置を用いている。この補正値Δx,Δyは、孤立セルが出現する毎に、孤立セルの実際の位置と計算上のセル位置(x座標:xt、y座標:yt)との差を反映させて得られた値である。
【0072】
この補正値Δx,Δyは、孤立セルの出現から次の孤立セルの出現までの間において、その値が維持されている。その結果、計算上のセル位置と実際のセル位置とのずれを常に補正して、正確なセル位置からセルの種類を読み取ることができる。
【0073】
しかも、セル位置の決定とセルの種類の読み取り処理とは、両側が他の位置決め用シンボル画像54B,54Dに挟まれている位置決め用シンボル画像54Aの近接した部分から開始しているので、最初は、ほとんど位置ずれは存在しない。更に、かつその位置決め用シンボル画像54Aから離れていく過程においても孤立セルが出現する毎にその位置ずれを補正値Δx,Δyに蓄積し、次の孤立セルが出現するまでセルの読み取り位置を補正しているので、位置決め用シンボル画像54A,54B,54Dやタイミングセル58A,58Bから離れたセル位置も、常に正確さが維持され、2次元コード52全体のセルの種類を正確に読み取ることができる。
【0074】
なお、図11に示した孤立セルは、実際には、2次元コード52中に極めて多数存在し、また、孤立セルが多数存在するようにマスキング処理をかけることもできるので、孤立セルの出現間隔は非常に短く、前述したセル位置の決定処理により極めて精度の高いセル位置を決定することができる。
【0075】
本実施の形態において、ステップS100が基準位置決定手段としての処理に該当し、ステップS130がセルサイズ決定手段としての処理に該当し、ステップS240がセル位置決定手段およびセル位置補正手段としての処理に該当し、ステップS250がセル読み取り手段としての処理に該当し、ステップS410,S420が孤立セル検出手段としての処理に該当し、ステップS430,S440,S460,S470が実位置決定手段としての処理に該当し、ステップS450,S480がセル位置補正値算出手段としての処理に該当する。
【0076】
[その他]
前述した実施の形態では、各セルの位置と種類との読み取りの順番は、図10に示したごとく、L字状に行われたが、x方向に並んだセルの各ラインを、一番上のラインから一番下のラインに至るまで、順次、左から右へと処理しても良い。また、y方向に並んだセルの各ラインを、一番左のラインから一番右のラインに至るまで、順次、上から下へと処理しても良い。
【0077】
また、前述した実施の形態では、セルの中心位置の補正のみであったが、孤立セルが出現する毎に、その孤立セルの高さあるいは幅と、基準セルの高さまたは幅との差を、別の第2の補正値として、格納しておき、以後の計算上の座標を得る場合にこの補正値を加味すれば、セルの中心位置のずれを小さく抑えることができ、補正値Δx,Δyが徒に大きくなることがないので、画像処理による孤立セルの位置検出も一層正確なものとなる。なお、第2の補正値を計算するのではなく、孤立セルが出現した場合には、基準セルの高さまたは幅の代りに、孤立セルの高さまたは幅をセル位置計算に用いるようにしても良い。
【図面の簡単な説明】
【図1】一実施の形態としての2次元コード読取装置の概略構成を表すブロック図である。
【図2】2次元コードの概略構成説明図である。
【図3】位置決め用シンボルを走査した場合の明暗検出の説明図である。
【図4】CCDと2値化回路との出力信号の説明図である。
【図5】2次元コード読取装置にて行われる2次元コード読み取り処理のフローチャートである。
【図6】2次元コード読取装置にて行われる各セルの位置決定と種類の決定処理のフローチャートである。
【図7】2次元コード読取装置にて行われるセル位置補正値決定処理のフローチャートである。
【図8】2次元コードの画像説明図である。
【図9】位置決め用シンボルからセルのサイズおよび画像の歪みを決定する場合の説明図である。
【図10】処理されるセルの順番説明図である。
【図11】孤立セルの種類の説明図である。
【図12】2次元コードの構成説明図である。
【図13】2次元コードの画像における歪みの説明図である。
【符号の説明】
2…2次元コード読取装置 4…CCD 6…2値化回路
8…画像メモリ 14…クロック信号出力回路
16…アドレス発生回路 18…変化点検出回路 20…比検出回路
22…アドレス記憶メモリ 28…制御回路 52…2次元コード
54A,54B,54D…位置決め用シンボル
54a…黒の枠状正方形 54b…白の枠状正方形
54c…黒の正方形 56…データ領域
58A,58B…タイミングセル
a1,a2,a3,a4,b1,b2,b3,b4,d1,d2,d3,d4…頂点セル
p11,p12,p13…孤立セル
Claims (7)
- 2進コードで表されるデータをセル化して、2次元のマトリックス上にパターンとして配置した2次元コードを読み取るための2次元コード読取装置であって、
前記2次元コードの2次元画像を検出する2次元画像検出手段と、
前記2次元画像検出手段にて検出された2次元画像内において特定セルが存在する基準位置を、該特定セルのパターンの性質に基づいて決定する基準位置決定手段と、
前記特定セルのパターンからセルのサイズを決定するセルサイズ決定手段と、
前記基準位置決定手段にて決定された基準位置から、前記セルサイズ決定手段にて決定されたセルのサイズに基づく計算により、順次、セル位置を決定するセル位置決定手段と、
前記セル位置決定手段にて決定されたセル位置からセルの種類を読み取るセル読み取り手段と、
前記セル読み取り手段にて読み取られたセルの種類が、孤立セルであるか否かを検出する孤立セル検出手段と、
前記孤立セル検出手段にて孤立セルであると検出された場合、該孤立セルの画像に基づく実位置を決定する実位置決定手段と、
前記孤立セルにおける前記セル位置決定手段にて決定された計算上のセル位置と前記実位置決定手段にて決定された実位置とから、セル位置の補正値を求めるセル位置補正値算出手段と、
前記セル位置補正値算出手段にて得られたセル位置の補正値を用いて、前記セル位置決定手段にて決定されるセル位置を補正するセル位置補正手段と、
を備えたことを特徴とする2次元コード読取装置。 - 前記孤立セルは、x方向またはy方向にて異なる種類のセルに挟まれているセルであることを特徴とする請求項1記載の2次元コード読取装置。
- 前記孤立セルは、x方向およびy方向にて異なる種類のセルに挟まれているセルであることを特徴とする請求項1記載の2次元コード読取装置。
- 前記特定セルは、前記2次元コードの少なくとも2箇所の所定位置に、各々中心をあらゆる角度で横切る走査線において同じ周波数成分比が得られるパターンからなる位置決め用シンボルを含むものであることを特徴とする請求項1〜3のいずれか記載の2次元コード読取装置。
- 前記特定セルは、更に、前記位置決め用シンボル間に存在し、種類が異なるセルが交互に配列されたタイミングセルを含むことを特徴とする請求項4記載の2次元コード読取装置。
- 前記位置決め用シンボルは、前記2次元コードのマトリックスの四隅内の3箇所に存在し、
前記セル位置決定手段は、
前記位置決め用シンボルの内で、両側が他の位置決め用シンボルにて挟まれている位置決め用シンボルの周辺のセルからセル位置を決定してゆくことを特徴とする請求項4または5記載の2次元コード読取装置。 - 請求項1〜6のいずれか記載の2次元コード読取装置の各手段をコンピュータシステムにて実現するプログラムが記憶されたことを特徴とする機械読み取り可能な記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34135496A JP3627416B2 (ja) | 1996-12-20 | 1996-12-20 | 2次元コード読取装置および記憶媒体 |
US08/996,345 US6000614A (en) | 1996-12-20 | 1997-12-22 | Two-dimensional code reading apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34135496A JP3627416B2 (ja) | 1996-12-20 | 1996-12-20 | 2次元コード読取装置および記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187868A JPH10187868A (ja) | 1998-07-21 |
JP3627416B2 true JP3627416B2 (ja) | 2005-03-09 |
Family
ID=18345424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34135496A Expired - Fee Related JP3627416B2 (ja) | 1996-12-20 | 1996-12-20 | 2次元コード読取装置および記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3627416B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4301775B2 (ja) | 2002-07-18 | 2009-07-22 | シャープ株式会社 | 2次元コード読み取り装置,2次元コード読み取り方法,2次元コード読み取りプログラム及び該プログラムの記録媒体 |
WO2004093433A1 (ja) | 2003-04-15 | 2004-10-28 | Fujitsu Limited | コード認識方法及び装置 |
JP4905767B2 (ja) * | 2006-02-10 | 2012-03-28 | 富士ゼロックス株式会社 | 二次元コード検出システムおよび二次元コード検出プログラム |
JP5507134B2 (ja) * | 2009-07-03 | 2014-05-28 | 株式会社富士通コンピュータテクノロジーズ | 2次元コード読取方法、2次元コード認識方法及び2次元コード読取装置 |
-
1996
- 1996-12-20 JP JP34135496A patent/JP3627416B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10187868A (ja) | 1998-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6000614A (en) | Two-dimensional code reading apparatus | |
JP3458737B2 (ja) | 2次元コードの読取方法及び記録媒体 | |
JP2867904B2 (ja) | 2次元コード読取装置 | |
EP0825547B1 (en) | Two-dimensional code reader | |
US8254683B2 (en) | Code image processing method | |
JP3716527B2 (ja) | 2次元コードの読取方法 | |
JP2000235617A (ja) | データ読取装置 | |
JP2002142084A (ja) | 画像読取装置 | |
JP3758266B2 (ja) | コード読取装置 | |
JP3627416B2 (ja) | 2次元コード読取装置および記憶媒体 | |
JP3726395B2 (ja) | 2次元コードおよび2次元コードの読取方法 | |
US20020001095A1 (en) | Image processor for detecting specified pattern | |
JP4197768B2 (ja) | 情報読取システム | |
JP3230334B2 (ja) | 画像処理装置 | |
JP3698867B2 (ja) | 円形パターン判定方法、装置および記録媒体 | |
JP3339392B2 (ja) | 2次元コード読取装置および記憶媒体 | |
JP2996243B1 (ja) | 2次元コード読取方法、2次元コード読取装置及び記録媒体 | |
JPH11142348A (ja) | 欠陥検査装置用蛇行追従装置及び欠陥検査装置 | |
JP2000276564A (ja) | 2次元コード | |
JP2716291B2 (ja) | 用紙情報入力装置 | |
JP4250828B2 (ja) | 文字認識装置 | |
JP2766031B2 (ja) | 画像処理装置と画像処理方法 | |
JP3191870B2 (ja) | 括弧検出方法及び郵便番号検出方法 | |
JP2563586B2 (ja) | 光学式文字読取装置 | |
JP2002252747A (ja) | 画像読取装置及び処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041029 |
|
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: 20041116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041129 |
|
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: 20071217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131217 Year of fee payment: 9 |
|
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 |