JP4419269B2 - 二次元コード抽出方法 - Google Patents
二次元コード抽出方法 Download PDFInfo
- Publication number
- JP4419269B2 JP4419269B2 JP2000116429A JP2000116429A JP4419269B2 JP 4419269 B2 JP4419269 B2 JP 4419269B2 JP 2000116429 A JP2000116429 A JP 2000116429A JP 2000116429 A JP2000116429 A JP 2000116429A JP 4419269 B2 JP4419269 B2 JP 4419269B2
- Authority
- JP
- Japan
- Prior art keywords
- dimensional code
- block
- detected
- blocks
- pixels
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1447—Methods for optical code recognition including a method step for retrieval of the optical code extracting optical codes from image or text carrying said optical code
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Character Input (AREA)
Description
【発明の属する技術分野】
本発明は、文書や図表とともに二次元コードが印刷された紙面をスキャナ等の画像入力装置により読み取った画像データから、二次元コードの画像を自動的に抽出する二次元コード抽出方法に関する。
【0002】
【従来の技術】
近年、従来のバーコードよりも多くの情報を埋め込むことができる二次元コードの開発が進み、実用化され始めている。二次元コードを利用することにより、文書や画像データ、音声データなどのあらゆる種類のバイナリデータを二次元コードとして紙面に印刷することが可能になった。
【0003】
二次元コードを印刷した紙は、ファクシミリで伝送したり印刷物として配布する。受け取り側では、紙面の二次元コードをイメージスキャナにより画像データとして読み取って、各二次元コードの復元に対応したソフトウェアやハードウェアにより元のデータに復元することができる。
【0004】
二次元コードの中には一般的なイメージスキャナでの読み取りを可能にするものもあり、専用の読み取り装置が無くても手持ちのスキャナにより読み取って元のデータを復元することができるため、読み取り手段の汎用性が高いというメリットがある。
【0005】
【発明が解決しようとする課題】
二次元コードだけを紙面に印刷するのではなく、文書や図表とともに任意の位置に任意の大きさの二次元コードを紙面に印刷した場合、汎用のイメージスキャナを使って二次元コード部分の読み取りを行うと二次元コードに加えて文字や図表の一部も画像データとして取り込まれる可能性が非常に高い。
【0006】
このように二次元コード以外の画像が入っていると、二次コード復元ソフトウェアやハードウェアで正常に復元することができないため、イメージスキャナで読み取った画像データから二次元コード部分だけを抽出しなければならないという課題があった、
【0007】
【課題を解決するための手段】
そして、この目的は、入力した画像データをM×N画素(M、Nは正の整数)の矩形のブロック単位に走査し、走査したブロックから所定の条件を満たすブロックを検出し、検出されたブロックの位置に基づいて二次元コードの位置を検出して入力画像から二次元コードの画像を抽出する二次元コード抽出方法により達成される。
【0008】
また、ブロック検出は、ブロック内の白画素/背景色と黒画素/文字色の比率が所定の範囲内になるブロックを検出するようにしてもよい。
【0009】
また、ブロック内の総画素数に対するブロック内の水平ラインおよび/または垂直ライン内の画素値の変化点の個数の割合が所定の範囲内になるブロックを検出する、ブロック内の黒画素の連結の仕方に基づいてブロックを検出する、あるいはブロック内の各ラインに含まれる黒画素の水平方向の射影または/および垂直方向の射影の変化の度合いが所定の範囲内になるブロックを検出するようにしてもよいし、これらを組み合わせてブロックを検出してもよい。
【0010】
一方、二次元コードの検出の際には、検出された連結領域の中でその領域を構成するブロック数が最大の領域を選択し、,該領域を囲む矩形領域を二次元コード領域として検出するようにしてもよい。
【0011】
更に、連結領域の中で領域を構成するブロック数が所定の範囲内の領域を選択し、選択されたそれぞれを囲む矩形領域を二次元コード領域として検出するようにしてもよい。
【0012】
また、二次元コード抽出に際して,二次元コード領域内における任意の位置から垂直上下方向および水平左右方向に所定の大きさの矩形ブロック単位に走査し、走査した矩形内の黒画素数が所定の値以下になる位置を各方向について検出して検出位置を囲む矩形領域を二次元コードとして抽出するようにしてもよい。
【0013】
また更に、二次元コード領域の周囲に所定幅の空白を付与して抽出するようにしてもよい。
【0014】
一方、二次元コード抽出にあたって二次元コードの傾きを検出し、傾きを補正しながら二次元コード画像を抽出するようにしてもよい。
【0015】
その際に、二次元コードの上下端および/または左右端それぞれの境界上における複数箇所の座標値を直線近似して、二次元コードの傾き角度を検出するようにすればよい。
【0016】
また、入力画像の読取方向を検出して正立像に補正することによって、入力画像の向きを正しく補正することが可能となる。
【0017】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を説明する。
【0018】
一般的に、二次元コードはバイナリデータを特定のアルゴリズムにより画素パターン変換したものであり、文書や図等と異なり画像としての見た目の意味を持たない。一方、画像レベルで見ると、文書や図表を構成する画素のパターンと二次元コードを構成する画素パターンの特徴は異なっている。この相違は見た目にも明らかであり、文書・図表と二次元コードが混在している画像から二次元コード部分を目視により容易に識別できる。
【0019】
図1はイメージスキャナで読み取った、二次元コードと文書や図表が混在する文書画像を表しており、横M画素、縦N画素(いずれも正の整数、M=Nであってもよい)のブロック毎に読み取られた画像を走査した例が図示されている。図中、走査された画像中のブロックは破線で囲まれた矩形で図示されている。また、実線で囲まれた矩形は、後に詳細を説明する、本実施形態により抽出されたブロック(特に二次元コードを構成すると判別されたブロック)を示している。なお、図1において二次元コードは画像の右下の矩形の領域に相当し、また、検出されたブロック以外の文書や図表などは、特に図中には明示していない。
【0020】
なお、以降の説明では文字や図表および二次元コードを構成する画素を「黒画素」、その背景となる画素を「白画素」とする。
【0021】
本実施形態では、文書・図表と二次元コードの画素パターンが相違する点に着目した。まず、画像をブロック単位に走査してブロックごとに二次元コード(あるいは二次元コードを構成するブロックと推測される部分)か否かを検出し、二次元コードの存在確率が高い部分を探し出す
ブロックが二次元コードの一部か否かを判断するためには、ブロック内の黒画素分布を求める。これは、二次元コード部分と文字領域とで相違することを利用したものである。
(1)ブロック内の黒画素率により識別
この方法では、二次元コードの黒画素率がブロック単位でみるとほぼ一定であることを利用する。この際に、ノイズやスキャナの特性による変動を考慮し、二次元コードと判断するべきブロック内の黒画素率範囲を予め定めておく。この範囲は、あらかじめ二次元コードを走査して、その結果に基づいて設定するようにしてもよい。走査したブロックの黒画素率がこの設定した黒画素率の範囲内にあれば、そのブロックが二次元コードを構成するブロックであると判断する。二次元コードを構成していないブロックについては、黒画素率が二次元コードを構成するブロックの範囲には入らないため、上記の方法を用いることにより、二次元コード以外のブロックの多くを取り除くことができる。
(2)白画素と黒画素との変化点の割合により識別
この方法では、二次元コードの画素の変化パターンがブロック単位で見るとほぼ一様であることを利用する。ブロック内を水平または垂直に1ライン単位に走査し、各ライン内の画素の変化点、すなわち黒画素から白画素、または白画素から黒画素に変化した回数を計数し、ブロック全ラインについて求めた変化点の総数をブロックの総画素数で割った値を「変化点の割合」とする。二次元コードブロックの変化点の割合を予め調べておき、ノイズやスキャナ特性による変動を考慮して二次元コードと判断する変化点の割合の範囲を定める。
【0022】
走査したブロックの変化点の割合が、この範囲内にあれば二次元コードを構成するブロックと判断する。これにより、二次元コード以外のブロックの多くが取り除かれる。
(3)ブロック内の黒画素の連結の仕方で識別
二次元コード内の黒画素はブロック内でほぼ一様に分布するのに対し、文字を含むブロックでは黒画素により文字が構成されるため、黒画素が局所的にかたまって存在している。この方法では、上記した画像の特徴を二次元コード検出に利用する。
(4)ブロック内の黒画素の射影の変動から識別
変化点の場合と同様に、二次元コード内の画素分布がほぼ一様である。ブロックを水平または垂直に1ライン単位に走査し、各ラインに含まれる黒画素数を計数することで該ブロックの射影を得る。二次元コードのブロックの場合には、画素分布がほぼ一様であることからライン間の射影の変化が小さく、文書や図表の場合には、黒画素分布が一様でないことからライン間で射影の変化が大きくなる。
【0023】
従ってあらかじめ二次元コードと判断する射影の変動の範囲を定めておき、走査したブロックの射影の変動がこの範囲内であれば二次元コードのブロックと判断する。これにより、二次元コード以外のブロックの多くを取り除くことができる。
【0024】
二次元コードブロックを検出する際に、上記(1)〜(4)の中から2つ以上の方法を組み合わせることで、二次元コードブロックの検出精度を大幅に向上させることができる。
【0025】
なお、上記の黒画素分布を利用して二次元コードを構成するブロックを検出したとしても、二次元コードとして検出されたブロックの中には、二次元コード以外の画像が含まれる可能性がある。これは、一つのブロック単位でみた場合、そのブロックが二次元コードではないにもかかわらず、上記の黒画素分布の条件を満たしてしまうことがあるためである。しかし、これらの二次元コードを構成していない、言わば誤検出されたブロックは、自分自身の周辺のブロックが二次元コードとして検出される条件を満たしていない可能性が高いと考えられる。そのため、このようなブロックに関しては、二次元コードとして検出されたブロックが他のブロックから孤立して存在したり(図1A)、数個程度のブロックが隣接して検出される(図1B、C)に過ぎない。
【0026】
一方、二次元コード領域内においては、二次元コードとして検出されるブロックの数がは二次元コード領域外に比べて多くなるため、検出されたブロックが図1のDのように多く隣接して繋がりあっている。
【0027】
そこで、二次元コードとして検出されたブロックのうち、隣接して連結するブロックの個数が最大となる領域を検出し、その領域の上下左右に所定の幅を持たせた矩形で囲み、この領域を検出することができる。
【0028】
ここで、上記した所定の幅を最大ブロックの幅とすることで、常に二次元コード全体を含んだ領域が検出される。
【0029】
また、連結するブロックが所定の個数以上の領域を選択することで、同一画像内に複数個の二次元コードが存在する場合でも抽出することが可能となる。
【0030】
さらに、以下の方法により、より正確に二次元コードの領域を検出することができる。
【0031】
図2は、前述した方法により二次元コードとして検出された、隣接ブロックの個数が最大となる領域を拡大して示した図である。図2において、一番外側の実線で示した矩形内(矩形領域1)が検出する二次元コードの領域、その内側の矩形(矩形領域2)が二次元コードとして検出されたブロックに外接する矩形領域である。また、一番外側の破線と矩形領域1の間の領域は、二次元コードと文字や図表を隔てるために設けられた、全ての画素が白画素の空白領域である。
【0032】
まず、矩形領域2内に、基準位置を設定する。図2では基準位置を丸印で示しており、検出された領域の中心に設定された例が図示される。この基準位置を中心として画像に対して左右の方向、上下方向に向かって二次元コードの境界を検出する処理を行う。二次元コードの境界から外側には、所定の幅の空白領域が付与されるのが一般的である。従って、検出基準位置から二次元コードの縁に向かってブロック単位に走査して行き、走査したブロック内の全画素が白画素になった時点で上記した空白領域に達したことが判り、このブロックの基準位置側の辺が二次元コードの境界ということになる。
【0033】
ここで、矩形領域2の内側は二次元コード領域とみなせるため、二次元コードの境界の検出は、図2のA〜Dのように矩形領域2の外側から開始すればよい。各検出開始位置A〜Dから二次元コードの境界方向に向かってブロック単位に上記の検出を行えば、その内側の全画素が白画素になるブロックA’〜B’が検出される。そして、A’〜B’の検出基準位置側(すなわち二次元コード側)の辺を通る矩形が二次元コードの矩形領域として検出される。
【0034】
上記のようにして検出した二次元コードを抽出する際に、二次元コードを復元するソフトウェアやハードウェアが必要とする所定の幅の白画素を二次元コードの周囲に付与することで、正しく復元できる二次元コードの画像にすることができる。
【0035】
ハンドヘルド型のイメージスキャナにより紙面上の二次元コード部分の読み取りを行った場合、手動でスキャナを操作するためスキャナが斜めに動き読み取った画像に傾が生じる場合が考えられる。
【0036】
そこで、二次元コードを抽出する際に同時に二次元コードの傾き角度も検出し、二次元コード抽出時に傾きを補正しながら抽出を行うことで、傾きのない二次元コードを抽出することができる。
【0037】
二次元コードが矩形である場合には、二次元コード上下の辺、すなわち二次元コードの境界線が平行であることから、二次元コードを検出する際に上下の境界線上の点を複数箇所検出し、画像内におけるそれらの座標値からこれらの点を直線近似することで境界線の傾きを求め、それを二次元コードの傾き角度とすることができる。左右の辺についても互いに平行であるため、同様にして傾き角度を検出することができ、上下左右から傾きを検出することで傾き角度の検出精度が高まる。
【0038】
手動操作型のハンドヘルドスキャナにより読み取る場合、ハンドヘルドスキャナは上下左右いずれの方向にもスキャンできることから、読み取った画像が回転したり鏡像反転して入力される場合がある。二次元コードの検出処理を始める前に読み取り方向を検出して正立像に補正しておいたり、二次元コードを検出した後抽出する際に正立像になるように補正しながら抽出することで、常に正しい向きの二次元コードを抽出することができる。
【0039】
以下、図面に基づいて本発明の実施例について詳細に説明する。
【0040】
図3は本発明の全体の処理フローである。まず、入力画像をブロック単位に走査して、上記した(1)〜(4)の方法を用いて、所定の条件を満たすブロックを検出する(S101)。次に、検出されたブロックが連結している領域を検出する(S102)。続いて、S102により検出された領域に基づいて、二次元コードの領域を検出する(S103)。そして、検出した二次元コード領域から二次元コード画像を抽出する(S104)。最後に、二次元コードの傾き角度を検出し、必要ならば傾き補正を行なう(S105)。
【0041】
図4は、入力画像から検出したブロックの情報を格納するためのブロック情報テーブルの構成を示す図である。ブロック番号は二次元コードの一部として検出されたブロックに、検出した順番につける一連番号である。検出されたブロックの最後を示すために、テーブル最後にEOB(End Of Block table)を格納する。
【0042】
検出されたブロックごとに、ブロック左上のX座標とY座標、そのブロックに結合するブロック数、結合するブロックにより構成される領域の一連番号が格納される。検出されたi番目のブロックの、ブロック情報テーブルの各項目の値の表記は、X座標をXi、Y座標をYi、結合ブロック数をCi、領域番号をRiで表すこととする。
【0043】
以下の実施例では、本ブロック情報テーブルを使用して二次元コードの検出を行なう。
【0044】
図5は二次元コードのブロックを検出する処理フローを示す図であり、図3のS101の処理に対応する。図中の記号は、xとyは走査するブロック左上のそれぞれX 座標とY 座標、M とN はそれぞれブロックの横画素数と縦画素数を表す。また、WIDTH とHEIGHTは、それぞれ入力画像の横画素数と縦画素数を表す。iは検出したブロックの番号を示すための変数である。
【0045】
まず初期設定として、x=0、y=0すなわち入力画像の右上の原点をブロックの左上の座標に設定し、同時に最初のブロックを示すようi=1に設定する(S102)。
【0046】
S202では、走査するブロックを左上の座標を(x、y)とする幅M画素、高さN画素の矩形領域に設定し、このブロックが所定の条件、すなわち黒画素率や変化点の個数、黒画素の連結状態が所定の値であるか否かを識別する(S203)。S203において、該ブロックが所定の条件を満たさないと判断した場合には処理をS206に移し、条件を満たすと判断した場合には処理をS204に進める。
【0047】
S204では、ブロック情報テーブルのi番目の項目を選択し、Xiにx、Yiにyをそれぞれ格納し、次に検出されるブロックを示すようにブロック番号iに1を加算する(S205)。
【0048】
S206では、xにMを加えることで、次に走査するブロック左上の座標をX 軸方向にM画素分移動させる。S207では、x+MがWIDTH 以上か否か、すなわちxを左上のX 座標とする幅M 画素のブロックの右端が、入力画像の幅を超えていないか否かをチェックする。x+M がWIDTH 未満の場合にはS 202に処理を戻す。x+M がWIDTH 以上の場合には、S208でx=0すなわち走査するブロックのX 座標を入力画像の左端に設定する。
【0049】
S209では、yにN を加えることで、次に走査するブロック左上の座標をY 軸方向にN 画素分移動させる。S210では、x+Y がHEIGHT以上か否か、すなわちyを左上のY 座標とする高さN 画素のブロックの下端が、入力画像の高さを超えていないか否かをチェックする。y+N がHEIGHT以上の場合にはS211に処理を移す。S211ではブロック情報テーブルのi番目のブロック番号にEOB を格納して処理を終了する。
【0050】
一方、S210においてy+N がHEIGHT未満の場合にはS202に処理を戻す。
【0051】
S202からS210までを繰り返し行なうことにより、入力画像全体をブロック単位に走査して、図7の太線で囲ったブロック1〜26のように、二次元コードと識別したブロックを検出し、それら各ブロックのX 座標およびY 座標が図8のブロック情報テーブル1〜26に示したように検出される。
【0052】
なお、図7はブロックの幅M=32画素、高さ=32画素の場合の例である。
図6は、図3のS101により検出したブロックが連結して構成する領域を検出する処理フローを示す図であり、図3のS102の処理に対応する。
【0053】
図中の記号は、iはブロック情報テーブル内におけるブロック番号を示すための変数、kは検出した領域の番号を示すための変数である。
【0054】
まず初期設定として、ブロック情報テーブル(図4)の先頭からEOB までの結合ブロック数と領域番号を全て0でクリアしておく(S301)。
【0055】
S30 2ではブロック番号i=1すなわちブロック情報テーブルの先頭を指し示すように設定し、領域番号をk=1すなわち最初の領域を示す値を設定する。
【0056】
S303では、i番目のブロックテーブルの領域番号Riが0か否か、すなわちi番目のブロックが既に何らかの領域に属しているか否かをチェックし、0ならば領域に属していないと判断して処理をS304に移し、0でなければ既に領域に属していると判断してS307に処理を移す。
【0057】
S304では、例えば「境界追跡法」などの方法によりブロックiを始点とするブロックにより構成される領域を検出し、該検出した領域を構成するブロックの個数P を求める。なお、境界追跡法は一般的に知られている方法であり、例えば「画像処理」(尾崎他著、共立出版、1993、p187〜188 )や「画像処理工学」(谷口・編、共立出版、1996、p116〜118 )に記載されている。
【0058】
S305では、ブロック情報テーブルを参照し、S301で検出した領域に含まれる全てのブロック数CiにP 、領域番号Riにkを設定する。
【0059】
S306では、領域番号kに1を加える。
【0060】
S307では、次のブロック情報テーブルの項目を参照するためにiに1を加える。
【0061】
S308では、i番目のブロック情報テーブルのブロック番号欄がEOB か否か、すなわちS101で検出した全てのブロックについて処理を終えたか否かチェックする。ブロック番号がEOB でない場合には、処理をS303に戻し、ブロック番号がEOB である場合には全処理を終えたと判断して修了する。
【0062】
S303からS308までの処理を繰り返し行なうことで、図7の領域1〜4のように二次元コードと識別されたブロックが連結して構成する領域が検出され、図8のブロック情報テーブルのように各ブロックについて結合ブロック数と領域番号が求まる。例えば、ブロック6の場合には、結合するブロック数が20個の領域に所属し、領域番号が3となる。
【0063】
図9は二次元コード領域を検出する処理の第一の実施例を示す処理フローであり、図3のS103の処理に対応する。
【0064】
S401では、ブロック情報テーブルを参照し、結合ブロック数の最大値を検出してRmaxとする。図8の例では、Rmax=20 となる。
【0065】
S402では、結合ブロック数がRmaxに一致するブロックの中で、X 座標およびY 座標の最小値(Xmin、Ymin)と最大値(Xmax、Ymax)を求める。図8の例では、座標の最小値(Xmin、Ymin)としてブロック6の座標(X6、Y6)=(192 、352 )、座標の最大値(Xmax、Ymax)としてブロック26の座標(X26 、Y26 )=(352 、448 )が検出される。
【0066】
S403では、左上角の座標を(Xmin-M、Ymin-N)、右下角の座標を(Xmax+2×M 、Ymax+2×N )とする矩形領域を二次元コード領域として決定する。図7の例では、図10A の領域3から一ブロック分離れた矩形領域C が二次元コード領域として検出される。
【0067】
本方法では、実際の二次元コードである図10B に対して、大きめの領域が二次元コードとして検出されることになる。
【0068】
図11は、二次元コード領域を検出する処理の第二の実施例を示す処理フローあり、図3のS103の処理に対応する。
【0069】
S501では、ブロック情報テーブルを参照し、結合ブロック数の最大値を検出してRmaxとする。図8の例では、Rmax=20 となる。
【0070】
S502では、結合ブロック数がRmaxの領域の中心を二次元コード領域検出の基準位置に決定する。図8の例では、図10のように結合ブロック数が最大の領域として領域3(図10A )が選択され、その中心として図12D が決定される。ここでの中心位置は、領域3に外接する矩形領域の中心で良い。
【0071】
S503では、S502で決定した検出基準位置から、上下および左右の方向に矩形のブロック単位に走査し、該ブロック内の黒画素の個数がQ 個以下になる位置を検出する。Q は0にしても良いが、ノイズなどの影響を考慮してある程度の個数を設定しておいても良い。
【0072】
図12は、図10の領域3部分を拡大した図である。この例では、それぞれ左側でA、右側でB、上側でC、下側でDの位置が検出される。Q=0に設定し、ノイズがない場合には、検出したA付近は図12下図のようになり、A’の位置すなわちブロックの基準位置側を検出した位置に決定すればよい。
【0073】
S50 4では、S503で検出した上下左右の四点から、検出基準位置と反対方向に所定の画素数分はなれるように矩形を二次元コードの領域として決定する。図12では、A〜Dの各検出位置からE画素分空けた位置を通るように設定した矩形(一番外側の矩形)が二次元コード領域となる。
【0074】
以上、二次元コード領域を検出する第一および第二の実施例では、二次元コードが傾いている場合でも、二次元コード全体を含む領域を検出することができる。更に、検出した二次元コードの傾きを検出し、傾きを補正することでより正しく二次元コードを復元できる。
【0075】
図13は、二次元コードの傾き補正の処理フローであり、図3のS105の処理に対応する。
【0076】
S601では、二次元コード内の検出基準位置から、上下左右に所定の間隔でブロック単位に走査し、ブロック内の黒画素がQ 個以下になる位置を検出する。ここでの検出方法はS503と同様である。S601の処理により、二次元コード各辺における境界線上の位置が検出される。
【0077】
図12の二次元コード領域の例では、図14のように、二次元コード上側の境界線上にA1〜A7、下側の境界線上にB1〜B7、左側の境界線上にC1〜C5、右側の境界線上にD1〜D5の位置がそれぞれ検出される。
【0078】
S602〜S605では、上側、下側、左側、右側の検出位置を直線近似し、それぞれの傾き角度a1〜a4を求める。図14の例では、上側についてはA1〜A7を通る近似直線A の傾きa1を算出する。下側、左側、右側に関しても同様にして傾き角度を算出する。
【0079】
S606では、上側と下側の傾き角度に対して左側と右側の傾き角度が直行することを利用し、a1〜a4の平均の傾きを計算して二次元コードの傾き角度θを次式により決定する。
【0080】
θ=(a1+a2+(a3−90)+(a4−90))÷4
S607では、θを所定の値θmin と比較し、θがθmin より大きい場合にはS608で傾き補正処理を行って終了し、θがθmin 以下の場合には傾き補正を行なわずに処理を終了する。これにより、傾き角度が小さく、傾き補正の必要のない場合には回転処理を行なわないことで、処理時間を短縮できる。
【0081】
読取方向を検出して正立像に自動補正する方法には、公知例として「画像状態検出装置及びそれを利用した文書画像補正装置」(特許公開平成11年第316798号)がある。
【0082】
図3のS101の処理を行う前に、この補正処理を行って入力画像を正立像に補正しておくことにより、S101以降の処理はこの正立像に補正した画像に対して行われるため、回転や鏡像反転が補正された二次元コードが抽出される。
図15は、二次元コードを構成するブロックを検出するためのその他の方法を説明するための図面であり、8×8画素のブロックにおいて着目画素に対する黒画素間距離の求め方を説明するための図である。ここで、図示左上の画素をX1、1 とし、X1、1 の右側の画素をX2、1 、X1、1 の下側の画素をX2、1 のように添え字を変えて各画素を表す。
【0083】
まず、図5の黒画素X4、4 に着目し、X4、4 に対して上下左右それぞれの方向で最も近い黒画素がX4、3 、X4、8 、X1、4 、X6、4 であった場合、X4、4 についての黒画素間の距離D4、4 は次式で算出する
なお、上下左右のうち、黒画素が存在しない方向があった場合や、着目画素がブロック外縁にあり画素が存在しない方向がある場合には、該方向に相当する項はゼロとする。例えば、X1、4 を含めX4、4 の左側が全て白画素であった場合には、X4、4 についての黒画素間の距離は次式のようになる。
【0084】
一般に、着目した黒画素についての黒画素間隔は次式により算出する。
【0085】
式(3)の第一項から第四項は、それぞれ上下左右にa 画素、b 画素、c 画素、d 画素離れた黒画素との距離を求めることを意味するため、着目画素Xi、j についての黒画素間隔はa + b + c + d と表せる。
【0086】
ブロック内の全ての黒画素についての黒画素間の平均距離D は、ブロック内の黒画素数をN として、次式により算出することができる。
【0087】
D = ( ΣΣDi、j ) / N ・・・(4))
ここで、最初のΣはDi、j をi=1 からN までの加算すること、2個目のΣはDi、j をj=1 からN まで加算することを示す。
図16は、文字ブロック(A )と二次元コードブロック(B )それぞれにおける黒画素分布の例である。一般的に、文字ブロックでは黒画素が局所的に集まって存在し、二次元コードブロックでは黒画素が比較的ばらばらな位置に存在している。
【0088】
図17は、図16に図示される文字ブロックと二次元コードブロックについて、前述した画素間の距離を算出した例である。太線にて描かれた小さい矩形は黒画素を表し、矩形内の数値は黒画素について式(1)により黒画素間を算出した値である。
【0089】
図16の例では、文字ブロック(A )の黒画素間の合計は63、ブロック内の黒画素数は24個なので平均黒画素間はD = 2.6(63÷24)となる。一方、二次元コードブロック(B )の黒画素間の合計は131 、ブロック内の黒画素数は27なので平均黒画素間はD = 4.9(131 ÷27)となる。二次元コードブロックの平均黒画素間のほうが文字ブロックよりも大きい。
【0090】
平均黒画素間D は、式(3)からも明らかなように黒画素同士の間隔が大きいほど値が大きくなる。 図16に示したように、二次元コードブロック(A )内の黒画素は、文字ブロック(B )に比較してばらばらな位置に存在しているため、各黒画素の間隔が文字ブロックよりも大きくなり、従って、二次元コードブロックの平均黒画素間D も文字ブロックよりも大きな値になる。この黒画素間隔の違いを利用してブロックが文字の一部なのか二次元コードの一部なのかを識別する。
【0091】
文字ブロックと二次元コードを識別する黒画素間の閾値Dth は次のように決める。まず、文字のみを含む複数個の文書画像をブロックに分割し、全てのブロックについて求めた平均黒画素間の平均D1を求める。次に、複数個の二次元コード画像をブロック分割し、文字ブロックの場合と同様に全ブロックの平均黒画素間の平均D2を求める。こうして求めたD1、D2はそれぞれ文字および二次元コードブロックの平均的な平均黒画素間を表すと考えられるので、D1とD2の中点を閾値Dth に決定する。
【0092】
ブロックの平均黒画素間がDth 未満ならば文字ブロック、Dth 以上ならば二次元コードブロックと識別することができる。
【0093】
【発明の効果】
以上説明したように、本発明の二次元コード抽出方法によれば、二次元コードと文字や図表が混在する画像データの中から二次元コードだけを自動的に抽出することができる。このため、二次元コードを文書・図表と共に印刷した紙面において、イメージスキャナにより二次元コードを含むように読み取りを行なうと、読み取った画像から二次元コードが自動抽出されるため、元のデータに正確に復元することができ、二次元コードの読み取りやすさの向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】イメージスキャナで読み取られた二次元コードと文書/図表が混在する文書画像を模式的に図示した図面であり、M×Nのブロック単位で走査された状態を示す。
【図2】図1で二次元コードとして検出されたブロックを拡大した図。
【図3】本発明の一実施形態による二次元コード検出手順を説明したフローチャート。
【図4】ブロック情報テーブルを示した図面。
【図5】二次元コードブロックの検出処理手順を示すフローチャート。
【図6】隣接ブロックにより構成される領域の検出処理手順を示すフローチャート。
【図7】二次元コード抽出を説明する図面。
【図8】ブロック情報テーブルの例を示す図。
【図9】二次元コード領域の検出処理を示すフローチャート。
【図10】検出された二次元コード領域の様子を示す図。
【図11】二次元コード良医の検出処理を示すフローチャート。
【図12】図10で検出された二次元コード領域を拡大した図面。
【図13】二次元コードの傾き検出とその補正処理を示すフローチャート。
【図14】傾いた二次元コードの様子を示す図。
【図15】二次元コード領域検出を説明する図。
【図16】文字ブロックと二次元コードブロックの黒画素分布を示す図。
【図17】図16に図示された文字ブロックと二次元コードブロックとの黒画素間距離を算出した結果を示す図。
Claims (6)
- 入力した画像データをM×N画素(M、Nは正の整数)の矩形ブロック単位に走査し、
前記走査したブロックから所定の条件を満たすブロックを検出し、
前記検出されたブロックの中で隣接して連結しているブロックにより構成される領域を検出し、
前記検出された連結領域の中で当該領域を構成するブロック数が所定の範囲内の領域を選択し、該選択した領域を囲む領域を二次元コード領域として検出し、前記入力画像から二次元コードの画像を抽出することを特徴とする、二次元コード抽出方法。 - 請求項1記載の二次元コード抽出方法において、
前記ブロックの検出は、ブロック内の白画素と黒画素の比率が所定の範囲内にあるブロックを、二次元コードを構成するブロックとして検出することを特徴とする二次元コード抽出方法。 - 請求項1記載の二次元コード抽出方法において、
前記ブロックの検出は、ブロック内の総画素数に対するブロック内の水平ラインおよび/または垂直ライン内の画素値の変化点の個数の割合が所定の範囲内になるブロックを、二次元コードを構成するブロックとして検出することを特徴と
する二次元コード抽出方法。 - 請求項1記載の二次元コード抽出方法において、
前記ブロックの検出は、ブロック内の各ラインに含まれる黒画素の水平方向の射影または/および垂直方向の射影の変化の度合いが所定の範囲内になるブロックを検出することを特徴とする二次元コード抽出方法。 - 請求項1記載の二次元コード抽出方法において、
前記検出された二次元コードの領域内における任意の位置から、上下方向および左右方向に所定の大きさの矩形ブロック単位に走査し、
走査した矩形内の黒画素数が所定の値以下になる位置を各方向について検出し、
検出位置を囲む矩形領域を二次元コードとして抽出することを特徴とする二次元コード抽出方法。 - 請求項1記載の二次元コード抽出方法において、
前記走査したブロック内に存在する黒画素同士の平均距離を求め、
前記求められた黒画素間平均距離の値が所定値以上の場合に、当該ブロックを二次元コードを構成するブロックとして抽出することを特徴とする、二次元コード抽出方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000116429A JP4419269B2 (ja) | 2000-04-18 | 2000-04-18 | 二次元コード抽出方法 |
US09/835,625 US7350710B2 (en) | 2000-04-18 | 2001-04-17 | Two-dimensional code extracting method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000116429A JP4419269B2 (ja) | 2000-04-18 | 2000-04-18 | 二次元コード抽出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001307014A JP2001307014A (ja) | 2001-11-02 |
JP4419269B2 true JP4419269B2 (ja) | 2010-02-24 |
Family
ID=18627896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000116429A Expired - Fee Related JP4419269B2 (ja) | 2000-04-18 | 2000-04-18 | 二次元コード抽出方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7350710B2 (ja) |
JP (1) | JP4419269B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4278918B2 (ja) * | 2002-04-19 | 2009-06-17 | 富士通株式会社 | 画像データ処理装置とその方法 |
RU2353965C2 (ru) | 2002-06-05 | 2009-04-27 | Ронгбин СУ | Способ оптимизированного оперативного цифрового кодирования и ввода информации в мировых знаках и система обработки такой информации |
US7298921B2 (en) * | 2003-01-29 | 2007-11-20 | Colortrac Limited | Document scanning method and document scanner |
WO2004090801A1 (ja) * | 2003-04-08 | 2004-10-21 | Nippon Telegraph And Telephone Corporation | 情報符号化装置、情報復号化装置ならびにその方法及びプログラム |
AU2003227506A1 (en) * | 2003-04-15 | 2004-11-04 | Fujitsu Limited | Code recognizing method and device |
JP4708186B2 (ja) * | 2003-05-02 | 2011-06-22 | 豊 木内 | 2次元コード解読プログラム |
JP4180497B2 (ja) * | 2003-12-05 | 2008-11-12 | 富士通株式会社 | コード種類判別方法、およびコード境界検出方法 |
US7568628B2 (en) | 2005-03-11 | 2009-08-04 | Hand Held Products, Inc. | Bar code reading device with global electronic shutter control |
WO2006098955A2 (en) * | 2005-03-11 | 2006-09-21 | Hand Held Products, Inc. | Bar code reading device with global electronic shutter control |
JP4531809B2 (ja) * | 2005-03-18 | 2010-08-25 | 富士通株式会社 | コード画像処理方法 |
US7770799B2 (en) | 2005-06-03 | 2010-08-10 | Hand Held Products, Inc. | Optical reader having reduced specular reflection read failures |
KR100828539B1 (ko) * | 2005-09-20 | 2008-05-13 | 후지제롯쿠스 가부시끼가이샤 | 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체 |
JP4911340B2 (ja) * | 2006-02-10 | 2012-04-04 | 富士ゼロックス株式会社 | 二次元コード検出システムおよび二次元コード検出プログラム |
JP4874706B2 (ja) * | 2006-04-28 | 2012-02-15 | シヤチハタ株式会社 | Qrコード読取装置 |
AU2008226843A1 (en) * | 2007-03-08 | 2008-09-18 | Microscan Systems, Inc. | Detection and segmentation of a two-dimensional code |
JP5111055B2 (ja) * | 2007-10-26 | 2012-12-26 | キヤノン株式会社 | 画像処理装置及び画像処理方法、コンピュータプログラム |
US20100166268A1 (en) * | 2008-12-30 | 2010-07-01 | Ebm Technologies Incorporated | Storage system for storing the sampling data of pathological section and method thereof |
CN111539238B (zh) * | 2020-04-27 | 2023-08-18 | 广州致远电子股份有限公司 | 二维码图像修复方法、装置、计算机设备和存储介质 |
CN113947097B (zh) * | 2020-07-15 | 2024-04-09 | 花瓣云科技有限公司 | 一种二维码识别的方法及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1329263C (en) * | 1989-03-01 | 1994-05-03 | Mark Krichever | Bar code scanner |
US5296690A (en) * | 1991-03-28 | 1994-03-22 | Omniplanar, Inc. | System for locating and determining the orientation of bar codes in a two-dimensional image |
US5557091A (en) * | 1994-04-15 | 1996-09-17 | Krummel; Larry | Method and system for bar code image processing |
TW434520B (en) * | 1998-06-30 | 2001-05-16 | Sony Corp | Two-dimensional code recognition processing method, device therefor and medium |
EP0984385B1 (en) * | 1998-08-31 | 2013-02-20 | Sony Corporation | Two-dimensional code recognition processing |
US7050631B2 (en) * | 2002-10-30 | 2006-05-23 | Sick Auto Ident, Inc. | Barcode detection system |
-
2000
- 2000-04-18 JP JP2000116429A patent/JP4419269B2/ja not_active Expired - Fee Related
-
2001
- 2001-04-17 US US09/835,625 patent/US7350710B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001307014A (ja) | 2001-11-02 |
US20020051573A1 (en) | 2002-05-02 |
US7350710B2 (en) | 2008-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4419269B2 (ja) | 二次元コード抽出方法 | |
EP0483391B1 (en) | Automatic signature verification | |
JP2986383B2 (ja) | ライン走査画像のためのスキューを補正する方法及びその装置 | |
JP4525787B2 (ja) | 画像抽出装置、及び画像抽出プログラム | |
US5418865A (en) | Mark sensing on a form | |
US5077811A (en) | Character and picture image data processing system | |
JPH03201866A (ja) | 圧縮形態のデータを含むデータから画像スキュー角度を決定する方法 | |
US7194144B1 (en) | Document image processing device, document image merging method, and storage medium recording a document image merging program | |
US8682080B2 (en) | Image processing apparatus, image processing method, image processing program, and storage medium | |
JP4594952B2 (ja) | 文字認識装置及び文字認識方法 | |
US6771842B1 (en) | Document image skew detection method | |
JP3238504B2 (ja) | 書類分類方法 | |
US8064636B2 (en) | Image processing apparatus and method of controlling the same | |
CN115619656A (zh) | 数字化档案纠偏矫正方法及*** | |
JP2004165969A (ja) | 画像処理装置および画像処理プログラム | |
EP0899679B1 (en) | Line direction deciding device, image inclination detecting device and image inclination correction device | |
JP2018128825A (ja) | 画像処理装置及び画像処理プログラム | |
US7151859B2 (en) | Method and system for correcting direction or orientation of document image | |
JP4557875B2 (ja) | 画像処理方法及び装置 | |
US5113267A (en) | Apparatus for and method of reconstructing a document | |
JP4208520B2 (ja) | 画像処理装置および画像処理方法、プログラムおよび記憶媒体 | |
Lehal et al. | A range free skew detection technique for digitized Gurmukhi script documents | |
JP3303246B2 (ja) | 画像処理装置 | |
JP2006229685A (ja) | 帳票歪み判定装置 | |
EP0476873A2 (en) | Method of and apparatus for separating image regions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070322 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090303 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090424 |
|
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: 20091110 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091123 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121211 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121211 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131211 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |