JP2021118005A - 光学コードの読み取り - Google Patents

光学コードの読み取り Download PDF

Info

Publication number
JP2021118005A
JP2021118005A JP2021009431A JP2021009431A JP2021118005A JP 2021118005 A JP2021118005 A JP 2021118005A JP 2021009431 A JP2021009431 A JP 2021009431A JP 2021009431 A JP2021009431 A JP 2021009431A JP 2021118005 A JP2021118005 A JP 2021118005A
Authority
JP
Japan
Prior art keywords
code
scanning
pattern
shift
scan
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021009431A
Other languages
English (en)
Other versions
JP7191995B2 (ja
Inventor
ブルクハルト サッシャ
Burghardt Sascha
ブルクハルト サッシャ
スタヴィアスキー ジャン
Stawiaski Jean
スタヴィアスキー ジャン
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.)
Sick AG
Original Assignee
Sick AG
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 Sick AG filed Critical Sick AG
Publication of JP2021118005A publication Critical patent/JP2021118005A/ja
Application granted granted Critical
Publication of JP7191995B2 publication Critical patent/JP7191995B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • 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/146Methods for optical code recognition the method including quality enhancement steps
    • 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/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10712Fixed beam scanning
    • G06K7/10722Photodetector array or CCD scanning
    • 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/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14131D bar codes
    • 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/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Toxicology (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Image Processing (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Character Input (AREA)

Abstract

【課題】コードの下地が平坦でないために歪みの生じた光学コード、特に2次元コードを読み取るための方法及びコード読み取り装置を提供する。【解決手段】光電式コードリーダ10において、2次元コード12を含む画像データを取得し、画像データにおいて2次元コードを含む領域を見出し、領域から2次元コードのコード内容を読み取る。また、ある走査パターンで歪みに対応して配置された複数の走査点における画像データから2次元コードを読み取る。【選択図】図1

Description

本発明は、請求項1又は14のプレアンブルに記載の、コードの下地が平坦でないために歪みの生じた光学コード、特に2次元コードを読み取るための方法及びコード読み取り装置に関する。
コードリーダは、スーパーマーケットのレジ、荷物の自動識別、郵便物の仕分け、空港での手荷物の発送等、物流での利用が知られている。コードスキャナの場合、読み取り光線が回転ミラー又はポリゴンミラーホイールでコードを横切るように案内される。カメラベースのコードリーダは画像センサを用いて物体の画像をその表面のコードとともに撮影し、画像評価ソフトウエアがその画像からコード情報を抽出する。カメラベースのコードリーダは、1次元バーコード以外の種類のコード、例えばマトリックスコードのように2次元的に構成され、より多くの情報を利用できるコードでも問題なく処理できる。
ある重要な一群の利用形態では、コードを付した物体がコードリーダの近くを通過するように搬送される。そして、コードスキャナがその読み取り領域内に次々に入ってくるコードをそれぞれ検出する。一方、カメラベースのコードリーダでは、ライン走査カメラがコード情報を持つ物体画像を相対運動に伴って次々に1ラインずつ読み取る。2次元画像センサを用いる場合は、撮像レートと搬送速度に応じて多少重なり合う複数の画像データが規則的に取得される。物体をコンベア上で任意の向きに配置できるようにするため、読み取りトンネルに複数のコードリーダを設け、物体を複数の側又は全ての側から撮影できるようにすることも多い。同様に、例えばより幅の広いベルトコンベアをカバーするために複数のコードリーダの読み取り領域を組み合わせることも知られている。
コードが歪んで撮影されてしまうことは頻繁に起きる。その原因の1つは平坦でない表面にコードが付されることである。そうすると折れや膨らみ、そして最終的には全く予期せぬ幾何学的な歪みが生じる恐れがある。この問題は、印刷、コードマークの刻印、コードラベルの貼り付け又は他の方法等、コードを作成するやり方に関係なく生じる。
ところで、様々な2次元コードの仕様にはエラー訂正の仕組みが組み込まれている。しかしそれは複雑な変形を検出できるようになってはおらず、むしろ平坦でない表面の影響はあったとしても僅かであるということを暗に前提としている。しかし、その密かな前提が特殊な場合にすら満たされないという用途もある。典型例の1つはプラスチック包装のような軟らかい梱包材に付したコードである。その場合、リード・ソロモン誤り訂正など、用意しておいた仕組みはたちまち限界に達し、一定の変形を超えると2次元コードがもはや読み取れなくなる。
従来技術において、本来のコード読み取りの前にコードの撮影画像の歪みを除去する試みが一部でなされている。しかしそれは、コードリーダの撮像誤差の修正や撮影の視点の換算のような場合であって、具体的なコード及びその下地に関するものではない。特許文献1又は特許文献2は適切な視点の変換について記載している。しかしそこでもまた、コードそのものは平坦であり、それを斜めの視点から撮影しているに過ぎないという仮定が成されている。故に、コード内の個々の幾何学的な歪みはやはり読み取りエラーにつながる。特許文献3は、湾曲した表面にコードを書くという相補的な問題提起に取り組んでいる。そのために表面が3次元的に測定されるのであるが、これは多大なコストを意味する。しかもそれは円柱等、特定の規則的な幾何学形状の場合にしか機能せず、軟らかい下地の場合のように変形の仕方が絶えず変わる場合にはもう全く機能しない。
別の従来のアプローチでは、読み取り対象のコードの幾何学的構造を例えば凸状の包絡面に基づいて大まかに認識する。歪みが軽微でとりわけ規則的であればそれが可能である場合もかなりあるが、例えばしわの寄ったプラスチック包装が下地の場合、大まかな幾何学形状に含まれる情報はとにかく少なすぎるため、コードの読み取りはやはり失敗する。
US 7 878 402 B2 EP 2 843 616 A1 US 8 235 296 B2
故に、本発明の課題は、歪んだ光学コードを読み取るための改良された方法を提示することである。
この課題は、請求項1又は14に記載の、コードの下地が平坦でないために歪みの生じた光学コードを読み取るための方法及びコード読み取り装置により解決される。そのコードは、その湾曲又は変形した下地により、あるいは折れ、膨らみ又はその他の幾何学的な特性により歪み、従って最初は読み取りが困難又は全く不可能である。前記光学コードは特に様々な公知の規格に準拠した2次元コードである。コードを含み、好ましくは少なくとも大まかにセグメント分けされることでコード領域にまで切り詰められた画像データが生成される。画像データは典型的にはカメラベースのコードリーダの画像センサで取得されるが、原理的にはコードスキャナが1ラインずつ強度プロファイルを取得するというやり方で画像データを生成することもできる。コードは、それ自体は公知である復号法で読み取られる。
本発明の出発点となる基本思想は、本来のコード読み取りの前に、コードの下地の変形に適合した、走査点から成る走査パターン又は走査格子を生成することにある。そしてこれらの走査点における画像データがコード読み取りのために用いられる。従って走査パターンは規則的な格子ではなく、少なくとも近似的にコードそのものと同じように歪んでいる。
本発明には、走査パターンが変形を模写し、以てそれを補償するという利点がある。そうするとコードが大きく不規則に変形していてもなお読み取ることができ、それにより読み取り率が高まる。当然ながら、全領域が隠れてしまうようにコードが畳まれている場合等、限界はある。本方法は極めて様々な種類のコードに対して機能する。ホイル包装のような要求の厳しい用途の場合ですら、本方法を用いれば高い読み取り率が達成される。
走査パターンは平坦でない下地の湾曲についての知識なしで決定されることが好ましい。画像データの他に利用できる情報はなく、特に3次元の輪郭の測定はない。補正対象の幾何学的形状は事前には分からず、また本方法の間にも特定されない。それどころか、走査パターンは歪んだコードに対して局所的に適合化される。
好ましくは、コードのモジュールサイズ及び/又は必要な走査パターンのサイズをファインダーパターンから特定する。ファンダーパターンとは、2次元コードのうち、該2次元コード及びその特定の特性を認識するための特別なパターンを持つ部分である。従って、ファインダーパターンがどのコード要素又はモジュールを有しているかはコードの仕様から分かる。従って、はっきりと撮影されたコードの中でモジュールサイズを推定することができる。更に、捕らえられたコード領域を推定することにより、走査パターンがコードを完全に覆うために合計何個の走査点を含む必要があるかを導き出すことができる。そのために、QRコードの場合は追加的にファインダーパターン同士の間隔が利用可能であり、DataMatrixコードの場合はコードを2つの側から完全に囲んでいるファインダーパターンの長さが利用できる。
走査パターンはコードのモジュール毎に走査点を有していることが好ましい。少なくとも1つの走査点がなければならない。そうしなければいくつかのモジュールが全く表現されなくなるからである。一方、逆に走査点は1つあれば十分である。なぜなら、各モジュールはその2次元的な位置を除けば明暗の情報しかもともと持っておらず、それは代表として配置された1つの走査点によって完全に取得されるからである。故に、モジュール毎に少なくとも1つの走査点を持つ走査パターンがあれば十分であり、それどころか正確に1つだけ走査点を持つ走査パターンが、無駄なコストのない、最適で、なおも完全な構成である。
走査パターンは、ファインダーパターンから出発し、コードを完全に覆うまで反復的に拡大されることが好ましい。ファインダーパターンの場所は確実に突き止めることができる。そして、この最初の小さい走査パターンから段階的な拡大により全体の走査パターンが作り上げられる(Grid Growing)。
好ましくは、最初に走査パターンの走査点をファインダーパターンのために設定し、特に平坦な下地に対応するまだ規則的な配置で設定する。ファインダーパターンは構成が仕様で決まっているため、その中にどのモジュールが含まれているか分かっている。故にここでは最初の走査パターンを非常に確実に設定して適合させることができる。例えば、QRコードのファインダーパターンは、入れ子状に配置された長方形から抽出される7×7個のモジュールを含んでいる。従って、7×7個の走査点から成る走査パターンから始めることができる。初期化の際にはまず規則的な走査パターンを用いることが好ましい。なぜなら、歪みに関して予め分かっている情報は一切ないからである。
各走査点をそれにより表されるモジュールの中心へシフトさせるようにすれば有利である。歪みのない平坦なコードの場合、それは、見積もられたモジュールサイズに対応する一定の走査点間隔を有する規則的な走査パターンを使用し、その全体を一緒に中心へ寄せることにより、非常に簡単に実現できる。平坦でない下地に適合させる場合、それぞれの局所的な歪みを補償するために走査点を個別にシフトさせる。「中心」は決してモジュールの厳密な幾何学的重心である必要はなく、重要なのは、走査点が当該モジュールを代表する輝度値を捕らえるように、モジュール間のエッジを確実に避けるということだけである。
好ましくは、コードの勾配画像と大きさ画像を算出し、大きさ画像に基づいて各走査点が極値にあるかどうかを確認し、まだ必要なシフトの方向を勾配画像から特定する。具体的には、大きさを表す画像と、X方向及びY方向における勾配を表すそれぞれ1つの画像を決定することができる。勾配はベクトルであるから方向と大きさに分解される。この関係で言えば、画像とは勾配の任意の表現を表す概念である。この勾配の算出はコード領域の画像データに対して一度だけ行えば十分であり、その結果は全ての繰り返しにおいて全ての走査点に対して適用できる。大きさが極値を示しているとき、言い換えれば少なくともゼロ付近にあるとき、走査点は十分にそのモジュールの中心にあるとみなされる。これは、走査点がモジュール間のエッジから十分に離れていて、言わばモジュールの明るい又は暗い領域の真ん中にある、ということの数学的な表現である。勾配画像は、大きさの条件がまだ満たされていないときに、極値がどの方向にあるかを示す。
シフト操作は、モジュールサイズより小さいステップで、極値に達するまで、シフトがモジュールから外へ出るまで、又は最大数のステップが試行されるまで、段階的に試み、その際、特に、極値を見つけることができなかった場合はそのときの走査点をシフトさせないことが好ましい。ここでは反復的なやり方で極値が探索される。別のモジュール内にある間違った極値を見つけてしまうことがないように、ステップ幅は小さく選択される。そうしなければ、特に複数の明るい又は暗いモジュールが隣接している場合にその問題が生じる可能性がある。シフトが見積もられたモジュールサイズを超えたらその操作を中止する。その場合、それまでに確定したシフトでは恐らく有意な結果が得られないので、それ以上操作を続けず、むしろ差し当たりその走査点をシフトさせないことが好ましい。
各走査点の極値へのシフトから成るシフト行列を平滑化すること、特にガウスフィルタで平滑化を行うことが有利である。つまり、個々の走査点に対してシフトを定めてシフト行列に書き込む。上述のように、適切なシフトが見つからない走査点が相当あり、それらの点は出発位置に留まる。そこでシフト行列を平滑化することにより、見つかった各シフトが相互にある程度補償されるだけでなく、平滑化なしでは出発位置に留まっていたであろう走査点もそれに隣接する点を通じて適合化される。
好ましくは、各走査点の極値へのシフトを保持する新たなシフト行列を決定してその都度走査パターンに適用することを、新たなシフト行列ではもはや許容閾値を超えるシフトが生じなくなるまで、又は、最大の繰り返し回数に達するまで繰り返す。シフトはプロセスが収束してそれ以上改善が見られなくなるまで繰り返す。念のために特定のステップ数による中止条件も設けるべきであり、それとともに、利用可能な最大の計算時間の経過等、外部から予め定められる他の条件も含めるべきである。
走査パターンは、それがコードを完全に覆うまで及び/又は所定のサイズに達するまで、少なくとも1つの縁部において追加の走査点で反復的に拡大されることが好ましい。好ましくは走査パターンを反復の度に1列及び/又は1行ずつ大きくする。一度に複数の行又は列を追加することも考えられるが、そうすると局所的な湾曲が大きく変化している場合に適合化の精度が低くなる。以上のように走査パターンを拡大した後、追加された走査点、全体の走査点又はそれらの中間の集合(例えば追加された走査点と、既存の走査パターンのうちそれに隣接する点)に対し、それぞれのモジュール内で中心に合わせる前述の処理を行うことが好ましい。コードが完全に覆われたら、拡大操作、そして適合した走査パターンを生成するプロセスを終了する。これは特に、コード領域のサイズと見積もられたモジュールサイズに基づいて走査パターンの所要サイズを見積もることにより確認される。
ここに提示したステップのいくつかを一緒に実行する場合、それは多重的な入れ子の反復処理になるということに注意が必要である。上位の反復処理は小さい走査パターンで、好ましくはファインダーパターンの箇所から始まり、それをコード領域にわたって連続的に拡大していく。適合化の度に多重反復的にシフト行列を決定して適用する。1つのシフト行列の決定の中に、各走査点をそのモジュールの中心へ段階的にシフトさせてシフト行列中の一つ一つの入力値を得ることを試みる第3の反復レベルを追加することができる。
好ましくは、別のファインダーパターンから出発して更に別の走査パターンを決定する。当然ながらこれは、複数のファインダーパターンを備えるQRコードのような種類のコードの場合のみ可能である。それ以外の種類のコードの場合、代わりに、ファインダーパターンではないものの、それ以前の試行的な読み取りにおいて又は画像処理により明確に検出できたモジュールを持つ領域から走査パターンを拡大することを試みてもよい。このようにすれば、最初に用いたファインダーパターンが何らかの理由から出発点として好ましくなかった場合に、なおも追加の試行的な読み取りを行うことができる。
本発明に係る方法は、前記と同様のやり方で仕上げていくことが可能であり、それにより同様の効果を奏する。そのような効果をもたらす特徴は、例えば本願の独立請求項に続く従属請求項に模範的に記載されているが、それらに限られるものではない。
以下、本発明について、更なる特徴及び利点をも考慮しつつ、模範的な実施形態に基づき、添付の図面を参照しながら詳しく説明する。
コードリーダの概略図。 模範的な2次元コードとその歪みに適合させた走査パターンを示す図。 適合させた走査パターンがファインダーパターンから始まってコード全体にわたって反復的に広がる過程のフローチャート。 図3における反復の度に実行される走査パターンの適合化のフローチャート。 コード領域における大きさ画像と勾配画像の模範的な図。 個々のコードモジュールにおける図6の拡大図。 拡大していく走査パターンを図3のフローの様々な反復回数の後で示した模範的な図。
図1は、単に模範例として示したコード12を読み取るための光電式コードリーダ10を示している。このコードリーダ10は画像センサ14でコード12を含む画像データを取得し、そのデータが制御及び評価ユニット16により画像解析及び復号法を用いて更に処理される。具体的な撮像方法は本発明にとって重要ではないため、コードリーダ10はそれ自体公知である何らかの原理に従って構成し、使用することができる。コード12は単一の画像で撮影することができる。コードリーダ10とコード12の間に相対運動がある場合は各時点に1ラインだけ捕らえることも考えられる。それはライン状画像センサ又はスキャン法のいずれを用いてもよく、後者の場合、画像センサ14としてはフォトダイオード等の簡単な受光器で十分である。その後、複数のラインを組み合わせて1枚の画像にする。相対運動は、ベルトコンベア付近にコードリーダを取り付け、ベルトコンベアがコード付きの物体をコードリーダ10の読み取り領域を通過するように搬送するという好ましい使用状況において生じる。
制御及び評価ユニット16の画像処理の目的は、コード領域を認識し、そこに付されたコード12を読み取ることである。本発明は、下地が平坦でなくなることにより生じるコード12の歪みに適合した走査点の走査パターンを生成する部分的なステップに関わるものである。そのような走査パターンを生成するための方法については後で図2〜図7を参照して詳しく説明する。走査パターンの走査点における画像データに基づいて復号を行うという、本来のコード読み取り自体は公知であるから詳しく説明しない。ただし、それら公知の復号法は、一般的なエラー訂正法を除き、コード12の歪みに対応できない。
インターフェイス18を介してコードリーダ10は読み取ったコードや画像データといった情報を出力する。制御及び評価ユニット16を本来のコードリーダ10内に設けるのではなく、独立した制御装置として一又は複数のコードリーダ10に接続することも考えられる。その際、インターフェイス18は内部と外部の制御部及び評価部の間の接続にも用いられる。制御及び評価の機能16は内部と外部の構成部品にほぼ任意に分配することができ、その場合、外部の構成部品はネットワーク又はクラウドを通じて接続されたものとすることもできる。以下ではそれら全てを区別せず、制御及び評価ユニット16はその具体的な実装に関わらずコードリーダ10の一部とみなす。
図示したコード12の各例はQRコードであるが、本発明はそれに限定されるものではなく、DataMatrixコード、マキシコード(MaxiCode)、Aztecコード等、他の2次元コードにも適用可能である。QRコードはある意味で特に要求が多いとさえ言える。なぜなら、例えばDataMatrixコードには外周を囲むファインダーパターンがあるため、それだけでも多少は変形を逆推定できるが、QRコードにはそれがないからである。原則的にはバーコードも本発明の方法で読み取り可能ではある。しかし、バーコードはそうでなくても本願が扱う歪みに対してはるかに許容性が高い。なぜなら、全てのコードモジュールを切断するようにコードを横断する読み取り線が1本でも見つかれば十分だからである。
図2はコード12の歪みに適合した走査点の走査パターンを見つけるための後述の方法により得られる結果の例を示している。この走査パターンは、好ましくは各コードモジュールの中心にそれぞれ1個だけ走査点が配置されることにより、湾曲と変形に沿っている。図から分かるように、それは柔軟な下地の表面にある規則的な格子に対応している。この格子はコード12上に配置され、該コードの平坦でない状態に順応している。
図3及び図4はこの結果を得る模範的なフローを示している。このフローでは、走査パターンが画像データを元にして小さい領域から始まり、反復的且つ局所的に、いわば自己組織化された構築的な拡大を行う。なお、図4は図3のフローのステップの一部を切り出してより詳しく説明したものである。図5〜図7はそのフローを更に例示している。
まずステップS1においてコード12を含む画像データを取得する。この入力データは、例えば前処理において認識されたコード領域(ROI、関心領域)の4つの頂点ととともに画像データとして渡される。求める走査パターンのための行と列の数も同様に予め決めることができる。別のやり方ではこれらのパラメータそのものを決定する。
ステップS2ではコード領域の勾配画像と大きさ画像を算出する。図5はその一例を示している。上段左から時計回りに、コード領域の出力画像、大きさ画像、X方向の勾配画像、及びY方向の勾配画像である。
ステップS3では小さい最初の走査パターンを生成する。これはファインダーパターンに該当することが好ましい。各図に示した模範的なコード12の場合、ファインダーパターンは角部にある入れ子状に配置された3つの長方形である。QRコードの場合、1つのファインダーパターンは7×7個のコードモジュールから成るから、それに対しては7×7個の走査点から成る大きさの走査パターンが適している。ファインダーパターンの領域におけるコード12の湾曲に関する情報はないから、最初の走査パターンはまだ規則的である。更に、ファインダーパターンのサイズからモジュールサイズを見積もることができる。ステップS1において走査パターンのための行と列の必要数が与えられなかった場合には、それらをモジュールサイズとファインダーパターン同士の間隔から特定することができる。
ステップS4では、それまでに得られた走査パターン(つまりここでは最初の走査パターン)をコード12の湾曲に適合させる。このステップを図4に再度詳細に示す。図から分かるように、この適合化の目的は走査点をそれにより表されるモジュール内でそれぞれ中心に配置することである。平坦なコードの場合、それは規則的な格子を用いて全ての走査点について同時に達成される。変形した下地の表面にあるコード12の場合、個別のシフトにより走査パターンを湾曲に適合させる。
まず、ステップS41において、適合化すべき各走査点に対するシフトを保持したシフト行列を初期化する。最初はシフトがまだ決まっていないから値はゼロである。
続く複数のステップは走査パターンの複数(好ましくは全て)の走査点に対して実行されるが、代表して1つの走査点についてのみ説明する。ステップS42では各走査点が既に中心にあるかどうかを調べる。その有利な基準の1つは大きさ画像中においてその点に対応する値を調べることである。すなわち、その大きさがゼロ又はゼロに非常に近い値を持っていれば、走査点は輝度の極値にある。最終的に重要なのは、全ての走査点がそれぞれ1つのモジュールを表し、モジュール間のエッジを表してはいないということであり、数学的に正確な幾何学的合致はさほど重要ではない。つまり、大きさ画像中で隣接する複数の点が値ゼロを示しているとしたら、それらの点のどれかに達するようなシフトを選べば、その点がコードモジュールの正確な中心ではなくても結果が損なわれることはない。
まだ十分中心にない走査点については、ステップS43において、そのコードモジュールの極値又は中心の方向へのシフトを決定する。これを図6に例示する。ここでは、図5に示した大きさ画像と勾配画像の一部拡大図を、同じ配置で、観察されたコードモジュールの周辺部において示している。明るい円形の点は走査点の現在位置、明るい長方形の点は極値付近の目標位置を示している。シフトの方向は対応する勾配画像から分かる。即ち、走査点は輝度の増大又は減少が最大となる経路をたどる。走査点がコードモジュールから出ないように、シフトの個々のステップ長は意図的に小さく選ばれている。
ステップS44では、それまでのシフトを行ったとしたら走査点がコードモジュールを出てしまうかどうかを調べる。これはとりわけ、複数の明るい又は暗いコードモジュールが隣接している場合に小さいステップを複数回繰り返したときに生じ得る。明暗が逆になる隣接コードモジュールは勾配に対して逆方向にあるから、そもそもシフトによりその中へ入ることはない。コードモジュールを出てしまうようなら、この走査点についての極値の探索は失敗したとみなされ、好ましくはその点を全くシフトさせず、出発位置に留める。なぜなら、それまでのシフトでは改善よりむしろ悪化が見込まれるからである。そうでなければステップS42において極値の探索を継続するが、ここではまず、最後のシフトが既にそこまで達したかどうかを調べ、そうでなければステップS43で再び小さいステップのシフトを試行する。
ステップS42〜S44のループが全ての走査点に対して終了したら、シフト行列は値で埋められている。この行列は一部の走査点を極値までシフトさせる一方、探索に失敗した残りの部分は全くシフトさせない。ステップS45では、特にガウスフィルタを用いてシフト行列を平滑化する。これにより、格子が全体としてより均一になるだけでなく、個別には適切なシフトを決めることができなかった走査点も隣接点に基づいて一緒にシフトされる。
シフト行列によるシフトをそれまでの走査パターンに適用した後、今度はステップS46で、そもそも最小閾値を超える注目すべきシフトがまだ生じるかどうかを調べる。即ち、もはやそうではなく、走査点がそれ以上動かないのであれば、収束したものとみなし、ステップS47において適合化を終了する。そうでなければステップS41へ戻ってシフトを反復的に繰り返す。中断の別の基準として最大の反復回数(1回のみの反復も含む)を予め定めることができる。
再び図3において、以上により適合化のステップS4が終わる。次はステップS5で、適合化された走査パターンが既にコードを完全に覆っているかどうかを調べる。走査パターンの所要サイズはステップS1で決められているか、モジュールサイズやファインダーパターンそのものの位置及び間隔といった見積値に基づいて決定されている。前記のようになっていなければ、ステップS6において走査パターンを反復的に拡大し、その度にステップS4以降の適合化を、走査パターン全体に対して、新たに追加される走査点に対して、又は新たに追加される走査点といくつかの既存の走査点(特に拡大部分の隣接領域から選ばれたもの)に対して繰り返す。
図7はステップS6による反復処理とともに走査パターンが拡大する様子を例示している。上段左は開始時の状況を示している。ここではファインダーパターンだけが走査パターンにより捕らえられている。上段右と中段左は1回目乃至2回目の反復後の状態であり、それぞれ1行と1列が追加されている。この拡大は、例えばまず見積もられたモジュールサイズの間隔を空けて走査点を追加することにより行われる。そのためには何と言ってもそれまでの走査パターンから得られる追加的な見積もり根拠が存在する。例えば、新たな走査点を、それに隣接する既に適合化された複数の走査点が有する間隔と同じ間隔や、それに対応する行又は列の行方向又は列方向における平均値に対応した間隔で追加する。湾曲に対する適合化はその後に実行されるステップS4により初めて行われる。
図7の中段右には更に任意に選び出された処理段階として7回目の反復後の状態を示している。最後に下段に完全な走査パターンが示されている。これは図2に対応している。
適合化された走査パターンの走査点における画像データを用いて、今度はステップS7でコード12の読み取りを試みる。成功なら目的が達成されたことになる。そうでなければ他のデコーダを試すことができる。複数のファインダーパターンを持つQRコードの場合、別のファインダーパターンを用いて全体の処理を繰り返すことができる。このような追加の試みは、特に変形が大きい場合に、再度読み取り率を上げる上で有用である。
2次元コードの種類が変われば使用するファインダーパターンも変わる。DataMatrixコードの場合、L字パターンを一方又は両方の辺から開始して拡大することができる。マキシコードやAztecコードはそれぞれ中央にファインダーパターンがあるから、それを出発点として利用できる。これらの例のようにファインダーパターンが1つしかない場合でも走査パターンを形成する複数の試みを行うことが考えられる。それにはファインダーパターンではない別の領域、特にコードモジュールが既に確実に認識されているような領域を出発領域として利用する。それは、それ以前の試行的な読み取りに基づくものでもよいし、その箇所でコード12が広く平坦になっているからでもよい。
なお、走査パターンの適合化より前にもう始めから最初の試行的な読み取りを行ってもよいことに注意されたい。場合によると、特に具体的な処理対象のコード12がほとんど又は全く歪んでいなければ、それでもうコード12の読み取りに成功するかもしれない。

Claims (14)

  1. コード(12)の下地が平坦でないために歪みの生じた光学コード(12)、特に2次元コードを読み取るための方法であって、前記コード(12)を含む画像データを取得し、該画像データにおいて前記コード(12)を含む領域を見出し、該領域から前記コード(12)のコード内容を読み取る方法において、
    ある走査パターンで前記歪みに対応して配置された複数の走査点における画像データから前記コード(12)を読み取ることを特徴とする方法。
  2. 前記走査パターンを前記平坦でない下地の湾曲についての知識なしで決定することを特徴とする請求項1に記載の方法。
  3. 前記コード(12)のモジュールサイズ及び/又は必要な前記走査パターンのサイズをファインダーパターンから特定することを特徴とする請求項1又は2に記載の方法。
  4. 前記走査パターンが前記コード(12)のモジュール毎に走査点を有していることを特徴とする請求項1〜3のいずれかに記載の方法。
  5. 前記走査パターンを、ファインダーパターンから出発し、前記コード(12)を完全に覆うまで反復的に拡大することを特徴とする請求項1〜4のいずれかに記載の方法。
  6. 最初に前記走査パターンの走査点をファインダーパターンのために設定すること、特に平坦な下地に対応するまだ規則的な配置で設定することを特徴とする請求項1〜5のいずれかに記載の方法。
  7. 各走査点をそれにより表されるモジュールの中心へシフトさせることを特徴とする請求項1〜6のいずれかに記載の方法。
  8. 前記コード(12)の勾配画像と大きさ画像を算出し、前記大きさ画像に基づいて各走査点が極値にあるかどうかを確認し、まだ必要なシフトの方向を前記勾配画像から特定することを特徴とする請求項7に記載の方法。
  9. シフト操作を、モジュールサイズより小さいステップで、極値に達するまで、シフトがモジュールから外へ出るまで、又は最大数のステップが試行されるまで、段階的に試み、その際、特に、極値を見つけることができなかった場合はそのときの走査点をシフトさせないことを特徴とする請求項7又は8に記載の方法。
  10. 各走査点の極値へのシフトから成るシフト行列を平滑化すること、特にガウスフィルタで平滑化を行うことを特徴とする請求項7〜9のいずれかに記載の方法。
  11. 各走査点の極値へのシフトを保持する新たなシフト行列を決定してその都度前記走査パターンに適用することを、新たなシフト行列ではもはや許容閾値を超えるシフトが生じなくなるまで、又は、最大の繰り返し回数に達するまで繰り返すことを特徴とする請求項7〜10のいずれかに記載の方法。
  12. 前記走査パターンを、それが前記コード(12)を完全に覆うまで及び/又は所定のサイズに達するまで、少なくとも1つの縁部において追加の走査点で反復的に拡大することを特徴とする請求項1〜11のいずれかに記載の方法。
  13. 別のファインダーパターンから出発して更に別の走査パターンを決定することを特徴とする請求項1〜12のいずれかに記載の方法。
  14. コード(12)の下地が平坦でないために歪みの生じた光学コード(12)、特に2次元コードを読み取るためのコード読み取り装置(10)であって、前記コード(12)を含む画像データを取得するための画像センサ(14)と、前記画像データにおいて前記コード(12)を含む領域を見出し、該領域から前記コード(12)のコード内容を読み取るように構成された制御及び評価ユニット(16)とを備える装置において、
    前記制御及び評価ユニット(16)が更に、ある走査パターンで前記歪みに対応して配置された複数の走査点における画像データから前記コード(12)を読み取るように構成されていることを特徴とするコード読み取り装置(10)。
JP2021009431A 2020-01-27 2021-01-25 光学コードの読み取り Active JP7191995B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP20153885.7A EP3855342B1 (de) 2020-01-27 2020-01-27 Lesen von optischen codes
EP20153885.7 2020-01-27

Publications (2)

Publication Number Publication Date
JP2021118005A true JP2021118005A (ja) 2021-08-10
JP7191995B2 JP7191995B2 (ja) 2022-12-19

Family

ID=69326432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021009431A Active JP7191995B2 (ja) 2020-01-27 2021-01-25 光学コードの読み取り

Country Status (6)

Country Link
US (1) US11250228B2 (ja)
EP (1) EP3855342B1 (ja)
JP (1) JP7191995B2 (ja)
KR (1) KR102576619B1 (ja)
CN (1) CN113177423A (ja)
DK (1) DK3855342T3 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360948B1 (en) * 1998-11-27 2002-03-26 Denso Corporation Method of reading two-dimensional code and storage medium thereof
JP2004362053A (ja) * 2003-06-02 2004-12-24 Hitachi Information Technology Co Ltd 二次元コード読取装置
JP2007206738A (ja) * 2006-01-30 2007-08-16 Kyocera Corp 撮像装置およびその方法
JP2009129222A (ja) * 2007-11-26 2009-06-11 Denso Wave Inc 光学情報読取装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9507098D0 (en) * 1995-04-06 1995-05-31 Rolls Royce Plc Process and apparatus for reading a dot matrix code marking of an article
US6814291B1 (en) * 2003-12-15 2004-11-09 Pitney Bowes Inc. Robust barcode reader
US7878402B2 (en) 2005-12-20 2011-02-01 Cognex Technology And Investment Corporation Decoding distorted symbols
JP5132900B2 (ja) 2006-06-28 2013-01-30 株式会社キーエンス レーザ加工条件設定装置、レーザ加工装置、レーザ加工条件設定方法、レーザ加工条件設定プログラム
JP2009295113A (ja) * 2008-06-09 2009-12-17 Olympus Corp バーコード読み取り装置及びその読み取りデータ処理方法
FR2979160B1 (fr) * 2011-08-16 2013-09-06 Mobilead Dispositif de preparation de code a lecture optique
EP2843616A1 (de) 2013-08-29 2015-03-04 Sick Ag Optoelektronische Vorrichtung und Verfahren zur Aufnahme entzerrter Bilder
CN105069394B (zh) * 2015-07-23 2017-10-10 福建联迪商用设备有限公司 二维码加权平均灰度法解码方法及系统
US10249030B2 (en) * 2015-10-30 2019-04-02 Hand Held Products, Inc. Image transformation for indicia reading
DK3428835T3 (da) * 2017-07-13 2019-07-01 Sick Ag Method for reading an optical code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360948B1 (en) * 1998-11-27 2002-03-26 Denso Corporation Method of reading two-dimensional code and storage medium thereof
JP2004362053A (ja) * 2003-06-02 2004-12-24 Hitachi Information Technology Co Ltd 二次元コード読取装置
JP2007206738A (ja) * 2006-01-30 2007-08-16 Kyocera Corp 撮像装置およびその方法
JP2009129222A (ja) * 2007-11-26 2009-06-11 Denso Wave Inc 光学情報読取装置

Also Published As

Publication number Publication date
EP3855342B1 (de) 2021-12-15
US11250228B2 (en) 2022-02-15
DK3855342T3 (da) 2022-02-07
KR20210096012A (ko) 2021-08-04
CN113177423A (zh) 2021-07-27
JP7191995B2 (ja) 2022-12-19
KR102576619B1 (ko) 2023-09-07
EP3855342A1 (de) 2021-07-28
US20210232786A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
JP4911340B2 (ja) 二次元コード検出システムおよび二次元コード検出プログラム
EP0999519B1 (en) Distortion correction method in optical code reading
EP1619604B1 (en) Code type determining method and code boundary detecting method
CN110427793B (zh) 一种基于深度学习的条码检测方法及其系统
CN109255271B (zh) 用于读取光码的光电代码阅读器和方法
US4896029A (en) Polygonal information encoding article, process and system
US7181066B1 (en) Method for locating bar codes and symbols in an image
JP5414685B2 (ja) 複数の画像フレームを使用してパターンを読取るシステム、及び方法
US5742041A (en) Method and apparatus for locating and decoding machine-readable symbols, including data matrix symbols
US7949187B2 (en) Character string recognition method and device
US20060175414A1 (en) Method for reading out symbol information and device for reading out symbol information
JPH05324887A (ja) シンボル情報読取装置
EP0797810B1 (en) Barcode decoding
BR112013011943B1 (pt) método para identificação de um código de barras bidimensional em dados de imagem digital do código de barras, meio legível por computador não transitório e aparato configurado para identificar um código de barras bidimensional em dados de imagem digital do código de barras
JP2021118005A (ja) 光学コードの読み取り
JP2014197842A (ja) 複数の撮影画像を用いてパターンのステッチおよびデコードするシステムおよび方法
JP4652201B2 (ja) バーコードシンボル情報読取方法及びバーコードシンボル情報読取装置
EP1544783B1 (en) Robust barcode reader
JP4398498B2 (ja) コード境界検出方法
CN105046256A (zh) 基于畸变图像校正的qr码解码方法和系统
US20090194590A1 (en) Apparatus And Methods For Decoding Images
JP4905767B2 (ja) 二次元コード検出システムおよび二次元コード検出プログラム
LV10820B (en) Polygonal information encouding article,process and system
JP4403063B2 (ja) シンボル情報読取方法及びシンボル情報読取装置
JPH113397A (ja) シンボル情報読取装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220705

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221028

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221207

R150 Certificate of patent or registration of utility model

Ref document number: 7191995

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150