IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジック アーゲーの特許一覧

特開2023-92458コードリーダ及び光学コード読み取り方法
<>
  • 特開-コードリーダ及び光学コード読み取り方法 図1
  • 特開-コードリーダ及び光学コード読み取り方法 図2
  • 特開-コードリーダ及び光学コード読み取り方法 図3
  • 特開-コードリーダ及び光学コード読み取り方法 図4
  • 特開-コードリーダ及び光学コード読み取り方法 図5
  • 特開-コードリーダ及び光学コード読み取り方法 図6a
  • 特開-コードリーダ及び光学コード読み取り方法 図6b
  • 特開-コードリーダ及び光学コード読み取り方法 図7
  • 特開-コードリーダ及び光学コード読み取り方法 図8
  • 特開-コードリーダ及び光学コード読み取り方法 図9
  • 特開-コードリーダ及び光学コード読み取り方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023092458
(43)【公開日】2023-07-03
(54)【発明の名称】コードリーダ及び光学コード読み取り方法
(51)【国際特許分類】
   G06K 7/14 20060101AFI20230626BHJP
【FI】
G06K7/14 078
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022168406
(22)【出願日】2022-10-20
(31)【優先権主張番号】21216207
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】591005615
【氏名又は名称】ジック アーゲー
(74)【代理人】
【識別番号】110001069
【氏名又は名称】弁理士法人京都国際特許事務所
(72)【発明者】
【氏名】マルセル ハンプフ
(72)【発明者】
【氏名】パスカル シューラー
(57)【要約】      (修正有)
【課題】改善された光学コードの読み取り方法及びコードリーダを提供する。
【解決手段】方法は、ベルトコンベア12の上方に取り付けられた好ましい使用状況の光電式コードリーダ10により、コード20の明度プロファイルを取得し、該明度プロファイル中の明るい部分領域と暗い部分領域を識別し、光学コード20のコード内容を読み取る。明度プロファイルから、明るい各部分領域における光量についての第1の総計量と、暗い各部分領域において白色レベルに対して不足している光量についての第2の総計量とを特定し、第1の総計量及び第2の総計量に基づいてコード内容を読み取る。
【選択図】図1
【特許請求の範囲】
【請求項1】
光学コード(20)の読み取り方法であって、前記コード(20)の明度プロファイルを取得し、該明度プロファイル中の明るい部分領域と暗い部分領域を識別し、前記光学コード(20)のコード内容を読み取る方法において、
前記明度プロファイルから、明るい各部分領域における光量についての第1の総計量と、暗い各部分領域において白色レベルに対して不足している光量についての第2の総計量とを特定し、該第1及び第2の総計量に基づいて前記コード内容を読み取ることを特徴とする方法。
【請求項2】
前記第1の総計量について、前記明度プロファイルをその極小のうちの2つの間でそれぞれ合計する、請求項1に記載の方法。
【請求項3】
前記第2の総計量について、前記明度プロファイルをその極大のうちの2つの間でそれぞれ合計する、請求項1に記載の方法。
【請求項4】
前記第2の総計量を特定するために、前記明度プロファイルを反転させてから白色レベルに相当するオフセット分だけ補償する、請求項1~3のいずれかに記載の方法。
【請求項5】
前記第1の総計量及び/又は前記第2の総計量を積分法により特定する、請求項1~3のいずれかに記載の方法。
【請求項6】
前記コード内容を前記第1の総計量と前記第2の総計量が交互に並んだシーケンスから特定する、請求項1~3のいずれかに記載の方法。
【請求項7】
前記第1の総計量と前記第2の総計量を、特に少なくとも1つの最も細かい総計量から推定された基準値に基づいて、分類する、請求項1~3のいずれかに記載の方法。
【請求項8】
前記第1の総計量と前記第2の総計量を基準値で除算してから離散化し、その際、特に前記基準値を少なくとも1つの最も細かい総計量から推定する、請求項1~3のいずれかに記載の方法。
【請求項9】
前記光学コード(20)が2次元コードであり、特に、前記第1の総計量と前記第2の総計量を、極小又は極大の周囲において少なくとも1つの閾値により定められる明度境界まで特定する、請求項1~3のいずれかに記載の方法。
【請求項10】
前記明度プロファイルを、それぞれにおいて第1の総計量及び第2の総計量が特定される複数の下位部分、特に矩形の下位部分、行又は列、に分割する、請求項1~3のいずれかに記載の方法。
【請求項11】
前記明度プロファイルを複数回、異なる下位部分に分割することで、第1及び第2の総計量を複数回特定し、複数の結果を、特に論理結合により、互いに差し引き又は比較する、請求項10に記載の方法。
【請求項12】
光学コード(20)を読み取るためのコードリーダ(10)であって、前記光学コード(20)の明度プロファイルを取得するための受光器(24)と、前記明度プロファイル中の明るい部分領域と暗い部分領域を識別して前記光学コード(20)のコード内容を読み取るように構成された制御及び評価ユニット(26)とを備えるコードリーダ(10)において、
前記制御及び評価ユニット(26)が更に、前記明度プロファイルから、明るい各部分領域における光量についての第1の総計量と、暗い各部分領域において白色レベルに対して不足している光量についての第2の総計量とを特定し、該第1及び第2の総計量に基づいて前記コード内容を読み取るように構成されていることを特徴とするコードリーダ(10)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1又は12のプレアンブルに記載の光学コード読み取り方法及びコードリーダに関する。
【背景技術】
【0002】
コードリーダは、スーパーマーケットのレジ、荷物の自動識別、郵便物の仕分け、空港での手荷物の発送等、物流での利用が知られている。コードスキャナの場合、読み取り光線が回転ミラー又はポリゴンミラーホイールでコードを横切るように案内される。カメラベースのコードリーダは画像センサを用いて物体の画像をその表面のコードとともに撮影し、画像解析ソフトウエアがその画像からコード情報を抽出する。カメラベースのコードリーダは、1次元バーコード以外の種類のコード、例えばマトリクスコードのように2次元的に構成され、より多くの情報を利用できるコードでも問題なく処理できる。
【0003】
ある重要な一群の利用形態では、コードを付した物体がコードリーダの近くを通過するように搬送される。そして、コードスキャナがその読み取り領域内に次々に入ってくるコードをそれぞれ検出する。一方、カメラベースのコードリーダでは、ライン走査カメラがコード情報を持つ物体画像を相対運動に伴って次々に1ラインずつ読み取る。2次元画像センサを用いる場合は、撮像レートと搬送速度に応じて多少重なり合う複数の画像データが規則的に取得される。物体をコンベア上で任意の向きに配置できるようにするため、読み取りトンネルに複数のコードリーダを設け、物体を複数の側又は全ての側から撮影できるようにすることも多い。
【0004】
バーコードを読み取るには該バーコードを横切る線に沿ってグレースケールプロファイルを取得する。しばしば複数の線に沿った多重評価が行われる。コード要素、即ち明暗のバー又は線がそれらの幅に基づいて分類され、それらの位置に対応して並べられる。ここで分類は、最小のコード要素又は最も幅の狭いバーに対する幅の倍数を見つけ出すことを目的としている。なぜならそれを通じてコード内容が確定されるからである。
【0005】
この評価のためにグレースケールプロファイルが二値化される。即ち、グレースケール閾値を用いて白黒プロファイルに変換される。理想的な二値化の場合、全ての暗いバーに対して値「0」、全ての明るいバーに対して値「1」が得られるから、分類は「0」及び「1」の連続の長さから直接的且つ一義的に行われる。この理想的な場合にできるだけ近付けるために、動的なグレースケール閾値がとりわけ用いられる。バーの各境界は明色から暗色又はその逆の移行部であるから、グレースケールプロファイルを微分してそれら移行部又はエッジの場所を突き止めることがよくある。
【0006】
しかし、実際に撮影されたバーコードのグレースケールプロファイルでは、バー間の移行部の場所をそれほど一義的に突き止めることはもはやできない。不鮮明になる原因として考えられるものに、焦点誤差、解像度の不足、そして動きアーチファクト(被写体ぶれ)がある。そうなると移行部又はエッジが不鮮明又は不明瞭になり、画素又は画素群は隣接する複数のコード要素からの光を記録してしまう。
【0007】
この影響が非常に顕著に現れるのは、1コード要素当たり1画素を下回る低い解像度で、標本化定理に反する場合である。最小のコード要素又は最も幅の狭いバー若しくはモジュール当たりの画素数をモジュールサイズと呼ぶ。例えば、モジュールサイズが「1」の場合、あるバーが画素の中心で捕らえられれば、それに対して二値化後に幅「1」が測定される。一方、同じバーが2つの画素間で捕らえられると、光が2画素に分配され、幅「2」が測定されるから、誤って分類される。より大きなモジュールサイズの場合、この効果はそれよりも弱いがなおも有意に現れる。
【0008】
従って、モジュール乃至はコード要素又はバーが状況によっては全くもう検出されないか、その幅及び位置が不正確になりすぎてしまう。負の影響が一定の強度以上になるとコード読み取りが成功しなくなる。バーコードの例で説明したこのような問題は2次元コードの場合でも同じように生じる。
【発明の概要】
【発明が解決しようとする課題】
【0009】
故に本発明の課題は光学コードのデコードを改善することである。
【課題を解決するための手段】
【0010】
この課題は請求項1又は12に記載の光学コード読み取り方法及びコードリーダにより解決される。光学コードはバーコードでもよいし、様々な公知の規格に従った2次元コードでもよい。そのコードの明度プロファイル又はグレースケールプロファイルが取得される。バーコードの場合、それはバーコードを横切る線に沿った明度又はグレースケール値の一次関数であり、例えば明度値を8ビットで符号化する場合は0から255までの値を取る。2次元コードの場合は相応の明度プロファイルが2つの位置次元に沿って捕らえられる。その2つの次元は一般性を失うことなくX及びYと呼ぶことができ、その場合、具体的に明度をZ方向にプロットできる。
【0011】
明度プロファイルにおいて明るい部分領域と暗い部分領域が識別される。これは例えば、二値化閾値に基づいたり、例えば明度プロファイルを微分することにより明暗移行部を探索したり、極小及び極大を探索したりすることにより行われる。その後で光学コードのコード内容が読み取られる。従来はそのために明るい部分領域と部分領域の広がり及び位置を特定していた。
【0012】
本発明の出発点となる基本思想は、コード内容を特定するために明るい部分領域と暗い部分領域の総計量を特定することにある。明度プロファイルは検出された光量の位置分布を測るものである。第1の総計量が各々の明るい部分領域における光量について特定される。第2の総計量が相補的に、各々の暗い部分領域において、白色レベル(特に最大レベル)に対して不足している光量を特定する。つまり、第2の総計量については明度プロファイルが反転されており、よって該プロファイル自体を明示的に総計するのではない。仮にそうすれば、それは理想的にはゼロ付近にある値の総計になるから、第2の総計量は非常に不正確なものに留まってしまう。好ましくは、1つの明るい部分領域に1つの第1の総計量、そして1つの暗い部分領域に1つの第2の総計量が特定される。そして、コード内容は第1及び第2の総計量を取り入れて特定される。好ましくは、第1及び第2の総計量の情報だけでコード内容を読み取るのに十分である。
【0013】
本発明には、コード要素又は個々のモジュールの広がり及び位置をはるかに頑強に特定できるようになり、しかもそれが、光学コードが不鮮明に、低い解像度で又は不明瞭にしか撮影できなかったときでも可能であるという利点がある。それに従ってより多くの光学コードが読み取り可能になり、コード読み取りの際の重要な性能パラメータである読み取りレートが高くなる。冒頭で説明した標本化効果、不鮮明さ及び動きアーチファクトの影響が低減され、それどころか、モジュール当たり1画素という解像限界つまりはモジュールサイズ「1」を下回る個別取得分の明度プロファイルのデコードさえ可能になる。
【0014】
第1の総計量については、明度プロファイルをその極小のうちの2つの間、特に2つの隣接する極小の間でそれぞれ合計することが好ましい。従って、各々の第1の総計量は、いわば谷から谷まで山全体を越えて明るい部分領域の光量を集めたものである。ここで「極小」とは、まずはこの谷の中にある点と広く理解すべきであり、厳密に数学的な意味での極小は単に好ましいものに過ぎない。例えば、ある立ち下がりエッジとそれに続く立ち上がりエッジの間の中央の点を用いてもよい。極小から極小まで総計することができるように、明度プロファイルにおける極小乃至は谷の探索を先に行うことが好ましい。
【0015】
第2の総計量については、明度プロファイルをその極大のうちの2つの間、特に2つの隣接する極大の間でそれぞれ総計することが好ましい。前の段落の説明は内容的に当てはまるが、今度は明度プロファイルのいわば山から山まで乃至は頂上から頂上まで合計する。
【0016】
第2の総計量を特定するために、明度プロファイルを反転させてから白色レベルに相当するオフセット分だけ補償することが好ましい。これは実は単に分かりやすくするためであり、不足している光量の計算は任意のやり方で行うことができる。例えば-1の乗算により反転させると、不足している光量はこれまでのような谷又は極小の代わりにピーク又は極大を形成するが、それは負の値である。正の領域に戻るために、反転された明度プロファイルを白色レベルの分だけ上方に補正する。こうして反転され、ずらされた明度プロファイルにおいては、第2の総計量を元の明度プロファイルにおける第1の総計量と同様に特定することができる。
【0017】
第1の総計量及び/又は第2の総計量は積分法により特定することが好ましい。明るい部分領域においては普通にX軸を基準として積分することができる。暗い部分領域においては基準軸が上方にずれて白色レベル付近にある。これを反転及び白色レベルに相当するオフセットによって通常の積分に戻すことができることは既に説明した通りである。明度プロファイルは実際には離散的である(ただしそれを以てアナログ式の検出や連続的な明度プロファイルへの変換を排除するものではない)から、積分法も大抵は同様に離散的であり、明るい又は暗い部分領域におけるサンプリング値を合計することになる。
【0018】
コード内容は第1の総計量と第2の総計量が交互に並んだシーケンスから特定することが好ましい。明度プロファイルには明るい部分領域と暗い部分領域が交互に現れる。それに従って総計量を明度プロファイルにより予め定まった順番で交互に配列すれば、そこからコード内容を読み取ることができる。その際、すぐに好ましい実施形態で紹介するように、総計量の数値をさらに前処理しておくことが好ましい。
【0019】
第1の総計量と第2の総計量を、特に少なくとも1つの最も細かい総計量から推定された基準値に基づいて、分類することが好ましい。この分類により、各総計量から、光学コードの最も小さいモジュール又は最も幅の狭いバーが持つ基準値に対する広がりの何倍であるかが確定される。そうするとコード要素のシーケンスが得られ、最終的にコード内容が得られる。故に、分類のクラスは基準値の倍数により予め定めておくことが好ましい。その都度の最も細かい又は最も小さい総計量から、第1又は第2の総計量のいずれかを問わず、基準値の推定が可能である。又はその代わりにi個の最も小さい総計量を引き合いに出して、例えばそれらを平均する。基本的には、人工知能又は機械学習若しくはニューラルネットワークの方法も含めて、どの公知の分類器でも使用可能である。
【0020】
好ましくは、第1の総計量と第2の総計量を基準値で除算してから離散化し、その際、特に基準値を少なくとも1つの最も細かい総計量から推定する。これは基準値の倍数として分類する具体的且つ非常に簡単な方法である。その際、総計量は簡単なやり方で基準値で正規化又は離散化される。
【0021】
好ましくは、光学コードが2次元コードであり、特に、第1の総計量と第2の総計量を、極小又は極大の周囲において閾値により定められる明度境界まで特定することが好ましい。2次元の場合、極小及び極大は2次元的な地形のように存在している。故に、明るい又は暗い各部分領域に対して合理的な総計限界又は積分限界を定めるべきである。それは、この有利な実施形態においては明度境界により定められており、明度値は、第1の総計量の場合は極小から来て明度境界を上回り、第2の総計量の場合は極大から来てそれを下回る。従って、この明度境界により、明るい部分領域及び暗い部分領域のそれぞれの山又は谷に関連する近傍の範囲が決まる。明るい部分領域と暗い部分領域に対してそれぞれ異なる閾値を設定することが考えられる。
【0022】
明度プロファイルを、それぞれにおいて第1の総計量及び第2の総計量が特定される複数の下位部分、特に矩形の下位部分、行又は列、に分割することが好ましい。これによれば、本発明の方法は光学コードの複数の異なる部分に適用される。これは好ましくは総計量の特定だけでなく上述したような交互の配列及び分類にも関係する。本発明の方法を分割して適用することは2次元コードにとって特に有益である。模範的な分割の例は小さな矩形であるが、列、行又は他の直線的な分割もある。なぜなら後者の各例では、各部分を1次元の事例又はバーコードのように処理して、最後に部分的な結果を統合することができるからである。
【0023】
明度プロファイルを複数回、異なる下位部分に分割することで、第1及び第2の総計量を複数回特定し、複数の結果を、特に論理結合により、互いに差し引き又は比較することが好ましい。即ち、複数の異なる分割が用いられ、その後でその結果が統合される。その際、例えば先に導入した明度境界を変化させることができる。或いは、特に好ましい実施形態においては列分割及び行分割という2つの分割が行われる。結果を差し引きする際の有利な処置の1つは、例えばAND乃至OR等の論理結合である。
【0024】
本発明に係る光学コード読み取り用コードリーダは明度プロファイルを取得するための受光器を備えている。これは、コードスキャナの受光器、コードの1ライン分を取得したり走査線の結合により平面的なコード画像を取得したりするためのラインセンサ、又は、マトリクスセンサとすることができる。複数のカメラヘッドを用いてそれらの画像を結合することも考えられる。そして、制御及び評価ユニット(これは、それ自身がバーコードスキャナ又はカメラベースのコードリーダの一部であってもよいし、制御装置としてそれらに接続されていてもよい)において、更なる評価ステップ、特に、本発明の方法のいずれかの有利な実施形態における評価ステップを実行する。従って、明度プロファイルにおいて明るい部分領域と暗い部分領域が識別され、光学コードのコード内容が読み取られる。そのために、明度プロファイルから、明るい各部分領域における光量についての第1の総計量と、暗い各部分領域において白色レベルに対して不足している光量についての第2の総計量が特定され、コード内容の読み取りが第1及び第2の総計量に基づいている。
【0025】
以下、本発明について、更なる特徴及び利点をも考慮しつつ、模範的な実施形態に基づき、添付の図面を参照しながら詳しく説明する。
【図面の簡単な説明】
【0026】
図1】読み取り対象のコードが付いた物体を搬送するベルトコンベアの上方にコードリーダを取り付けた模範例の概略的な3次元全体図。
図2】(a)不明瞭に撮影されたバーコードの例、及び(b)低解像度で撮影されたバーコードの例。
図3図2(a)に示した不明瞭なバーコードの模範的なグレースケールプロファイル。
図4】グレースケールプロファイルの一部。
図5図4のグレースケールプロファイルを改めて示す図であって、今度は光学コードの明るい部分領域及び暗い部分領域の各々に対して第1及び第2の総計量を描き込んだ図。
図6a】不明瞭に撮影されたバーコードの別の例。
図6b図6aのバーコードを本発明に係る方法で再構成したもの。
図7】明度境界まで総計量が特定される数個の明るい部分領域及び暗い部分領域を有する2次元コードの例。
図8】以下の各図の出発点としての別の2次元コードの例。
図9】(a)図8の2次元コードを列毎に分割した後、総計量から再構成したもの、及び(b)図8の2次元コードを行毎に分割した後、総計量から再構成したもの。
図10】(a)図9(a)及び9(b)の再構成物を論理的にAND結合したもの、及び(b)図9(a)及び9(b)の再構成物を論理的にOR結合したもの。
【発明を実施するための形態】
【0027】
図1はベルトコンベア12の上方に取り付けられた好ましい使用状況の光電式コードリーダ10を示している。ベルトコンベア12は矢印16で示したようにコードリーダ10の検出領域18を通過するように物体14を搬送する。物体14はその外側表面に光学コード20を持っており、これがコードリーダ10により検出されて評価される。この光学コード20は上面に付されているか、少なくとも上から見えるように付されている場合にのみコードリーダ10で認識できる。そこで、図1の描画から逸脱して、例えば側面又は底面に付されたコード22を読み取るために複数のコードリーダ10を異なる方向から取り付けることで、いわゆる全方向からの多重読み取りを可能にしてもよい。読み取りシステムにおける複数のコードリーダ10の配置は実際には読み取りトンネルとして実施することがほとんどである。このようにコードリーダをベルトコンベア付近に固定して用いることは実際に非常によくある。しかし、本発明は何よりもコードリーダ10そのもの若しくはその中で実行されるコードのデコード方法に関するものであるから、本例を限定的なものとして解釈してはならない。
【0028】
コードリーダ10は、搬送中の物体14とその光学コードを受光器24で検出し、それに対応する明度プロファイル又はグレースケールプロファイルを制御及び評価ユニット26において更に処理することで、そのコード内容を読み取る。本発明にとって具体的な検出方法は重要ではないため、コードリーダ10はそれ自体公知である任意の原理に従って構成することができる。例えばその都度1ラインだけを捕らえる場合、ライン状の画像センサを用いてもよいしスキャン法によってもよいが、後者の場合、フォトダイオード等の簡単な受光器で足りる。ラインの検出から直ちにコード20の読み取りを試みることもできるし、制御及び評価ユニット26が搬送運動の進行中に得られる複数のラインを結合することもできる。マトリクス状の画像センサを用いれば一度の撮影だけでより広い領域を捕らえることができる。ここでもまた複数の撮影画像の結合を搬送方向にもそれと交差する方向にも行うことができる。
【0029】
コードリーダ10はインターフェイス28を通じて情報(読み取られたコード又は画像データ等)を出力することができる。制御及び評価ユニット26を、本来のコードリーダ10内、即ち図1に示したカメラ内に配置するのではなく、別個の制御装置として一又は複数のコードリーダ10に接続することも考えられる。その場合、インターフェイス28は内部と外部の制御及び評価を接続する働きもする。制御及び評価の機能はほぼ任意に内部と外部の部品に分配することができ、その際、外部の部品はネットワーク又はクラウドを介して接続されていてもよい。これら全てをここではこれ以上区別せず、制御及び評価ユニット26はその具体的な実装に関わらずコードリーダ10の一部とみなす。
【0030】
図2(a)及び(b)はそれぞれ問題のある光学バーコードの撮影画像を示している。図2(a)ではバーコードが不明瞭であり、明と暗のバー、線又は部分領域の間の境界がきちんと定まっていない。図2(b)ではバーコードが十分に解像されておらず、故に粒が粗く見える。冒頭で説明したように、このようなコードは従来のデコード法では問題を引き起こす可能性があり、場合によっては低い検出品質のせいでコードが読み取れなくなる。これから説明する本発明に係る方法はより頑強であり、多くの場合でなおもコード内容をデコードすることができる。以下の説明は、最初はバーコードの例に留まるが、本発明に係る方法は2次元コードにも同様に転用できる。これについてはその後で図7~10(b)を参照して取り上げる。
【0031】
図3図2(a)の不明瞭なバーコードの明度プロファイル又はグレースケールプロファイルを示している。この明度プロファイルでは、それぞれの明度(例えば、明度又はグレースケール値を8ビットで符号化する場合は0から255までの値)が、バーコードを横切る線上の位置に対してプロットされている。明度プロファイル又はグレースケールプロファイルの観察は真の制約ではない。光学コードは2つの態様(多くは黒色と白色で、ときに構造乃至は特徴)から成るが、いずれにせよコード情報はグレースケール画像により取得することができる。更に、グレースケールプロファイルがバーコードスキャナの1回のスキャン、ライン状画像センサの1本の画像ライン、又はコード20の平面画像を通り抜けて引かれた線のいずれとして取得されたかは、本発明の理解にとって重要ではない。
【0032】
図4はより分かりやすくするために、不明瞭なモジュールを持つバーコードの明度プロファイルのより小さい部分を再度示している。理想的な場合、これはバーの境界毎に突然最小レベルから最大レベル(ここでは簡単に黒及び白と呼び、例えばグレースケール値「0」及び「255」で再現される)まで又はその逆に変化する階段関数になるはずである。本発明に係る方法の目的は結局、この理想的な状態を回復すること、若しくはこの理想状態が現前しているかのようにコードを読み取ることである。
【0033】
不明瞭に取得されたバーコードは、アルゴリズムによる再鮮鋭化や画像処理フィルタ等、画像処理から知られる方法を用いれば、少なくとも部分的に補償することができる。これは本発明では前処理ステップとして考えられる。しかし、再鮮鋭化やフィルタはまず何らかの形で移行部を変化させ、それが最終的に読み取りエラーにつながる可能性がある。それから、このような前処理の後でも妨害効果が残るのが通例である。
【0034】
図5は、図4の明度プロファイルに基づき、該プロファイルを本発明の一実施形態における総計量又は積分を用いて評価したものを示している。エネルギーの観点から、まず、バーコードの明るい部分領域、明るいバー又は空隙からは解像度又は画素密度に関わらず常に同じ反射光量が受光器24により捕らえられる、ということを出発点として確認することができる。焦点合わせが不十分である、サンプリング周波数が低すぎる、又は動きアーチファクトがあるといった妨害効果がある場合、前記光量は場合によっては複数の画素に分配され、バーコードの他の部分領域からの反射光と互いに重なる。その際、明るい部分領域の全光量は同じままである。これは、明度プロファイルの積分は、バーコードが不明瞭であるか、そしてそれはどの程度か、又はバーコードが低すぎる解像度で撮影されているか、ということに依存しないということを意味している。暗い部分領域が光を一切反射しないと仮定すれば、前記積分は全ての明るい部分領域からの光の総計に相当する。
【0035】
いま、妨害効果が少なくとも、明るい部分領域の光が隣の暗い部分領域だけを照らし、それより遠くの部分領域は照らさない、という程度に局限されているということを更に仮定してもよい。そうすると、ある暗い部分領域から次の暗い部分領域まで、明るい部分領域を正確に1つだけ含む範囲における明度プロファイルの積分は、まさにその明るい部分領域からの反射光量と一致しているはずである。ここでのこつは、これは大まかな観察であり、積分は具体的な明度推移(エッジがより平坦又は急峻である、或いはそれ以外の不規則性がある等)によってほとんど影響されないということである。
【0036】
図5の下部に、明るい部分領域に対応する第1の総計量が模範例として書き込まれている。ここではそれぞれ明度プロファイルの極小から極小まで積分を行った。積分に対応する各々の面に暗い影を付けているが、ここでは単に分かりやすくするために2つの異なるグレー色調を用いている。厳密に2つの極小間で積分をする必要はない。なぜなら積分法の開始値及び終了値はいずれにせよ暗い部分領域内にあり、故に積分にほとんど寄与しないからである。
【0037】
反転させた明度プロファイルを観察することにより、同じ考え方を暗い部分領域にも転用することができる。反転はX軸を中心とする鏡像化又は計算的には-1の乗算と理解することができる。反転により生じる負の値を避けるため、続けて、反転させた明度プロファイル全体に最大レベル(例えば明度値を8ビットで符号化する場合は255)を加算することができる。積分限界はここでも、反転させた明度プロファイルにおける極小であり、従って反転させていない明度プロファイルにおける極大である。暗い部分領域に対応する総計量が図5の上部に書き込まれている。積分に対応する各々の面に明るい影を付けているが、ここでも単に分かりやすくするために2つの異なるグレー色調を用いている。
【0038】
明るい部分領域により反射された光はすぐ隣の暗い部分領域だけに影響を及ぼすという仮定は緩めることもできる。その場合でも各々の明るい部分領域に適切な分量の光を割り振ることができるから、前記原理はなおも同様に適用でき、暗い部分領域についても相応に適用できる。即ち、積分限界を互いにすぐ隣にある極小又は極大に設定することは必須ではない。
【0039】
前述の評価の結果は多数の第1の総計量及び第2の総計量であり、バーコードの1つの明るい部分領域毎に1つの第1の総計量、そして1つの暗い部分領域毎に1つの第2の総計量である。これらの総計量を今度は交互に並べてシーケンスにまとめることができる。バーコードが均一にくまなく照明されていれば、ある広がりを持つ各部分領域の総計量は特定の倍数に対応して比例的にモジュールサイズと等しくなる。ここで、モジュールサイズはバーコードの最小のバーの広がりを表しており、全てのバーの広がりはそれぞれモジュールサイズの倍数になるということを思い出されたい。デコードはこの倍数を探索する分類と解釈できる。なぜならその中にまさにコード情報があるからである。従来のようにバーの幅を測定する代わりに、本発明では総計量又は積分が用いられるが、これも上述のとおり同様にデコードに必要な情報を含んでいる。
【0040】
図5の例では、積分又は総計量を上と下から交互に読むと、1580、800、2400、950、800、980、2500、2430、1620、1700、900、2370、1400、850、750、1600という交互シーケンスが得られる。積分が完全に不変であるとすればこれらは最大公約数の倍数である。この最大公約数を基準値として利用することができ、それはまたモジュールサイズに比例する。単に比例関係があるのみで、モジュールサイズと同一ではない。なぜなら、求められたのは総計量乃至は積分であって部分領域の幅ではないからである。
【0041】
前記シーケンス例を分類するため、任意の分類器を用いることができる。異なる幅のバーに対する総計量の間には大きな差異が見られるから、例えば、幅の場合よりも分類の問題をはるかに容易に且つ頑強に解決できる。幅は不明瞭なエッジのせいで大きく変動するからである。例えば最小の総計量を基準値として選択したり、i個の最小の総計量を平均したりすることができる。その場合、より広いバーにおける積分によって平均値が希釈されないように、iを十分に小さくする必要がある。
【0042】
正規化乃至は離散化とも解釈できるこのような分類により、前記シーケンス例からコード要素について2、1、3、1、1、1、3、3、2、2、1、1、3、2、1、1、2というシーケンスが得られる。これが図4及び5に示したバーコードの部分に対する本発明によるデコード結果であり、実際に正しい結果である。
【0043】
図6a及び6bはこの結果を再び完全なコード例について例示している。図6aは不明瞭に撮影された元のバーコードであり、図6bは、総計量又は積分からデコードしたものに相当する、再構成されたバーコードを示している。ここで重要なのは、図6bにおいてバーが鮮明に描かれていることではなく(それは再構成のせいである)、バーの幅が図6aの不明瞭なバーコードを正確に再現しているということである。従来のデコード法であればここで本物のコード内容から食い違いが生じ、そのためにバーコードが全く読み取れなくなることもあり得る。
【0044】
図7は模範的な2次元コードを示している。ここまでバーコードについて説明してきた方法が、以下ではこの2次元コードに応用乃至は拡張される。取得された2次元コードのグレースケール値は今度は2次元の明度プロファイルを形成する。白色の点は明るい部分領域における2つの模範的な極大、黒色の点は暗い部分領域における2つの模範的な極小を示している。それぞれに付随する白色線又は黒色線は適正な積分限界を示している。積分限界があるのは、白色点から出発して明度閾値をそれぞれ初めて下回る位置、又は黒色点から出発して明度閾値を初めて上回る位置である。2つの異なる明度閾値を明るい部分領域と暗い部分領域に対して設定することができ、特にそれらの明度閾値を非常に低く又は非常に高く選択することで頑強性を高めることができる。それから、極大は暗いエッジ線により、極小は明るいエッジ線により囲まれている。
【0045】
2次元コードにもコード要素の最小の大きさとしてモジュールサイズが存在するが、こちらは2次元に適用され、従って最小の正方形を定めるものである。総計量を通じて、この最小の正方形が何個で1つの明るい部分領域又は暗い部分領域を形成しているかを特定することができる。ただし1次元の場合とは違ってこれだけではデコードに十分ではない。なぜなら、細長い列、固まったブロック又は何らかの中間的な形状内での配置は追加の位置情報なしでは一義的に決まらないからである。部分領域当たりの最小の正方形の個数についての大まかな情報が追加の情報源となって、コードがまだ読み取られるかどうかの決め手となること、例えば他のデコード法をパラメータ設定する又は妥当なものにすることもあり得る。
【0046】
大まかな情報を増やしてより強力な位置基準を作り出すために、2次元の明度プロファイルを分割して、本発明に係る方法の実施形態を分割した各下位領域にそれぞれ適用することができる。そしてその後で部分的な結果を結合する。そのような分割の例として、n×mピクセルの長方形(特に、推定したモジュールサイズに依存して選ばれたもの)、列、行又は斜線が挙げられる。特に行又は列への分割には、バーコードについて説明した方法をそのまま行又は列に応用できるという利点がある。本発明に係る方法を異なる分割で複数回適用し、その結果を結合することも考えられる。
【0047】
図8は、不明瞭に撮影されたデータ行列のコードを、あり得る2次元コードの任意の代表として示している。この例で、有利な実施形態を模範的に説明することにする。
【0048】
図9(a)では列毎に分割乃至は積分を行った。即ち、バーコードに関する上述の方法を各列に適用した。図9(b)では行毎に分割乃至は積分を行った。それらの結果には差があり、選択された分割に依存している。これに対処する方法の1つは、2つの結果に対してそれぞれ分類又はデコードを試行することである。また、それらの結果を画像処理アルゴリズムにより評価することも考えられる。
【0049】
図10(a)及び(b)は別の方法を例示しており、ここでは前記の結果が論理的に結合される。具体的にはここでは模範例として、図10(a)では図9(a)の列積分画像と図9(b)の行積分画像が論理的にAND結合され、図10(b)では論理的にOR結合されている。このようなやり方で方向依存性を解消して、結果を更に改善することができる。
図1
図2
図3
図4
図5
図6a
図6b
図7
図8
図9
図10
【外国語明細書】