(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-14
(45)【発行日】2023-03-23
(54)【発明の名称】シンボル読み取りのためのローカルトーンマッピング
(51)【国際特許分類】
G06K 7/14 20060101AFI20230315BHJP
G06K 7/10 20060101ALI20230315BHJP
G06T 5/20 20060101ALI20230315BHJP
【FI】
G06K7/14 039
G06K7/14 060
G06K7/14 013
G06K7/14 017
G06K7/10 372
G06K7/10 456
G06T5/20
【外国語出願】
(21)【出願番号】P 2020208830
(22)【出願日】2020-12-16
(62)【分割の表示】P 2018229018の分割
【原出願日】2018-12-06
【審査請求日】2021-11-12
(32)【優先日】2017-12-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504382671
【氏名又は名称】コグネックス・コーポレイション
(74)【代理人】
【識別番号】100119378
【氏名又は名称】栗原 弘幸
(72)【発明者】
【氏名】ガオ,チェン
(72)【発明者】
【氏名】バチェルダー,アイヴァン
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2009-301113(JP,A)
【文献】特開平10-261047(JP,A)
【文献】特表2011-513818(JP,A)
【文献】再公表特許第2006/137216(JP,A1)
【文献】特表2012-513172(JP,A)
【文献】特開平07-029008(JP,A)
【文献】特表2015-529890(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/14
G06K 7/10
G06T 5/20
(57)【特許請求の範囲】
【請求項1】
シンボルを読み取るための方法であって、
シンボルの生画像を取得するステップであって、前記生画像の各ピクセルは生ビット深度を有する値を持っている、前記取得するステップ、
前記生画像の関心領域を識別するステップ、
前記関心領域に対するマッピングされた画像を計算するステップであって、前記計算することは少なくとも1つのマッピングされたピクセルの値を生成するために生画像中の少なくとも1つの生ピクセルの値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセルの値を決定することを含んでいて、前記ローカルマッピング関数は前記少なくとも1つのマッピングされたピクセルの値に前記少なくとも1つの生ピクセルの値をマッピングするものである、前記計算するステップ、ならびに
マッピングされた画像を使用して前記シンボルをデコードするステップ、
を含む上記方法。
【請求項2】
前記少なくとも1つの生ピクセルは前記生画像の関心領域内にあり、
当該方法は、さらに、前記関心領域における少なくとも1つの生ピクセルに対して、前記生画像中の前記シンボルの属性に基づいてローカルピクセル周辺メトリックを決定するステップを含み、このローカルピクセル周辺メトリックは前記少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセルを識別するものである、
請求項1記載の方法。
【請求項3】
当該方法は、さらに、前記ローカルピクセル周辺メトリック内にある前記少なくとも1つの生ピクセルの近傍の1組の生ピクセルについての1つ以上の値と、前記生画像に基づいて決定された少なくとも1つのパラメータと、に基づいて前記ローカルマッピング関数を決定するステップを含む、
請求項2記載の方法。
【請求項4】
前記1組の生ピクセルについての1以上の値は、前記ローカルピクセル周辺メトリックに基づいて決定されたカーネルサイズを有するガウスカーネルを適用することによって決定され、かつ、
前記関心領域に対するマッピングされた画像を前記計算するステップは、前記ローカルマッピング関数
を生画像中の前記少なくとも1つの生ピクセルの前記値に適用して
、前記マッピングされたピクセルの値を生成することを含む、
請求項3に記載の方法。
【請求項5】
上記関心領域を識別するステップは:
前記シンボルを含んでいる生画像中の領域を識別すること;
生画像全体を識別すること;
生画像中の所定の領域を識別すること;または
それらの組み合わせ;
を含む、請求項1に記載の方法。
【請求項6】
当該方法は当該方法がFPGAによって実行できるように構成されている、請求項1に記載の方法。
【請求項7】
前記ローカルマッピング関数は、前記ローカルピクセル周辺メトリック内の前記少なくとも1つの生ピクセルのピクセル値に依存する、請求項
2に記載の方法。
【請求項8】
前記ローカルマッピング関数はラインハルト演算子である請求項1に記載の方法。
【請求項9】
前記マッピングされた画像を計算するステップは、さらに、前記生画像における前記少なくとも1つの生ピクセルの値に異なるマッピング関数を適用して前記少なくとも1つのマッピングされたピクセルの値を生成することを含む、請求項1に記載の方法。
【請求項10】
前記属性は、少なくとも最小サイズ、最大サイズ、またはその両方を含む、請求項2に記載の方法。
【請求項11】
前記属性は、モジュールサイズ範囲、特徴サイズ範囲、シンボル幅範囲、またはシンボル高さ範囲のうちの1つ以上を含む、請求項10に記載の方法。
【請求項12】
前記シンボルは第1のシンボルであり、かつ、前記属性及び/又は前記少なくとも1つのパラメータは第2のシンボルの第2の画像に基づいて決定される、請求項
3に記載の方法。
【請求項13】
前記第2のシンボルの第2の画像は、前記第1のシンボルから取得された以前の画像、
及び/又は、調整フェーズ中に前記第1のシンボルとは異なるシンボルから取得された画
像である、請求項12に記載の方法。
【請求項14】
前記マッピングされた画像を計算するステップは、さらに、前記少なくとも1つのマッピングされたピクセルの値を生成するために前記生画像中の前記少なくとも1つの生ピクセルの値にグローバルマッピング関数を適用することを含む、請求項1に記載の方法。
【請求項15】
さらに、以下の:
前記1組の生ピクセルの強度を決定すること;及び/又は
前記1組の生ピクセル内の各ピクセルの強度値に基づいてコントラストを決定すること;
を含む、前記1組の生ピクセルについての前記1以上の値を決定するステップを、当該方法は含む、
請求項3に記載の方法。
【請求項16】
前記ローカルマッピング関数は前記シンボルの少なくとも1つの属性に基づくものである請求項1記載の方法。
【請求項17】
前記シンボルの少なくとも1つの属性は最小特徴サイズを含む請求項
16記載の方法。
【請求項18】
前記シンボルは線形バーコードであり、前記最小特徴サイズは前記線形バーコードの最も狭いバーの幅である、請求項
17記載の方法。
【請求項19】
前記シンボルは2次元バーコードであり、前記最小特徴サイズは前記2次元バーコードの最も小さいモジュールの幅である、請求項
17記載の方法。
【請求項20】
シンボルを読み取るための装置であって、メモリと通信するプロセッサを備えており、プロセッサはメモリに記憶された命令を実行して、それによりプロセッサは:
シンボルの生画像を取得するステップであって、前記生画像の各ピクセルは生ビット深度を有する値を持っている、前記取得するステップ、
前記生画像の関心領域を識別するステップ、
前記関心領域に対するマッピングされた画像を計算するステップであって、前記計算することは少なくとも1つのマッピングされたピクセルの値を生成するために生画像中の少なくとも1つの生ピクセルの値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセルの値を決定することを含んでいて、前記ローカルマッピング関数は前記少なくとも1つのマッピングされたピクセルの値に前記少なくとも1つの生ピクセルの値をマッピングするものである、前記計算するステップ、ならびに
マッピングされた画像を使用して前記シンボルをデコードするステップ、
をなすように構成されていている、
上記装置。
【請求項21】
プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令が少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサは、
シンボルの生画像を取得するステップであって、前記生画像の各ピクセルは生ビット深度を有する値を持っている、前記取得するステップ、
前記生画像の関心領域を識別するステップ、
前記関心領域に対するマッピングされた画像を計算するステップであって、前記計算することは少なくとも1つのマッピングされたピクセルの値を生成するために生画像中の少なくとも1つの生ピクセルの値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセルの値を決定することを含んでいて、前記ローカルマッピング関数は前記少なくとも1つのマッピングされたピクセルの値に前記少なくとも1つの生ピクセルの値をマッピングするものである、前記計算するステップ、ならびに
マッピングされた画像を使用して前記シンボルをデコードするステップ、
を実行する上記非一時的コンピュータ可読記憶媒体。
【請求項22】
当該方法は、さらに、前記生画像中の前記少なくとも1つの生ピクセルに対して、前記生画像中の前記シンボルの属性に基づいてローカルピクセル周辺メトリックを決定するステップを含み、このローカルピクセル周辺メトリックは前記少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセルを識別するものである、
請求項1記載の方法。
【請求項23】
当該方法は、さらに、前記生画像と関連付けられた前記生ビット深度より小さいマッピングされたビット深度を有する前記少なくとも1つのマッピングされたピクセルの値に、前記少なくとも1つの生ピクセルの値をマッピングする、前記少なくとも1つの生ピクセルに対するローカルマッピング関数を決定するステップを有し、
前記ローカルマッピング関数は:
前記ローカルピクセル周辺メトリック内にある前記少なくとも1つの生ピクセルの近傍の1組の生ピクセルの強度値と;
前記生画像又は前記関心領域の平均強度に基づいて決定された少なくとも1つのパラメータと;に基づいている、
請求項
22記載の方法。
【請求項24】
前記1組の生ピクセル
の強度値は、前記生画像内の前記シンボルの属性に基づいて決定されたカーネルサイズを有するガウスカーネルを適用することによって決定され、かつ、前記属性には、最小モジュールサイズ、最大モジュールサイズ、モジュールサイズ範囲、特徴サイズ範囲、シンボル幅の範囲、またはシンボル高さの範囲のうちの1以上が含まれる、請求項
23記載の方法。
【請求項25】
前記少なくとも1つのマッピングされたピクセルの値を生成するために生画像中の前記少なくとも1つの生ピクセルの値に前記ローカルマッピング関数を適用することによって、前記マッピングされた画像中の前記少なくとも1つのマッピングされたピクセルの値を決定することは、前記少なくとも1つのマッピングされたピクセルの値を生成するために生画像中の前記少なくとも1つの生ピクセルの強度値に前記決定されたカーネルサイズを持つガウスカーネルに基づいて前記ローカルマッピング関数を適用することによって前記マッピングされた画像内
の前記少なくとも1つのマッピングされたピクセルの強度値を決定することを含む、請求項
24記載の方法。
【請求項26】
前記ローカルマッピング関数を適用することには、コントラスト比較、コントラスト低下、コントラスト向上、視覚的アーチファクト、又はハローアーチファクトのうちの1つ以上を含む特徴を生成することが含まれ、かつ、
前記マッピングされた画像を使用して前記シンボルをデコードするステップには、前記特徴を含んだ前記マッピングされた画像を使用して前記シンボルをデコードすることが含まれる、
請求項
25記載の方法。
【請求項27】
当該方法はさらに:
前記ローカルピクセル周辺メトリック内の前記少なくとも1つの生ピクセルの近傍の1組の生ピクセルに対する1以上の値、並びに、前記生画像又はシンボルから取得された以前の画像に基づいて決められる少なくとも1つのパラメータ、に基づいて前記ローカルマッピング関数を決定することを含む、請求項2記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本出願は、2017年12月6日に出願された「シンボル読み取りのためのローカルトーンマッピング」と題する米国仮出願第62/595522に対して米国特許法第119条(e)の下での優先権を主張し、参照によりその全体が本明細書に組み込まれる。
【0002】
[技術分野]
本明細書に記載された技術は、概略、シンボルを読み取るために使用されるマシンビジョン技術などのシンボル読み取りのための高ダイナミックレンジ画像の圧縮に関する。
【背景技術】
【0003】
オブジェクトの自動識別および追跡は、例えば光学シンボルを使用する製品において多くの用途がある。光学シンボルは、何らかの所定の規則に従って編成された、異なる光反射率または放射を有する要素のパターンである。既知の光学コードは、種々の消費者製品に使用されている線形バーコードである。線形バーコードはバーまたはスペースを直線的に含む。バーコードは、例えば平行なバーとスペースが交互する1つ以上の空間的に隣接したシーケンスを含む長方形の識別シンボルであり得る。各々のバーとスペースはしばしばエレメントと呼ばれる。1つ以上の連続したエレメントのシーケンスが、1つのエレメントシーケンスを構成する。バーコードエレメントシーケンス内の要素は、その相対幅によって情報をエンコードできる。当技術分野において公知の2次元バーコードの例は、コード128、UPC、インターリーブド2オブ5、コーダバー、ファーマコード、コード39およびデータバーのタイプのシンボル体系を含む。
【0004】
光学コードは、情報を2次元で符号化することもできる。2次元シンボルは、モジュールまたはドットの空間的配列を含むことができる。モジュールが「オン」か「オフ」か、またはドットが存在するか存在しないかに応じて、情報は2次元シンボルにエンコードされる。当技術分野で知られている2次元シンボルの例は、データマトリックス、QRコード(登録商標)、PDF417、およびマキシコードのタイプのシンボル体系を含む。
【0005】
通常、シンボルは一様な反射率の基材(例えば紙または金属)上にバーエレメントまたはモジュールを印刷する(例えばインクで)またはマーキングする(例えばエッチングで)ことによって作られる。紙基材上では、印刷されたエレメントおよびモジュールは通常基材よりも低い反射率を有し、したがってそれらの間の印刷されていないスペースまたはモジュールよりも暗く見える(例えばシンボルが黒インクを使用して白い紙の上に印刷された場合)。シンボルは他の方法でも印刷でき、例えばシンボルは黒いオブジェクトの上に白い塗料を使用して印刷される。シンボルを背景からより容易に区別するために、シンボルは通常他の印刷構造または可視構造から相対的に離して配置される。そのような距離は、しばしばクワイエットゾーンと呼ばれるスペースを作り出す。線形バーコードシンボルの場合、このクワイエットゾーンは通常最初のバーの前と最後のバーの後の両方である。2次元シンボルの場合、このクワイエットゾーンは通常シンボルの四方にある。あるいは、スペースまたは「オフ」モジュールおよびクワイエットゾーンは、印刷またはマーキングすることができ、バーまたは「オン」モジュールは基材によって暗黙的に形成される。
【0006】
シンボルにエンコードされた情報は、固定設置型装置や携帯用ハンドヘルドデバイスの光学読み取り機を使用してデコードできる。例えば固定設置型装置の場合、移送ラインは固定設置型の読み取り機の範囲内でシンボルでマークされたオブジェクトを移動させ、それによってシンボルの画像を生成できる。画像ベースの読み取り機は、通常視野(FOV)の2次元画像を生成できる少なくとも1つのセンサを含んでいる。例えば多くのシステムは現在2次元電荷結合素子(CCD)画像センサを採用しており、これは画像を取得し、その画像は次にプロセッサによって受信される。プロセッサは画像データを調べてシンボル候補を識別し、およびそれらのシンボル候補をデコードするようにプログラムされている。読み取り機は視野(FOV)の画像を急速に連続して取得し、取得したシンボル候補をできるだけ速くデコードするようにプログラムすることができる。プロセッサはコード候補をデコードするために1つ以上のデコードアルゴリズムを実行する。
【0007】
バーコードリーダは、一般的に2つのカテゴリー、すなわちレーザースキャナーまたはイメージベースの他の読み取り機に分類される。画像ベースの他の読み取り機は、産業の広い範囲であるキャナーに取って代わりつつある。シンボル候補を特定してデコードするための画像ベースの方法は、当技術分野において周知である。画像ベースのデコーディングアルゴリズムの例は、「バーコードのデコーディング」と題する米国特許出願第9607200号、「1次元信号の抽出のための方法および装置」と題する米国特許出願第9589199号、「バーコードのデコード」と題する米国特許第9361499号、および「1次元信号抽出のための方法および装置」と題する米国特許出願第9218536号を含み、参照によりその全体が本明細書に組み込まれる。
【0008】
シンボルの画像を取得する場合、画像の品質は幾つかの要因、例えばシンボルが適用されている表面に対する他の読み取り機の角度、シンボルが適用されている表面の材料とテクスチャ、シンボルのマーキング品質やマーキング後に起こる何らかの損傷、周囲の特性(例えば強度、波長、方向など)および読み取り機の照明、何らかの適用されたシンボルの歪み、シンボルが他の読み取り機に対して移動する速度(例えばコンベアベルト上)、シンボルが適用されている表面から他の読み取り機までの距離、光学ブラー、センサ/カメラの解像度、何らかのセンサノイズ、何らかのモーションブラー(センサ露光中の部分の動きの結果)などによって異なる。画像品質は、シンボルをデコードするために特定のアルゴリズムを実行するプロセッサの能力に影響を与える。例えば他の読み取り機はあるシンボル、例えば照明が乏しいシンボルおよび/または識別もしくは区別が困難な特徴をデコードするのにしばしば困難を伴う。例えば画像ベースのシンボルの他の読み取り機は通常区別可能なシンボルの細部を備える限られたビット深度(通常8ビット)の画像を必要とする。しかし多くの画像は乏しい照明でキャプチャされ、シーンは高ダイナミックレンジを有し得る(例えば限られたビット深度画像を有するセンサによっては直接キャプチャできない画像全体にわたるピクセル値の非常に大きいレンジ)。そのような場合、単一の画像(やはり通常8ビット)はシンボルの読み取りに必要とされるすべての情報をキャプチャできない。その一例が、丸い光沢のある金属部品上のDPM(ダイレクトパーツマーキング)シンボルの読み取りである。そのようなサンプル上に印刷されたデータマトリックスコードのようなシンボルは、通常強い鏡面反射のために露光過多と露光不足の領域の両方を含んでいる。したがってシンボルは単一の画像では部分的に見えないか、または表示品質が低いことがある。例えば暗い領域の細部をキャプチャするために明るい領域が最も高いピクセル値に一様にクリッピングされ、あるいは明るい領域の細部をキャプチャするために暗い領域が最小のピクセル値に一様にクリッピングされることがある。他の例として小包の取り扱いなどの用途では、背の高いオブジェクト(例えば箱)が他の読み取り機上の光に非常に近すぎて過飽和になることがあり、また小さいオブジェクトは読み取り機から離れすぎて十分照明されないことがある。
【0009】
固定設置型装置のような構成では、光学読み取り機は同じオブジェクトと適用されたシンボルの多数の画像を取得することができる。例えば複数の8ビット画像を異なるゲインまたは露出で取得し、融合して合成画像を形成することができる。しかしながら画像融合は、デコードがリアルタイムで実行され得ないように、登録、画像のバッファリング、および/または著しい処理を必要とすることがある。
【発明の概要】
【0010】
本明細書に記載の技術は幾つかの実施形態において、明細書に記載された技術を用いて高ダイナミックレンジ(HDR)画像を限られたビット深度(通常8ビット)の画像に圧縮するが、この技術は一部ピクセルの局所的特徴に基づいている。圧縮された限られたビット深度の画像は、デコーダの入力画像として使用される。幾つかの実施形態では、レンダリングされた限られたビット深度の画像は(例えば追加のハードウェアを必要とせずに)露出過多領域と露出不足領域の両方から細部を回復して保持する。生成された画像を用いてデコードすることにより、例えばデコード率、デコード速度および/またはデコード成功率を向上させることができる。
【0011】
幾つかの態様では、本技術はバーコードシンボルを読み取るための方法を特徴とする。この方法はシンボルの生画像を取得することを含んでおり、生画像の各ピクセルは生ビット深度を有するデジタル値を持つ。この方法は、生画像の関心領域を識別し、この関心領域における少なくとも1つの生ピクセルに対してローカルピクセル周辺メトリックを決定することを含んでおり、このローカルピクセル周辺メトリックは少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセル上で識別され、ローカルピクセル周辺メトリックは生画像中のシンボルの少なくとも1つの属性に基づいて決定される。この方法は、生画像と関連付けられたビット深度より小さいマッピングされたビット深度を有するマッピングされたピクセル値に生ピクセルの値をマッピングする、少なくとも1つの生ピクセルに対するローカルマッピング関数を決定することを含んでおり、このローカルトーンマッピング関数はローカルピクセル周辺メトリックの範囲内の少なくとも1つの生ピクセルの近傍の少なくとも1つの他の生ピクセルの値と、生画像に基づいて決定された少なくとも1つのパラメータに基づいている。この方法は、関心領域に対するマッピングされた画像を計算することを含んでおり、このことはマッピングされたピクセル値を生成するために生画像中の生ピクセル値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセル値に対するピクセル値を決定することを含む。この方法は、マッピングされた画像を使用してシンボルをデコードすることを含んでいる。
【0012】
幾つかの例では、シンボルはバーコードシンボルである。
【0013】
幾つかの例では、関心領域を識別することは、バーコードシンボルを含んでいる生画像中の領域を識別すること、生画像全体を識別すること、生画像中の所定の領域を識別すること、またはそれらの何らかの組み合わせを包含している。
【0014】
幾つかの例では、この方法は当該方法がFPGAによって実行できるように構成される。
【0015】
幾つかの例では、ローカルマッピング関数は、ローカルピクセル周辺メトリックの範囲内のすべての生ピクセル値のピクセル値に依存する。幾つかの例では、ローカルマッピング関数はラインハルト演算子である。
【0016】
幾つかの例では、マッピングされた画像を計算することは、関心領域における各生ピクセルに異なるマッピング関数を適用することを含む。
【0017】
幾つかの例では、少なくとも1つのシンボル属性は、モジュールサイズ範囲、最小特徴サイズ範囲、シンボル幅の範囲、またはシンボル高さの範囲のうちの1つ以上を含む。
【0018】
幾つかの例では、少なくとも1つのシンボル属性は、シンボルの第2の画像に基づいて決定される。幾つかの例では、この第2の画像は同じシンボルから取得された以前の画像である。幾つかの例では、この第2の画像は、調整フェーズ中に異なるバーコードシンボルから取得した画像である。
【0019】
幾つかの例では、少なくとも1つのパラメータはシンボルの第2の画像に基づいて決定される。幾つかの例では、この第2の画像は同じシンボルから取得された以前の画像である。幾つかの例では、この第2の画像は、調整フェーズ中に異なるシンボルから取得された画像である。
【0020】
幾つかの例では、マッピングされたピクセル値を生成するために生画像中の生ピクセル値にグローバルマッピング関数を適用することにより、マッピングされた画像中の少なくとも1つのマッピングされたピクセル値のためのピクセル値にグローバルトーンマッピング技術を適用する。幾つかの例では、画像に対するグローバルマッピング関数、ローカルマッピング関数、またはその両方。
【0021】
幾つかの態様では、この技術はバーコードシンボルを読み取る方法を特徴とする。この方法は、バーコードシンボルの生画像を取得することを含み、生画像の各ピクセルは生ビット深度を有するデジタル値を持つ。この方法は生画像の関心領域を識別することを含んでいる。この方法は、関心領域におけるの少なくとも1つの生ピクセルのローカルピクセル周辺メトリックを、生画像中のバーコードのシンボル体系の属性に基づいて決定し、ローカルピクセル周辺メトリックは少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセル上で識別される。この方法は、生画像に関連付けられたビット深度より小さいマッピングされたビット深度にマッピングされたピクセル値に生ピクセルの値をマッピングする少なくとも1つの生ピクセルのローカルマッピング関数を決定し、ローカルマッピング関数はローカルピクセル周辺メトリックの範囲内の少なくとも1つの生ピクセルの近傍の1組の生ピクセルの値と、生画像に基づいて決定された少なくとも1つのパラメータに基づいている。この方法は、関心領域のためのマップ画像を計算することを含んでおり、このことはマッピングされたピクセル値を生成するために生画像中の生ピクセル値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセル値に対するピクセル値を決定することを含む。この方法は、マッピングされた画像を使用してバーコードシンボルをデコードすることを含んでいる。
【0022】
幾つかの態様では、本技術はバーコードシンボルを読み取るための装置に関する。この装置は、メモリと通信するプロセッサを含んでおり、プロセッサはメモリに記憶された命令を実行して、バーコードシンボルの生画像を取得するように構成されており、この生画像の各ピクセルは生ビット深度を有するデジタル値を持っている。プロセッサはメモリに記憶された命令を実行して、生画像の関心領域を識別するように構成されている。プロセッサはメモリに記憶された命令を実行して、関心領域における少なくとも1つの生ピクセルに対して、生画像中のバーコードのシンボル体系の属性に基づいてローカルピクセル周辺メトリックを決定するように構成されており、このローカルピクセル周辺メトリックは少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセル上で識別される。プロセッサはメモリに記憶された命令を実行して、生画像と関連付けられたビット深度より小さいマッピングされたビット深度を有するマッピングされたピクセル値に生ピクセルの値をマッピングする、少なくとも1つの生ピクセルに対するローカルマッピング関数を決定するように構成されており、このローカルピクセル周辺メトリックは、ローカルピクセル周辺メトリックの範囲内にある少なくとも1つの生ピクセルの近傍の1組の生ピクセルの値と、画像に基づいて決定された少なくとも1つのパラメータとに基づいている。プロセッサはメモリに記憶された命令を実行して、関心領域に対するマッピングされた画像を計算するように構成されており、このことはマッピングされたピクセル値を生成するために生画像中の生ピクセル値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセル値に対するピクセル値を決定することを含む。プロセッサはメモリに記憶された命令を実行して、マッピングされた画像を用いてバーコードシンボルをデコードするように構成されている。
【0023】
幾つかの態様では、本技術はプロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読記憶媒体に関し、命令が少なくとも1つのコンピュータハードウェアプロセッサによって実行されるとバーコードシンボルの生画像を取得する動作を実行し、ここで生画像の各ピクセルは生ビット深度を有するデジタル値を持つ。命令により少なくとも1つのコンピュータハードウェアプロセッサは、生画像の関心領域を識別する。命令により少なくとも1つのコンピュータハードウェアプロセッサは、関心領域における少なくとも1つの生ピクセルに対して、生画像中のバーコードのシンボル体系の属性に基づいてローカルピクセル周辺メトリックを決定し、ここでローカルピクセル周辺メトリックは少なくとも1つの生ピクセルの近傍の1つ以上の生ピクセル上で識別される。命令により少なくとも1つのコンピュータハードウェアプロセッサは、生画像と関連付けられたビット深度より小さいマッピングされたビット深度を有するマッピングされたピクセル値に生ピクセルの値をマッピングする、少なくとも1つの生ピクセルに対するローカルマッピング関数を決定し、ここでローカルマッピング関数は、ローカルピクセル周辺メトリックの範囲内にある前記少なくとも1つの生ピクセルの近傍の1組の生ピクセルの値と、生画像に基づいて決定された少なくとも1つのパラメータとに基づいている。命令により少なくとも1つのコンピュータハードウェアプロセッサは、関心領域に対するマッピングされた画像を計算し、このことはマッピングされたピクセル値を生成するために生画像中の生ピクセル値にローカルマッピング関数を適用することによって、マッピングされた画像中の少なくとも1つのマッピングされたピクセル値に対するピクセル値を決定することを含んでいる。命令により少なくとも1つのコンピュータハードウェアプロセッサは、マッピングされた画像を使用してバーコードシンボルをデコードする。
【0024】
以上、開示された主題の特徴をかなりおおまかに概説したが、それは以下の詳細な説明がよりよく理解され、また当技術分野に対する本発明の寄与がよりよく理解されるようにするためである。当然のことながら以下では開示された主題の追加の特徴が説明されるが、それらは添付の特許請求の範囲の主題を形成する。本明細書で使用されている表現および用語は説明を目的としており、限定と見なすべきではないことを理解されたい。
【0025】
添付の図面は一定の縮尺で描くことを意図したものではない。図面では、種々の図に示されているそれぞれの同一またはほぼ同一の構成要素は同じ数字で表されている。見やすさのために、すべての図面ですべての構成要素が表示されているとは限らない。図面において
【図面の簡単な説明】
【0026】
【
図1】幾つかの実施形態による例示的な画像処理システムを示す。
【
図2】幾つかの例によるグローバルトーンマッピング技術を示す。
【
図3】幾つかの実施形態により、ローカルトーンマッピングを使用して高ダイナミックレンジ画像を圧縮するための例示的なコンピュータプロセスのフローチャートを示す。
【
図4A】幾つかの例による、ガウスカーネルサイズが画像処理に及ぼし得る影響を示す。
【
図4B】幾つかの例による、ガウスカーネルサイズが画像処理に及ぼし得る影響を示す。
【
図5A】幾つかの施例により、12ビット画像において、それぞれ4-11ビット、3-10ビット、2-9ビットを示す。
【
図5B】幾つかの施例により、12ビット画像において、それぞれ4-11ビット、3-10ビット、2-9ビットを示す。
【
図5C】幾つかの施例により、12ビット画像において、それぞれ4-11ビット、3-10ビット、2-9ビットを示す。
【
図6】幾つかの実施形態により、本明細書に記載の技術に従ってローカルトーンマッピングされたHDR画像の一例を示す。
【
図7】取得された12ビットHDR画像の最上位の8ビットと最下位の8ビットである2つの8ビット画像、および幾つかの実施形態により、本明細書で述べるローカルトーンマッピング技術を使用して同じHDRから作成された8ビット画像の例を示す。
【
図8】幾つかの実施形態により、グローバルトーンマッピング技術を使用して作成された画像と、本明細書に開示されるローカルトーンマッピング技術を使用して作成された画像とを比較する。
【
図9A】8ビット画像(12ビットHDR画像の最上位の8ビット)を、幾つかの実施形態により(同じ12ビットHDR画像から)ローカルトーンマッピングされた画像と比較する。
【
図9B】8ビット画像(12ビットHDR画像の最上位の8ビット)を、幾つかの実施形態により(同じ12ビットHDR画像から)ローカルトーンマッピングされた画像と比較する。
【
図10】幾つかの実施形態により、シーンキーがどのようにHDR画像からより低いビット深度の画像へのピクセルのマッピングに影響を与え得るかの一例を示すグラフである。
【
図11】幾つかの実施例により、大きいカーネルサイズがハローを引き起こす可能性がある例示的なエッジを示す2Dバーコードの画像である。
【
図12】幾つかの実施例により、ハローを有する例示的なエッジを示す2Dバーコードの画像を含んでいる。
【
図13】幾つかの実施形態により、例示的なキャッピングとストレッチを示す2Dバーコードの画像を含んでいる。
【
図14】幾つかの実施形態により、ローカルトーンマッピングを使用して高ダイナミックレンジ画像を圧縮するための例示的なコンピュータプロセスのフローチャートである。
【
図15】幾つかの実施形態により、強度計算を説明するために使用される例示的な重み付きヒストグラムのグラフを示す。
【
図16】幾つかの実施形態により、重み付きローカルヒストグラム計算を説明するために使用される例示的ヒストグラムのグラフを示す。
【
図17】幾つかの実施形態により、12ビット値の8ビット値への例示的なマッピングを示すグラフである。
【
図18】幾つかの実施形態により、種々のトーンマッピング技術を使用して処理された例示的な画像を示す。
【
図19】幾つかの実施形態により、HDR画像の1つ以上の部分を処理から除いた例を説明するための画像を示す。
【発明を実施するための形態】
【0027】
本発明者らは、利用可能な場合によりしばしば高いビット深度の画像(例えば高ダイナミックレンジ(HDR)画像)を使用する典型的な画像処理技術とは反対に、HDR画像をローカルトーンマッピングすることによってより良好なシンボルデコードを達成できることを認識および理解した。シンボルデコード用の低ビット画像を作成する。処理のために高ビットHDR画像を低ビット画像に縮小するための基本的技術は、HDR画像の最下位ビット(例えば4つの最下位ビット)を無視して低ビットの画像を生成する線形マッピングを含むことができる。しかしながら、本発明者らはそのような基本的技術は、最小限の利益で(例えば元のHDR画像と比較して信号対雑音比の改善がほとんどまたは全くない状態で)高いデータ損失をもたらし得ると判断した。グローバルトーンマッピングは、低ビット画像を生成するためにしばしばHDR画像の各ピクセルを同じ方法で処理することが必要である。本発明者らは、グローバルトーンマッピングは(例えば線形マッピングと比較して)ある程度改善された利益を有し得るが、それでもなお顕著なデータ損失をもたらし得ると判断した。
【0028】
本発明者らは、HDR画像中の各ピクセルを個別に処理して低ビット画像を生成するローカルトーンマッピング技術を開発した。この技術は、データ損失を減らすことができ、他の技術と比較して実質的な利点を有することができ、あるいはその両方である。幾つかの実施形態ではローカルトーンマッピング技術は各ピクセルをその周辺の強度に対してマッピングすることができる。そのようなローカルトーンマッピングは、(例えばグローバルトーンマッピング技術または線形トーンマッピング技術と比較して)データ損失を減らすことができ、本明細書で説明するように他の技術と比較して実質的な利点を有する。幾つかの実施形態では、ローカルトーンマッピング技術は、各ピクセルをその周辺の強度とコントラストの両方に対してマッピングすることができる。本明細書でさらに述べるこれらおよび他の技術は、画像の種々の領域におけるコントラストを高めることができ、それは画像処理技術(例えばシンボルデコードアルゴリズム)を改善できる。幾つかの実施形態では、ローカルトーンマッピング技術は複数の画像を融合する必要はなく、単一のHDR画像のみを必要とする。
【0029】
幾つかの実施形態では、人間の観察者にとって審美的に好ましくない可能性がある画像処理アーチファクトを回避するようにHDR画像を圧縮するのではなく、ローカルオペレータはデコーダに利益をもたらすように構成される。人間の目には不快かもしれないがデコーダにとってはそうではない特性の例に、エッジ近傍の極端なコントラスト上昇(例えばハローアーチファクト)を含めることができる。そのような極端なコントラストは、一般的にコントラスト上昇であるためにデコード性能には影響を及ぼさず、それゆえデコードにとって有益であり得る。人間の目にとって不快であるかもしれない特性の他の例は、全体的コントラスト圧縮である。例えば本明細書で述べる技術は、局所的な周辺ピクセルを考慮することによってローカルコントラストを強調できようが、より大きいビット情報(例えば10/12/16ビット情報)はより小さいビット情報(例えば8ビット情報)に圧縮される。そのため幾つかの領域では、人間の目は「グレーアウト」される画像の部分を知覚することがある。しかしデコーダは(非常に)低いコントラストのシンボルを処理するように構成できる。人間の目にとって不快であるかもしれない特徴のさらに別の例は、(例えばユーザが選択した)関心領域(ROI)に対して本明細書で述べる技術を実行することである。ROI内部の情報に対して処理が実行される場合、ROIからのテクスチャまたは細部は、例えば過飽和または不飽和であり得るが、デコーダがそのような領域を処理していない可能性があるのでデコーダには影響を及ぼさないであろう。本発明者らはさらに、マシンビジョンに使用される画像処理技術(例えばシンボルをデコードする)は、画像、シンボルおよび/または環境などの異なるパラメータに基づいて実行できることを理解した。例えばこの技術は、画像処理が人間の観察者のために維持されている伝統的な態様を考慮に入れない(または悪化させる)場合でも、結果としてデコードが成功するように構成できる。
【0030】
以下の説明では、開示された主題の完全な理解を提供するために、開示された主題のシステムおよび方法、ならびにそのようなシステムおよび方法が動作できる環境などに関して多くの具体的な詳細が述べられる。加えて、以下に提供される例は例示的であり、開示された主題の範囲内に属する他のシステムおよび方法があることが想定されることが理解されるであろう。
【0031】
本明細書で提供される参照例の幾つかは、シンボル(例えば線形バーコードまたは2次元バーコード)を有するHDR画像の文脈における技術を説明する。これらの例は例示の目的のためだけであり、限定することを意図するものではない。この技術はシンボルを分析しない他の一般的な検査用途にも使用できることを理解されたい。例えばこの技術は、システムが例えば明るい下地の上の暗い特徴(又はその逆)を検査しようとする場合に、二値画像アプリケーションに使用することができる。そのような技術は、本明細書でさらに述べるパラメータを設定するために使用できる関心のある特徴サイズ(例えば最小特徴サイズおよび/または最大特徴サイズ)に基づいて構成できる。
【0032】
図1を参照すると、本明細書で述べる技術の態様は、移送ライン30がオブジェクト26a、26b、26cなどを移動方向25に沿って移動させる例示的な撮像システム/移送ライン10の文脈で説明される。当業者は、撮像システム10は例示的な固定設置型アプリケーションであり、オブジェクト上のシンボルを読み取るための開示されたシステムおよび方法は、ハンドヘルドアプリケーションを含む他のアプリケーションにも適用可能であることを理解するであろう。
【0033】
この例では、各オブジェクトは類似の物理的特性を有しており、それゆえ1つのオブジェクト、例えばオブジェクト26bだけを詳細に説明する。具体的には、オブジェクト26bは、オブジェクト26bが移送ライン30によって動かされるときに概して上方を向く表面27を含んでいる。識別目的のために、シンボル24aが上面27に付けられている。各オブジェクト26a、26cの上面には、同種のシンボル24aが付けられている。
【0034】
画像処理システムは、光学系24を有するセンサ22を含んでおり、光学系24は移送ライン30がオブジェクト26a、26b、26cなどを通過させるセンサ22の下方の視野28を画定している。したがってオブジェクトが移動方向行25に沿って移動すると、各上面27は視野28内に入る。視野28は、全上面27が視野28内のある点または別の点に位置し、したがってオブジェクトの上面27に付けた何らかのコードが視野28を通過して、センサ22によって画像にキャプチャできるように十分に大きくすることができる。オブジェクトが移動方向25に沿って移動すると、センサ22は上面27に付けられたシンボル24aの部分的な断片をキャプチャできる。当業者は、視野は1つ以上のオブジェクトをキャプチャできるほど十分に大きくてもよいことを理解するであろう。さらに画像処理システム10は、ヌニンクらの「ビジョンシステムにおける視野の拡大のためのシステムおよび方法」と題する米国特許第8646690号に記載されているように、2つ以上のセンサおよび/または視野拡大器を有するセンサを含むことができ、その内容は全体が本明細書に組み込まれている。
【0035】
画像処理システム10はまたコンピュータまたはプロセッサ14(または複数のプロセッサ)を含んでおり、これらのプロセッサはセンサ22からの画像を受信し、画像を検査して、シンボル候補としてのシンボルのインスタンスを含むことができる画像の下位部分を識別し、それから現在視野28内にあるオブジェクトを識別するための努力において各シンボル候補をデコードすることを試みる。この目的のために、センサ22はプロセッサ14と連結されている。インタフェースデバイス16/18もプロセッサ14と連結して、システムユーザに視聴覚出力を提供することができ、同様にユーザに撮像システムを制御し、撮像システムの動作パラメータを設定し、撮像システムの問題をトラブルシュートするなどのための入力を提供することができる。センサ22はプロセッサ14から分離し示されているが、当業者はプロセッサ14をセンサ22に組み込むことができ、および/または特定の処理をセンサ22とプロセッサ14との間イマジンを分配できることを理解するであろう。少なくとも幾つかの実施形態でシステムは、移動方向25および/または移送ライン30が視野を通ってオブジェクトを移送する速度を識別するために使用できる、移送ライン30に隣接して配置されたタコメータ(エンコーダ)33も含んでいる。
【0036】
幾つかの実施形態では、センサ22およびプロセッサ14は、1Dおよび2Dコードなどの種々のシンボルをスキャンして読み取る工業用画像ベースバーコードリーダのコグネックスデータマンおよび/またはコグネックスMXシリーズである。幾つかの実施形態では、本明細書で述べる画像処理技術は、画像処理を実行する(例えば本明細書で述べるローカルトーンマッピング技術を実行する)専用メモリおよび計算リソースを含むセンサ22に埋め込まれたシステム上で実行される。幾つかの例では、単一のパッケージはセンサ(例えばイメージャ)および画像処理を実行するように構成された少なくとも1つのプロセッサ(例えばプログラマブルプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ARMプロセッサ、およびARMプロセッサおよび/または同種のものを収容する。
【0037】
幾つかのセンサは各ピクセルに対して多くのビット(例えば1ピクセル当たり8ビット以下に比べて12ビットまたは16ビット)を用いることにより、高ダイナミックレンジ画像を取得するオプションを提供する。しかしながら、そのような高ダイナミックレンジ画像をマシンビジョン技術に使用することは必ずしも有益ではないことがある。例えばシステム構成に応じて、メモリ使用量および計算または処理能力の制限がある場合がある。別の例としての実用的なソフトウェア上の制限、例えばデータ画像構造の設計上の制限、またはシンボルを見つけてデコードするために使用する画像解析ツールによって課される高ビット深度サポートの制限などがある。例えば16ビット演算を行うには8ビット演算よりもはるかに多くの時間と演算ユニットが必要となり、また通常は内部結果を保存するためにはるかに多くのメモリが必要になる。別の例として、表示装置は8ビット表示のみをサポートし、したがってユーザによってディスプレイを通して見られた画像がデコーダによって処理のために使用される画像と異なる場合は、デコード結果を理解することが困難なことがある。したがって幾つかの実施形態では、そのような高ダイナミックレンジ画像は直接シンボルデコードアルゴリズムによって分析されず、むしろ高ダイナミックレンジ画像はローカルトーンマッピング技術を用いて処理する前に8ビット画像に圧縮される。
【0038】
幾つかの状況では、シンボルを適切に読み取るために必要とされる情報は、単一のHDR画像にキャプチャされた(例えば複数の画像が必要とされないように)。本明細書に開示された技術は、HDR画像から暗い領域と明るい領域に関する有用な情報を抽出し、抽出された情報を1つの限られたビット深度(例えば8ビット)画像に結合させることを提供する。限られたビット深度の画像はデコードするために使用することができ、それによって各画像および/または画像中の関心領域に対して局所的に調整されるようにデコードを達成する。
【0039】
トーンマッピングのための幾つかの技術は、例えば各ピクセルに同じピクセルマッピング関数を適用することによって、各画像の各ピクセルに対して同じ方法で実行されるグローバルトーンマッピングを含むことができる。そのような技術は当技術分野において公知であり、時には撮像センサの構成可能な選択肢である。例えば暗い領域のコントラストを高める目的、明るい領域のコントラストを高める目的、および/またはある明るさの範囲にわたる領域のコントラストを中間的に高める目的で種々のグローバルマッピング関数を使用できる。しかしながら、そのようなグローバルマッピングは、高ダイナミックレンジ画像の全範囲に対してコントラストを最適化することがほとんどできない。
図2は幾つかの例による区分的線形トーンマッピングの一例を示す。この例示的なグローバルトーンマッピング曲線は、暗い領域における細部を強調するために使用できる。しかしながら、それには幾つかの制限がある。すなわち、1)暗いピクセルはよりグレーな値に押しやられることがあり、2)画像中の明るい細部が最小化されることがあり、3)より暗い背景テクスチャが生成されることがある。これらの制限の各々と関係するピクセルがサンプル画像210に示されている。参照符号1はよりグレーな値に押しやられ得る暗いピクセルを表し(制限1)、参照符号2は最小化できる画像中の細部を表し(制限2)、参照符号3は強調できるより暗い背景テクスチャを表す(制限3)。これらの成分は曲線220をもたらし、この曲線は12ビットの生ピクセル値(x軸、230)を8ビットのトーンマッピングされたピクセル値(y軸、240)にマッピングするために使用される。曲線220は、3つの領域、すなわち暗いピクセルの強調220A(領域1)、明るいピクセルの圧縮220B(領域2)、および飽和したピクセル220C(領域3)を図示している。したがって区分的線形トーンマッピングでは、曲線220に示すようなこの3成分技術が画像中のすべてのピクセルに適用される。
【0040】
グローバルトーンマッピング技術は、通常最初のオフライン調整プロセスの後に固定されるので、各画像および/または画像中の関心領域に合わせて調整されない。グローバルトーンマッピング曲線が画像ごとに構成された場合でも、それは依然として生(原)ピクセル値の限られた範囲のコントラストを向上させるように限定されるであろう。グローバルトーンマッピング技術は、極端な光に曝される画像や、調整後に画像中のサンプル位置が変わる場合など特定の画像ではうまく機能しない場合がある。グローバルトーンマッピング技術はまた、暗いピクセルをグレーのピクセルに押しやるときなどに明るい細部を失う可能性もある。グローバルトーンマッピングは暗い背景テクスチャを強調することがあるが、これはシンボルの読み取りを遅くする可能性がある。
【0041】
本明細書で述べるローカルトーンマッピング技術は、画像ごとおよび/またはピクセルごとにピクセル処理を構成することができる。本明細書でさらに説明するように、ローカルトーンマッピングは合成画像およびグローバルトーンマッピングと比較してより良好なシンボルデコードを達成できる。例えばローカルトーンマッピングは、例えばグローバルトーンマッピング技術と比較して、画像全体のピクセルのダイナミックレンジおよびピクセルコントラストを強調できる。別の例として、ローカルトーンマッピングは画像全体の種々の局所的領域について、さらにピクセル圧縮を調整できる。さらに別の例として、ローカルトーンマッピングは、暗い領域と明るい領域の両方についてコントラストを強調できる。
【0042】
図3は、幾つかの実施形態によりローカルトーンマッピングを使用して高ダイナミックレンジ画像を圧縮する例示的なコンピュータプロセス300のフローチャートを示す。ステップ302で、イメージャは高ダイナミックレンジ画像を取得する。上述したように幾つかのセンサは、ピクセル当たり8ビット以上(例えば10ビットまたは12ビットまたはそれ以上)のビット深度を有する画像を取得する能力を持っている。
【0043】
ステップ304で、イメージャと関連する処理ユニット(例えばARMプロセッサ、またはイメージャと同じハウジングに組み込まれたFPGA)が、画像処理のためのパラメータを決定する。処理ユニットは、1つ以上の技術を用いてパラメータを決定することができる。例えばパラメータは、現在取得した画像から実際の値に基づいて計算できる。別の例として、パラメータは以前取得した画像からの推定値であることができる(これは例えば現在の画像に対して精緻化できる)。以前のパラメータを推定値として使用することは、新しい画像の処理を改善および/またはスピードアップするのに役立ち得る。さらに別の例として、パラメータを構成プロセス中に構成できる。例えばパラメータを経験的に決定して、パラメータが高いデコード率を達成することを確実にするために1組のテスト画像についてテストすることができる。
【0044】
パラメータは、例えばシーンキー、すなわち最小ピクセル値および/または最大ピクセル値を含むことができる。シーンキーは、関心のある画像のピクセル強度値を平均することによって、例えば画像中のすべてのピクセルを平均化することによって、および/または画像中の1つ以上の関心領域(ROI)(例えばデコードするシンボルを含む可能性が高いと判断された領域、またはシステムオペレータによって選択された領域)のピクセル強度値を平均化することによって計算できる。幾つかの実施形態では、シーンキーは同じであるか、または以前の実行時に分析された画像の以前のROIで計算された調整済みシーンキーであることできる。例えば処理システムが現在の画像についていかなる知識も持っていない場合、システムは画像全体の平均強度を使用できる。幾つかの実施形態において、シンボルが配置される場所をシステムが知っている場合など(例えば照準器を使用する場合は視野の中心、または調整がシンボルのおおまかな位置を応答する場合、および/またはテクスチャベースの分析を実行することにより)、処理システムはこのより小さい関心領域における平均強度を使用できる(例えばそれにより注意をそらす背景領域の影響が少なくなる)。
【0045】
幾つかの例では、最小/最大値は現在の画像からの実際の最大/最小値、および/または画像の最大/最小部分(例えば5%)であり得る。別の例として、最小/最大値は以前の画像からの推定値であり得る。さらに別の例として、その最小値/最大値は画像キャプチャリングで使用される照明および露出/ゲイン値に基づいて事前に設定できる。
【0046】
ステップ306で、処理装置は各ピクセルに対する周囲情報を決定する。例えば処理装置は1つ以上の技術を適用して周辺ピクセルを分析することができる。局所周辺ピクセル情報は、ローカルコントラストを強調しながら中心ピクセル強度を調整するために使用される。幾つかの例では、処理装置はガウスカーネルを用いて周辺ピクセルを分析する。処理装置は、ガウスカーネルを用いて各ピクセルの周辺ピクセルの強度を計算するために特定のサイズ(例えば半径)を決定するように構成することができる。
【0047】
ガウスカーネルのサイズは、シンボルの適切なデコードに影響を与えることができる。例えばサイズはローカルコントラストを強調するために十分大きい必要があり、および/またはデコードを劣化させるアーチファクト(例えばデコーダにエッジがない所にエッジがあると思わせるようなアーチファクト)の作成を避けるために十分小さい必要があろう。別の例として、カーネルのサイズはシンボル属性および/または特性に基づいて設定されてもよい。例えばシンボルの属性および/または特性は1つ以上の最小値、最大値および/またはモジュールサイズの範囲、最小特徴サイズ、シンボルの幅、シンボルの高さ、および/またはこれに類するものを含むことができる。
【0048】
図4Aと
図4Bは、幾つかの例によりガウスカーネルサイズが画像処理に及ぼし得る影響を示している。
図4Aは、カーネルのサイズが小さすぎると、各モジュールは周辺ピクセルからの十分な情報を提供せず、その結果コントラスト上昇が不十分なことがあることを示している。
図4Bは、カーネルサイズが大きすぎると、それは白い領域の各側に黒いハロー(例えば白い領域424の各側に黒いハロー420、422)などのアーチファクトを引き起こすことがある。当業者は、本明細書で述べるこれらの画像および他の画像は例示目的のためであり、限定することを意図していないことを理解するであろう。
【0049】
したがって処理装置はガウスカーネルサイズを設定するために分析する適切な数の周辺ピクセルを決定できる。例えば処理装置はガウスカーネルサイズをシンボルおよび/または画像の特性に基づいて決定できる。例えば処理装置はカーネルのサイズを、シンボル中にモジュールまたはエレメントが幾つあるか、モジュールまたはエレメントはどれほど大きいか、および/またはシンボルの種類(例えば1Dまたは2Dシンボル)に基づいて決定できる。別の例として、デコードの努力が成功しなかった場合でも、それはシンボルまたは現在の画像に関する何らかの情報を生成できよう。例えばデコーダは各モジュールが(例えばピクセルに関して)どれほど大きいかを決定することができ、そのためデコーダはモジュールサイズに従ってカーネルのサイズを調整することができる。他の例として、デコーダはシンボル領域におけるコントラストを決定できる。例えばコントラストが非常に低い場合(例えば暗い背景上の暗いシンボル、または白い背景上の明るいシンボル)、デコーダはより大きいカーネルを使用できる。なぜなら、例えば大きいカーネルを使用することは、より強いコントラスト供用を導入することになるであろうからである。
【0050】
幾つかの実施形態では、処理装置はデコードの結果に応じて異なるカーネルサイズを繰り返し試すことができる。例えばデコードは失敗したが、その試みの間にシンボル情報を取得する場合、処理装置は上述したようにシンボルおよび/または画像に基づいてパラメータを変化させることによってカーネルサイズを再計算することができる。
【0051】
幾つかの実施形態では、カーネルサイズは事前設定された調整および/または以前に処理された画像に基づいて決定できる。別の例として、カーネルサイズは、調査中の特定のオブジェクト、撮像設定および/または撮像環境に基づくことも含め、訓練データベース上で技術をテストして特定のカーネルサイズについて成功したデコードの見込みを決定することによって決定できる。
【0052】
幾つかの実施形態では、カーネルサイズはアーチファクトを生成することが知られている。本明細書で述べるように、ガウシアンカーネルのサイズは、人が見る目的のためにアーチファクトを回避するように(例えば画像が視覚的に審美的な方法で処理されるように)選択する必要がない。例えばシンボルが適切にデコードされることになる場合、ハローは画像にとって許容可能な処理結果であり得る。幾つかの例によれば、大きいカーネルサイズは、
図11に示した例示的なエッジ1102、1104のような強いエッジでハローを引き起こすことがある。幾つかの実施形態では、最良の周辺領域(例えばカーネルサイズ)は顕著なコントラストの変化が生じない最大の領域であるべきであり、そのカーネルサイズは各ピクセルの固有の局所的特徴に基づいてピクセルごとに決定されるべきである。幾つかの実施形態では、ピクセルごとのカーネルサイズを決定するのではなく、技術は画像全体の中の複数のピクセルおよび/またはすべてのピクセルに対して1つの固定サイズのカーネルを使用できる。カーネルのサイズは画像ごとに設定可能である。
【0053】
上述したように、ハローアーチファクトは、1つの固定サイズのローカルカーネルを使用することによって引き起こされることがあるアーチファクトの一例であり、これはしばしばエッジにおいて強いコントラスト上昇をもたらす(例えば高コントラストシンボルの場合)。幾つかの実施形態では、デコーダは最小特徴サイズ(例えばppmまたはモジュール当りピクセルで測定したモジュールサイズまたは最も狭いバー幅)が特定の範囲内にある場合にシンボルをデコードするように構成されている。シンボルが大きすぎるか小さすぎる場合、システムは最初にシンボルを正しいサイズに再スケールしてシンボルが範囲内にあるようにすることができる。したがってカーネルサイズは、範囲の上限など最小特徴サイズに基づいて決定できる。カーネルサイズを最小特徴サイズに基づいて決定することは、異なるサイズのシンボルに対してローカルコントラストを強調できる。例えば小さいコードで大きいカーネルを使用するとハローアーチファクトを起こすことがあるが、ハローはある意味ではデコードに影響を与えない極端なコントラスト上昇であるため、そのようなハローアーチファクトはデコードプロセスに悪影響を与えることはないであろう。例えばカーネルのサイズは、デコーダによって見られている(または見られるであろう)シンボルの最小特徴サイズの上限に基づいて決定できる。大きいカーネルを使用することは(例えばより小さいカーネルで十分である場合であっても)よい追加の計算時間を必要とするが(例えばすべてのピクセルで畳み込まれる必要があるため)、カーネルのサイズおよび/または係数は実行速度を改善するために最適化できる。
【0054】
一例として、ハローアーチファクトができる中心とその周囲強度が非常に異なっている場合に見られる。例えばハローアーチファクトは高コントラストエッジの近傍で見られる。
図12は、幾つかの例に従い、ハローを有する例示的なエッジを示す2Dバーコードの画像1200および1250を含んでいる。画像1200を参照すると、人間の目は円で囲まれたエッジの近傍のより明るい帯を見ることができるが、そのようなより明るい帯は余分に検出されるエッジおよび/またはモジュールが白または黒のいずれのモジュールとして分類されるべきか判定する困難を引き起こすことはないであろう。画像1250を参照すれば、モジュールが小さいと、種々の特徴からのハローは円で示すように互いにつながることがある。そのようにつながったハローは強いコントラスト上昇のように作用することがある(例えば白いモジュールの原(生)強度は円1252に示すようにグレーにマッピングされたが、円1254に示すように白にマッピングされた)。そのような強いコントラスト上昇はほとんどの場合にデコーダに利益になることができる。
【0055】
許容できるその他のアーチファクトは、コントラスト低下を含む。トーンマッピングアルゴリズムは、高いビット深度(例えば12または16ビット)画像の細部を単一の8ビット画像にキャプチャできるので、これらの細部をより多く見ることができる(
図5A、
図6で円502、602でマークした区域は、502に示す上部原画像ではかろうじて見えるだけであるが、602に示すローカルトーンマッピングされた画像でははるかに鮮明である)。しかしパラメータに応じて、幾つかの領域は原画像より低いコントラストを有することがある(例えば
図5A、
図6の2つの画像で円504、604によってマークされた区域)。そのような低いコントラストは、一般的に低コントラストコードを扱うことができるデコーダにとっての問題ではない。さらに、パラメータはデコードに対する影響を最小限に抑えるために、本明細書に記載されるように調整することができる。
【0056】
実行時画像の取得、圧縮および/またはデコード中に、処理装置はさらに最小特徴サイズに基づいて対応するカーネルサイズを構成できる。例えば現在構成されているカーネルサイズは大きいが、より小さいコードに対してシステムはより小さいカーネルを選択できる(例えば計算および/またはメモリリソースをさらに節約するため)。システムが(例えばオフライン調整、訓練または手動ユーザ入力から)シンボルの最小特徴サイズの大きさに関する知識を持っていたら、システムはそうすることができる。
【0057】
当業者は、ステップ304と306が別々におよび/または組み合わせて実行できることを理解するであろう。参照例として、ステップ304および306に関連して述べた幾つかのパラメータは、例えばステップ302の前にオフラインで構成することができる。例えばある範囲の異なるトーンマッピングパラメータ設定(例えばカーネルサイズを含む)をテストできる。各設定は、読み取られる必要があるシンボルのための一連のシンボル属性(および/または照明条件など他の条件)を代表する1組の画像(例えば大規模な画像データベースに保存されている)をデコードすることを試みることによってテストできる。画像セットでのデコード性能を最適化する(正しく読み取られるシンボルの数を最大化し、誤読を最小化する)パラメータの設定は、イメージャまたはリーダで使用するために選択できる。画像がキャプチャされる必要があると考えられるシンボル属性は、例えば最小特徴サイズ、モジュールサイズ、背景テクスチャ、シンボルサイズ、シンボル体系のタイプなどを含むことができる。
【0058】
オフライン調整の別の参照例として、上述したように全体的性能を最適化する単一のセットのパラメータのみを決定するのではなく、下位範囲のシンボル属性について最良のパラメータ設定を決定できる。幾つかの実施形態では、実行時に属性のどれかが知られているならば、より最適なパラメータ設定を特定の撮像環境の属性に合わせることができる。例えばパラメータは、オペレータがそれら(例えばコードタイプ)を顧客サイトで手動で設定するので既知であり得る。なぜならそれらは例(例えばモジュールサイズ)などによって学習または訓練されるからである。
【0059】
別の参照例では、パラメータは特定の用途に対して調整できる。これは上述したパフォーマンス調整と同様に達成できるが、特定の展開に対して行なわれる。例えば画像データベースを使用する代わりに、リーダは最初に画像を自動的に取得し、照明および他の取得設定、例えば露出やゲインを体系的に変更できる。そのような技術は、場合により1つ以上のシンボルの画像を取得することを含みながら、トーンマッピングパラメータの設定を最適化するために使用できる。
【0060】
調整のために単一のシンボルのみが使用される場合、シンボルをデコードし、測定された属性(例えばモジュールサイズまたはシンボルサイズ)を使用して最適なトーンマッピングパラメータを選択できる。たとえ1つ以上のシンボルが使用される場合でも、可能な属性の範囲(例えばモジュールサイズの範囲)を使用してパラメータを選択できる。その決定はヒューリスティック分析(以下でさらに述べる)を活用することができ、および/または上記のように事前に決定されることができる適当な下位範囲の設定のために最良のパラメータ設定を使用できる。
【0061】
別の参照例として、設定は以前に圧縮されたおよび/またはデコードされた画像に基づくことができる。そのような処理は、例えば前の例で上述した方法で、画像間でオンラインで実行できる。幾つかの例では、画像がシーケンスの最初の画像である場合、既定のパラメータ値を最初の画像に使用できる。例えばシステムがシンボルを追跡できる場合、システムはシステムが新しいシンボルを見ているかどうかについての知識を組み込むことができる。例えばシンボルを追跡するために、「光学コードを追跡するためのシステムおよび方法」と題する米国特許出願第14/510689号に開示されている追跡技術を使用でき、参照によりその全体が本明細書に組み込まれる。
【0062】
上述した実施例と技術は、互いに排他的ではあり得ない。例えば手動調整方法を使用して「既定の」トーンマッピングパラメータに使用される設定を決定でき、実行時調整ステップを使用して設定を改良できる。別の例として、例えば以前の画像について決定されたパラメータの活用が現在の画像に適用されるように、同じシンボルを経時的に追跡していることが分かっている場合、以前の画像を使用して既定パラメータをオーバーライドできる。
【0063】
ステップ308で処理装置は、例えばデコードプロセスに影響を及ぼし得るアーチファクトを回避するために、中央・周囲比を任意に調整する(例えばキャッピングする)。幾つかの実施形態では、最大閾値は、比率が閾値を下回ることを保証するために中央・周囲比を調整するように構成できる。例えば中央・周囲ピクセル強度比は、周辺領域で急激な強度変化によって生じるハローアーチファクトがデコードに影響を与える場合は、そのようなハローアーチファクトを回避するために一定の割合にキャッピングすることができる。閾値は、ステップ304および306に関連して述べたパラメータと同様の方法で、例えば調整または訓練ステップの一部としてオフラインで決定できる。
【0064】
本明細書で述べたように、視覚的アーチファクト(例えばハロー)は一般的にデコード結果に影響を与えることはないので、ステップ308との関連で述べたキャッピングおよび/またはステップ312に関連して述べるストレッチは任意である。幾つかの実施形態では、画像はデコーダのための入力として使用されるだけでなく、ユーザに視覚的なフィードバックを提供することもある(例えばSDK上で)。さらに幾つかの実装形態では、例えば使用されるデコード方法に応じて、視覚的アーチファクトがデコードに影響を及ぼすことがある。したがって画像を視覚的に快適にすることが望ましい場合がある。
【0065】
図13は、幾つかの実施形態による例示的なキャッピングとストレッチングを示す2Dバーコードの画像1300、1320、1340、1360を含んでいる。画像1300は中央・周囲トーンマッピングの例を示すにすぎず、1302、1304に示されているようにエッジ近傍の黒と白のハローを含んでいる。画像1320は、キャップを用いた中央・周囲トーンマッピングの一例を示す。画像1320は、中央・周囲差をキャッピングすることによって画像1300における1302、1304と同じ位置の近傍で見られるハロー効果が少ないことを実証している(画像1320では1322および1324で表示)。しかし、画像1320のコントラストは画像1300より低い。画像1340および画像1360については、以下にステップ312と関連してさらに述べる。
【0066】
別の例として
図10を参照すると、グラフ1000(例示的な目的のためにシーンキーを用いた非線形マッピングとガウスカーネルのサイズ=1のみ使用)は、12ビットピクセルが0~255の範囲内の値にマッピングされることが保証されているが、最大値は必ずしも255に達しないことを示している。幾つかの例で最大値が255に達しない場合は、画像は洗い流されたように見えることがある。トーンマッピングされた画像のダイナミックレンジを最大化して8ビット(0~255)の強度差を最大限に活用するように、マッピングされたピクセルを調整する(例えば線形にストレッチする)ことができる。
【0067】
幾つかの実施形態において、画像中の特定の領域に対して最小値と最大値を決定できる。例えばシステムはシンボル領域における最大値と最小値を決定できる(例えばシンボルコントラスト以前の画像または以前のデコード努力から得ることができる)。システムは全体として画像中の他の背景領域を考慮せずに、ただ当該領域内の最大値と最小値を使用してコントラストを最大化できる。
【0068】
ステップ310で、処理装置は、以前のステップで決定されたパラメータ(例えばステップ304および306で決定されたパラメータ)に基づいてローカルトーンマッピングを実行する。トーンマッピングは、例えば10ビットまたは12ビットHDR画像を8ビットの画像に圧縮することによって、高ダイナミックレンジ画像(例えばHDR画像)をより低ダイナミックレンジ画像に圧縮する。
【0069】
例えばローカルトーンマッピングを適用するために、次のマッピング式を使用できる。
(式1)
ここで、
CenterPixelIntensityは、特定のピクセル強度値である。
SceneKeyは、(例えば画像中のピクセルを平均することによって)画像について計算されたシーンキーである。
SurroundingIntensityは、ピクセルについてその周辺ピクセルに基づいて(例えばガウス核を使用して)計算される。
【0070】
SceneKeyを参照すると、上述のようにシーンキーは、画像全体の平均強度または関心領域に基づいて計算できる(および/または現在の画像または以前の画像から取得できる)。
図10のグラフは、幾つかの実施形態により、シーンキーがHDR画像から低ピクセル画像へのピクセルマッピングにどのように影響を与えることができるかを示している。グラフ1000のx軸は12ビットのピクセル値であり、グラフ1000のy軸は8ビットのピクセル値である。グラフ1000に示されているように、シーンキーは非線形マッピング曲線の形状を制御し、この曲線はピクセルが12ビットのピクセルから8ビットピクセルにマッピングされる方法を制御する。より小さいキー値は、キー値=200で第1の赤色の曲線1002によって示されており、これは原画像は比較的暗く、それゆえ暗い領域ではさらに強調する必要があることを示している。曲線1002は他の曲線1004(キー値750)と曲線1006(キー値2000)より高いので、シーンキー200を使用したピクセルの全体的強度は、他の曲線1004、1006と比較して増加されている。
【0071】
幾つかの実施形態では、各ピクセルに異なるマッピング式が適用される。例えばCenterPixelIntensityおよび/またはSurroundingIntensityは、種々のピクセル間で異なってよく、その結果各ピクセルに対して異なるマッピング式が使用されることになる。
【0072】
ステップ312で、処理装置はステップ310において計算されたピクセル強度値を調整するように構成できる。例えば処理装置は、トーンマッピング画像の強度をストレッチして8ビットダイナミックレンジを完全に利用して圧縮画像を生み出すように構成できる。幾つかの実施形態では、処理装置は、ステップ304で決定された最小および最大ピクセル値を使用して線形ストレッチを実行できる。
【0073】
さらに
図13を参照すると、画像1340はピクセルストレッチを用いた中央・周囲トーンマッピングの一例を示している。例えば8ビットのダイナミックレンジを完全に利用するために線形ストレッチが追加される。画像1340は、例えば画像1300と比べて全体コントラストは良好であるが、より深刻なハローを被っている。画像1360は、中央・周囲トーンマッピング、キャップ(ステップ308に関連して説明された)およびストレッチの例を示す。画像1360の結果は人間の視覚には心地よく、目に見える軽微なハローのみ含んでいるが、これらは人間の観察者にとっては煩わしくないと思われる。
【0074】
したがって本明細書で述べる技術は、(例えばシーンキーによって調整される)画像の全体的な態様と、周囲のピクセル強度によって調整される各トーンマッピングに固有の局所的な態様とを組み合わせたローカルトーンマッピング技術を提供する。そのような技術は計算上効率的であり、したがって組み込みシステムによって(例えばログオペレータおよび/またはマルチスケールカーネルなどの集中計算を回避することによって)実行できる。それゆえこの技術は、FPGA、DSPS、ARMプロセッサ、GPUおよび/または他の専用チップなど、可変プラットフォーム上で実行するのに適している。幾つかの実施形態では、この技術は例えばE.ラインハルト、M.スターク、P.シャーリー、およびJ.フェルヴェルダ著「デジタル画像のための写真階調再現」(ACMトランザクション・オン・グラフィックス、2002年)で述べられているラインハルト演算子を含むことができ、参照によりその全体が本明細書に組み込まれる。
【0075】
図5A-5Cは、幾つかの実施例により、視野内に9コードを含む12ビット画像中にそれぞれ4-11ビット、3-10ビットおよび2-9ビットを示している。
図5Aの画像を処理すると、システムは左上の2コードと中央右のコードのみをデコードできる。
図5Bの画像を処理すると、システムはより多くのシンボルをデコードできるが、右上隅のコードは完全に洗い流されている。
図5Cの画像を処理すると、元の
図5Aで暗いコードは見えるが、より多くのシンボルが飽和している。したがってシステムが両方のシンボルをデコードするのに必要なすべての情報が12ビット原画像にキャプチャされているが、この画像の8ビットサブセット画像にはキャプチャされていない。
図6は、幾つかの実施形態により、本明細書に記載の技術に従ってこの12ビット画像からローカルにトーンマッピングされたHDR画像の一例を示す。
図6の画像を処理するとき、システムは単一のキャプチャされた画像のみを使用して全コードをデコードできる。
【0076】
図7は、12ビットHDR画像700の最上位8ビットと、シンボルの同じ12ビットHDR画像720の最下位8ビットの別の例を示しており、いずれもシンボルの読取りに至らない。本明細書で説明したローカルトーンマッピング技術を使用してこの12ビットHDR画像から作成された画像750によって、システムはシンボルをデコードする(または読み取る)ことができた。
【0077】
図8は、幾つかの実施形態により、グローバルトーンマッピング技術を使用して作成された画像と、本明細書に開示されているローカルトーンマッピング技術を使用して作成された画像とを比較する。区分的線形グローバルトーンマッピングはシンボルに対して局所的に最適化されず、したがって結果として得られる画像820、822は、ローカルトーンマッピングを使用する場合と比較して明瞭なシンボルをもたらさず、暗い領域と明るい領域両方のコントラストを強調する画像840、842を生成する。画像820と画像840は、それぞれ視野内の暗い領域と明るい領域に位置する複数のコードの例を示す。画像822と画像842は、半分の暗い領域と半分の明るい領域を有する1つのコードの例を示す。
【0078】
図9A-
図9Bは12ビットHDR画像の最上位8ビット(
図9A)と、同じ12ビットHDR画像から計算されたローカルトーンマッピングされた画像(
図9B)を比較する。8ビット画像9Aはシンボルの読取りに至らなかった。幾つかの実施形態では、デコーダは8ビット画像(例えば9A)よりも速くトーンマッピングされた画像(例えば9B)をデコードすることができ、および/または画像中のシンボル体系の数に応じてより多くのシンボル体系が見えることがある。
【0079】
ローカルトーンマッピング技術は、暗い領域を有する画像などHDR画像の特性に応じて、そのようなより暗い領域の細部を強調できる。本発明者らは、各ピクセルをその周辺の強度およびコントラストの両方に対してマッピングするコントラストベースのローカルトーンマッピング技術を発見して発展させた。このコントラストベースの技術は、(例えば取得された画像、シンボル体系などに依存して)データ損失を改善するため、暗い領域に加えて露出過多(例えば明るい)領域を強調するため、および/または同様のことに使用できる。例えば暗い領域と明るい領域の両方を含む画像の場合、コントラストベースのローカルトーンマッピング技術は、明るい区域と暗い区域の両方の細部を(例えば画像強度にかかわらず)強調できる。
【0080】
図14は、幾つかの実施形態により、高ダイナミックレンジ画像を圧縮するためにローカルトーンマッピングを使用するための例示的なコンピュータ処理のフローチャートを示す。ステップ1402で、イメージャはHDR画像(例えば
図3のステップ302に関連して述べた10、12または16ビットの画像)を取得する。ステップ1404で、処理装置は関心領域、例えば1つ以上のシンボル(例えばバーコード)を含んでいる可能性のある1つ以上のROIを決定する。
【0081】
ステップ1406で、処理装置は生画像中のシンボルのシンボル体系の1つ以上の属性を決定する。属性は、例えば属性の最小サイズ、最大サイズまたはその両方(例えば範囲)を含むことができる。例えば属性は(例えば最大および最小PPMに基づいて決定された)可能なバーコード解像度の予想される範囲を含むことができる。PPMは、例えばモジュールサイズ、特徴サイズ、シンボルの幅および/または高さ、および/またはシンボル体系の他の側面を測定できる。
【0082】
ステップ1408で、処理装置は各ピクセルのための周囲情報を決定する。例えばデバイスは、ステップ1406で決定された1つ以上の属性を使用して、ローカルトーンマッピングを実行するために幾つかの周辺ピクセルを決定できる。幾つかの実施形態においてシステムは、例えばバーコード解像度レンジを用いてガウス周辺サイズ(例えばシグマ)を決定できる。例えばシステムは、十分な数のピクセルにわたるガウスカーネルサイズを決定することができ、その結果カーネルは、デバイスが処理しているピクセルの各次元において少なくとも少数のモジュールを含む。
【0083】
幾つかの実施形態で、本技術は、領域内(例えばガウスカーネル内)の各ピクセルに対する情報を決定する。例えば幾つかの実施形態において、処理装置は座標(i、j)を有する領域における各ピクセルに対して強度(強度(I、J))およびコントラスト(コントラスト(I、J))を決定する。処理装置は、例えばローカルピクセルの平均、中央値、または局所最大値と局所最小値の平均を使用して強度を決定できる。処理装置は、例えば標準偏差、ヒストグラムおよび/または同種のものを使用してコントラストを決定できる。幾つかの実施形態では、処理装置は重み付きメトリックを決定できる。例えば処理装置は局所周辺におけるピクセル強度の加重平均および加重標準偏差を決定できる。これらの重みは、例えばガウス分布によって決定できる。例えばG(X、シグマ)が幅σ(標準偏差)を有するガウスの1次元ガウス分布であり、xが分布中心からの距離とすると、ピクセルの重みはG(d、σ)であることができ、ここでdはピクセルの周辺中心からの距離である。幾つかの実施形態ではG(x、σ)は、局所周辺に対する重みの合計が1になるように正規化できる。例えば、G(x)=e
-(x^2)/(2×σ^2)/Nであり、ここでNは
を作る正規化係数である。幾つかの実施形態において、Gは局所周辺を反映するか、またはそれを決定するために使用できる。例えば周辺境界はD=3×σ(3は標準偏差)に基づいて決定できる。幾つかの実施形態では、カーネルのサイズが非常に大きい場合はガウスカーネルは滑らかであり得るので、処理を高速化するために均一な重みを使用できる。幾つかの実施形態では、ガウスカーネルは2Dカーネル(例えばN×N)または1Dカーネル(例えば関心のあるシンボルの方向が知られている場合)であることができる。例えばすべてのシンボルが水平であるならば、1×Nカーネルを使用できる。
【0084】
幾つかの実施形態では、処理システムは、ピクセルに対して決定される情報を制限できる。例えば処理システムはコントラストを制限(例えばクランプ)して、コントラストが特定の値または範囲の上および/または下になるのを防ぐことができる。処理システムはコントラストを特定の値または範囲に制限するように構成でき、および/または本明細書で説明したように訓練またはテスト中の最適な限界を決定できる。コントラストを制限することは、例えば信号がバイモーダルでない場合にノイズを増幅することを回避するのを助けることができる。例えば以下にさらに
図17との関連で述べる幾つかの実施形態では、y1とy2の間にある信号を処理することが望ましい。なぜならピクセルはシンボルの異なる特徴(例えば暗いバーや明るいスペース)に関連付けられているからである。シンボル特徴を含んでいない区域など一部の区域では、信号がバイモーダルではないことがある。そのような区域では、ピクセルはノイズのみを含むことがある。それゆえこの技術は非常に小さいコントラストの処理を回避するために、コントラスト計算を制限してノイズの処理(例えば増幅)を回避することができる。例えば
図18および
図19に関連してさらに述べるように、ノイズが増幅されると、それは低減されたビット画像に現れる可能性がある(例えば画像処理アルゴリズムに悪影響を及ぼすことがある)。
【0085】
図15は、幾つかの実施形態により、強度計算を説明するために使用される例示的な重み付きヒストグラム1500のグラフを示す。
図16は、幾つかの実施形態により、重み付きローカルヒストグラム計算を説明するために使用される例示的ヒストグラム1600のグラフを示す。
図15および
図16のいずれも、12ビットHDR画像の局所周辺におけるピクセルのグレーレベルの分布を示す。本明細書で述べられているように、局所周辺におけるピクセルは、周辺における異なるシンボル特徴(例えば幾つかのバーとスペース)のためのデータを含むであろう。解像度に応じて、ピクセルはシンボル特徴間のシンボル内の移行区域(例えばバーからスペースに移行する間の区域)に対応することもある。図中のピーク(例えば以下でさらに述べる
図15のピーク1506およびピーク1508)は、幾つかのシンボル特徴が暗い(例えば黒いバー)および明るい(例えば白いスペース)ために生じる。
【0086】
図15を参照して、重み付きヒストグラム1500は、例示的なバイモーダルバーコード領域の局所周辺のものである。x軸1502は12ビットHDR画像に対するピクセル強度値を示しており、各ピクセルの強度は0から4095の範囲であり得る。y軸1504は特定の強度値を有するピクセルの重み付けされた数を示す。重み付きヒストグラムの第1のピーク1506は、暗い特徴(例えばバー)のために生じる。重み付きヒストグラムの第2のピーク1508は、明るい特徴(例えばスペース)のために生じる。重み付きヒストグラム1500は、加重標準偏差メトリックを使用して計算されたローカルコントラスト1510と強度1512を示している。ローカルコントラスト1510は、局所領域内のピクセル値の3つの標準偏差を計算することによって計算される。強度1512は、局所領域内のピクセル値の平均を取ることによって計算される。この例では、ピーク1506は約615であり、ピーク1508は約2500であり、強度1510は約1500であり、コントラストは約2200である。
【0087】
図16を参照すると、重み付きヒストグラム1600は、例示的なバイモーダルバーコード領域の局所周辺のものである。x軸1602は12ビットHDR画像に対するピクセル強度値を示し、各ピクセルの強度は0から4095の範囲であり得る。y軸1604は特定の強度値を有するピクセルの重み付けされた数を示す。重み付きヒストグラムの第1のピーク1606は、暗い特徴(例えばバー)のために生じる。重み付きヒストグラムの第2のピーク1608は、明るい特徴(例えばスペース)のために生じる。重み付きヒストグラム1500はヒストグラムのテール、すなわちヒストグラム1610の底部20%とヒストグラム1612の頂部20%を示す。底部20%1610における値の平均は1618として示されており、頂部20%1612における値の平均は1620として示されている。コントラスト1616はテール平均1618と1620との間の距離として測定される。強度1622はコントラスト1616の中心である。
【0088】
図15はコントラスト1512に対する加重標準偏差の計算と比較するためにヒストグラム1500を含んでいるが、強度1510(例えば加重平均を用いて計算)とコントラスト1512のいずれも上述したように実際のヒストグラム1500を用いずに計算できる。幾つかの実施形態において、
図16を参照すると、上述したようにヒストグラムのテールを決定する代わりに、強度とコントラストは、重み付きローカルヒストグラムを形成し、ピーク1606および1608の位置を(例えばローカルヒストグラムのモードに基づいて)特定し、ピーク1606とピーク1608の間のトラフ1614を決定し、そしてピーク1606とピーク1608の間の距離1616を決定することによって計算できる。
【0089】
幾つかの実施形態では、HDR画像の1つ以上の部分を処理から除外できる。例えば処理装置は、局所周辺に増幅すべき特徴があるか(またはないか)決定するように構成できる。そのような処理は画像マスクを効果的に決定でき、このマスクが本明細書で説明される技術を使用して処理されない(例えばスキップされる)画像の部分を示す。幾つかの実施形態では、処理装置は、画像の部分(例えば画像の局所周辺)を処理するかどうかを決定するために統計的テストを実行できる。例えば処理装置は、当該技術分野で知られているように、周辺内のデータが正規分布を満たすかどうかを判断することなどによって各周辺内のデータの正規性を測定できる。例えばガセミおよびザヘディアスル著「統計分析のために正規性試験:非統計家のためのガイド」(国際内分泌・代謝ジャーナル、2012年)を使用でき、参照によりその全体が本明細書に組み込まれる。
【0090】
図19は、幾つかの実施形態により、HDR画像の1つ以上の部分を処理から除外する例を説明するための画像を示している。具体的には、
図19は、2Dバーコード1902およびテキスト1904を有する第1のトーンマッピングされた画像1900を示す。処理装置は、区域1906のように2Dバーコード1902およびテキスト1904の周囲の区域を処理から除外しなかった。その結果としてトーンマッピングされた画像1900は、2Dバーコード1902およびテキスト1904の周りに黒と白の斑点のパターンを含んでいる。第2のトーンマッピングされた画像1950も、2Dバーコード1902とテキスト1904を含んでいる。処理装置は、2Dバーコード1902とテキスト1904の周りのベタ区域1952を処理から除外した。その結果として、ベタ区域1952は、処理装置が処理しなかった原画像の区域のマスクを反映している。
【0091】
図14に戻ると、ステップ1410で処理装置は、それ以前のステップで決定されたパラメータ(例えばステップ1406および1408で決定されたパラメータ)に基づいてローカルトーンマッピングを適用する。ローカルトーンマッピングは(例えば取得されたHDR画像の)高ダイナミックレンジをより低ダイナミックレンジ画像に、例えば12、14、または16ビットHDR画像から8ビット画像に圧縮する。例えばローカルトーンマッピングを適用するために次式を使用できる。
【0092】
p8(i,j)=(y1+y2)/2+(y2-y1)×(p12(i,j)-intensity(i,j))/contrast(i,j)) (式2)
ここで、
p12(i、j)は、位置(i、j)における12ビット画像の生強度値である。
強度(i、j)は、位置(i、j)の周りのピクセルの周辺に基づく位置(i、j)におけるピクセルの計算された強度である。
コントラスト(i、j)は、位置(i、j)の周りのピクセルの周辺に基づく位置(i、j)におけるピクセルの計算されたコントラストである。
p8(i、j)は、結果として得られる8ビット画像中の対応するピクセル強度値である。
(y1、y2)は、さらに
図17に関連して述べるように、区分線形関数の中央部がある8ビット画像中の値の範囲である。
【0093】
式2に示すように、ローカルトーンマッピングは強度(i、j)とコントラスト(i、j)の両方を組み込んでいる。コントラスト(i、j)は、本明細書で述べるように、ピクセル値が周辺にどのように広がっているか反映することができる。コントラストは、例えば画像をキャプチャする間の照明、シンボルがどのようにプリント/エッチングされるか、および/または同様の要因に影響され得る。コントラストと強度は画像によって異なる。例えば画像は、シンボルが特定のコントラスト(例えば高コントラストまたは低コントラスト)を有する暗い部分を含むことがあり、画像はまた暗い領域と同様のコントラストを有する淡い/明るい部分を含むことがある。別の例として、画像において全体的な照明は、同様のコントラストを有しながら高コントラストまたは低コントラストであり得る。この技術はコントラストを組み入れることによって、例えば画像強度に関係なく画像の領域内のコントラストを最大にできる。技術は中間グレーレベルに基づいて平均強度を考慮することができる(例えば値が0~256の範囲である場合に画像の平均強度は128で範囲の中央にマッピングできる)。
【0094】
ステップ1412で、処理装置はステップ1410で計算されたピクセル強度を調整するように構成できる。例えば処理装置は、値が全8ビット範囲を利用するためにp8(i、j)強度値をストレッチするように構成できる。
図17は、幾つかの実施形態により、12ビット値から8ビット値への例示的なマッピングを示すグラフ1700である。x軸1702は0から2
12(すなわち4095)に及ぶ12ビット値を示し、y軸1704は0から2
8(すなわち255)に及ぶ8ビット値を示す。曲線1706は、x軸1702上の12ビット値のy軸上の8ビット値へのマッピングを示す。垂直線1708は強度を示し、矢印1710はコントラスト範囲を示し、これは1712と1714(例えば強度1708の最小値と最大値)の間の範囲である。区画1716はコントラスト範囲1710の下にあり、区画1718はコントラスト範囲1710の上にある。
【0095】
一般に、例えば
図15および
図16に示すようにシンボルがバイモーダルである場合、ヒストグラムは2つのピーク、すなわち暗いバーのピーク(低い方のピーク)と明るいスペースのピーク(高い方のピーク)を持つ。システムは値をx軸1702のスケール0~4095からy軸1704のスケール0-255にマッピングするように構成でき、それによりI)スペースは0-255の範囲の高い値にマッピングされ、II)バーは0から255の範囲の低い値にマッピングされ、III)バーとスペースの間の値はできる限り最良に引き延ばされ(例えば画像は元は生み出された8ビット(またはそれ以下のビット)画像の範囲より大きい範囲を有するHDR画像であるため)、および/または同様のことが可能になる。バーとスペースの間の値の範囲を引き延ばすために、シンボル内の最も明るいスペースよりも明るい値、またはシンボル内の最も暗いバーよりも暗い値は、それぞれy2より上とy1より下に圧縮される。
図17はこのマッピングをグラフで示しており、1708は平均強度を示し、1710は暗いバーと明るいスペースの間のコントラストの測度を示す(例えば本明細書で述べるように、標準偏差を用いて計算する)。y軸1704に沿ったy値は、y軸がy1とy2との間にマッピングされるようにマッピングされ、この場合y1は範囲(例えば10、5など)の点部の近傍にあり、y2は範囲(例えば245、250など)の頂部の近傍にある。このようにしてy1とy2との間でマッピングすることによって、本技術はシンボルの分析(例えばシンボルのデコード)には関係がない信号の部分を圧縮できる。
【0096】
図18は、幾つかの実施形態により、種々のトーンマッピング技術を使用して処理された例示的な画像を示す。画像1802および1804は原画像であり、最上位ビットを含むように切り取られる。画像1812および1814は、(例えば
図3に関連して述べた)強度ベースのローカルトーンマッピングを使用して処理された画像である。画像1822および1824は、(例えば
図14に関連して述べた)コントラストベースのローカルトーンマッピングを使用して処理された画像である。画像1802および1804によって示されているように、単にビット値を切り取るだけでは最少の利益しかもたらさない(例えば1802の2Dバーコードは見えず、1804の線形バーコードは処理中にデコードされそうにない部分(例えば部分1806)を含んでいる)。画像1812および1814によって示されているように、強度ベースのローカルトーンマッピング技術はより良い画像をもたらし、画像1812では2Dバーコードとテキストが見えており、画像1814では部分1816を含めて線形バーコードが改善されている。この例では、コントラストベースのローカルトーンマッピングが最良の低減ビット画像を達成しており、画像1822内の2Dバーコードとテキストは画像1812におけるよりも見やすく、画像1824内の線形バーコードがバーコードの周りの背景から目立っている。
【0097】
画像1822および1824は、部分1826および1828など特定の区域で増幅されたノイズを含む。
図19との関連で上述したように、関心のあるシンボルを含まない区域のノイズを増幅することを回避するために、HDR画像の一部を処理から除外できる。ノイズ増幅は画像処理アルゴリズムに悪影響を及ぼさないこともがあるので、そのような処理は任意である(例えば画像1822および1824に示されているように、シンボル情報はシンボルデコード、検査などを可能にするために十分処理できる)。
【0098】
本明細書で述べるトーンマッピングは、この技術が大量の計算資源、大量のメモリアクセスおよび/または同種のものを必要としないように構成できる。したがってトーンマッピング技術は、FPGAのように、計算資源が限られている種々のプラットフォームで実行するために設計できる。
【0099】
本明細書に記載された原理に従って動作する技術は、何らかの適切な方法で実施できる。例えば実施形態は、ハードウェア、ソフトウェアまたはそれらの組み合わせを使用して実施できる。ソフトウェアで実施される場合、ソフトウェアコードは単一のコンピュータで提供されるか複数のコンピュータに分散されるかにかかわらず、何らかの適切なプロセッサまたはプロセッサの集合体上で実行できる。そのようなプロセッサは、CPUチップ、GPUチップ、FPGAチップ、マイクロプロセッサ、マイクロコントローラ、またはコプロセッサなどの名前で当技術分野で知られている市販の集積回路部品を含む集積回路部品内の1つ以上のプロセッサを有する集積回路として実装できる。代替としてプロセッサは、ASICなどのカスタム回路、またはプログラマブルロジックデバイスを構成することから生じるセミカスタム回路で実装されてもよい。さらに代替として、プロセッサは市販されているか、セミカスタムであるかカスタムであるかにかかわらず、より大きい回路または半導体デバイスの一部であり得る。具体的な例として、幾つかの市販のマイクロプロセッサは複数のコアを有しており、それらのコアの1つまたはサブセットがプロセッサを構成できるようになっている。しかしプロセッサは何らかの適当なフォーマットの回路を使用して実装できる。
【0100】
さらに、当然のことながらコンピュータは、ラックマウント型コンピュータ、デスクトップコンピュータ、ラップトップコンピュータまたはタブレット型コンピュータなど幾つかの形態のいずれかで実装できる。加えてコンピュータは、パーソナルデジタルアシスタント(PDA)、スマートフォンまたは他の何らかの適当な携帯型または固定型の電子デバイスを含む、一般にコンピュータとは見なされないが適当な処理能力を有するデバイスに埋め込むことができる。
【0101】
また、コンピュータは1つ以上の入力デバイスと出力デバイスを有することができる。これらのデバイスは、とりわけユーザインタフェースを提供するために使用できる。ユーザインタフェースを提供するために使用できる出力デバイスの例は、出力を視覚的に提示するためのプリンタまたはディスプレイ画面と、出力を音声で提示するためのスピーカまたは他の音発生装置を含む。ユーザインタフェースに使用できる入力デバイスの例には、キーボード、ならびにマウス、タッチパッド、およびデジタルタブレットなどのポインティングデバイスが含まれる。別の例として、コンピュータは入力情報を音声認識または他の可聴フォーマットで受け取ることがある。図示の実施形態では、入力/出力デバイスは、コンピューティングデバイスから物理的に離れているものとして示されている。しかしながら幾つかの実施形態では、入力デバイスおよび/または出力デバイスは、プロセッサまたはコンピューティングデバイスの他の要素と同じユニットに物理的に統合されてもよい。例えばキーボードはタッチスクリーン上のソフトキーボードとして実施されよう。あるいは入出力デバイスは、コンピューティングデバイスから完全に切り離され、無線接続を介して機能的に統合されてもよい。
【0102】
そのようなコンピュータは、ローカルエリアネットワークまたはワイドエリアネットワーク、例えば企業ネットワークまたはインターネットなどを含む、何らかの適切な形態の1つ以上のネットワークによって相互接続できる。そのようなネットワークは何らかの適切な技術に基づいてもよく、何らかの適切なプロトコルに従って動作してもよく、無線ネットワーク、有線ネットワークまたは光ファイバネットワークを含んでもよい。
【0103】
また、本明細書で概述した種々の方法またはプロセスは、種々のオペレーティングシステムまたはプラットフォームのいずれか1つを採用する1つ以上のプロセッサ上で実行可能なソフトウェアとしてコーディングできる。さらにそのようなソフトウェアは、任意の数の適切なプログラミング言語および/またはプログラミングツールまたはスクリプトツールを使用して書かれてもよく、実行可能な機械語コード、あるいはフレームワークまたは仮想マシン上で実行される中間コードとしてコンパイルされてもよい。
【0104】
これに関して、本発明は1つ以上のプログラムで符号化されるコンピュータ可読記憶媒体(または複数のコンピュータ可読媒体)(例えばコンピュータメモリ、1つ以上のフロッピーディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイもしくは他の半導体デバイスにおける回路構成、または他の有形のコンピュータ記憶媒体)として実施されてよく、これは1つ以上のコンピュータあるいは他のプロセッサ上で実行されるときに、上述した本発明の種々の実施形態を実装する方法を実行する。前述の例から明らかなように、コンピュータ可読記憶媒体は、情報をコンピュータ実行可能命令を非一時的形態で提供するのに十分な時間にわたって保持できる。そのような1つ以上のコンピュータ可読記憶媒体は携帯可能であり得、その上に記憶された1つ以上のプログラムを1つ以上の異なるコンピュータまたは他のプロセッサにロードして上述した本出願の種々の態様を実施できる。本明細書で使用される「コンピュータ可読記憶媒体」という用語は、製造物(すなわち製造物の品目)または機械と見なすことができるコンピュータ可読媒体のみを包含する。代替的または追加的に、本発明は伝搬信号などのコンピュータ可読記憶媒体以外のコンピュータ可読媒体として実施できる。
【0105】
「コード」、「プログラム」または「ソフトウェア」という用語は、本明細書では上述した本出願の種々の態様を実装するためにコンピュータまたは他のプロセッサをプログラムするために使用できる、何らかのタイプのコンピュータコードまたはコンピュータ実行可能命令のセットを指すために一般的な意味で用いられている。さらに、この実施形態の一態様によれば、実行されたときに本出願の方法を実行する1つ以上のコンピュータプログラムは、単一のコンピュータまたはプロセッサ上に存在する必要はなく、本出願の種々の態様を実施するために多数の異なるコンピュータまたはプロセッサの間にモジュール方式で分散できる。
【0106】
コンピュータ実行可能命令は、1つ以上のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなどの多くの形態で存在し得る。一般にプログラムモジュールは、特定のタスクを実行するか、または特定の抽象的なデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、種々の実施形態において必要に応じて組み合わせまたは分散できる。
【0107】
また、データ構造は、何らかの適切な形態でコンピュータ可読媒体に保存できる。説明を簡単にするために、データ構造はデータ構造内の位置を通して関連するフィールドを有するように示されることがある。そのような関係は、フィールド間の関係を伝達するコンピュータ可読媒体内の位置を有するフィールドに記憶域を割り当てることによっても同様に達成できる。しかしながら何らかの適切な機構を使用して、ポインタ、タグ、またはデータ要素間の関係を確立するその他の機構の使用などを通して、データ構造のフィールド内の情報間の関係を確立することもできる。
【0108】
本出願の種々の態様は、単独で、組み合わせて、または前述の実施形態で具体的に説明されていない種々の構成で使用することができ、それゆえその用途においては、前述の説明において記述され、または図面に示された構成要素の詳細および構成に限定されない。例えば一実施形態に記載の態様は、他の実施形態に記載の態様と何らかの方法で組み合わせることができる。
【0109】
また、本発明は方法として実施することができ、その例が提供された。方法の一部として実行される動作は、何らかの適切な方法で順序付けられてもよい。したがって実施形態は、例示された実施形態において連続的な動作として示されていても、動作が図示されたものとは異なる順序で実行されるように構成できる。
【0110】
本明細書の詳細な説明および特許請求の範囲で使用される不定冠詞「a」および「an」は、そうでないことが明示されない限り、「少なくとも1つ」を意味すると理解されるべきである。
【0111】
本明細書の詳細な説明および特許請求の範囲で使用される「および/または」は、そのように結合された要素、すなわちある場合には結合的に存在し、別の場合には分離的に存在する要素の「いずれかまたは両方」を意味すると理解されたい。「および/または」で列挙された複数の要素は同じように、すなわちそのように結合された「1つ以上」の要素と解釈されるべきである。「および/または」節によって具体的に識別された要素以外の他の要素は、具体的に識別された要素に関係するか関係しないかにかかわらず、任意に存在してもよい。したがって非限定的な例として、「Aおよび/またはB」への言及は「含む」など制約のない言葉と組み合わせて使用された場合は、ある実施形態ではAのみを指し(任意にB以外の要素を含む)、別の実施形態ではBのみを指し(任意にA以外の要素を含む)、さらに別の実施形態ではAとBの両方を指す(任意に他の要素を含む)、などとなる。
【0112】
詳細な説明および特許請求の範囲で1つ以上の要素のリストに関して使用される「少なくとも1つ」という句は、要素のリスト中の1つ以上の要素から選択される少なくとも1つの要素を意味すると理解されるべきであるが、必ずしも要素のリスト内に具体的に列挙されるすべての個々の要素の少なくとも1つを含むものではなく、要素のリスト中の要素の何らかの組み合わせも除外しない。この定義によってまた「少なくとも1つ」という句が指す要素のリスト内で具体的に識別された要素以外の要素が、具体的に識別された要素に関係するか関係しないかにかかわらず任意に存在し得る。したがって非限定的な例として「AおよびBの少なくとも一方」(または同等に「AまたはBの少なくとも一方」、または同等に「Aおよび/またはBの少なくとも一方」)は、ある実施形態では任意に1つより多いAを含む少なくとも1つのAを指すことができ、Bは存在しない(および任意にB以外の要素を含む)。別の実施形態では任意に1つより多いBを含む少なくとも1つのBを指すことができ、Aは存在しない(および任意にA以外の要素を含む)。さらに別の実施形態では任意に1つより多いAを含む少なくとも1つのAと、任意に1つより多いBを含む少なくとも1つのBを指すことができ(および任意に他の要素を含む)、などとなる。
【0113】
特許請求項で請求要素を修正するために「第1」、「第2」、「第3」などの序数を使用することは、それ自体ではある請求要素の優先度、優先順位またはある請求項の他の請求項に対する序列、または方法の動作が実行される時間的順序を含意せず、単に請求要素を区別するために特定の名前を持つ1つの請求要素と同じ名前を持つ(ただし序数の使用を除く)他の要素から区別するためのラベルとして使用されているにすぎない。
【0114】
また、本明細書で使用されている表現および用語は説明を目的としており、限定するものと見なされるべきではない。本明細書における「含む」、「包含する」、「有する」、「持つ」、「伴う」およびそれらの変形の使用は、その後に列挙される項目およびそれらの等価物ならびに追加の項目を包含することを意味する。