JP4180497B2 - コード種類判別方法、およびコード境界検出方法 - Google Patents

コード種類判別方法、およびコード境界検出方法 Download PDF

Info

Publication number
JP4180497B2
JP4180497B2 JP2003408104A JP2003408104A JP4180497B2 JP 4180497 B2 JP4180497 B2 JP 4180497B2 JP 2003408104 A JP2003408104 A JP 2003408104A JP 2003408104 A JP2003408104 A JP 2003408104A JP 4180497 B2 JP4180497 B2 JP 4180497B2
Authority
JP
Japan
Prior art keywords
code
dimensional code
block
white
continuous length
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
JP2003408104A
Other languages
English (en)
Other versions
JP2005173646A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003408104A priority Critical patent/JP4180497B2/ja
Priority to US10/853,667 priority patent/US7636483B2/en
Priority to EP10181345.9A priority patent/EP2275968B1/en
Priority to EP04028562.9A priority patent/EP1619604B1/en
Publication of JP2005173646A publication Critical patent/JP2005173646A/ja
Application granted granted Critical
Publication of JP4180497B2 publication Critical patent/JP4180497B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1452Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Electromagnetism (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Character Input (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Analysis (AREA)

Description

本発明は、一次元バーコードや二次元コードの認識方式に係り、文書や図表と共に一次元/二次元コードが配置された電子画像データや、これらが印刷された紙面をスキャナやCCDカメラなどの画像読み取り装置によって読み取った画像データから、一次元/二次元コードの有無や、その位置、種類などを検出するコード種類判別方法、および二次元コードのコード境界を正確に検出するコード境界検出方法に関する。
従来から一次元のバーコードが広く使用されている。この一次元バーコードでは、コードを形成する直線としての黒バーや白バーに直交する方向の1ライン分のデータがあれば、バーコードデータの認識を行うことができる。このため読取装置としてレーザラインスキャナや、CCDラインセンサのように1ライン分のデータを取得する装置が広く用いられている。また近年、このような一次元バーコードよりも多くの情報を埋め込むことができる二次元コードが普及している。二次元コードでは、コード全体の二次元配列データがなければコードを正しく認識することができず、このため読み取り装置としてデジタルカメラやイメージスキャナのような画像読み取り装置が用いられている。また1つの読取装置で一次元コードと二次元コードの両方を自動的に認識する画像読み取り装置も実用化されつつある。
また一次元/二次元コードの普及に伴って、これまでのように専用のラベルに印刷されたコードを読み取るだけでなく、文書や図表と共に任意の位置に任意の大きさでコードが印刷されることも多くなっている。このように文書や図表と共に任意の位置に任意の大きさの一次元/二次元コードが配置された場合、デジタルカメラやイメージスキャナを用いて読み取りを行うと、一次元/二次元コードに加えて文字や図表の一部も画像データとして取り込まれる可能性が非常に高い。
このような場合には一次元/二次元コードの位置を検出し、コードの範囲のみを抽出しなければコードを正しく認識できない。また一次元コードと二次元コードとでは認識の方法が全く異なるため、あらかじめ画像データに存在するコードが一次元コードであるか、二次元コードであるかがわかっていなければ、その両方に対する認識処理を順番に適用することになり、処理に時間がかかる。さらに二次元コードに対しては、その境界の位置を正しく特定し、コード領域全体を抽出しなければ認識処理することができない。
このように、例えば一次元コードに対する認識処理としてのデコード処理に失敗した後に、画像全面に対して二次元コードのデコード処理を行う場合には、元々遅くて重いデコード処理を2回行うことになる。また一次元コードのデコード処理では、例えば取得画像の水平方向にコードが存在すると仮定して処理を行い、その処理に失敗するとコードが90°回転した垂直方向に存在するものとして処理を行う必要があり、さらに時間がかかるという問題点があった。
このような一次元/二次元コードの認識に関する従来技術として次の4つの文献がある。
特開2001−307014号「二次元コード抽出方法」 特開2000−200321号「2次元バーコードを場所検知し及び読取るための方法」 特開平8−180125号「2次元コード読取装置」 特開平7−254037号「二次元コード」
特許文献1には、文字やその他の画像が含まれた文書から、黒画素率の分布などを求めて、二次元コードと思われるブロックを検出し、そのようなブロックが連続している領域を二次元コード領域として抽出する技術が開示されている。
特許文献2には、コーナービットを含まない、印刷媒体上に印刷された境界がなくクロックのない2次元バーコードの形式でデジタル的に符号化された情報を複号化する技術が開示されている。
特許文献3、および4には、読み取り精度が高い二次元コードと、その読み取り装置が開示されており、二次元コードの検出には3個の位置決め用シンボルを用い、特許文献3では、その位置決めシンボルの検出をハードウェア的に行う技術が開示されている。
しかしながら、特許文献1と特許文献2では、二次元コードだけの読み取りを対象としており、文書や図表と共に任意の位置に任意の大きさの一次元/二次元コードが配置されている場合には特に一次元コードの検出ができないという問題点があった。
また特許文献3と4では、二次元コードに含まれる位置決め用シンボルの検出によってコードの位置やコード領域の検出が行われているが、この方法では入力機器の光学解像度が低い場合や、光学歪み、ピンぼけが発生した場合に、画像内の位置決め用シンボルの形状が劣化し、変形するためにこのシンボルを検出できず、図表や文字が配置された画像データの中から正確に二次元コードの抽出を行うことができないという問題点があった。
図27はこのような位置決め用シンボルを利用したコード領域抽出方法の従来例の説明図である。図に示すようにコード領域の左上、左下、および右上に位置決め用シンボルが存在する二次元コードでは、この位置決め用シンボルの検出によってコード領域を抽出することができるが、光学解像度が低い場合などは位置決め用シンボルを検出できないという問題点があった。
本発明の課題は、上述の問題点に鑑み、文書や図表と共に任意の位置に任意の大きさの一次元/二次元コードが配置されている場合に、一次元/二次元コードの位置を検出するだけでなく、一次元コードと二次元コードのいずれであるかというコードの種類を検出すると共に、一次元コードの場合にはその回転の有無を同時に検出することである。
また本発明の課題は、二次元コードのコード境界を正しく検出して、コード領域全体を精度よく抽出可能とすることである。
図1は、本発明のコード種類判別方法の原理説明図である。同図において本発明のコード種類判別方法は、入力画像データを矩形ブロック単位で選択するブロック選択過程1と、選択されたブロックが所定の条件を満たしているか否かを判定するブロック判別過程2と、所定の条件を満たすブロック内に含まれるコードの種類を判定するコード判定過程3とを備える。そして判定されたコードの種類などは結果出力過程4によって出力される。
発明の実施の形態においては、コード判定過程においてコードの種類として一次元コードと二次元コードの区別を判定することもでき、また一次元コードと判定された時には、その一次元コードが回転した状態にあるか否かを判定する回転検出過程をさらに備えることもできる。
また実施の形態において、ブロック判別過程における所定の条件として、ブロック内の画素の階調値の分散が所定の範囲内にあることを判定することもでき、また所定の条件としてブロック内の黒画素と白画素の比率が所定の範囲内にあることを判定することもできる。
さらに実施の形態においては、ブロック判別過程2、および/またはコード判定過程3において前述の所定の条件、および/またはコード種類判定条件としてブロック内の水平方向、および/または垂直方向のライン上で画素の階調値が急変するエッジの個数が所定の範囲内にあることを判定することもでき、またブロック内の2本以上の水平ライン相互間、および/または2本以上の垂直ライン相互間で画素の階調値の相関が所定の範囲内にあることを判定することもできる。
次に本発明のコード境界検出方法は、セル化されたデータが二次元状に配置された二次元コードの境界検出方法であり、第1の白連続長検出過程、第2の白連続長検出過程、および境界検出過程を少なくとも備える。
第1の白連続長検出過程は、入力画像データを走査し、白セルの連続長を検出するものであり、第2の白連続長検出過程は、第1の白連続長と交差する方向に入力画像データを走査し、該第1の白連続長と交点を持ち、かつ所定の長さを超える白セルの連続長を検出するものである。境界検出過程は、第1の白連続長と第2の白連続長との交点をコード境界位置として検出するものである。
発明の実施の形態においては、第1の白連続長検出過程においてあらかじめ特定されたコードの位置に対応して、コード内部の点から上、下、左、または右の方向に入力画像データを走査し、境界検出過程において上、下、左、または右のコード境界を検出することもできる。
また発明の実施の形態においては、セルの幅を検出するセル幅検出過程をさらに備え、白セルの連続長をそのセル幅を基準として決定することもできる。そしてそのセル幅検出過程が、あらかじめ特定されたコードの位置に対応してコード内部の点から入力画像データを走査し、白セルの連続長、および/または黒セルの連続長の長さの頻度を示すヒストグラムを作成する過程と、そのヒストグラム上で所定の値以上の頻度を持つ連続長の中で最小の連続長の長さをセル幅として決定する過程とを備えることもできる。
さらに実施の形態においては、白セルの連続長の検出において使用される閾値の決定過程をさらに備え、セルに対する階調値がその閾値以上であるセルを白セルとして検出することもでき、また例えば第1の白連続長検出過程において入力画像データの走査にあたり、ある一定距離の走査毎に閾値決定過程を繰り返し、その繰り返しによって更新された閾値以上の階調値を持つセルを白セルとして検出することもできる。
そして閾値決定過程においては、一定範囲内のセルに対する階調値の頻度を示すヒストグラムを作成する過程と、そのヒストグラムにおいて階調値の高い側にあるピークに対応する第1の階調値、階調値の低い側でのピークに対応する第2の階調値を求める過程と、第1の階調値と第2の階調値の平均値を閾値として決定する過程とを備えることもできる。
さらに実施の形態においては、白セルの連続長の検出において注目セルと周囲のセルに対する階調値を比較し、階調値の差がある値以上である時、階調値の大きなセルを白セルとして検出することもできる。
実施の形態において、入力画像データを矩形ブロック単位で選択するステップと、選択されたブロックが所定の条件を満たしているか否かを判定するステップと、所定の条件を満たすブロック内に含まれるコードの種類を判定するステップとを計算機に実行させるプログラムを格納する計算機読出し可能可搬型記憶媒体を用いることもでき、このプログラムはコード種類判定のステップにおいて一次元コードと判定されたコードが回転した状態にあるか、否かを判定する回転検出ステップをさらに計算機に実行させることもできる。
またセル化されたデータが二次元状に配置された二次元コードの境界検出を行う計算機によって使用される記憶媒体として、入力画像データを走査し、白セルの連続長を検出する第1の白連続長検出ステップと、その第1の白連続長と交差する方向に入力画像データを走査し、該第1の白連続長と交点を持ち、かつ所定の長さを超える白セルの連続長を検出する第2の白連続長検出ステップと、第1の白連続長と第2の白連続長との交点をコード境界位置として検出するステップとを計算機に実行させるプログラムを格納した計算機読出し可能可搬型記憶媒体を用いることもできる。
本発明のコード種類判別方法によれば、一次元/二次元コードと文書や図表が混在する場合にも、一次元/二次元コードの位置が自動検出されるだけでなく、その種類が一次元コードと二次元コードのいずれであるか、また一次元コードの場合にはその回転の有無が自動検出されるため、その後の認識処理においてコードの種類や特性に応じた最適の方法を自動的に選択することができ、一次元/二次元コードの読み取り処理時間の短縮や、認識精度の向上を実現することができる。
また本発明のコード境界検出方法によれば、光学解像度、光学歪み、ピンぼけなどの影響をほとんど受けることがないクワイエットゾーンを検出することにより、正確に二次元コードの境界を検出することができ、前述のコード種類判別方法と組み合わせることによって、一次元/二次元コードの認識処理効率の向上に寄与するところが大きい。
まず、本発明のコード種類判別方法を第1の実施形態として説明する。図2は第1の実施形態としてのコード種類判別方法が適用されるコードの種類としての一次元コードと二次元コードの説明図である。一次元コードは異なる太さや間隔をもつ平行な直線の組合せによるコードであり、二次元コードはデータがセル化されて二次元状に配置されたコードであり、1つのセルは一般に複数の画素に対応する。図の二次元コードはクイックレスポンス(QR)コードと呼ばれる二次元コードであり、コード領域の右上、左上、および左下にコードの位置決め用シンボルが存在する点に特徴があり、この位置決め用シンボルが存在するためにコードを早く認識できるものとされているが、前述のように実際にはこの位置決めシンボルを見つけるのは難しい場合が多いという欠点がある。
第1の実施形態においては、前述のようにまず入力画像データを矩形ブロック単位に区切り、そのブロック毎にそのブロックに一次元、または二次元コードが含まれるか、あるいはそのブロックがそのようなコードの領域の少なくとも一部であるかが判定され、その後コードの種類、すなわち一次元コードであるか、二次元コードであるかが判定される。そこでまずコードの判別基準について説明する。
図2に示すように一次元コード、および二次元コードは、共に白、黒のようにコントラストの差が大きい2つの色を用いて印刷されている。またコード内の領域では2つの色の占める面積の比率が1対1に近くなるように配列がなされている。そのため画素の階調値のばらつき(分散)、または標準偏差が大きくなるという特徴がある。
これに対して文字が印刷されている領域では、文字の色が下地に対して占める面積の比率が小さくなり、画素の階調値のばらつきも小さくなる。また写真などが印刷されている領域では、画素の階調値が任意の値をとり、階調値のばらつきは小さくなる。この特徴を利用して、ブロック内の画素の階調値のばらつきが所定の範囲内となるブロックを検出することによって一次元コード、および二次元コードが含まれる領域を検出することが可能となる。
特に二次元コードの領域内では、白と黒の色の面積の比率が所定の範囲、例えば50%±10%以内となるようにコードが作成されている。そこでブロック内の白黒画素の比率が所定の範囲内になるブロックを検出することによって、特に二次元コードが含まれる領域のみを検出することが可能となる。
図3は、エッジ数による判定方法の説明図である。一次元コードでは、平行な直線の組合せによってデータが表現されるために、この直線、すなわちバーに垂直なライン上で画素を取り出した場合には、そのラインがコード内部のどこにあっても、ライン上の画素の階調値が急変する点(エッジ)がラインに直交するバーの数に対応して存在することになるが、バーに平行なライン上の画素を取り出す場合にはエッジが存在しないという特徴がある。
一方、二次元コードでは、二次元に配置された明暗ドット(セル)の組合せによってデータが表現され、コード内部ではできるだけ明暗が一様になるようになっているため、水平方向のライン上の画素を取り出した場合にも、また垂直方向のライン上の画素を取り出した場合にも、画素の階調値が急変する点としてのエッジの数があまり変わらないという特徴がある。また文字が印刷されている領域においてライン上の画素を取り出した場合には、文字間/行間など、エッジが存在しない場所があり、コード領域とはその特徴が明らかに異なってくる。
そこで本実施形態では、ブロック内の水平/垂直ライン上のエッジ数が所定の範囲内となるブロックを検出することによって、精度よく一次元/二次元コードが含まれる領域のみを検出することが可能となり、また一次元コードと二次元コードとを容易に区別することができる。
図4は、ライン間相関によるコードの判定方法の説明図である。一次元コードでは、コード領域内でバーに垂直な直線とその近傍の平行な直線との間での相互相関の値が大きくなるが、バーに平行な直線とその近傍の平行直線との間での相互相関の値が小さくなるという特徴がある。図4では、垂直な2つのラインとして、黒のバーの内部、あるいは白のバーの内部に2つのラインを考えているが、黒のバーの内部を通るラインと、白のバーの内部を通るラインとの間で、相互相関をとった場合も同様である。
これに対して二次元コードでは、水平な2本のラインの間でも、あるいは垂直な2本のラインの間でも、相互相関の値はともに小さくなるという特徴がある。また文字や写真が印刷されている領域においても、一次元コードの場合ほど強い相関を示すことはほとんどない。
そこでブロック内の水平ライン間、あるいは垂直ライン間の相関の値が所定の範囲内となるブロックを検出することによって、一次元/二次元コードが含まれる領域を精度よく検出することが可能となると共に、一次元コードと二次元コードとを容易に区別することが可能となる。
図5は、一次元コードにおける回転の有無の判定方法の説明図である。前述のように一次元コードに対しては、本来コードを形成するバーに対して直交する方向の1ライン分のデータを使用してバーコード認識を行うことになるが、一次元コードが90°回転した状態となっていると、ラインの方向がバーの方向と平行になり、正しいコード認識ができない。そこでコードの回転の有無を検出する必要がある。
図5において、一次元コードが本来の方向、すなわち水平方向に存在する場合には、水平方向エッジ数は白バーと黒バーの数に対応する数だけ存在するのに対して、垂直方向エッジ数は0となる。また水平ライン間の相関は大きくなるが、垂直ライン間の相関は小さくなるという特徴がある。
これに対して一次元コードが90°回転している場合には、水平方向エッジ数は0であるのに対して、垂直方向エッジ数は白バーと黒バーの数に対応した数だけ存在し、水平ライン間相関は小さいのに対して、垂直ライン間相関は大きくなるという特徴がある。
このため、画像データ内で一次元コードが水平方向を向いているか、あるいは90°回転した状態となっているかを精度よく判別することが可能となる。
実際のコードの判別においては、上記に説明した判定条件を複数個適宜組み合わせることによって、精度よく一次元コードや二次元コードが含まれる領域のみを検出することが可能となる。また特に白黒画素数、エッジ数、相関などは、それらのとり得る値の範囲が一次元コードと二次元コードとの間である程度異なってくる場合もあるが、本実施形態ではそれぞれの所定の範囲を一次元コードと二次元コードとの間で区別することなく処理を行うものとして説明する。これによってそれぞれの判別のための処理を分けたりする必要が無くなり、結果として簡単な処理シーケンスで高速にコード判別を行うことが可能となる。
続いて第1の実施形態におけるコード種類判別処理のフローチャートについて図6から図9を用いて説明する。図6は、コード種類判別処理の全体フローチャートである。同図において処理が開始されると、まずステップS11で入力画像データの中から注目するブロックが選択される。ブロックは画像の任意の位置から順番に選択していくものとする。通常は左上の隅から順次走査して選択したり、画像中央から周辺部に向かって走査したりする場合が多い。処理対象の特性上、コードが存在する可能性がより高い位置からブロックを選択する方がコードをすぐに検出でき、処理時間を短くすることができる。
ステップS12でブロック内の画素の階調値に対する標準偏差(SD)が算出され、ステップS13でその値があらかじめ定められた値SDcodeを超えているかが判定され、超えている場合にはステップS14で水平方向エッジ数HEdgeが、ステップS15で垂直方向エッジ数VEdgeが算出され、ステップS16でこれらの値があらかじめ定められた所定の値EDGEminを超えているかが判定される。
水平方向エッジ数、垂直方向エッジ数のいずれか1つ以上が所定の値を超えている場合には、ステップS17で黒画素率BPRatioが、ステップS18で水平ライン間相関HSoukanが、ステップS19で垂直ライン間相関VSoukanが算出され、ステップS20で黒画素率が所定の最小値BPRATIOminを超えており、かつ所定の最大値BPRATIOmax未満であるか否かが判定される。
この判定条件が成立している場合には、ステップS22のそのブロックがコード領域と判定され、その後ステップS23でそのコード領域が一次元コードであるか否かが判定される。この一次元コードの判定については図7でさらに詳細に説明する。
ステップS20で黒画素率に関する判定条件が成立しない場合には、ステップS21で水平ライン間相関、または垂直ライン間相関がそれぞれ所定の最小値SOUKANminを超えているか否かが判定され、いずれかのライン間相関が所定の最小値を超えている場合にはステップS22以降の処理が行われる。
ステップS23でコード領域が一次元コードであると判定された場合にはステップS24でその一次元コードが回転した状態であるか否かが判定される。その判定については、図8でその詳細をさらに説明する。回転ありと判定された場合には、ステップS25で一次元コードが回転しているものとしてのデコード処理が行われて処理を終了し、回転がない(水平)と判定された場合にはステップS26で一次元コードが通常状態、すなわち水平方向にあるものとしてのデコード処理が行われて処理を終了する。
ステップS23でコード領域が一次元コードでないと判定されると、ステップS27でその領域が二次元コードであるか否かが判定され、二次元コードである場合にはステップS28で二次元コードに対するデコード処理が行われ、処理を終了する。
この二次元コードに対するデコード処理は、後述する第2の実施形態においてコード境界を検出して、その検出結果に基いて実行されるが、検出されたブロックの位置に対応してコード境界検出を行うことによって、二次元コードのデコード処理を高速化することができる。
ステップS13で標準偏差が所定の値以下である場合、ステップS16で水平方向エッジ数、垂直方向エッジ数のいずれもが所定の最小値以下である場合、ステップS21で水平ライン間相関、または垂直ライン間相関のいずれもがその最小値以下である場合、およびステップS27で二次元コードでないと判定された場合には、ステップS11に戻り、次のブロックを選択してステップS12以降の処理が繰り返される。なおステップS27で二次元コードでないと判定されることは基本的にはありえないが、このような場合にはなんらかのエラーがあったものとして、ステップS11以降の処理が繰り返される。またステップS24において、コード無しと判定された場合にも、エラーと見なしてステップS11以降の処理が繰り返される。
図7は、図6のステップS23における一次元コード判定処理の詳細フローチャートである。同図において処理が開始されると、まずステップS31で画素の階調値の標準偏差SDが所定の値を超えているか否かが判定される。この所定の値は例えば図6のステップS13におけると同じとする。所定の値を超えている場合にはステップS32で水平方向エッジ数、または垂直方向エッジ数の少なくともいずれか1つが所定の最小値を超えているか否かが判定される。この所定の最小値もステップS16におけると同じとする。
いずれか1つのエッジ数が所定の最小値を超えている場合には、ステップS33で水平ライン間相関、または垂直ライン間相関が所定の最小値(ステップS21と同じ)を超えているか否かが判定され、超えている場合にはステップS34で一次元コード領域と判定されて処理を終了し、図6のステップS24の処理に移行する。
ステップS31で標準偏差、ステップS32で水平方向エッジ数と垂直方向エッジ数の両者、ステップS33で水平ライン間相関と垂直ライン間相関の両者がそれぞれ対応する所定の値以下であると判定された場合には、ステップS35で一次元コードでないと判定され、処理を終了し、図6のステップS27の処理に移行する。
図8は、図6のステップS24における回転有無の判定処理の詳細フローチャートである。同図において処理が開始されると、まずステップS37で水平方向エッジ数が所定の最小値を超えており、かつ水平ライン間相関が所定の最小値を超えているか否かが判定される。この判定は、図5の左側で説明したように一次元コードが水平方向となっている条件であり、この条件が成立すると、ステップS38で垂直方向エッジ数が所定の最小値を超えており、かつ垂直ライン間相関が所定の最小値を超えているか否かが判定される。この条件は図5の右側にある一次元コードの回転状態に対応する。この条件が成立しない場合にはステップS41で一次元コードは水平方向と判定され、図6のステップS26の処理に移行する。
ステップS38の判定条件が成立する場合は、一次元コードは水平方向でもなく、90°回転した方向でもなく、例えば斜めの方向になっている場合に相当する。この場合にはステップS39で水平ライン間相関HSoukanが垂直ライン間相関VSoukan超えているか否かが判定され、超えている場合にはステップS41で一次元コードが水平方向と判定され、ステップS26の処理に移行する。
ステップS37で判定条件が成立しない場合には、ステップS40でステップS38におけると同じ判定条件が成立するか否かが判定され、成立する場合、およびステップS39で水平ライン間相関が垂直ライン間相関以下であると判定された場合には、ステップS42で一次元コードが回転していると判定され、図6のステップS25の処理に移行する。またステップS40で判定条件が成立しない場合には、ステップS43でコードなしと判定され、何らかのエラーが発生したものとして図6のステップS11以降の処理が繰り返される。
図9は、図6のステップS27における二次元コード判定処理の詳細フローチャートである。同図において処理が開始されると、ステップS45で画素の階調値の標準偏差が所定の値を超えているか否かが判定され、超えている場合にはステップS46で水平方向エッジ数と垂直方向エッジ数のいずれもが所定の最小値を超えているか否かが判定される。超えている場合にはステップS47で黒画素率が所定の最小値を超えており、かつ所定の最大値未満であるか否かが判定される。この条件が成立する場合にはステップS48で二次元コードと判定され、図6のステップS28の処理に移行する。これに対してステップS45で標準偏差が、ステップS46で水平方向エッジ数、または垂直方向エッジ数の少なくともいずれか1つがそれぞれ所定の値以下の場合、またはステップS47で黒画素率が所定の最小値と所定の最大値の間に入っていない場合には、ステップS49で二次元コードでないと判定され、図6のステップS11以降の処理が繰り返される。
以上のフローチャートにおいては、前述のように例えば水平方向エッジ数や、垂直方向エッジ数などの所定の最小値として一次元コードと二次元コードに対して共通の値を用いて判定を行うものとしたが、これらの所定の値として一次元コードに対する値と二次元コードに対する値を区別して処理を実行することも当然可能である。また、例えば図7の一次元コード判定処理における判定条件は図6のステップS13、S16、およびS21に含まれており、例えばステップS21の判定条件が成立した時点で処理対象ブロックは一次元コード領域であると判定して、ステップS24の一次元コードの回転有無の判定処理を行うことも可能である。
続いて本発明の第2の実施形態について説明する。この第2の実施形態では、第1の実施形態において二次元コードと判定されたブロックに対応して、その二次元コードの境界を検出するものとする。
図10は、第2の実施形態における二次元コード認識処理の全体フローチャートである。同図において処理が開始されると、まずステップS51で画像読み取りが行われ、ステップS52で光電変換が行われ、ステップS53でA/D変換が行われ、ステップS54で二次元コード認識処理が行われ、ステップS55でデータ文字出力が行われて処理を終了する。第2の実施形態としての二次元コードの境界検出は、ステップS54の二次元コード認識処理の一部として実行される。
図11は、この二次元コード認識処理のフローチャートである。同図において処理が開始されると、まずステップS57でコード領域抽出処理、ステップS58で解像度変換処理、ステップS59でデコード処理が行われ、処理を終了する。コード領域の境界検出は、ステップS57のコード領域抽出処理に含まれる。ステップS58の解像度変換処理では、コード画像の1セルのデータを1画素のデータに変換する処理が行われる。すなわち一般には複数の画素に対応する1セルのデータを1画素のデータに変換することによって解像度の変換が行われる。
図12は、ステップS57のコード領域抽出処理のフローチャートである。同図において処理が開始されると、まずステップS61でコード内の点の座標が検出され、ステップS62でセル幅の検出が行われ、ステップS63でコード境界の検出処理が行われて処理を終了する。ステップS61の処理は、第1の実施形態において検出された二次元コードを含むブロックの位置に対応して行われる。ステップS62のセル幅の検出処理については後述する。
図13は、第2の実施形態における二次元コードの境界検出方法の原理的な説明図である。前述のように光学歪みやピントのボケが発生した場合には、QRコードの位置決め用シンボルが検出できなくなるという問題点があったが、本実施形態においてはコードの回りに存在する白領域、すなわちクワイエットゾーンを検出することによって、二次元コードの境界を検出することが可能となる。例えば、QRコードではコードの周囲に4セルの幅を持つ白領域(クワイエットゾーン)が存在し、そのクワイエットゾーンは光学歪みやピントのボケにほとんど影響されないため、二次元コードの境界を正しく検出することが可能となる。
図14は、セル幅の検出方法の説明図である。同図において二次元コード内部の適当な点から上下左右の方向に白領域、および黒領域の連続長の長さが検出され、その長さの頻度によって分布を求め、頻度がある一定値以上になる範囲内で最小の連続長の長さがセル幅として求められる。画像内部ではピンボケやノイズなどの影響によって、セル幅とは関係のない連続長が検出されることがあるために、値の小さな連続長は無視し、ある特定の値以上の頻度を持つ範囲で最小の連続長がセル幅として求められることになる。なお二次元コードにおいて白と黒のセル幅は同じであるとする。
図15、および図16は、コード境界を検出するための第1の白連続長と第2の白連続長の検出方法の説明図である。図15は第1の白連続長の検出方法の説明図であり、同図において二次元コードの内部の適当な点から上下左右のいずれか1つの方向に画像を走査し、白セルが連続する白連続長の検出が行われる。図15では左側への走査が行われ、第1の白連続長として5つの連続長が検出されている。
図16は、第2の白連続長検出方法の説明図である。ここでは図15で検出された白連続長と交差する方向に第2の白連続長の検出が行われる。第1の白連続長上の1つの点を中心としてあらかじめ定められた直径の円を描き、その円周上の1つの点と、その点と中心に関して対称な点とを結ぶ線分上の点が全て白であれば、後述するようにその線分が第2の白連続長の一部として検出される。
第1の白連続長上の1つの点を中心として、あらかじめ定められた直径の円周上の各点に対応してそのような第2の白連続長が検出されない場合には、図15の第1の白連続長の線分の上で円の中心となる点を移動させて、その点を中心とするあらかじめ定められた直径の円周上の点に対応して第2の白連続長を検出する処理が繰り返される。その処理が二次元コードを含む画像の例えば左端の位置まで繰り返される。
図17、および図18は第2の白連続長としてのコード境界の検出方法の説明図である。図17は、コード内部の第1の白連続長上の点を中心としたある定められた円周上の点を対象とする第2の白連続長検出動作の説明図である。第2の白連続長を検出するための円の直径をある程度以上大きくすることによって、コードの内部ではそのような長い白連続長を第2の白連続長として検出することはできない。
図18は、コード境界における第2の白連続長の検出動作の説明図である。前述のようにコード境界においてクワイエットゾーンが存在するため、第2の白連続長を検出するための円の直径以上の長さの白連続長が検出可能である。実際には後述するようにこのような円の直径と同じ長さの白連続長が検出された時点で、さらにその線分を両側に伸ばし、延長された線分上の点が全て白であるか否かが検出され、全て白である場合に、その線分が二次元コードのクワイエットゾーンにおける第2の白連続長として検出される。
図19は、境界検出処理の開始点の位置の説明図である。第2の実施形態ではコード境界検出するための第1の白連続長検出処理は、コード内部の適当な点を開始点として開始される。コード外部の点を開始点とすれば、二次元コード以外の図表や文字の領域において境界検出処理が行われてしまうことになる。この開始点は、第1の実施形態において二次元コードと判定されたブロックに対応してその位置が特定される。
図20は、二次元コードの上下左右の4つの境界を検出する動作の説明図である。前述のように境界検出処理の開始点から上下左右の各方向に対して画像を走査し、第1の白連続長、および第2の白連続長を検出することによって、二次元コードのクワイエットゾーンに相当する上下左右の4つの境界が検出される。
このように上下左右の境界が検出されると二次元コードの画像内における傾き角度を求めることもできる。例えばその簡略的な方法として、境界を直線と見なして、その傾きからコードの傾き角度を求めることもでき、より精密な方法として境界の検出結果を用いて位置決め用シンボルの位置を特定し、その位置から二次元コードの傾き角度を計算することもできる。
図21は、白セルと黒セルとを区別するための閾値の決定方法の説明図である。二次元コードに対する光の照射量が少ない場合や、センサの感度が低い場合などにおいては、閾値を、例えば256諧調の中間の128のように固定した場合にセルの黒、白を正確に判定することができないことがある。例えば、光の照射量が少ない場合には階調値のレンジが全体的に低いレベルに下がり、かすれやつぶれが発生する。そのようなかすれやつぶれの影響を排除するために、第2の実施形態では図21に示す閾値の決定方法を用いる。
一般的に二次元コードは白と黒の2値で表現されたものが多く、入力画像の各セルに対する階調値のヒストグラムでは図21に示されるように明るい領域と暗い領域で2つのピークが生ずる。頻度がそれぞれある一定値以上であり、最も左側にある階調値のピークと、右側にある階調値のピークとに対応する階調値の中間(平均値)を閾値の値として決定することによって、かすれやつぶれの影響を排除して、白セルと黒セルとの判定を正確に行うことが可能となる。
黒セルと白セルの判定方法として、このような閾値を用いる代わりに、注目セルとその周囲のセルの階調値とを比較し、その差がある一定値以上である場合には階調値の大きなセルを白セル、小さなセルを黒セルと判定する方法を用いることもできる。
図22は、閾値を用いる場合の閾値の更新動作の説明図である。二次元コードの画像領域の大きさや、光の照射方向などによって生じる影の影響などによって、黒セルと白セルを判別するために二次元コードの画像領域全体に一定の閾値を用いた場合には、正確な判別ができない場合がある。すなわち光源の位置などの影響によって、影の濃い部分と薄い部分とができるような場合には、影の濃い部分と薄い部分とで閾値を変更して黒セルと白セルとの判別を行う必要がある。
例えば図20において右方向に画像を走査していく場合に、例えばある一定距離毎に閾値を修正して第1の白連続長、および第2の白連続長の検出処理を行う。この閾値修正を行う走査距離については、例えば光源の位置やその強度などを変更して実験を繰り返し、適切な距離を決定することができる。
以上で概略を説明した、二次元コード境界検出方法について図23〜図25のフローチャートを用いてさらに詳細に説明する。図23は、コード境界検出処理の全体フローチャートである。ここで検出対象となる二次元コードは、例えば前述のQRコードであるものとするが、他の二次元コードに対する処理も実行することができる。このQRコードの詳細については次の文献に詳細に記述されている。
〔非特許文献1〕 JIS X0510 2次元コードシンボル−QRコード−基本仕様 解説
図23において処理が開始されると、まずステップS71で閾値を更新する距離に対応する閾値エリアのカウンタが0に初期化され、現在の処理対象の点の座標nXPos、およびnYPosにコード内部の走査開始点、すなわち第1の実施形態において検出された二次元コード領域の内部の点の座標r−nx−ct、およびr−ny−ctが代入され、ステップS72で現在の点のX座標nXPosが、画像の左端の点のX座標nXEd(=0)以上であるか否かが判定される。なおここでは図20で説明したように開始点から左方向に画像を走査するものとして、処理のフローチャートを説明する。
ステップS72で現在の点が画像の左端に達していないと判定されると、ステップS73で閾値エリアのカウンタの値が閾値の更新が必要となる値nThAreaを超えたか否かが判定され、超えている場合にはステップS74で閾値nThreshを更新するために閾値の検出処理が行われる。閾値の検出処理は図21で説明した方法によって行われる。
ステップS74の処理に続いて、ステップS75で閾値エリアのカウンタの値が0に初期化された後に、またステップS73でカウンタの値が閾値更新を行うべき値を超えていない場合には、ステップS76の第1の白連続長検出処理に移行する。この処理については図24で詳細に説明するが、この検出処理に対応して第1の白連続長を示すnWRange、閾値エリアのカウンタの値、現在の点の座標値、および閾値nThreshの変数の値が引き渡される。なおこれらの値のうち、現在の点のY座標nYPos、および閾値nThresh以外の値は第1の白連続長検出処理において更新される。なお第1の白連続長検出長検出処理の処理中に閾値エリアのカウンタ値がnThAreaの値を超える可能性もあるが、ここでは第1の白連続長は比較的短く、この処理中には閾値は更新されないものとする。
第1の白連続長検出処理が終了すると、ステップS77で第1の白連続長検出処理において白連続長が検出されず、エラーとなったか否かが判定され、エラーとなった場合には処理を終了する。第1の白連続長の検出に成功した場合には、ステップS78で第2の白連続長検出の終了判定処理に用いられるカウント値nWCountの値が0に初期化され、ステップS79でそのカウント値が第1の白連続長を表すnWRange未満であるか否かが判定され、未満であるときにはステップS80で第2の白連続長の検出が行われる。この処理については図25で詳細に説明するが、この処理に対して現在の点のX座標とY座標、および閾値の値が引き渡される。
続いてステップS81で第2の白連続長の検出に成功したか否かが判定され、成功した場合には処理を終了し、成功しない場合にはステップS82でnWCountと閾値エリアのカウンタの値がインクリメントされ、現在の点のX座標がデクリメントされた後にステップS79以降の処理が繰り返される。
すなわち図15、および図16で説明したように、第1の白連続長に対応する線分上で左方向に現在の点を移動させながら、第2の白連続長を検出する処理が繰り返されることになる。この処理の繰り返しはステップS79でnWCountの値がこの第1の白連続長の長さ、すなわちnWRangeに達した時点で終了し、再びステップS72以降の処理が繰り返されることになる。
図24は、第1の白連続長検出処理の詳細フローチャートである。同図において処理が開始されると、ステップS86で現在の点のX座標、Y座標が変数x、yに代入され、ステップS87でxが画像データの左端に達していないかが判定され、いない場合にはステップS88で座標x、yの点の階調値のデータが閾値未満であるか否かが判定される。本実施形態では、明るいセル、すなわち白いセルに対する階調値が、黒いセルに対する階調値より大きくなっているため、階調値が閾値未満であることは、現在処理対象となっているセルが黒であることになり、白セルを見つけるまで次のステップS89からS91の処理が繰り返される。
ステップS89では、閾値エリアのカウンタがインクリメントされ、処理対象セルの座標xがデクリメントされ、ステップS90でステップS87と同様に画像の左端に達していないか否かが判定され、いない場合にはステップS91でS88と同様に階調値が閾値未満であるか否かが判定される。閾値未満である場合にはステップS89以降の処理が繰り返される。
ステップS91で階調値が閾値以上である場合、およびステップS88で同様に階調値が閾値以上である場合には、ステップS92で処理中のセルの座標xが第1の白連続長の開始点のX座標を示すnXstに代入され、ステップS93の処理に移行する。
ステップS93からS95において閾値エリアのカウンタの値がインクリメントされ、処理中のセルのX座標xがデクリメントされた後に、処理中のセルが画像の左端に達していないか、またセルが白であるかの判定が行われ、これらの判定が共に成立する場合には、これらの処理が繰り返され、ステップS95でセルの階調値が閾値以下であり、セルが黒と判定されると、ステップS96でセルのX座標xが第1の白連続長の終りの点のX座標を示すnXedに代入され、ステップS97で第1の白連続長の長さを示すnWRangeが求められ、図23の全体処理において処理中のセルのX座標を示すnXPosの値が第1の白連続長の開始点の座標nXstの値とされ、第1の白連続長の検出の成功を示すプラグnErrFlag1の値が1とされて処理を終了し、リターンが行われる。
ステップS87、ステップS90、およびステップS94のいずれかにおいて処理中のセルのX座標を示すxが画像データの左端nXEdに達したと判定されると、ステップS98で第1の白連続長の検出の成功を示すフラグが−1、すなわち失敗を示す値に設定された後に処理を終了してリターンが行われる。
図25は、図23のステップS80における第2の白連続長検出処理の詳細フローチャートである。同図において処理が開始されると、まずステップS101で図24のステップS86と同様に現在の処理対象のセルの座標x、yの設定が行われる。ステップS102でこれらの座標によって決まる点を中心とした円が描かれ、その円周上の点が求められる。ここでこの円は前述のように第2の白連続長を検出するためのものであり、コード内部で第2の白連続長が検出されることがないように、ある程度大きな直径を持つ円が使用される。
続いてステップS103で円周上の点のインデックスとしてのjが0に初期化され、ステップS104でjの値がステップS102で求められた円周上の点の数Circu Point Num未満であるか否かが判定され、未満である場合にはステップS105で、インデックスjで示される円周上の点における階調値Cdata[j]の値が閾値以上であるか否かが判定され、閾値以上、すなわち白である場合にはステップS106で、インデックスjによって示される円周上の点と円の中心に関して対称な位置にある点の階調値CdataRev[j]が閾値以上であるか否かが判定される。閾値以上である場合にはステップS107でこれらの2つの点を結ぶ線分上の点の色が全て調べられ、全て白であるか否かがステップS108で判定され、全て白である場合には前述のようにステップS109で、その線分の外側にさらに延長線が引かれ、延長線上の点が全て白であるかが調べられ、ステップS110でそれらの点が全て白であるか否かが判定され、全て白である場合にはステップS112で第2の白連続長の検出成功を示すフラグnErrFlag2の値が1に設定された後に処理を終了し、リターンが行われる。なおステップS109で引かれる延長線の長さは、例えば延長線の長さを含む全体の線分の長さが、円の直径の2倍となるような長さとされる。
ステップS105で、円周上のインデックスjで示される点、またはステップS106でその点と円の中心に関して対称な点の階調値が閾値未満である時、ステップS108、またはS110で線分上の点、または延長線上の点の一部が白でない時には、ステップS111でjの値がインクリメントされた後にステップS104以降の処理が繰り返される。すなわちステップS102で求められた円周上の点を移動させながら、第2の白連続長の検出処理が続けられる。そしてステップS104で円周上の点に対する処理が全て終了したと判定されると、第2の白連続長の検出に失敗したことになるため、ステップS113でフラグの値が−1とされて処理を終了し、リターンが行われる。
以上において本発明のコード種類判別方法およびコード境界検出方法についてその詳細を説明したが、この方法を実行するコード読取装置は当然一般的なコンピュータシステムをその主要構成部として構成することが可能である。図26はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図26においてコンピュータシステムは中央処理装置(CPU)10、リードオンリメモリ(ROM)11、ランダムアクセスメモリ(RAM)12、通信インタフェース13、記憶装置14、入出力装置15、可搬型記憶媒体の読取り装置16、およびこれらの全てが接続されたバス17によって構成されている。
記憶装置14としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置14、またはROM11に図6〜図9、図10〜図12、図23〜図25のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項9、10の記憶媒体に格納されたプログラムがCPU10によって実行されることにより、本実施形態における一次元/二次元コードを含むブロックの検出、コードの種類判別などが可能となる。
このようなプログラムは、情報提供者18側からネットワーク19、および通信インタフェース13を介して、例えば記憶装置14に格納されることも、また市販され、流通している可搬型記憶媒体20に格納され、読取り装置16にセットされて、CPU10によって実行されることも可能である。可搬型記憶媒体20としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置16によって読取られることにより、本実施形態における二次元コードのコード境界検出などが可能となる。
(付記1) 入力画像データを矩形ブロック単位で選択するブロック選択過程と、
該選択されたブロックが所定の条件を満たしているか否かを判定するブロック判別過程と、
該所定の条件を満たすブロック内に含まれるコードの種類を判定するコード判定過程とを備えることを特徴とするコード種類判別方法。
(付記2) 前記コード判定過程において、コードの種類として一次元コードと二次元コードの区別を判定することを特徴とする付記1記載のコード種類判別方法。
(付記3) 前記コード種類判別方法において、
コードの種類が一次元コードと判定された時、該一次元コードが回転した状態にあるか否かを判定する回転検出過程をさらに備えることを特徴とする付記2記載のコード種類判別方法。
(付記4) 前記ブロック判別過程において、前記所定の条件としてブロック内の画素の階調値の分散が所定の範囲内にあることを判定することを特徴とする付記1記載のコード種類判別方法。
(付記5) 前記ブロック判別過程において、前記所定の条件としてブロック内の黒画素と白画素との比率が所定の範囲内にあることを判定することを特徴とする付記1記載のコード種類判別方法。
(付記6) 前記ブロック判別過程、および/またはコード判定過程において、前記所定の条件、および/またはコード種類判定条件として、ブロック内の水平方向、および/または垂直方向のライン上で画素の階調値が急変するエッジの個数が所定の範囲内にあることを判定することを特徴とする付記1記載のコード種類判別方法。
(付記7) 前記ブロック判別過程、および/またはコード判定過程において、前記所定の条件、および/またはコード種類判定条件として、ブロック内の2本以上の水平ライン相互間、および/または2本以上の垂直ライン相互間で画素の階調値の相関が所定の範囲内にあることを判定することを特徴とする付記1記載のコード種類判別方法。
(付記8) セル化されたデータが二次元状に配置された二次元コードの境界検出方法であって、
入力画像データを走査し、白セルの連続長を検出する第1の白連続長検出過程と、
該第1の白連続長と交差する方向に入力画像データを走査し、該第1の白連続長と交点を持ち、かつ所定の長さを超える白セルの連続長を検出する第2の白連続長検出過程と、
該第1の白連続長と第2の白連続長との交点をコード境界位置として検出する境界検出過程とを備えることを特徴とするコード境界検出方法。
(付記9) 前記第1の白連続長検出過程において、あらかじめ特定されたコードの位置に対応してコード内部の点から上、下、左、または右の方向に入力画像データを走査し、
前記境界検出過程において、上、下、左、または右のコード境界を検出することを特徴とする付記8記載のコード境界検出方法。
(付記10) 前記コード境界検出方法において、前記セルの幅を検出するセル幅検出過程をさらに備え、
前記白セルの連続長の検出において、該検出されたセル幅を基準として連続長を決定することを特徴とする付記8記載のコード境界検出方法。
(付記11) 前記セル幅検出過程において、
あらかじめ特定されたコードの位置に対応して、コード内部の点から上、下、左、または右の方向に入力画像データを走査し、白セルの連続長、および/または黒セルの連続長の長さの頻度を示すヒストグラムを作成する過程と、
該ヒストグラム上で所定の値以上の頻度を持つ連続長の中で、最小の連続長の長さをセル幅として決定する過程とを備えることを特徴とする付記10記載のコード境界検出方法。
(付記12) 前記コード境界検出方法において、前記白セルの連続長の検出において使用される閾値の決定過程をさらに備え、
セルに対する階調値が該閾値以上であるセルを白セルとして検出することを特徴とする付記8記載のコード境界検出方法。
(付記13) 前記第1の白連続長検出過程において、
前記入力画像データの走査にあたって、ある一定距離の走査毎に前記閾値決定過程を繰り返し、
該繰り返しによって更新された閾値以上であるセルを白セルとして検出することを特徴とする付記12記載のコード境界検出方法。
(付記14) 前記閾値決定過程において、
ある一定範囲内のセルに対する階調値の頻度を示すヒストグラムを作成する過程と、
該ヒストグラムにおいて階調値の高い側である一定値以上の頻度を持つピークに対応する第1の階調値を求める過程と、
階調値の低い側である一定値以上の頻度を持つピークに対応する第2の階調値を求める過程と、
該第1の階調値と第2の階調値の平均値を閾値として決定する過程とを備えることを特徴とする付記12、または13記載のコード境界検出方法。
(付記15) 前記白セルの連続長の検出において、注目セルと周囲のセルに対する階調値を比較し、階調値の差がある値以上である時、階調値の大きなセルを白セルとして検出することを特徴とする付記8記載のコード境界検出方法。
(付記16) 入力画像データに含まれるコードの種類を判別する計算機によって使用される記憶媒体であって、
入力画像データを矩形ブロック単位で選択するステップと、
該選択されたブロックが所定の条件を満たしているか否かを判定するステップと、
該所定の条件を満たすブロック内に含まれるコードの種類を判定するステップとを計算機に実行させるプログラムを格納した計算機読出し可能可搬型記憶媒体。
(付記17) 前記コード種類判定のステップにおいて、
コードの種類が一次元コードと判定された時、該一次元コードが回転した状態にあるか否かを判定するステップを前記プログラムがさらに計算機に実行させることを特徴とする付記16記載の計算機読出し可能可搬型記憶媒体。
(付記18) セル化されたデータが二次元状に配置された二次元コードの境界を検出する計算機によって使用される記憶媒体であって、
入力画像データを走査し、白セルの連続長を検出する第1の白連続長検出ステップと、
該第1の白連続長と交差する方向に入力画像データを走査し、該第1の白連続長と交点を持ち、かつ所定の長さを超える白セルの連続長を検出する第2の白連続長検出ステップと、
該第1の白連続長と第2の白連続長との交点をコード境界位置として検出する境界検出ステップとを計算機に実行させるプログラムを格納した計算機読出し可能可搬型記憶媒体。
本発明は、一次元バーコードや二次元コードなどを例えば光学的に読み取り、そのコードの認識を行うためのコード認識装置の製造産業は当然のこととして、そのような一次元コードや二次元コードを利用する全ての産業において利用可能である。
本発明のコード種類判別方法の原理的な説明図である。 一次元コードと二次元コードの例を示す図である。 コード内のエッジ数の判定方法の説明図である。 コード内の2本のライン間の相関判定方法の説明図である。 一次元コードの回転の有無の判定方法の説明図である。 第1の実施形態におけるコード種類判別処理の全体フローチャートである。 一次元コード判定処理の詳細フローチャートである。 一次元コード回転判定処理の詳細フローチャートである。 二次元コード判定処理の詳細フローチャートである。 第2の実施形態における二次元コード認識処理の全体フローチャートである。 二次元コード認識処理の詳細フローチャートである。 二次元コードの境界検出処理の全体フローチャートである。 第2の実施形態におけるクワイエットゾーン検出の説明図である。 セル幅の検出方法の説明図である。 第1の白連続長検出方法の説明図である。 第2の白連続長検出方法の説明図である。 コード内部における第2の白連続長検出動作の説明図である。 コード境界における第2の白連続長検出動作の説明図である。 コード境界検出処理の開始点の位置の説明図である。 上下左右4方向のコード境界検出の説明図である。 閾値の設定方法の説明図である。 領域ごとの閾値決定方法の説明図である。 コード境界検出処理の全体フローチャートである。 第1の白連続長検出処理の詳細フローチャートである。 第2の白連続長検出処理の詳細フローチャートである。 本発明におけるプログラムのコンピュータへのローディングを説明する図である。 従来の二次元コード領域抽出方法の説明図である。
符号の説明
1 ブロック選択過程
2 ブロック判別過程
3 コード判定過程
4 結果出力過程
10 CPU
11 リードオンリーメモリ(ROM)
12 ランダムアクセスメモリ(RAM)
13 通信インタフェース
14 記憶装置
15 入出力装置
16 読み取り装置
17 バス
18 情報提供者
19 ネットワーク
20 可搬型記憶媒体

Claims (7)

  1. 入力画像データを矩形ブロック単位で選択するブロック選択過程と、
    該選択されたブロックが所定の条件を満たしているか否かを判定するブロック判別過程と、
    該所定の条件を満たすブロック内に含まれるコードの種類を判定するコード判定過程とを備え
    前記ブロック判別過程、および/またはコード判定過程において、前記所定の条件、および/またはコード種類判定条件として、ブロック内の水平方向、および/または垂直方向のライン上で画素の階調値が急変するエッジの個数が所定の範囲内にあることを判定することを特徴とするコード種類判別方法。
  2. 前記コード判定過程において、コードの種類として一次元コードと二次元コードの区別を判定することを特徴とする請求項1記載のコード種類判別方法。
  3. 前記コード種類判別方法において、
    コードの種類が一次元コードと判定された時、該一次元コードが回転した状態にあるか否かを判定する回転検出過程をさらに備えることを特徴とする請求項2記載のコード種類判別方法。
  4. 前記ブロック判別過程において、前記所定の条件としてブロック内の画素の階調値の分散または標準偏差が所定の範囲内にあることを判定することを特徴とする請求項1記載のコード種類判別方法。
  5. 前記ブロック判別過程において、前記所定の条件としてブロック内の黒画素と白画素との比率が所定の範囲内にあることを判定することを特徴とする請求項1記載のコード種類判別方法。
  6. 入力画像データに含まれるコードの種類を判別する計算機によって使用される記憶媒体において、
    入力画像データを矩形ブロック単位で選択するステップと、
    該選択されたブロックが所定の条件を満たしているか否かを判定するブロック判別ステップと、
    該所定の条件を満たすブロック内に含まれるコードの種類を判定するコード判定ステップとを計算機に実行させるプログラムであって、
    前記ブロック判別ステップ、および/またはコード判定ステップにおいて、前記所定の条件、および/またはコード種類判定条件として、ブロック内の水平方向、および/または垂直方向のライン上で画素の階調値が急変するエッジの個数が所定の範囲内にあることを判定するステップを計算機に実行させるプログラムを格納した計算機読出し可能可搬型記憶媒体。
  7. 前記コード判定ステップにおいて、
    コードの種類が一次元コードと判定された時、該一次元コードが回転した状態にあるか否かを判定するステップを前記プログラムがさらに計算機に実行させることを特徴とする請求項6記載の計算機読出し可能可搬型記憶媒体
JP2003408104A 2003-12-05 2003-12-05 コード種類判別方法、およびコード境界検出方法 Expired - Fee Related JP4180497B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2003408104A JP4180497B2 (ja) 2003-12-05 2003-12-05 コード種類判別方法、およびコード境界検出方法
US10/853,667 US7636483B2 (en) 2003-12-05 2004-05-26 Code type determining method and code boundary detecting method
EP10181345.9A EP2275968B1 (en) 2003-12-05 2004-09-30 Code type determining method and code boundary detecting method
EP04028562.9A EP1619604B1 (en) 2003-12-05 2004-09-30 Code type determining method and code boundary detecting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003408104A JP4180497B2 (ja) 2003-12-05 2003-12-05 コード種類判別方法、およびコード境界検出方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007312442A Division JP4398498B2 (ja) 2007-12-03 2007-12-03 コード境界検出方法

Publications (2)

Publication Number Publication Date
JP2005173646A JP2005173646A (ja) 2005-06-30
JP4180497B2 true JP4180497B2 (ja) 2008-11-12

Family

ID=34631774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003408104A Expired - Fee Related JP4180497B2 (ja) 2003-12-05 2003-12-05 コード種類判別方法、およびコード境界検出方法

Country Status (3)

Country Link
US (1) US7636483B2 (ja)
EP (2) EP1619604B1 (ja)
JP (1) JP4180497B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10685201B2 (en) 2016-07-22 2020-06-16 Alibaba Group Holding Limited Method and system for recognizing location information in two-dimensional code

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20040858A (fi) * 2004-06-18 2005-12-19 Valtion Teknillinen Menetelmä koodin tunnistamiseksi matkaviestimen avulla ja matkaviestin
JP4531809B2 (ja) 2005-03-18 2010-08-25 富士通株式会社 コード画像処理方法
EP1904952A2 (en) * 2005-05-23 2008-04-02 Nextcode Corporation Efficient finder patterns and methods for application to 2d machine vision problems
JP5288691B2 (ja) * 2005-06-13 2013-09-11 豊 木内 2次元コード読取プログラム
JP4650138B2 (ja) * 2005-07-22 2011-03-16 株式会社デンソーウェーブ 光学的情報読取装置
DE102005035208B4 (de) * 2005-07-27 2007-10-04 Siemens Ag Verfahren zur Lokalisierung von Bildelementen
KR100828539B1 (ko) * 2005-09-20 2008-05-13 후지제롯쿠스 가부시끼가이샤 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체
US8050502B2 (en) * 2006-06-21 2011-11-01 Namco Bandai Games Inc. Two-Dimensional code generation method, two-dimensional code, two-dimensional code recognition method, and image recognition device
JP4967488B2 (ja) * 2006-07-11 2012-07-04 富士通株式会社 コード画像処理方法、コード画像処理装置及びコード画像処理プログラム
JP4873312B2 (ja) * 2007-01-19 2012-02-08 株式会社デンソーウェーブ 光学情報読取装置
CN101765861A (zh) * 2007-03-08 2010-06-30 微扫描系统公司 二维码的检测和分割
US8724924B2 (en) * 2008-01-18 2014-05-13 Mitek Systems, Inc. Systems and methods for processing mobile images to identify and extract content from forms
US9292737B2 (en) 2008-01-18 2016-03-22 Mitek Systems, Inc. Systems and methods for classifying payment documents during mobile image processing
JP5140820B2 (ja) * 2008-03-31 2013-02-13 日本電産サンキョー株式会社 シンボル情報読取装置及びシンボル情報読取方法
JP5121568B2 (ja) * 2008-05-21 2013-01-16 日立オムロンターミナルソリューションズ株式会社 包装硬貨処理機
WO2011065565A1 (ja) * 2009-11-30 2011-06-03 株式会社オプトエレクトロニクス 光学的情報読取装置及び光学的情報読取方法
EP2638505B1 (en) * 2010-11-10 2019-04-24 Datalogic USA, Inc. Adaptive data reader and method of operating
BR112013020071A2 (pt) 2011-01-28 2016-10-25 Eye Io Llc métodos e aparelhos para codificação de sequência de video baseada em tipos de cena
CA2825929A1 (en) * 2011-01-28 2012-08-02 Eye IO, LLC Adaptive bit rate control based on scenes
IT1404187B1 (it) * 2011-02-28 2013-11-15 Datalogic Automation Srl Metodo per l'identificazione ottica di oggetti in movimento
JP5601291B2 (ja) * 2011-08-22 2014-10-08 株式会社デンソーウェーブ 情報コード読み取り装置
IN2014CN02941A (ja) * 2011-10-10 2015-07-03 Yewon Comm Co Ltd
US20130105568A1 (en) * 2011-11-01 2013-05-02 Codonics, Inc. Adaptable information extraction and labeling method and system
US9697331B2 (en) * 2011-11-01 2017-07-04 Codonics, Inc. Adaptable information extraction and labeling method and system
US9100576B2 (en) * 2011-12-05 2015-08-04 Xerox Corporation Camera positioning tool for symbology reading
EP3014528B1 (en) * 2013-06-28 2018-10-03 Kodak Alaris Inc. Determining barcode locations in documents
US10140257B2 (en) * 2013-08-02 2018-11-27 Symbol Technologies, Llc Method and apparatus for capturing and processing content from context sensitive documents on a mobile device
US10769362B2 (en) * 2013-08-02 2020-09-08 Symbol Technologies, Llc Method and apparatus for capturing and extracting content from documents on a mobile device
CN104517089B (zh) * 2013-09-29 2017-09-26 北大方正集团有限公司 一种二维码解码系统及其方法
US9501681B1 (en) 2015-07-14 2016-11-22 A9.Com, Inc. Decoding visual codes
CN105069394B (zh) * 2015-07-23 2017-10-10 福建联迪商用设备有限公司 二维码加权平均灰度法解码方法及系统
CN105701434A (zh) * 2015-12-30 2016-06-22 广州卓德信息科技有限公司 二维码扭曲图像的图像校正方法
JP7021651B2 (ja) * 2019-03-01 2022-02-17 オムロン株式会社 シンボル境界特定装置、シンボル境界特定方法および画像処理プログラム
CN111046692B (zh) * 2019-11-26 2023-04-14 北京奇艺世纪科技有限公司 确定二维码区域的方法及装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4924078A (en) * 1987-11-25 1990-05-08 Sant Anselmo Carl Identification symbol, system and method
JPH056549A (ja) 1991-06-26 1993-01-14 Olympus Optical Co Ltd 再生信号処理装置
KR100257128B1 (ko) * 1991-11-11 2000-05-15 시모야마 도시로 심볼정보판독장치
US5487115A (en) * 1992-05-14 1996-01-23 United Parcel Service Method and apparatus for determining the fine angular orientation of bar code symbols in two-dimensional CCD images
JPH0644397A (ja) 1992-07-22 1994-02-18 A D S:Kk 2次元コードの読取り装置
EP0996083B1 (en) 1992-09-28 2003-03-26 Olympus Optical Co., Ltd. Information reproducing system for optically reading a dot code from a recording medium
JP3564051B2 (ja) 1992-09-28 2004-09-08 オリンパス株式会社 情報再生装置及び情報再生方法
JP2726969B2 (ja) 1992-11-16 1998-03-11 カシオ計算機株式会社 データ読取装置
JP3290738B2 (ja) 1993-03-15 2002-06-10 オリンパス光学工業株式会社 バーコード検出装置
JP2938338B2 (ja) 1994-03-14 1999-08-23 株式会社デンソー 二次元コード
US5726435A (en) * 1994-03-14 1998-03-10 Nippondenso Co., Ltd. Optically readable two-dimensional code and method and apparatus using the same
US5457309A (en) * 1994-03-18 1995-10-10 Hand Held Products Predictive bar code decoding system and method
JP2867904B2 (ja) 1994-12-26 1999-03-10 株式会社デンソー 2次元コード読取装置
JPH09218914A (ja) 1996-02-09 1997-08-19 Canon Inc バーコード読み取り装置
US5698833A (en) 1996-04-15 1997-12-16 United Parcel Service Of America, Inc. Omnidirectional barcode locator
EP0873013A3 (en) * 1996-11-05 2001-01-03 Welch Allyn, Inc. Decoding of real time video imaging
US5987192A (en) * 1997-09-18 1999-11-16 Intermec Ip Corporation Method and apparatus for processing or resizing digital images, such as images of bar code symbols
US6250551B1 (en) * 1998-06-12 2001-06-26 Symbol Technologies, Inc. Autodiscrimination and line drawing techniques for code readers
JP2000057250A (ja) 1998-08-11 2000-02-25 Kyowa Hakko Kogyo Co Ltd 2次元コードの読取方法
US6256398B1 (en) * 1998-08-22 2001-07-03 Kenneth H. P. Chang Encoding and decoding a message within an image
US6082619A (en) 1998-12-16 2000-07-04 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
US6565003B1 (en) * 1998-12-16 2003-05-20 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
JP4419269B2 (ja) 2000-04-18 2010-02-24 富士通株式会社 二次元コード抽出方法
JP2002041199A (ja) 2000-05-15 2002-02-08 Pasukaru:Kk ショートカットシンボルを用いたコンピュータ装置の操作処理方法、ショートカット処理システム
JP3879552B2 (ja) * 2002-03-20 2007-02-14 富士ゼロックス株式会社 画像生成装置、画像読取装置、不正複製防止システム、プログラム、および出力媒体の製造方法
JP2003298799A (ja) 2002-04-01 2003-10-17 Pfu Ltd 画像処理装置
JP2003331235A (ja) 2002-05-09 2003-11-21 Denso Wave Inc 2次元コード、2次元コード記録装置、2次元コード読取装置及び2次元コード読取システム
EP1615420B1 (en) 2003-04-15 2009-08-19 Fujitsu Limited Code recognizing method and device
US6937349B2 (en) * 2003-05-02 2005-08-30 Mitutoyo Corporation Systems and methods for absolute positioning using repeated quasi-random pattern

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10685201B2 (en) 2016-07-22 2020-06-16 Alibaba Group Holding Limited Method and system for recognizing location information in two-dimensional code

Also Published As

Publication number Publication date
EP1619604A2 (en) 2006-01-25
EP1619604B1 (en) 2016-07-06
US7636483B2 (en) 2009-12-22
US20050121520A1 (en) 2005-06-09
EP2275968A1 (en) 2011-01-19
JP2005173646A (ja) 2005-06-30
EP1619604A3 (en) 2008-05-28
EP2275968B1 (en) 2017-03-01

Similar Documents

Publication Publication Date Title
JP4180497B2 (ja) コード種類判別方法、およびコード境界検出方法
JP4531809B2 (ja) コード画像処理方法
JP4911340B2 (ja) 二次元コード検出システムおよび二次元コード検出プログラム
US7764835B2 (en) Method and apparatus for recognizing code
JP4658848B2 (ja) 文字列認識方法及び文字列認識装置
EP0999519A1 (en) Distortion correction method in optical code reading
KR20070032919A (ko) 이차원 코드의 검출 방법, 검출 장치, 및 검출 프로그램을기억한 기억 매체
US8467608B2 (en) Method and apparatus for character string recognition
US20070140564A1 (en) 2-Dimensional code region extraction method, 2-dimensional code region extraction device, electronic device, 2-dimensional code region extraction program, and recording medium containing the program
US7077323B2 (en) Bar code recognizing method and decoding apparatus for bar code recognition
WO2014063836A1 (en) Method and device for identifying a two-dimensional barcode
JP4398498B2 (ja) コード境界検出方法
JP5121685B2 (ja) バーコード読取装置、バーコード読取プログラム、バーコード読取方法
JPH02293989A (ja) 文字認識装置
JP5127687B2 (ja) バーコード読取装置、バーコード読取プログラム、バーコード読取方法
JP4454297B2 (ja) 2値化処理装置、および2値化処理方法
JP2022066697A (ja) 画像処理装置、画像処理方法及びコンピュータプログラム
US7920737B2 (en) Code image processing method and code image processing apparatus
Tseng et al. Retrospective tracking for barcode reading
JP4227859B2 (ja) マークシート読取装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071203

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4180497

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130905

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees