(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0041】
例示的な実施形態の以下の詳細な説明において、実施形態の一部をなす添付の図面の参照が求められる。これらの図面には、本明細書で説明される方法、システム又は装置が実施することができる具体的な実施形態が例示の方法で示されている。これ以外の実施形態が用いられてよく、また本発明の範囲を逸脱することなく構造的な変更が行われ得ると理解すべきである。
【0042】
図1は、1次元信号抽出のための例示的な装置を示す。2次元(2D)デジタル画像100は、例えばカメラ、スキャナ又はコンピュータレンダリングから受け取られる。デジタル画像100は、例えば例示のバーコード110などの特徴を含んでいてもよい。1次元デジタル信号、例えば例示の特徴のバーコード110に対応する信号140を抽出するために、それに沿うことが望ましいと考えられる投影線120を記述する情報が受け取られる。デジタル電子装置130は、投影線120に沿って画像100から信号140を抽出する。
【0043】
一般に、1次元デジタル信号140は、しばしばサンプル又は投影ビンと呼ばれる値のシーケンスを含む。値は、単数若しくは複素数などの数又はベクトル、例えばカラーベクトルのセットであってもよい。これらの数は2進整数又は浮動小数点値など種々のフォーマットで符号化することができる。
【0044】
デジタル画像100に対する投影線120の向きは、許容可能な向きのセットの1つであり、これらは投影線120を記述する受け取られた情報に符号化することができるすべての向きを含んでよく、さらに0〜45°の範囲に、有理勾配の向きに、ある測定基準に従い好都合として選択された向きに、任意に選択された向きに、又はその他の適当な制限又は制限の組み合わせに制限されてもよい。
【0045】
装置130は、画像100から信号140を抽出する複数のストラテジーの中から選択でき、それらのストラテジーは投影線120の向きに依存して選択される。与えられた実施形態に対して本明細書の種々の教示は、発明の範囲を逸脱することなく、異なる向きに対して異なって適用されてもよく、またある向きには全く適用されなくともよい。ストラテジーは、与えられた向きについてある測定基準に従い好ましい結果を達成するために選択されてもよい。
【0046】
ここで留意すると、本明細書では例としてバーコードが所々に使用されているが、デジタル画像中の投影線に沿って1D信号を抽出することは様々な用途にとって、例えば印刷回路基板、ソーラパネル及び集積回路の製造で有用であることがよく知られている。集積回路製造におけるそのような用途の1つは、ワイヤーボンディング中にリードをリードフレームに位置付けることである。したがって本明細書におけるバーコードの例は、単に例示を目的としており、制限的なものとみなされるべきではない。
【0047】
図2は、グリッド上に配列されたピクセルアレイを示す。例示のデジタル画像100などのデジタル画像は、グリッド上に配列されたピクセルアレイ、例えばピクセルグリッド200を含む。例示のピクセル210などのピクセルは一般に1個の数値又は数値のセットとピクセルグリッド内の位置を含む。数値は物理的測定から取得されてもよく、又は合成によって生成されてもよく、及び2進整数や浮動小数点数などの多様な公知の方法でデジタル画像に符号化されてもよい。「ピクセル」という言葉は、通常ピクセルグリッド内の位置における数値を指すために用いられ、隣り合うグリッド要素の間隔に等しい距離の単位であり、画像輝度を測定する電気光学検出要素である。
【0048】
本明細書では一般にグリッド上のピクセル座標を規定するために(x、y)を使用する。ピクセルは整数座標上にあり、非整数座標はピクセル間の位置を表す。画像グリッド座標の小数部分はしばしばサブピクセル位置又はサブピクセルオフセットと呼ぶ。その他のスキーム、例えばピクセルが半整数座標上に位置すると見なすことはよく知られており、これも使用できる。
【0049】
引き続き
図2の例示的な実施形態を参照して、装置130は例示の投影線220を記述する情報を受け取る。この情報は、第1端点230及び第2端点240の位置など線を記述できるどのような形式でもよい。代替としてこの情報は点の位置、長さ及び向き、一次方程式の係数、又はその他の適当な符号化を含むこともできよう。
【0050】
別の例示的な実施形態では、装置130は例示の投影線220を記述する情報を間接的に受け取る。最初に、装置130は要求された投影線250を記述する情報を受け取る(
図2に破線で示す)。次に、要求された投影線250を記述する情報からその向き、位置、長さ又はその他の特性をわずかに調整することによって、例示の投影線220を記述する情報が導出されるので、例示の投影線220は要求された投影線250に類似しているが、ピクセルグリッド200に対してより好都合なアラインメントにある。1実施形態において要求された投影線250はその中心の周りを回動されてより好都合な向き、例えば
図18、
図19又は
図20に列挙され、さらに以下に説明する向きを生じる。別の実施形態では、要求された投影線250の端点は、より好都合なサブピクセルオフセット、例えば
図7で説明するように選択されたオフセットを生じさせるために移動される。さらに別の実施形態では、要求された投影線250は回動も移動もされる。
【0051】
図2の実施形態において、第1端点230と第2端点240は一般には整数グリッド位置に置かれていない。幾つかの実施形態では、投影線を記述する情報はサブピクセル位置が受け取られるようにする。幾つかの実施形態では、上述した調整はサブピクセル位置をもたらし得る。別の実施形態では、上述した調整はサブピクセル位置を消去する。さらに別の実施形態では、投影線は規定された端点を持たないか、又は規定された端点を1個しか持たず、その代わりに欠けている端点をデジタル画像の境界から導き出してもよい。
【0052】
例示の投影線220はピクセルグリッド200に対して相対的な向きを有する。種々の実施形態において、向きは1個の数又は数のセットとして、例えば角度、ラジアン、2値又は何らかの適当な角度単位として、ベクトルの方向として、勾配又は接線として、比が勾配又は接線をなす1対の数として、又はその他の何らかの適当な符号として符号化されてもよい。比が勾配又は接線をなす1対の数を用いる実施形態において、比の分母は垂直線を示す0であってもよい。例示の投影線220の向きは、投影線を記述する情報から多様な方法で取得することができる。向きは例示の投影線220を記述する情報に直接符号化され得、又は第1端点230と第2端点240の位置から計算され得、又は一次方程式の係数から計算することができ、又は上述した調整の結果として導出することができ、又はその他何らかの適当な方法で取得することができる。
【0053】
ピクセルグリッドは一般にある特定の向きを定義する。例えばピクセルグリッド200は、グリッド軸に平行な2個の特定の向き260を定義する。正方形、長方形又は平行四辺形のピクセルを有するピクセルグリッドは、本明細書で平行な向きと呼ぶ、これらの2個の特定の向きを持つであろう。正方形又は長方形のピクセルを有するピクセルグリッドについて、平行な向きは互いに垂直であろう。六角形のピクセルを有するピクセルグリッドについては、60°離れた3つの平行な向きがあろう。
【0054】
ピクセルグリッド200は、平行な向きから45°離された、グリッド軸に対して対角の2個の特定の向き270を定義する。正方形、長方形又は平行四辺形のピクセルを有するピクセルグリッドは、本明細書で対角の向きと呼ぶ、これらの2個の特定の向きを持つであろう。正方形ピクセルを有するピクセルグリッドに対しては、対角の向きは平行な向きから45°離されるであろう。
【0055】
図3は、本発明の幾つかの実施形態で使用できるような、ピクセル重量テンプレートの例示的な反復シーケンスを示す。ピクセル重量テンプレートは、ジオメトリ(グリッド要素のサイズと形状)がデジタル画像のピクセルグリッドに対応するパターンでグリッド上に配列された複数の重量である。重量は数量であり、例えばさらに以下に説明するように整数、実数、複素数又はベクトルである。本明細書では要素という言葉は、テンプレート内の特定の位置における特定の重量を表すのに使用できる。テンプレートのグリッドジオメトリはピクセルグリッドに対応しているので、テンプレートの位置とオフセットはピクセルの単位で記述することができる。
【0056】
例示の投影線300は、右方向に5ピクセル当り3ピクセル下降している勾配に対応する向きを有する。この向きに対して、第1のテンプレート310、第2のテンプレート311、第3のテンプレート312、第4のテンプレート313、第5のテンプレート314、第6のテンプレート315、第7のテンプレート316及び第8のテンプレート317を含むピクセル重量テンプレートの反復シーケンスが選択される。シーケンスは、第1のテンプレート310(破線輪郭で示す)が第8のテンプレート317に続くというように繰り返す。
図3の例示的な実施形態において、シーケンスの各テンプレートは他のテンプレートと異なっている。幾つかの実施形態では、若干のテンプレートは同一であってもよいが、少なくとも2個の異なるテンプレートがある。
【0057】
テンプレートを適用するデジタル画像内部の相対的配置を規定する相対的位置のシーケンスが選択される。
図3の例示的な実施形態では、相対的位置はテンプレートを拡張されたグリッド上に置くことによって示されており、数又は記号を含む正方形はテンプレート要素を表し、ドットはテンプレートのない拡張されたグリッド上の点を表す。相対的位置はテンプレートがオーバーラップする位置であり、ピクセルグリッドを用いて図示するのは困難であろう。それゆえ例示の目的のためにテンプレートは拡張されたグリッド上に置かれて、水平方向に別途3グリッド位置だけ分離されている。図示されたシーケンステンプレートに対して実際の相対的位置を得るために、第2のテンプレート311は左に3グリッド位置、第3のテンプレート312は左に6グリッド位置、第4のテンプレート313は左に9グリッド位置というようにシフトする。
【0058】
図3に図示されたシーケンスにおける各テンプレートの相対的位置は、以前のシーケンスの反復における同じテンプレートの位置から右に5ピクセル、及び3ピクセル下にある。これは上述したように第1のテンプレート310で破線のテンプレートを24グリッド位置だけ左にシフトした後で見ることができる。この反復されたテンプレートの相対的位置は、(上述したように適切にシフトした後)図に示された他の相対的位置と組み合わせると、反復の全数を包含しないシーケンスを含めて任意の長さの反復シーケンスに対応する相対的位置を定義する。
【0059】
図3の正方形の中の数と記号は、相対的ピクセル重量を表し、記号xxは100を表す。重量を計算し使用するための方法、システム及び装置は、本明細書を通して説明する。
図3に対応する例示的な1実施形態において、重量は0〜100の範囲における整数である。
図3に対応する別の例示的な実施形態では、重量は0〜100の範囲における浮動小数点値であり、これらは図中に示された整数で表示する目的のために切り捨てられており、例えば「0」と表示された重量はゼロではなく1未満であり得る。別の実施形態では、重量は何らかの適当な範囲における整数又は浮動小数点値、例えば0〜255の範囲における整数であるか、又は0〜1の範囲における浮動小数点値である。幾つかの実施形態では重量は、本明細書の他の箇所で述べられているように負数、複素数又はベクトルである。上記の範囲は任意選択である。
【0060】
図3の例示的な実施形態は、デジタル画像中の相対的位置のシーケンスにおける図示されたピクセル重量テンプレートの反復シーケンスを用いてデジタル画像のピクセルの加重和のシーケンスを計算することにより、例示の投影線300に沿って1次元信号を抽出する。加重和は、ピクセル重量テンプレートをデジタル画像中の所定の位置に置き、重量に当該位置で対応するピクセル値を乗算し、その積を加算することによって計算される。この乗算と加算は任意の順序で実行できる。乗算及び加算は、算術動作、論理動作、ルックアップテーブル、又は乗算と加算の効果を有するその他の動作若しくは動作の組み合わせを含んでよい。1次元信号は結果として生じる加重和のシーケンスであるか、又は当該シーケンスから導出される。
【0061】
幾つかの実施形態では、ピクセル又は重量あるいはそれら両方は複素数であってもよく、加重和は複素数の積の複素数の和である。1D信号は複素数であるか、又は複素数の和から導出された実数であってもよい。幾つかの実施形態では、ピクセル又は重量あるいはそれら両方はベクトルであってもよい。例えば、ピクセルはRGBカラーベクトルであってもよく、重量はベクトルであってもよく、加重和はドット積の和であってもよく、その結果としてスカラ値1D信号が生じる。別の例では、ピクセルRGBカラーベクトルであってもよく、重量はスカラであってもよく、加重和は積のベクトル和であってもよく、結果としベクトル値1D信号が生じる。
【0062】
図3に示すピクセル重量テンプレートの反復シーケンスと相対的位置のシーケンスは、例示の投影線300の向き、具体的には右方向に5ピクセル当り3ピクセル下降する勾配に対して選択されている。その他の向きに対しては、異なるピクセル重量テンプレートの反復シーケンス及び相対的位置が選択されてもよい。幾つかの実施形態では大多数の向きに対してこの性質の選択がなされるが、ある向きに対してはその他の選択がなされる。例えば、ある向きに対しては同一テンプレートの反復シーケンスが使用されてもよく、非反復シーケンスが使用されてもよく、いかなる種類のピクセル重量テンプレートに含まない方法が使用されてもよく、又は何らかの適当な手順若しくは手順の組み合わせが使用されてもよい。幾つかの実施形態では、ある向きは平行な向きを含む。別の実施形態では、ある向きは平行な向きと対角の向きを含む。さらに別の実施形態では、ある向きはそのような選択をするのに好都合と思われる少数の向きを含む。
【0063】
図3の例示的な実施形態に対応して、例示の投影線300の向き及びその他の向きに対してピクセル重量テンプレートと相対的位置を選択するための、並びにそれらの選択を他の種々の実施形態に対して行うための詳細なコンピュータ化された方法が、以下に
図7と関連して、及び本明細書の他の種々の箇所で与えられる。
【0064】
投影線の向きに応じて、少なくとも許容可能な向きの大多数に対して選択される、ピクセル重量テンプレートの反復シーケンスを使用することは、1次元信号を抽出するための方法、システム又は装置の設計にフレキシビリティを与える。このフレキシビリティを活用してある実施形態で利点を達成できる。達成できる利点には高精度、高解像度、良好なノイズ低減、高速動作、計算の単純性、及び当業者にとって明白なその他の利点がある。種々の実施形態はこれらの利点の各々を様々な程度で達成でき、又は全く達成できない。
【0065】
種々の実施形態において、これらの利点は、全体又は一部として、テンプレートのある望ましい特性を達成するためにピクセル重量を選択する能力に基づく。これらの特性は、測光精度に影響する第0のモーメント(総重量)、幾何精度に影響する第1のモーメント(重心)、及び解像度とノイズ低減に影響する第2のモーメント(ぼやけ)を含んでよい。投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、これらのモーメントは互いに独立に選択できる。例えば高い幾何精度を達成するために第1のモーメントを選択でき、解像度とノイズ低減との間で所望のトレードオフを達成するために独立に第2のモーメントを選択できる。
【0066】
幾つかの実施形態において、ピクセル重量テンプレートは、テンプレートの総重量が同じであるか又は実質的に同じであるように選択されている。これらの実施形態では、2D画像から1D信号への実効利得は実質的に一定であり、位置に左右されず、結果として高い測光精度を生じる。
図3に対応する実施形態においては、図示された重量は図中に示された整数で表示する目的のために切り捨てた浮動小数点値であり、テンプレートの総重量は浮動小数点精度に等しい。図示された重量が示された通りの整数である代替的な実施形態においては、テンプレートの総重量は実質的に1パーセントの約3分の1の精度に等しい。
【0067】
幾つかの実施形態において、ピクセル重量テンプレートは実質的に同じ総重量を持たない。これらの実施形態では、測光精度は投影ビンを、当該ビンを生じるテンプレートの総重量に比例する値で除算することによって、又はそのような値を逆数で乗算することによって維持できる。しかしながらそのような調整は、与えられた用途で測光精度はそれほど重要な問題ではない場合は行う必要がない。
【0068】
ピクセル重量テンプレートは、テンプレートのピクセル重量の加重平均位置として定義される重心を有する。例えば第8のテンプレート317は第8の重心327を有する。
図3のその他のピクセル重量テンプレートもそれぞれ重心を有するが、参照番号で示されていない。重心は各テンプレートに対して相対的に定義されてもよく、また画像中のテンプレートの各配置についてデジタル画像に対して相対的に定義されてもよい。したがってピクセル重量テンプレートの反復シーケンスは、相対的位置のシーケンスに従って配置されたときに重心のシーケンスを生じる。
【0069】
1D信号の投影ビンの画像中における位置を、投影ビンを生じた配置位置におけるピクセル重量テンプレートの重心と見なすのは合理的である。したがって投影ビンは投影線に沿って位置することもあれば、位置しないこともある2D位置を有するとみなされてもよい。重心以外の方法も2D位置を定義するために使用されてもよい。例えば重量が放物線又はガウス関数などの位置の2D関数によって生成される場合には、投影ビンの位置は関数の極値の位置として定義できる。
【0070】
投影線に対して相対的なデジタル画像中の2方向を定義することが有用である。信号方向は投影線に平行であると定義され、投影方向は特定の実施形態に適したある平行でない方向と定義される。多くの実施形態において投影方向は信号方向に対して垂直であるが、一般的にそうである必要はない。さらに投影ビンの2D位置及びその他の種々の特性は信号方向における成分又は座標と、投影方向における成分又は座標を有すると見なすことが有用である。本明細書では信号方向の座標を表すために記号uが使用され、投影方向の座標を表すために記号vが使用される。
【0071】
信号方向における連続した投影ビンの間隔が、2D画像のピクセル間隔に対して相対的な1D信号の幾何スケーリング(拡大又は縮小)を決定する。ビン間隔が一様であり、スケーリングが一様であり、1D信号が高い幾何精度を有する場合、それは画像中の特徴のジオメトリ(例えば相対的距離)を忠実に保存しよう。バーコード読み取りなど幾つかの用途では、高い幾何精度を達成することが望ましい。
【0072】
投影方向における投影ビンの位置が一定(即ち一定のv座標)ならば、投影ビンは投影線上又は投影線と平行な直線上に位置する。一般に一様なスケーリング特性とは関係ないこの特性も、用途によっては望ましいことがある。
【0073】
幾つかの実施形態において、ピクセル重量テンプレートの反復シーケンス及び対応する相対的位置のシーケンスは、重心が直線に沿って等間隔に置かれるように選択されている。結果として生じる1次元信号は一様にスケーリング(拡大又は縮小)され、それゆえ幾何精度が高いであろう。幾つかの実施形態では、直線は投影線に実質的に平行である。幾つかの実施形態では、直線は投影線である。
【0074】
図3に対応する実施形態において、図示された重量は図中に示された整数で表示する目的のために切り捨てられた浮動小数点値であり、ピクセル重量テンプレートの重心は投影線300に沿って非常に高い精度で等間隔に置かれている。図示された重量が示された通りの整数である代替的な実施形態においては、重心はやや低い精度で等間隔に置かれているが、ピクセルのサイズにしては依然として高い。
【0075】
投影ビンの位置を定義するため、またそれにより2D画像から1D信号を抽出する方法、システム又は装置の種々の特性を評価するために重心を使用することは、投影ビンが1ピクセルに応じる取るに足りないケースも含め、投影ビンがあるピクセルの線形結合に応じる何らかの方法、システム又は装置に適用できる。そのような方法はブレゼンハム線分描画、線形畳み込み、最近傍投影、傾斜投影、双線形補間、双三次補間及びその他の先行技術の方法を含む。
【0076】
一般に、ブレゼンハム線分描画、線形畳み込み及び最近傍投影は、平行でない向きと対角でない向きで(即ち大多数の向きで)一様でないスケーリングを生じ、それゆえ一般に幾何精度はより低い。傾斜投影、双線形補間及び双三次補間はすべての向きで一様なスケーリングを生じ得るが、本明細書で指摘されるその他の望ましくない制限を呈示することがある。
【0077】
1D信号抽出の方法が信号をどの程度ぼやけさせるか考慮することが有用であり得る。さらに信号方向のぼやけと投影方向のぼやけを考慮することが有用であり得る。
【0078】
最初に留意すべきは、2Dデジタル画像を生じたプロセスは、信号抽出方法によって導入される、いかなるぼやけとも区別され無関係なぼやけを導入し得ることである。そのような画像形成ぼやけは、例えば物体運動、光学的歪みや焦点ぼけ、センサの電気光学ピクセルの有限の広がりを含む多数の原因から発生し得る。
【0079】
与えられた方向(例えば信号方向又は投影方向)におけるピクセル重量テンプレートのぼやけは、当該方向における位置の加重標準偏差、又は同等に与えられた方向における重心周りの第2慣性モーメントの平方根として定義できる。この定義により、ぼやけは距離の単位を持つ。本明細書ではピクセル重量テンプレートの各要素は、有限の広がり領域よりも点を占めるものとみなされる。この選択は単純化のためになされており、その他の多様な方法、例えばテンプレート要素を正方形又は円形の領域にわたる一様な密度と定義する選択もなされてもよい。
【0080】
代替として、幾つかの実施形態でぼやけは、ピクセル重量テンプレートの計算されたぼやけと、画像形成ぼやけの効果をモデル化する、本明細書ではシステムぼやけと呼ぶ値との結合として定義される。この代替策に従う幾つかの実施形態では、ピクセル重量テンプレート要素は点を占め、それらのぼやけ及びシステムぼやけは2乗和の平方根を用いて結合され、これは一般に標準偏差を結合するための適切な方法であるとみなされている。
【0081】
ぼやけを定義するためにその他の方法も使用できる。例えば正の重量を有するピクセル重量テンプレートを低域フィルタとして使用できる。ぼやけは、与えられた方向(例えば信号方向又は投影方向)におけるカットオフ波長(慣用的には3dB減衰の波長)として定義され得て、やはり距離の単位で表される。
【0082】
投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、投影方向のぼやけを与えられた用途に適合するように選択することが可能になる。幾つかの実施形態では選択はピクセルグリッドのジオメトリによって加えられる制約を受けるので、実際の投影方向のぼやけはテンプレート間で意図された値からやや変動することがある。しかし投影方向のぼやけは、デジタル画像中の無相関のノイズを低減できる。バーコード読み取り、位置決めリード、及びその他多くの用途において、バー、リード又はその他の関連する画像特徴が投影方向に実質的に平行である場合は、当該方向のぼやけは信号品質の点でほぼ完全に有益である。
【0083】
図3に示す例では、投影方向のぼやけは近似的に2.3ピクセルであるように選択された。しかしながら、上述したように幾らかの変動がある。第2のテンプレート311、第3のテンプレート312、第4のテンプレート313、第5のテンプレート314、第7のテンプレート316及び第8のテンプレート317については、投影方向のぼやけは2.3ピクセル目標に対して±0.02の範囲内にある。第1のテンプレート310及び第6のテンプレート315については、投影方向のぼやけは約2.0ピクセルである。
【0084】
本明細書では解像度という言葉は、しばしば1D信号を抽出して微細な特徴を解像する、例えば信号方向における小さいサイズの特徴、例えばバーコードの個々のバーとスペース、プリント基板の細線、又はリードフレーム上の狭いリードを合理的な忠実度で再現するための方法の能力を記述するために用いられる。解像度は、投影ビン間隔(デジタル信号理論ではしばしばサンプリング周期と呼ぶ)、信号方向におけるぼやけ、及び画像形成ぼやけなどの外的要因によって制限されることがある。例えばビン間隔を縮めても、信号方向のぼやけによって加えられる制限を超えて解像度を改善しないであろう。同様に、信号方向のぼやけを減らしても、ビン間隔によって加えらえる制限を超えて解像度を改善せず、縮小も画像形成ぼやけによって加えらえる制限を超えて解像度を改善しないであろう。
【0085】
投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、投影ビン間隔及び信号方向におけるぼやけは与えられた用途に適合するよう選択できる。幾つかの実施形態では選択はピクセルグリッドのジオメトリによって加えられる制約を受けるので、実際の信号方向のぼやけはテンプレートの間で意図された値からやや変動し得る。
【0086】
信号方向のぼやけは投影方向のぼやけと同様にノイズを低減できるので、通常は所望の解像度を達成するために必要であるぼやけより小さくない信号方向のぼやけを選択することが望ましい。このトレードオフ、及びビン間隔とぼやけの両方が解像度を制限することを前提として、幾つかの実施形態では信号方向のぼやけとビン間隔は共依存的な仕方で選択される。そのような1実施形態においてビン間隔は、さらに以下に説明するように投影線の向きの関数として選択される。次に信号方向のぼやけが、上述したように実際のぼやけはやや変動することがあると理解した上で、ビン間隔の所定の分数として選択される。
【0087】
幾つかの実施形態では、ビン間隔が投影線の向き及びシステムぼやけの関数として選択され、次に信号方向のぼやけがビン間隔の所定の分数として選択される。この実施形態でビン間隔及び信号方向のぼやけは、外的システムぼやけによってモデル化される外的要因によって導入されるぼやけに適しているものとして選択されてもよい。
【0088】
図3に対応する実施形態において、信号方向におけるぼやけは投影ビンの間隔の約0.34であるように選択されており、投影ビンの間隔は図示された投影線の向きに対して一定の0.73ピクセルであり、信号方向のぼやけを約0.25ピクセルとする。
【0089】
ぼやけとビン間隔は、投影ビンが1ピクセルに応じる取るに足りないケースも含め、投影ビンがあるピクセルの線形結合に応じる何らかの方法、システム又は装置で、2D画像から1D信号を抽出する方法、システム又は装置の解像度及びノイズ低減特性を分析するために使用できる。そのような方法はブレゼンハム線分描画、線形畳み込み、最近傍投影、傾斜投影、双線形補間、双三次補間及びその他の先行技術の方法を含む。
【0090】
ブレゼンハム線分描画は一般に外的要因によって引き起こされるぼやけを超えるぼやけを導入しない。それゆえ顕著なノイズ低減はなく、解像度はほとんどビン間隔によって制限され、ビン間隔は水平、垂直又は対角のステップから生じる間隔に対するピクセルグリッドのジオメトリに制約される。
【0091】
線形畳み込み及び傾斜投影は一般に投影方向のぼやけを許すことによってノイズを低減する。通常は信号方向におけるぼやけはほとんどなく、解像度は一般にビン間隔によって制限され、ビン間隔は水平、垂直又は対角のステップから生じる間隔に対するピクセルグリッドのジオメトリに制約される。
【0092】
最近傍投影、双線形補間及び双三次補間は一般に投影方向と信号方向のぼやけを許すことによってノイズを低減する。解像度は一般に信号方向における顕著なぼやけによって制限され、このぼやけは補間式によって決定され、それゆえ選択されない。これらの方法は一般に固定した所定のビン間隔、典型的には1ピクセルを使用する。これより小さい値は一般に信号方向のぼやけのために不都合である。例えば双線形補間の方法にとって、信号方向のぼやけは一般にほとんどの投影線の向きに対して、ビン間隔とほとんど関係なく約0.4ピクセルである。
【0093】
図4は、
図3のピクセル重量テンプレートの別の描写であり、本発明に従う方法、システム又は装置の種々の実施形態にとって有用なテンプレートの特性を示している。上述したように、
図3のピクセル重量テンプレートは適切な相対的位置に配置されたときにオーバーラップする。これは、与えられたテンプレートの要素は反復シーケンスにおける他のテンプレートの要素と同じデジタル画像中のピクセル位置に当り得ることを意味する。逆に言えば、デジタル画像の与えられたピクセルは、多数のテンプレートによって使用され得て、それゆえ多数の投影ビンに影響する。
【0094】
図4は、
図3の特定のテンプレートのオーバーラップを示しており、これらのテンプレートは種々の実施形態において図示された投影線の向きに対して選択される。第1のピクセル重量テンプレート310の要素400(実線の輪郭で示す)は第2のピクセル重量テンプレート311の要素402と重なり、第2のピクセル重量テンプレート311の要素410は第3のピクセル重量テンプレート312の要素412と重なり、第3のピクセル重量テンプレート312の要素420は第4のピクセル重量テンプレート313の要素422と重なり、第4のピクセル重量テンプレート313の要素430は第5のピクセル重量テンプレート314の要素432と重なり、第5のピクセル重量テンプレート314の要素440は第6のピクセル重量テンプレート315の要素442と重なり、第6のピクセル重量テンプレート315の要素450は第7のピクセル重量テンプレート316の要素452と重なり、第7のピクセル重量テンプレート316の要素460は第8のピクセル重量テンプレート317の要素462と重なり、及び第8のピクセル重量テンプレート317の要素470は第1のピクセル重量テンプレート310要素472とオーバーラップする。
【0095】
図3に対応する実施形態において各テンプレート要素は隣接テンプレートの1要素とオーバーラップすることが見て取れる。これは、1D信号に影響するデジタル画像のピクセルが隣接する2個の投影ビンに影響することを意味する。
図3に対応する実施形態など幾つかの実施形態において、投影線の許容可能な向きの大多数に対して、1D信号に影響するデジタル画像のピクセルは隣接する2個の投影ビンに影響する。この特性は、第0のモーメント、第1のモーメント及び第2のモーメントなどテンプレートの特性の選択におけるフレキシビリティを含む種々の望ましい属性につながり得る。1D信号に影響するピクセルが1個のみの投影ビンに影響するブレゼンハム線分描画、線形畳み込み及び傾斜投影などの先行技術の方法はフレキシビリティがより小さい。
【0096】
本発明に従う幾つかの実施形態において、1D信号に影響するデジタル画像のピクセルは隣接する2個の投影ビンに影響する。そのような実施形態では、例えば
図3のピクセル重量テンプレートを使用できる。これらの実施形態は、さらに以下に説明するように単純且つ高速の動作を提供できる。最近傍投影、双線形補間及び双三次補間などの先行技術の方法にとって、1D信号に影響するピクセルは1個、2個、3個又はそれ以上の投影ビンに影響でき、複雑さの増加と速度の低下を招く。例えば双線形補間とビン間隔1ピクセルだと、1D信号に影響するピクセルは1個、2個又は3個の投影ビンに影響するであろう。ビン間隔をこれより小さくすると、デジタル画像のピクセルは4個の投影ビンに影響し得る。
【0097】
ピクセルが隣接する2個の投影ビンに影響する、本発明に従う方法、システム又は装置の実施形態は、投影線の向きの大多数に対して、多くの先行技術の方法と比較して良好な技術的トレードオフを提供できる。ピクセル重量テンプレートの特性の選択における良好なフレキシビリティを達成できると同時に、単純且つ高速の動作を可能にする。これらの実施形態では、大多数の向きにとって他のストラテジーも好都合であり得るが、これについては以下に、例えば
図6に関連して説明する。
【0098】
図3と
図4の8個のピクセル重量テンプレートは、8個のスライスから生成されることができ、1個のスライスは互いに排他的なセットのピクセルの処理についての情報を含んでいる。
【0099】
図4に対応する実施形態について、要素400と要素402はスライス0を含み、要素410と要素412はスライス1を含み、要素420と要素422はスライス2を含み、要素430と要素432はスライス3を含み、要素440と要素442はスライス4を含み、要素450と要素452はスライス5を含み、要素460と要素462はスライス6を含み、及び要素470と要素472はスライス7を含む。
【0100】
スライスは、ピクセル重量テンプレートの反復シーケンスを定義する代替法として使用できる。一般に、ピクセル重量テンプレートは1個の投影ビンがどのように計算されるか定義するが、特定のピクセルがどのように使用されるかは定義しない。なぜなら当該ピクセルは多数のテンプレートによって使用され得るからである。これと対照的に、一般に、スライスはピクセルのセットがどのように使用されるかを定義するが、特定の投影ビンがどのように計算されるかは定義しない。なぜなら当該ビンは多数のスライスによって影響されるからである。どちらにしても同じ1D信号が生み出される。スライスを用いてピクセル重量テンプレートの反復シーケンスを定義することにより、計算を所定の順序で、単純さと速度を含む好都合な特性を有し得る装置によって実行することが可能となるが、これについてはさらに本明細書で説明する。
【0101】
図5は、
図3と
図4のピクセル重量テンプレートを3回反復するためのスライスを示す。第1の反復500、第2の反復510及び第3の反復520が示されている。この図のグリッド上の数字がスライスを特定する。
図5は、反復をどのように組み合わせて任意の長さの反復シーケンスを形成するかも示す。ここではスライスは8個の周期で反復し、示された3回の反復から24個のスライスのシーケンスを生成できる。
【0102】
図5の例では2個の連続スライスを使用して、各ピクセル重量テンプレートを生成し、示された24個のスライスは23個のピクセル重量テンプレートを生成する。例えば第1の反復500のスライス7と第2の反復510のスライス0〜7を使用して、
図3と
図4のピクセル重量テンプレートの1回の完全な反復を生成する。この例におけるピクセル重量テンプレートは8個の反復周期を有する。
【0103】
ピクセル重量テンプレートの反復シーケンスから生成された投影ビンのシーケンスの長さは、反復の全数である必要はない。本明細書で開示される装置の種々の実施形態は、反復周期に関わりなく任意の長さのシーケンスを生成できる。
【0104】
図5では、右方向に5ピクセル当り3ピクセル下降している投影線530の勾配がより容易に見て取れる。それはスライスが重ならないからであり、スライスは
図3と
図4で用いられた別途の水平分離なしに図示され得る。
【0105】
図5はさらに、図示のスライスにより
図3と
図4の重量を用いて生成された23ピクセル重量テンプレートに対応する重心540のシーケンスを示す。重心540は前述したように投影線530に沿って等間隔に置かれており、ここではこの特性が反復境界に沿って維持されていることが見て取れる。
【0106】
与えられた向きに対する反復シーケンス、及び随意に、与えられた実施形態においてテンプレートで全部又は一部使用される追加のデータを含む、ピクセル重量テンプレート又は同等にスライスの完全なセットを、本明細書ではモジュールと呼ぶ。
【0107】
上述したように、デジタル画像のピクセルが2個の投影ビンに影響するようにピクセル重量テンプレートを選択することは、投影線の向きの大多数に対して良好な技術的トレードオフであり得る。しかしながら、ピクセルグリッドのジオメトリの故に幾つかの少数の向きに対しては、別の選択が好都合であり得る。このことは特にグリッドの平行な向きと対角の向きに近い向きに該当する。平行か又は平行に近い投影線の許容可能な向きのサブセットを平行領域と呼ぶ。対角か又は対角に近い投影線の許容可能な向きのサブセットを対角領域と呼ぶ。平行領域又は対角領域にない向きは、正規領域にある。平行領域と対角領域の集合を変性領域と呼ぶ。
【0108】
上述したように、信号方向におけるピクセル重量テンプレートのぼやけは、1D信号抽出方法の解像度を制限し得る。信号方向におけるぼやけは、例えば当該方向における位置の加重標準偏差として定義できる。ピクセル、及びピクセル重量テンプレートを構成する重量を選択できるにもかかわらず、ピクセルグリッド自体がそれらのピクセルの信号方向における位置を定義する。大多数の向きに対して、投影線近傍のピクセルの信号方向の座標はかなり一様に分布して、信号方向のぼやけの選択においてフレキシビリティを可能にする。しかしながら平行領域と対角領域における向きに対しては、これらの信号方向の座標は一様に分布しておらず、グリッドの行、列又は対角線の周りに、間に空きスペースを置いて集まっている。ぼやけは重量よりも強く影響し得るので、平行領域及び/又は対角領域における向きに対するピクセル重量テンプレートの選択において異なるストラテジーに従うことが好都合であり得る。
【0109】
幾つかの実施形態において、平行領域における向きに対してピクセル重量テンプレートは、デジタル画像のピクセルが1個の投影ビンに影響するように選択されている。
図6は、平行領域において勾配が右方向に9ピクセル当り1ピクセル下降している向きの投影線610を示す。ピクセル重量テンプレート600の反復シーケンスが示されており、各テンプレーは1列である。そのようなテンプレートが9個ある。
図3の例におけるように、重量は、テンプレートが実質的に同じ総重量を有するように、且つ重心が投影線610に沿って等間隔に置かれるように選択されている。ピクセルは1個の投影ビンに影響するので、テンプレートは重ならないことに留意すべきである。
【0110】
幾つかの実施形態では、対角領域における向きに対してピクセル重量テンプレートは、デジタル画像のピクセルが1個の投影ビンに影響するように選択されている。
図6は、対角領域において勾配が右方向に8ピクセル当り7ピクセル下降している向きの投影線630を示す。ピクセル重量テンプレート620の反復シーケンスが示されており、各テンプレーは対角に向けられた矩形内に位置する。そのようなテンプレートが15個ある。
図3の例におけるように、重量は、テンプレートが実質的に同じ総重量を有するように、且つ重心が投影線630に沿って等間隔に置かれるように選択されている。ピクセルは1個の投影ビンに影響するので、テンプレートは重ならないことに留意すべきである。
【0111】
幾つのピクセルが投影ビンに影響するかの選択は、平行領域及び/又は対角領域における異なるストラテジーに従う1例に過ぎない。別の例はビン間隔の選択であり、以下に
図7及び
図16と関連して説明する。
【0112】
平行領域と対角領域の広がりは、例えば所望の解像度、所望のノイズ低減、及び投影方向における所望のぼやけを含む多数の要因に依存し得る設計上の選択である幾つかの実施形態で、例えば高い解像度がそれほど重要でなく、及び/又は大きいノイズ低減が所望される場合は、一方又は両方の領域を小さくし、あるいは空にしてもよい。さらに、正規領域の信号方向位置特徴のかなり一様な分布から、変性領域の一様でない分布特徴への移行点は、投影方向におけるピクセル重量テンプレートの広がりに依存する。その広がりが大きければ大きいほど、変性領域は小さくなろう。投影方向におけるピクセル重量テンプレートの広がりは、投影方向における所望の量のぼやけによるノイズ低減に大きく依存している。
【0113】
これらの設計上の選択の1例が
図18、
図19及び
図20に示されており、以下により詳細に説明する。それらの図は、投影方向における所望のぼやけが約2.3ピクセルであり、且つ信号方向における所望のぼやけがビン間隔の約34%である実施形態のために、0〜90度の範囲における171個の許容可能な向きのセットを示す。各行のデータは特定の1個の向きについての情報を与え、これは角度列1850における度で表されている。領域列1810は、正規領域における向きに対して「0」、及び変性領域における向きに対して「1」を含む。平行領域は0〜6.34度及び83.66〜90度の範囲における向きを含み、171個の許容可能な向きのうち24個を包含する。対角領域は41.19〜48.81度の範囲における向きを含み、15個の向きを包含する。正規領域は132個の向きを包含するが、これは総数の約77%の大多数である。本明細書では大多数は50%以上を意味する。
【0114】
図7は、与えられた投影線の向きに対してピクセル重量テンプレートを選択するための、本発明に従う方法の例示的な実施形態である。
図7の方法は、特定の投影線を記述する情報が受け取られた後で適用できる。代替として、
図7の方法は許容可能な向きのセットのうちの幾つかの向き又はすべての向きに適用でき、その結果はメモリに記憶され、特定の投影線を記述する情報が受け取られた後で順次使用のために引き出される。
図7の方法は
図3、
図4及び
図6の例でピクセル重量テンプレートを取得するために使用された。
【0115】
図7の例示的な方法では、許容可能な向きは有理勾配を有するがこれは勾配が整数Nの整数Dに対する比であることを意味する。NとDは通常は互いに素であるが、以下に説明するようにそうでなくともよい。Dは無限勾配を表す0であってもよい。NとDがいずれも非負数であれば、0〜90度の範囲における勾配を規定できる。NとDのいずれか一方が非負数であり、他方が何らかの整数値であることが許される場合は、0〜180度の範囲における勾配を規定できるが、これは平面上で可能な向きの全範囲をカバーする。
【0116】
許容可能な向きのセットは、
図18、
図19及び
図20の171個の向きなどの有理勾配の向きの特定のサブセットに制限できる。
図18、
図19及び
図20において分子列1800はNを含み、分母列1801はDを含む。許容可能な向きのセットの選択については、さらに以下に説明する。0°と90°を除くすべての向きを複製し、複製中のDを無効にするならば、0〜180°の全範囲をカバーする340個の許容可能な向きが得られる。
【0117】
再び
図2を参照するならば、例示の投影線220は有理勾配を有しており、許容可能な向きのセットの1員である。要求された投影線250は有理勾配であってもなくてもよく、許容可能な向きのセットの1員であってもなくともよいが、その理由の1つはプロセスが何を提供しようとも要求された投影線250は許容可能な向きのセットの存在又は詳細に気付かないことがあるからである。
図2の例では1員ではなく、例示の投影線220を取得するために要求された投影線250は、例えば中心の周りをわずかに回動される。
【0118】
図7の方法において、P個のピクセル重量テンプレートの反復シーケンスが選択される。P個のテンプレートがあるのだから、反復周期はPである。シーケンスの各テンプレートは以前の反復における同じテンプレートからx方向(例えば右方向)にN個のピクセル、及びy方向(例えば下方向)にD個のピクセルに置かれて、テンプレートは投影線の勾配に従う。
図3〜
図5の例では、N=3、D=5及びP=8である。
図6のピクセル重量テンプレート600については、N=1、D=9及びP=9である。
図6のピクセル重量テンプレート620についてはN=7、D=8及びP=15である。
【0119】
引き続き
図7を参照して、ステップ700は、与えられた用途の必要、主として解像度とノイズ低減によって決定される種々の基準に従い与えられた勾配N/Dに適切なビン間隔とぼやけを選択する。各テンプレートは1個の投影ビンを生成するから、またテンプレートはP個のビンにおいて(N、D)ピクセル座標が移動するから、ピクセルにおけるビン間隔Bは、
【数1】
である。
【0120】
ここで我々は正方形ピクセルを仮定していることに留意すべきである。正方形、平行四辺形又は六角形のピクセルなど他のジオメトリに対する同等の式は容易に導出される。さらに我々は、投影方向は信号方向に対して垂直であると仮定している。非垂直方向に対する同等の式も容易に導出される。
【0121】
方程式1を用いて、ステップ700はPを選択することによってビン間隔Bを選択できる。この選択はPの整数値に限られているが、何らかのビン間隔はNとDに整数を乗算することによって任意の精度に近似され得て、投影線の勾配を保ちながらビン間隔の選択においてより高い精度を可能にする。高い解像度が所望される幾つかの実施形態において、例えば
図3、
図4、
図6、
図18、
図19及び
図20の実施形態では、平行領域における向きに対してはP=max(|N|,|D|)及び他のすべての向きに対してはP=|D|+|N|である。やや低い解像度が所望される幾つかの実施形態では、平行領域における向きに対してはP=max(|N|,|D|)、及び他のすべての向きに対してはP=max(|N|,|D|)+min(|N|,|D|)/2であり、Pを整数にするために必要ならばDとNは2で乗算される。さらに低い解像度が所望される幾つかの実施形態では、すべての向きに対してP=max(|N|,|D|)である。ビン間隔のこれらの特定の選択については、以下に
図16との関係でさらに説明する。これらのビン間隔選択は、平行領域及び/又は対角領域における異なるストラテジーに従う別の例である。
【0122】
ステップ700も、目標信号方向ぼやけσ
u及び目標投影方向ぼやけσ
νを選択する。ピクセル重量テンプレートの実際のぼやけ値は、さらに以下に説明するように一般にやや異なることに留意すべきである。幾つかの実施形態では、信号方向ぼやけσ
uと投影方向ぼやけσ
νの一方又は両方はあらかじめ決めることができ、それゆえステップ700で選択されない。
【0123】
目標投影方向のぼやけσ
νのより大きい値は、より大きいノイズ低減を提供するが、バーコードのバーなどの画像特徴が投影方向に実質的に平行でない場合は、より大きい値のσ
νは1D信号の品質を劣化させ得る。したがって使用するのに適した値は、用途に依存している。
図3、
図4、
図6、
図18、
図19及び
図20の実施形態では、σ
ν=3.0ピクセルである。
【0124】
目標信号方向ぼやけσ
uは、ビン間隔に比例するように選択でき、投影線の向きと共に変わる。高い解像度が所望される幾つかの実施形態において、例えば
図3、
図4、
図6、
図18、
図19及び
図20の実施形態では、σ
uは正規領域におけるビン間隔の35%であり、変性領域におけるビン間隔の70%であり、これは平行領域及び/又は対角領域における異なるストラテジーに従うさらに別の例である。より低い解像度が所望される別の実施形態では、σ
uはすべての領域でビン間隔の50%である。
【0125】
正方形ピクセルと垂直投影方向に対して、(x、y)ピクセル座標と(u、v)信号投影座標との間のマッピングは、
【数2】
である。ここで、(x
0、y
0)は、0<x
0,y
0<1の範囲におけるサブピクセルオフセットである。ステップ710、720、730、740、750及び760は、以下に説明する性能指数に従って最良のサブピクセルオフセットを選択することを目的とする1組のサブピクセルオフセットにわたるループを表す。例示的な実施形態において、サブピクセルオフセットは1/8ピクセルの間隔を有する第1の8x8グリッドを包含する。別の例示的な実施形態では、第2の8x8グリッドが1/64ピクセルの間隔で加算され、最高の性能指数を受け取った第1のグリッドからのサブピクセルオフセットに焦点を合わせる。さらに別の実施形態では、単一の固定したサブピクセルオフセットが使用され、ステップ720、730、740が1回実行されるだけで、ステップ710、750、760及び770は必要とされない。
【0126】
ステップ720では、生ピクセル重量テンプレートを次のように作成できる。まず、P個のスライスが作成されて0−P−1と番号付けされる。|v|≦v
max及び0≦u/B<Pのような概念的に非有界のグリッド上のどのピクセルも、スライス[u/B]の要素となる。ここで、v
maxはパラメータ、例えば1.5σ
νである。上述したように、P個のスライスはP個のピクセル重量テンプレートの要素を定義する。例示的な実施形態では正規領域における向きに対しては2個の隣接スライスモジュロPがテンプレートを定義し、変性領域では各スライスがテンプレートを定義する。
【0127】
次に、各テンプレートに対し、テンプレートを定義するスライスに重量を割り当てることによって、当該テンプレートの一部である各要素に重量が割り当てられる。これは正規領域における向きについて、スライスによって影響される2個のテンプレートに対応して、各スライスの各要素に2個の重量が割り当てられることを意味する。変性領域においては、各スライスの各要素に1個の重量が割り当てられる。
【0128】
図7の教示と一致してテンプレートに重量を割り当てるために、多様な方法を用いることができる。例示的な実施形態においては、浮動小数点重量が、楕円ガウス関数に従って割り当てられる
【数3】
ここで、(u,v)はテンプレート要素の信号−投影座標であり、w
balはステップ720で1.0であり、ステップ740で調整され、及び(u
0,v
0)はテンプレートの原点の座標である。ステップ720で原点(u
0,v
0)はテンプレートの幾何中心に設定され、ステップ730で調整される。スライスsとs+1(モジュロP)からなる正規領域におけるテンプレートについては、幾何中心は(s+1,0)にある。スライスsからなる変性領域におけるテンプレートについては、幾何中心は(s+0.5,0)にある。
【0129】
ステップ730で、各テンプレートの重量は、重心が勾配N/Dの直線に沿って等間隔に置かれるように調整される。式3に従う連続非有界楕円ガウス関数に対して重心は(u
0,v
0)にあり、テンプレートが連続的で非有界であったなら重心は既に勾配N/Dの直線に沿って等間隔に置かれているであろう。しかしながら重量は不連続不規則有界グリッド上にあり(例えば
図3)、重心は一般にそれほど好都合に位置付けられない。
【0130】
ステップ730の範囲内でテンプレートの重量を調整するために使用できる多くの方法がある。比較的小さい調整を行うことが望ましいので、幾つかの実施形態はテンプレートの重心のそれらの幾何中心からの平均オフセットを計算する。幾何中心は勾配N/Dの線に沿って等間隔に置かれているので、それらの幾何中心からの何らかの固定したオフセットにおける点も存在するであろう。重心の幾何中心からの平均オフセットは固定したオフセットであり、重心を所望の勾配の線に沿って等間隔に置くような、重心の最小の全体運動である。したがって各テンプレートの重心に対する目標位置は、最小の全体運動を可能にするように定めることができる。
【0131】
目標位置が定まると、各テンプレートの重心に対する運動ベクトルが知られる。例示的な実施形態では、重量が各テンプレートの一方の側に優先的に加算されて重心を所望の方向に所望の量だけ動かす。
図3、
図4、
図6、
図18、
図19及び
図20の例に対応する別の例示的な実施形態では、原点(u
0,v
0)は各テンプレートに対して個々に調整されて、重心が目標位置に移動される。この実施形態は、2個の未知数(原点の座標の関数としての重心の座標)を含む2個の非線形連立方程式を解くことを要求し、これはよく知られたニュートン・ラプソン法を用いて行うことができる。
【0132】
テンプレートが2個のスライスから生成され、u座標がかなり均一に分布している正規領域については、連立方程式は通常好条件のためニュートン・ラプソン法は迅速に合理的な解に収束する。変性領域については、連立方程式は条が悪いか変性していることがある。したがって平行領域では運動は投影方向に最も近い平行方向(x又はy)にあらざるを得ず、対角領域では運動は投影方向に最も近い対角方向にあらざるを得ない。その結果として好条件の1度の自由度問題が生じ、これはニュートンの方法で解くことができる。変性領域を処理するこの方法は、好ましくは以下に説明する領域選択法と共に使用される。
【0133】
ステップ720と730の代替的な実施形態において、楕円ガウス関数の代わりに楕円放物線が使用される。
図7の範囲内で位置の何らかの適当な関数を使用できる。本明細書で説明する、又は当業者が予想する実施形態は、特定の特性、例えば連続的であるという特性を有する関数に依拠してよい。
【0134】
重心を調整するための上述した方法は例示であり、ステップ720で得られたよりも均一な重心の間隔を提供する他の多くの方法が案出され得る。最小の全体運動を可能にする目標位置を用いることは望ましいが、要求されない。ニュートン・ラプソン法は非常に正確な結果を提供できるが、精度よりも速度が重要であれば、より単純な評価を使用できる。重量が一方の側に優先的に加算される実施形態において、加算される重量と、この重量を加算する位置は、計算に利用可能な時間に応じて種々の精度で計算できる。
【0135】
ステップ740は、各テンプレートについて個々にw
balを調整することによって重量を増減して、各テンプレートが同じ総重量を持つように、及びすべてのテンプレートを通して最大要素重量が所望の値、例えば1.0であるようにする。w
balは重心にもテンプレートのぼやけにも影響がないので、所望の重心とぼやけを得るためになされたすべての作業を無効にすることなく自由に調整できる。
【0136】
式3に従う連続非有界楕円ガウス関数について、信号方向のぼやけはσ
uであり、投影方向のぼやけはσ
νである。しかしながら重量は不連続不規則有界グリッド上にあるので、実際のぼやけは一般にやや異なるであろう。例えばσ
ν=3.0及びv
max=4.5に対して、計算された投影方向のぼやけは一般に2.1〜2.4の範囲内にある。正規領域におけるσ
u=0.35Bに対して、計算された信号方向のぼやけは一般に0.33B〜0.38Bの範囲内にある。変性領域におけるσ
u=0.70Bに対して、計算された信号方向のぼやけは一般に0(平行な向きと対角の向き)〜0.23Bの範囲内にある。変性領域が正規領域と同様に処理されたなら、信号方向のぼやけはさらに高く、最大0.5Bとなろう。留意すべきは、計算されたぼやけが変性領域におけるように非常に低いと、解像度は一般に外的要因によって制限され、一般により現実的に上述したシステムぼやけを含むことである。
【0137】
ステップ750は、ステップ770で最良のサブピクセルオフセットを選択するために、及び例えば
図16で使用されているように別の目的に使用できるモジュール(テンプレートの完全なセット)に対する性能指数を計算する。ステップ740の調整の後で各テンプレートは同じ総重量w
totを持つので、モジュール重量はw
totであると定義できる。重量は正規化されているので、モジュールの最大要素重量は1.0である。異なるモジュールの重量を比較することが合理的である。一般により高い総重量はより大きいノイズ低減を提供するので、幾つかの実施形態では性能指数はw
totである。
【0138】
別の実施形態では、システムぼやけσ
sysを考慮してノイズ低減と解像度を結合した、密度と呼ばれる性能指数が使用される。
【数4】
ここでσ
u*は、モジュール内のすべてのテンプレートにわたって計算された信号方向のぼやけの最大値である。σ
sysに対する合理的な値は0.28ピクセルで、これは運動ぼやけがなく焦点が完璧なシステムにおける100%フィルファクタの電気光学ピクセルをモデル化し得よう。異なる外的条件をモデル化するために、これより高い又は低い値を使用できる。
【0139】
幾つかの実施形態では、ピクセル重量テンプレートはそれまでに得られた浮動小数点重量を使用する。別の実施形態では、ステップ780は浮動小数点値を、整数演算動作に依拠して加重和を計算する装置で使用するための整数に変換する。ステップ780に対しては、整数値に変換しながら、総重量の品質及びそれまでに得られた重心の均一な間隔を合理的な精度で保つことが望ましい。
【0140】
上述したように、テンプレートの重量を増減することは、重心又はぼやけに影響しない。整数に丸めることは一般に小さいがゼロではない影響を持つ。例示的な実施形態で、モジュールの各テンプレートに対してスケールファクタが選択されて丸める前に適用され、その結果そしてほとんど常に正確に同じ総整数重量を持つモジュールのテンプレートが生じる。
【0141】
目標スケールファクタw
1は、所望の最大整数重量のすぐ下の値となるように選択される。例えば整数重量が8ビットに収まるべきだとすれば、所望の最大重量は255であってもよく、w
1は254であり得よう。w
1は浮動小数点値であることに留意すべきである。テンプレートのどの要素についても、w
1と以前計算された浮動小数点重量との積を丸めることによって暫定整数重量が計算される。テンプレートに対する暫定総整数重量は、暫定整数重量の合計である。
【0142】
各浮動小数点重量w
f及び対応する暫定整数重量w
iについて、目標スケールファクタw
iの上界及び下界は、両界の間の何らかの値w
1がw
iを変化させないように計算される。両界は(w
i±0.5)/w
fである。与えられたテンプレートについて、テンプレートのすべての要素に対するすべての下界及び上界がアレイに集められ、増加する数値順にソートされる。したがってアレイは上半分>w
1及び下半分<w
1の偶数の値を含む。
【0143】
アレイは、点間のギャップの大きさが様々である、実数線に沿った点と見なすことができる。ギャップ内の何らかの値w
1に対して、w
iの丸めた積と浮動小数点重量の合計であるテンプレートの総整数重量は変わらない。w
iはアレイ内の1点を通って次のギャップに進むので、総整数重量は1だけ変わる。総整数重量が暫定総整数重量に等しい場合、アレイ内の中心ギャップ、即ち上半分と下半分の間のギャップはw
iの値に対応する。
【0144】
1つのギャップから次のギャップへの正確な移行点は、浮動小数点動作の挙動が機械に依存するためやや不明瞭である。アレイ内の2点が大凡の機械精度で同一であるか又はほぼ同一であるならば、具体的な総整数重量が達成される明瞭なギャップはないことになろう。近接した対を通過してw
1が増加又は減少すると総重量は事実上2だけ変化するであろうが、これらのケースは比較的稀である。その理由は1つには浮動小数点重量が取得される方法にあり、1つには浮動小数点数の精度が高ければ、極小のギャップでも充分だからである。
【0145】
上記の理解により、ステップ780の例示的な実施形態の説明を完結させることができる。与えられたモジュールのすべてのテンプレートに対する目標総整数重量は、w
iとw
totの積を丸めることによって計算される。与えられたテンプレートに対する目標総整数重量と暫定総整数重量との差が、目標に達するには総整数重量をどれだけ変化させなければならないかを示す。総整数重量は通過されたアレイ内の各点に対して(上又は下に)1だけ変化するので、この差は目標総整数重量に対応するギャップを見いだすためにアレイの中心からのオフセットを使用できる。オフセットを用いてw
iの値はアレイ内の隣接する2個の値の中点に変えられる。w
1の新しい値を用いて、最終的な整数重量はw
1と浮動小数点重量との積を丸めることによってテンプレートに対して計算される。
【0146】
最終的な整数重量はスケーリングと丸めによって計算されるのであるから、重心とぼやけにおける高精度は維持される。w
1の新しい値を計算するために使用するギャップが機械精度よりも実質的に大きい場合は、テンプレートの総整数重量は正確に目標値であろう。幾つかの実施形態では、総整数重量が目標と異なる稀なケースはあっさり無視される。即ち差は顕著であるとみなされない。別の実施形態では、目標に達しなかったテンプレートの個々の整数重量を上又は下に調整して総重量を補正する。調整されるべき重量は、丸めるポイントに最も近いことが好ましい。
【0147】
幾つかの実施形態では、ステップ790を実行してモジュールに対するDMA(ダイレクトメモリアクセス)転送テンプレートを選択する。このテンプレートは種々の装置でパラメータを取得するために使用でき、DMAコントローラはこれらのパラメータを使用して、与えられた投影線に対する1D信号を発生するために使用するピクセルをメモリから得ることができる。転送テンプレートの選択、及びこの目的のためにDMAを使用することについては、さらに以下
図9、
図13、
図14、
図15、
図17、
図18、
図19及び
図20との関係で説明する。
【0148】
幾つかの実施形態では、モジュールに対する領域(平行、対角、又は正規)を決定するためにステップ720の部分の変形例が使用される。N、D、σ
ν、及びv
maxの既知の値から、及びサブピクセルオフセット与えられた値(x
0,y
0)に対して、スライスの要素となるであろうすべてのピクセル位置が、ステップ720の上記の説明に従うことによって特定できる。各スライスに対して当該スライスのすべての要素が全部ピクセルグリッドの1行又は1列に包含されるようなサブピクセルオフセットがある場合、モジュールは平行領域にある。各スライスに対して当該スライスのすべての要素が全部ピクセルグリッドの1対角線に包含されるようなサブピクセルオフセットがある場合、モジュールは対角領域にある。それ以外の場合にはモジュールは正規領域にある。
【0149】
代替的な実施形態において、ステップ720、730及び740は、ピクセル重量テンプレートを補間、例えば双線形補間に基づいて選択する方法と置き換えられる。この代替的な実施形態では、ピクセル重量テンプレートを使用して、投影方向における線に沿った諸点で補間されたピクセル値の合計を計算する。補間式は、先行技術の補間法で通常行われているようにデジタル画像のピクセル自体には適用されず、むしろテンプレートを計算するために使用される。このやり方で得られたモジュールのテンプレートは、一般に本明細書の別の箇所で説明されるよりも複雑なオーバーラップのパターンを有するであろう。なぜなら上に述べたように、例えば双線形補間によってピクセルは1個、2個、3個又はさらに4個の投影ビンに影響し得るからである。
【0150】
先行技術の補間法において、固定した投影ビン間隔、例えば1ピクセルは一般にすべての向きで使用される。しかしながら、ピクセル重量テンプレートの反復シーケンスを生成するために、投影ビンの間隔は慎重に選択された向きの関数である。方程式1を参照すると、Pを整数とするためにBは、一般に無理数の特定のセットからNとDの関数として選択されなければならない。N=3、D=4などの稀な向きでのみ、Bの単純な値、例えば1ピクセルは反復シーケンステンプレートを生じるであろう。したがってピクセル重量テンプレートを選択するために補間を使用するこの代替的な実施形態のために、ビン間隔は、本明細書の他の箇所で述べられているように向きの関数として選択される。
【0151】
図8は、双線形補間を用いる方法と比較して、本明細書で説明する実施形態によって達成できる強化された解像度を示す。先行技術による双線形補間を用いてバーコード800から1ピクセルのビンの間隔で投影線810に沿って1D信号820が抽出される。1D信号830は本明細書で説明する実施形態を用いて投影線810に沿って抽出される。いずれの方法も高い測光精度と幾何精度を有するが、本明細書で説明する実施形態の信号方向のぼやけは実質的に低減されて、より小さいビン間隔とより高い解像度を可能にする。
【0152】
双線形補間によって抽出される1D信号820では、特徴840、842及び844は著しく減衰されている。特徴850、852、854及び856は完全に消失している。これらの減衰又は消失した特徴は、バーコード800の狭いバーとスペースに対応し、減衰及び/又は消失はバーコード800が復号されるのを防ぐ。1D信号830ではこれらの特徴はやや減衰されているが、減衰はそれほど著しくないためバーコード800が複合されるのを防ぐことはできない。
【0153】
図9は、本発明に従う装置の種々の実施形態で使用できるモジュールデータ構造900を示す。プロセッサデータ910は、ピクセル重量テンプレートの反復シーケンスを用いて1D信号を計算するために、マイクロプロセッサ又はプログラム可能なゲートアレイなどの計算装置によって使用される情報を含む。プロセッサデータ910には、上述したように整数NとDの比である勾配によって規定される、モジュール900に対応する投影線の許容可能な向きの記述が含まれている。また、モジュールのピクセル重量テンプレートの数Pも含まれており、これは1回の反復によって生じる投影ビンの数と、及びモジュールの周期とも同じである。向きがそれぞれ該当する領域(平行、対角又は正規)についての情報は、例えばモジュールのスライスが1個又は2個の投影ビンに影響するか決定するために使用できる。
【0154】
テンプレートの重心を規定する情報は有用であり得る。P個の重心が勾配N/Dの線に沿って充分な精度で等間隔に置かれている実施形態においては、すべての重心の位置を規定するために1個のみの重心の位置で充分であり得る。重心はアンカーピクセルと相対的に規定できるが、これは1個のモジュールの任意に選択された1個のテンプレート内で任意に選択された1個のピクセル、例えば第1のテンプレートの第1のピクセルである。
【0155】
モジュールデータ構造900は転送テンプレート920も含んでよい。このテンプレートは、DMA転送パラメータのセットを計算するのに必要とされる情報を提供する。これらのパラメータはモジュール900の向きで特定の投影線に対応するピクセルを得るのに使用できるが、これについては以下に詳細に説明する。
【0156】
幾つかの実施形態ではモジュールデータ構造900は、マイクロプロセッサなどのプログラム可能デバイスのためのソフトウェアで実施される。マイクロプロセッサは、
図14に示され、さらに以下に説明するようなDMAコントローラを含んでよい。モジュールデータ構造900は、
図17に示されているように、及びさらに以下に説明するように、周知のC言語などのプログラミング言語で規定できる。
【0157】
幾つかの実施形態ではモジュールデータ構造900は、許容可能な向きのセットの各々又は一部に対して計算されて、メモリに記憶される。1例が
図18、
図19及び
図20に示されている。分子列1800、分母列1801、ビンカウント列1802、領域列1810、x重心列1820及びy重心列1821はプロセッサデータ910を保持する。DMAスタイル列1830、「A」カウント列1831、ベースカウント列1832、追加スライスインデックス列1833、「B」オフセット列1834、x原点列1835、及びy原点列1835は転送テンプレート920を保持する。
【0158】
図9には、モジュール900の実際のピクセル重量テンプレートは示されていない。テンプレートを定義するデータの例を、以下に
図10と
図12に関連して掲げる。
【0159】
図10は、マイクロプロセッサ又はその他のプログラム可能な計算手段を含む実施形態において使用できる、C言語によるコンピュータプログラムの一部である。これらの実施形態では、上述したようにスライスからモジュールが生成される。スライスは1個以上の制御語1000を含んでいる。各制御語1000は、ピクセルの相対的位置(pixeloffset)と、スライスから生成される2個の隣接ピクセル重量テンプレートに対する重量(binWeight0,binWeightl)を定義する。
【0160】
ピクセルオフセットはアンカーピクセルと相対的である。アンカーピクセルはモジュールの各々の完全な反復に対して固定されたままであり、次の反復に対して更新される。ピクセルオフセットは(x、y)オフセットとして規定できる。それはまた制御語1000におけるようにアドレスオフセットとして規定されてもよく、これは行ピクセルのピッチ(行アドレス差)に基づいてx成分とy成分を結合する。例示の制御語1000ではピクセルオフセットに対して15ビットが割り当てられており、完全な制御語1000は簡便な32ビットである。与えられた実施形態において必要であれば、これより多い又は少ないビットを割り当てることができる。
【0161】
図10の実施形態において、モジュールのすべての制御語はメモリに、スライス0の制御語で始まりスライスP−lの制御語で終わるアレイの連続要素で記憶される。各制御語1000は、1個のスライスの終わりと1個の投影ビンの出力を示すフラッグ(nextBin)を含んでいる。
【0162】
モジュールのスライスを用いて1D信号を抽出するために、例えばサブルーチンの呼び出し又は何らかの適切な手段によって入力変数1010が提供される。見出されるように、これらの入力変数1010の幾つかは内側ループ1030の実行中に更新され、その他は一定である。
【0163】
入力変数pixeiAddressは、モジュールの現在の反復のアンカーピクセルのポインタである。それは最初に第1の反復のアンカーピクセルを規定し、反復ごとに更新される。入力変数binAddressは生成されるべき次の投影ビンのポインタである。それは最初に1D信号の第1のビンを規定し、各スライスの後で更新される。入力変数カウントは、生成されるべき1D信号中の制御語の残りの数を規定する。それは最初に制御語の全数を規定するが、これはスライスの全数に対応していなければならず、反復の全数に対応しても、対応しなくともよい。countの初期値は、所望される投影ビンの数と、各スライス中の制御語の既知の数に基づいて計算され、0までカウントダウンされて内側ループ1030が実行される。
【0164】
入力変数controlAddressはモジュールの第1の制御語のポインタであり、更新されない。入力変数moduleSizeはモジュール中の制御語の数を規定し、更新されない。入力変数moduleOffsetはある1回の反復のアンカーピクセルから次の反復のアンカーピクセルまでのピクセルアドレスオフセットを規定し、更新されない。
【0165】
内側ループ1030の実行中、ループ変数1020が用いられる。ループ変数bin0及びbin1は2個1組のレジスタであり、現在処理しているスライスによって影響される2個の投影ビンに対する現在の部分和を保持している。これらは示されているようにゼロに初期化され、以下に説明するように、内側ループ1030の実行中に線形シフトされる。ループ変数controlLoopcountは、現在の反復に対して処理されたモジュールの制御語の数のカウントを保持する。それは0に初期化されて、各制御語に対して増分され、各反復の終わりに0にリセットされる。
【0166】
内側ループ1030は、処理される各制御語に対して1回実行される。現在の制御語が取り出され、制御語中のピクセルオフセットを用いて現在のピクセルが取り出される。次に制御語中のピクセルと2個の重量を用いて2個のレジスタ(bin0及びbinl)のセット中のビン部分和が更新される。
【0167】
制御語中のフラッグがスライスの終わりを指示したら、2個のレジスタ(bin0及びbin1)のセットは線形シフトされる。次の投影ビンが、シフト出力されたbin0の値から生成され、bin1がbin0にシフト入力され、0値がbin1にシフト入力される。その効果は、どの投影ビンもモジュールの1ピクセル重量テンプレートを定義する2個の連続スライスから生成されることである。
【0168】
ループ変数controlLoopcountは増分され、その値がピクセル重量テンプレートのシーケンスの1回の完全な反復に対応するモジュールの終わりを指示したら、pixelAddressが更新されて、次の反復に対するアンカーピクセルを指し示し、controlLoopcountは0にリセットされる。
【0169】
ここで、1個のスライスのみ使用されたのであるから、内側ループ1030によって生成された第1の投影ビンは不要なデータであることに留意すべきである。
【0170】
図10のプログラムは、例えばピクセル又は完全なスライスが2個ではなく1個のみの投影ビンに影響する変性領域のモジュールに対して使用できる。そのようなケースではbinWeightlは0に設定されてもよい。代替として、制御語当り1個のみの重量と1個のみのレジスタのセットを有する類似のプログラムが使用されてもよい。
【0171】
各ピクセルが2個以上のビン、例えばN個のビンに影響し得る実施形態に対して、制御語1000はN個の重量を保持でき、ループ変数1020はN個のレジスタのセットを含むことができ、内側ループ1030はN個のレジスタのセットを更新及び線形シフトできる。当業者であればこのようなプログラムの修正を行うことができよう。
【0172】
図11は、計算ステップがその動作のため主としてソフトウェアに依拠しないデジタル電子デバイス、例えばフィールドプログラマブルゲートアレイ(FPGA)で実行し得る実施形態を示す。テーブルメモリ1100は例示のモジュール1110を含むモジュールのセットを保持し、このセットは投影線の許容可能な向きのセット又はそのようなセットの一部に対応する。例示のモジュール1110はピクセル重量テンプレートの反復シーケンスを規定するデータを保持し、情報は前述したようにスライスの形で存在する。
【0173】
画像メモリ1120はデジタル画像又はその一部を保持する。例示のモジュール1110からのピクセル位置データがアドレス生成器1125によって使用されて、アドレスを画像メモリ1120に送って適当なピクセル取り出すことができる。ピクセルは第1の乗加算器1130と第2の乗加算器1132に供給され、第2の乗加算器1132はピクセル値に例示のモジュール1110から読み出された重量を乗算し、レジスタ01142とレジスタ11140との積を加算する。
【0174】
レジスタ01142とレジスタ11140は2個1組のレジスタを包含する。これらのレジスタは、レジスタ11140にシフト入力されている0値と、レジスタ01142からシフト出力されて1D信号1150の投影ビンに書き込まれている値で示されているように線形シフトできる。例示のモジュール1110内のフラッグビット、カウント又はその他のデータによって示される各スライスの終わりで線形シフトが起きる。
【0175】
各ピクセルが2個以上のビン、例えばN個のビンに影響し得る実施形態に対して、例示のモジュール1110はN個の重量を保持し、N個の乗加算器及びN個のレジスタが存在してよい。当業者であればデバイスに対するそのような修正を行うことができよう。
【0176】
制御装置1160は
図11の装置の種々の要素制御及び調整する責任がある。それはアドレス及び読み出し信号をテーブルメモリ1100に供給し、アドレス生成器1125を制御し、読み出し信号を画像メモリ1120に送り、第1の乗加算器1130と第2の乗加算器1132に命令して作動させ、レジスタ01142とレジスタ11140に命令してシフトさせて1D信号1150に書き込ませ、その他何らかの必要な命令及び制御機能を提供する。
図11の制御装置1160とこれらの他の要素との接続は、図を見やすくするために図からは省略されている。制御装置1160はコンピュータソフトウェアを含んでも含まなくともよい。
【0177】
本明細書では乗加算器という言葉は、ピクセルに重量を乗算し、積をある形の記憶域置に加算することができる何らかのデジタル電子デバイス又はその一部をいう。乗加算器は、第1の乗加算器1130又は第2の乗加算器1132など、その目的のための専用の要素を包含でき、又は内側ループ1030の場合に想定されるように、マイクロプロセッサに内蔵された演算ユニットなどより汎用的なデバイスの一部も包含することができる。
【0178】
図12は、ドット積命令を提供するデジタル信号プロセッサ(DSP)を利用する実施形態を示す。DSPは、デジタル信号処理を強化するために設計された種々のアーキテクチャ特徴を有するマイクロプロセッサである。
図12の例示的な実施形態では、テキサス・インスツルメンツC64x+命令セットを実行することができるDSP、例えばテキサス州ダラスのテキサス・インスツルメンツ社によって製造及び販売されているTMS320DM6435が使用される。この命令セットはテキサス・インスツルメンツ社から一般に入手可能な文書、例えば「文献番号SPRU732H」に記述されている。
図12では、小文字テキストを含む矩形は一般にデータを保持する記憶域(レジスタ又はメモリ)を表し、大文字を含む角丸矩形はC64x+命令セットの命令を表す。
【0179】
図示された実施形態では、すべて上述したように、モジュールはスライスからなり、各ピクセル重量テンプレートは2個のスライスから生成され、各ピクセルは2個の投影ビンに影響する。しかしながら前の例とは異なり、
図12の実施形態では一部C64x+命令セットの単一命令複数データ(SIMD)能力を使用して2個のピクセルが並行に処理される。したがって制御語1200は制御語1000と同様であるが、制御語1200が2個のピクセルオフセットと4個の重量を含み、64ビットである点を除く。制御語1200はまた「e」と表示された1個のスライス終了フラッグも含んでいるが、これはこの実施形態におけるすべてのスライスは偶数のピクセルを取り出して処理することを含意する。
【0180】
各制御語1200に対して、第1のLDBU(符号なし負荷バイト)命令1220は第1のピクセル1222を取り出し、第2のLDBU命令1210は第2のピクセル1212を取り出す。ピクセルは制御語1200に含まれている。2個のオフセットを用いてメモリから取り出される。メモリはDRAM又はキャッシュの一部であってもよく、又はオンチップSRAMの一部であってもよい。PACK2命令1230は第1のピクセル1222と第2のピクセル1212を単一の32ビットレジスタ1232に結合する。
【0181】
DDOTP4(2重ドット積)命令1240は、示されているように4回の乗算と2回の加算を実行するが、これは1個のみの命令に対して相当な量の計算である。結果として生じる2個のドット積は汎用レジスタ1260と汎用レジスタ1250に置かれる。第1の加算命令1262と第2の加算命令1252はドット積を、第1のレジスタ1264と第2のレジスタ1254を包含する2個1組のレジスタに加算し、これは示されていない命令を用いて線形シフトすることができ、1D信号を発生する。
【0182】
DDOTP4命令1240、第1の加算命令1262及び第2の加算命令1252は結合して4個の乗加算器の等価物を提供する。C64x+命令セットを実施する特定のDSPが、
図12に従うプログラムの制御下で、実際に4回の別個の乗算及び4回の別個の加算を使用するか否かは重要ではない。
【0183】
マイクロプロセッサやDSPなどその他の一般に入手可能なプログラム可能デバイスは、1回、2回又はさらにそれ以上のドット積を実行してよいドット積命令を提供する。例えば、インテル社とアドバンスト・マイクロ・デバイシーズ社から出ている、いわゆるMMX命令セットを実施するマイクロプロセッサはPMADDWD命令を含むが、この命令は2重ドット積を実行し、
図12と類似の実施形態で使用することができる。浮動小数点ドット積命令、例えばやはりインテル社とアドバンスト・マイクロ・デバイシーズ社によって提供されている、いわゆるSSE4命令セットも使用することができる。
【0184】
例えば
図7の例示的な方法を用いて、前記許容可能な向きのセットに対してテンプレートを作成することは計算が複雑で高価であり得るが、
図11のテーブルメモリ1100などのメモリに記憶されている結果を用いてオフラインで実行することができる。上述したようにランタイム動作のためにスライスからピクセル重量テンプレートを生成することは、
図10、
図11及び
図12の例示的な実施形態に見られるように計算が単純で装置の高速化につながり得る。しかしながら計算が動作の速度に影響する唯一の要因でなくともよい。ピクセルをデジタル画像から取り出すために必要とされる時間も考慮してよく、これは幾つかの実施形態ではピクセルを処理するために必要とされる時間よりはるかに大きいことがある。
【0185】
スライスを用いる場合、ピクセルは一般に投影線の向きとピクセルグリッドのジオメトリによって決定される所定の順序で取り出される。この順序はある種のメモリ、特にダイナミックRAM(DRAM)にとって好都合でないことがある。デジタル画像がスタティックRAM(SRAM)内に保持される場合、何らかのアクセスの順序は他のどの順序とも同じように速く、スライスによって生成されるピクセル順序は実質的に動作の速度に影響しない。しかしながら利用可能なSRAMは小さ過ぎて完全な画像を保持できないため、画像は一般にはるかに大きいDRAMに入れられなければならない。
【0186】
DRAMは、シーケンシャルメモリ位置へのアクセスが一般に非シーケンシャルアクセスよりはるかに速いという特性を有する。それゆえデジタル画像がDRAMに保持される実施形態においては、ピクセルをシーケンシャル順序で取り出し、それらをスライスによって決定される異なる順序で処理することが好都合であり得る。これはDRAMに保持されているデジタル画像の適当な一部をSRAMに転送する(コピー)することによって達成することができる。転送は合理的にシーケンシャルな順序で行われてもよく、SRAMに入ったらスライスによって課せられる処理順序は性能を劣化させないであろう。ここで留意すべきは、シーケンシャルはある画像中の連続したx座標を意味するが、どの方向がxで、どの方向がyであるかの選択は言うまでもなく任意の約束事であるという点である。
【0187】
幾つかの実施形態では、速度の一層の改善は、第1の1D信号を抽出するために使用されるピクセルの転送と、第2の1D信号を抽出するために前に取り出されたピクセルの処理がオーバーラップすることによって達成することができる。
【0188】
図10と
図12の例示的な実施形態などの幾つかの実施形態では、既知の行ピッチを用いてピクセルオフセットのx成分とy成分を結合するアドレスオフセットであるピクセルオフセットが使用される。そのような実施形態において、及びアドレスオフセットがオフラインで生成されてメモリに記憶される場合、デジタル画像の行ピッチが事前に知られていないことがある。したがってピクセルを転送する動作の間に行ピッチをデジタル画像の行ピッチから事前に知られている値に変えることが望ましいことがあり得る。
【0189】
したがって、デジタル画像の適切な部分からピクセルをワーキングメモリに転送することは、シーケンシャルアクセス、ピクセルの取り出しと処理のオーバーラップ、及び行ピッチが事前に知られていないアドレスオフセットを使用する能力を含む、ある利点を提供できることは明らかである。何らかの特定の実施形態において、これらの利点の幾つか又はすべてが望ましいことがある。これらの幾つかの利点に対して、デジタル画像は好ましくはDRAMに保持されており、ワーキングメモリは好ましくはSRAMであるが、別の実施形態では他の構成も使用することができる。
【0190】
上記の利点の幾つか又はすべてを達成するためにピクセルを転送する1つの方法は、ダイレクトメモリアクセスコントローラ(DMA)、マイクロプロセッサやDSPなどのプログラム可能デバイスでしばしば提供されるデジタル電子コンポーネントである。例えば、テキサス・インスツルメンツ社によって提供され、「文献番号SPRU987A」などの一般に入手可能な文書に記述されている強化ダイレクトメモリアクセスコントローラを使用することができる。
【0191】
DMA転送の1つの重要な特徴はその次元性である。1次元転送はピクセルのシーケンス(例えばバイト)をソースから宛先に単純にコピーする。1D転送のためのパラメータは、ソースアドレスと宛先アドレス及びカウントであろう。
【0192】
2次元転送は2Dソースアレイの部分を2D宛先アレイの部分にコピーする。2次元はA及びBと称することができる。当該部分は行当りのAカウントピクセルのBカウント行として規定でき、各アレイはアドレスとBピッチ(例えば行間のアドレスの差)によって規定することができる。ソースアレイと宛先アレイのBピッチは異なることがあることに留意すべきである。
【0193】
3次元転送はソースアレイの部分を3D宛先アレイの部分にコピーする。3次元はA、B及びCと称することができる。当該部分は行当りのAカウントピクセルのフレーム当りのBカウント行のCカウントフレームとして規定でき、各アレイはアドレス、Bピッチ(例えば行間のアドレスの差)及びCピッチ(例えばフレーム間のアドレスの差)によって規定することができる。ソースアレイと宛先アレイのBピッチ及びCピッチは異なることがあることに留意すべきである。
【0194】
一般に、N次元転送はNカウント、N−lソースピッチ、及びN−l宛先ピッチを有する。2D及び3D転送のこれ以上の説明及び例は、上に引用した文書SPRU987Aに見いだすことができる。2D転送は提供するが3D転送は提供しないデバイスに対して、3D転送は2D転送のシーケンスの適当な連鎖、リンク又はそれ以外のプログラミングによって用意することができる。
【0195】
DMA転送の形状は少数のパラメータ(カウントとピッチ)によって決定されるので、投影線のほとんどの向きにとって、それらのピクセル重量テンプレートの反復シーケンスによって必要とされるピクセルだけを転送することは通常は可能ではない。それゆえ不必要なピクセルが転送されるが、それは時間とスペースを浪費することでありこれらの不必要な転送を最小化することが望ましい。
【0196】
ある先行技術による画像処理システムにおいては、DMAを使用して、デジタル画像の矩形部分が処理のためのより高速なメモリに転送される。矩形部分は、例えば処理されるピクセルの最小境界矩形であってもよい。ここでは2D転送が、ソース画像の行ピッチに等しいソースBピッチで用いられる。宛先BピッチはAカウントに設定されてもよく、結果として行間スペースを浪費しない宛先アレイが生じる。
【0197】
この先行技術の方式は様々な欠点を持ち得る。例えば投影線の向きの大多数に対して必要とされるピクセルの最小境界矩形は、一般に過度に多くの不必要なピクセルを含む。したがって転送のための追加時間はDMA転送を行う速度の利点を無効にしかねない。それらを補助するために必要とされる追加スペースが利用可能なSRAMにとって過大になることがある。宛先の行ピッチ投影線の長さに依存するが、これは事前に知られていないことがある。
【0198】
図13は、2D及び3D転送を用いて不必要なピクセルを最小限にし、及びソース画像の行ピッチ又は投影線の長さを事前に知ることなくピクセルに対するアドレスオフセットを可能にする本発明の実施形態を示す。これは一部2ステッププロセスによって達成される。第1に、与えられた投影線の向きについて、当該向きにとって好都合な転送パターンを規定する転送テンプレート、例えば不必要なピクセルを最小限にする転送テンプレートが選択される。転送テンプレートは当該向きと関連付けられているモジュールの一部であり、許容可能な向きのセット又はセットの大多数に対してオフラインで計算されて、メモリに記憶することができる。代替として、転送テンプレートは特定の投影線を記述する情報が受け取られた後で計算することができる。
図13の例示的な実施形態は転送テンプレート920を使用する。
【0199】
第2に、特定の投影線を記述する情報が受け取られたら(例えば実行時)、投影線の向きと関連付けられた転送テンプレートが使用されて、当該特定の投影線に対してカスタマイズされたDMA転送パラメータを生成する。転送テンプレートから転送パラメータを生成することは、一般に投影線の開始点のメモリ中のアドレス及び投影線の長さに関する情報を使用することを含む。
【0200】
図13の例では、投影線(図示せず)は、勾配が右方向に3ピクセル当り2ピクセル下降している向きを持つ。5個のスライスから生成された5個のピクセル重量テンプレートを有するモジュールが使用される。ここでN=2、D=3、及びP=5である。5個のスライスは第1の反復1340、第2の反復1342、及び第3の反復1344に対して示されている。
図5の例にあるように、反復の全数が示されているが、上述したように処理を全数に制限する必要はない。第1の反復アンカーピクセル1320も示されている。
【0201】
図13では、転送される不必要なピクセルは、例示の不必要なピクセル1330を含めドットで図示されている。図では不必要なピクセルはかなり少ないように見えるが、投影線が長くなると加えられる不必要なピクセルは非常に少ない。この例では反復当り2個に過ぎない。
【0202】
図13の例では向きに対して3D転送が使用される。Aカウントは転送テンプレート920の一部で、この例では17である。BカウントはN、ここでは2であり、一般にモジュールの他の箇所で得られるので転送テンプレートで反復される必要はない。Cカウントは次の通り計算される。:
【数5】
【0203】
ここでBaseCount(ここでは4)及びExtraSliceIndex(ここで1)は転送テンプレート920にあり、P(ここでは5)は一般にモジュールの他の箇所で得られるので転送テンプレートで反復される必要はなく、NumSlice(ここでは15)は当該投影線について処理されるべきスライスの総数であり、これは反復の全数(即ちPの倍数)である必要はない。
図13の例の値を用いると、Cカウント=4+[(15+1)/5]=4+[3.2]=7が得られる。図に見られるように、例示のフレーム1300を含む、行当り17ピクセルのフレーム当り2行の7フレームがある。
【0204】
図13の例では、ソースBピッチは、ソース画像の行ピッチ+転送テンプレート920内のBオフセット(ここでは2)に等しい。ソースBピッチは一般にソース行ピッチに等しいことに留意すべきである。ソースCピッチはソース行ピッチのN倍+Dであり、3D転送が投影線に従うことを可能にする。
【0205】
宛先BピッチはAカウントに等しく、宛先CピッチはAカウントのN倍に等しく、これは2つの望ましい特性を有している。第1に、宛先メモリ内のピクセルは記憶域をほとんど浪費しない。もちろん不必要なピクセルに対する記憶域は求められるが、記憶域はほとんど浪費されないか又は追加の記憶域は不要である。第2に、宛先Bピッチ及びCピッチは事前に知られている情報から完全に計算されるため、ピクセルに対するアドレスオフセットはソース画像の行ピッチ又は投影線の長さを事前に知ることなく使用することができる。
【0206】
ソース開始アドレスは第1の反復アンカーピクセル1320の座標から計算され、座標は投影線を記述する情報と、転送テンプレート920におけるDMAオフセットベクトルから導出でき、ここでは(−16,0)である。宛先開始アドレスは、ピクセルを置くことができるワーキングメモリ中の何らかの適当な位置である。
【0207】
N=1であるモジュールでは、Bカウントは1であろう。これらの向きに対しては2D転送で十分である。C次元であったであろうものはB次元となり、C次元は必要とされない。
【0208】
投影線の向きがx方向に接近すると、Aカウントが増加し、不必要なピクセルの数が増加する。十分浅い角度では、即ちx方向に十分近いと、上述したスタイルの2D又は3D転送を使用するのは望ましくないことがある。これらの浅い向きは一般に平行領域の向きと同じではなく、それらの方向近傍の向きを含んでいないことに留意すべきである。これらの浅い向きに対してはブロックスタイルのDMA転送を使用することができる。ブロックスタイル転送は3Dであり、各ソースフレームはモジュールの1回の反復に必要とされるピクセルの最小境界矩形である。
【0209】
図18、
図19及び
図20は、171個の許容可能な向きの特定のセットに対する転送テンプレートを示す。このうち
図13の向きは
図19では33.69度に対応する行に現れている。転送テンプレートは、DMAスタイル列1830、「A」カウント列1831、ベースカウント列1832、追加スライスインデックス列1833、「B」オフセット列1834、x原点列1835、及びy原点列1835に現れている。
【0210】
図14は、
図13に関連して上述した転送テンプレートを使用することができる装置の実施形態を示す。マイクロプロセッサ1400は、テキサス・インスツルメンツ社によって製造及び販売されているTMS320DM6435などのDSPであってもよく、メモリコントローラ1420を介してDRAM1410に接続されている。マイクロプロセッサ1400は、命令とデータキャッシュ1440を介するプログラム制御下でDRAM1410内のデータにアクセスでき、データキャッシュ1440はメモリコントローラ1420によってDRAM1410から必要に応じて満たされる。
【0211】
マイクロプロセッサ1400はまたDMAコントローラ1430に命令してデータをDRAM1410からSRAM1450に転送でき、そうするためにメモリコントローラ1420を用いる。マイクロプロセッサ1400はプログラム制御下でSRAM1450にアクセスし、DRAM1410からそこに転送されるデータ用いて計算を実行することができる。マイクロプロセッサ1400はDMAコントローラ1430に一部転送パラメータ1432を用いて命令する。
【0212】
DRAM1410の一部が、許容可能な向きのセット又はそのようなセットの一部のための転送テンプレートを保持する転送テーブルメモリ1470のために使用される。転送テーブルメモリ1470は、
図9に示すモジュールデータを保持するメモリの一部であってもよい。DRAM1410のその他の一部は、デジタル画像保持する画像メモリ1460のために使用される。SRAM1450の一部は、部分画像メモリからデジタル画像の一部を受け取るワーキングメモリ1452のために使用される。
【0213】
マイクロプロセッサ1400は、転送テーブルメモリ1470から投影線の向きに応じて転送テンプレートを選択する。マイクロプロセッサ1400は転送テンプレート及び投影線についての情報を用いてカスタマイズされた転送パラメータのセットを計算し、それらをDMAコントローラ1430内の転送パラメータ1432に伝送し、DMAコントローラ1430に命令して画像メモリ1440からワーキングメモリ1452にデータを転送する。マイクロプロセッサ1400は、ワーキングメモリ1452に転送されたデータの少なくとも一部(例えば不必要なピクセルは無視)を用いて投影線に沿って1D信号を計算する。
【0214】
図15は、
図13の方法と組み合わせて、及び
図14の転送パラメータ1432のために使用することができる転送パラメータの例示的なセット1500の詳細を示す。「オプション」欄は、幾つかある機能の中で特に2D転送又は3D転送の選択を可能にする。転送パラメータ1500のその他のすべての欄は、上述の
図13の関連で説明された。
【0215】
図7のステップ700は、例えば与えられた勾配N/Dに対して方程式1に従いPを選択することによって、投影線の与えられた向きに対するビン間隔の向きを選択する。ビン間隔の選択に関する追加情報がここで提供される。
【0216】
図16は、上に方程式4で定義された密度性能指数のグラフ1600を、勾配3/5の向きに対するピクセルにおけるビン間隔Bの関数として示す。グラフ1600に対して、σ
u=0.35B、σ
ν=3.0、及びσ
sys=0.28である。密度は正方形ピクセル当りのモジュール重量の単位で表し、一般にモジュール重量の値が高くなればノイズ低減は大きくなる。重量は一般にビン間隔が小さくなるに連れて減少するが、密度曲線1610に沿って見られるように密度は小数の顕著な山形を除いてビン間隔の広い範囲にわたりおおよそ一定であるので、密度はノイズ低減とぼやけ減少の双方の利点を含む有用な性能指数であってもよい。
【0217】
一般にビン間隔を山形の1つ、例えば第1の山形1620、第2の山形1630、第3の山形1640、又は第4の山形1650に対応して選択することが望ましい。別の向きは一般にやや異なるビン間隔ではあるが一般に類似の山形を呈し、多かれ少なかれ顕著であり得る。ビン間隔を向きの関数として合理的になだらかに変動するように選択することが望ましいと考えられてもよく、それによって向きの小さい変化に対してビン間隔の大きい飛躍が一般に回避される。したがって、これらの山形がどこで現れそうか予測できることが有用である。
【0218】
山形は一般に次式を満たすN、D及びP値に対して現れてもよい。
【数6】
ここでaとbは小さい整数である。グラフ1600ではN/D=3/5であり、山形は次のように現れる。
【表1】
一般に山形はaとbの小さい値、例えばa=1及びb=1又は2に対して最も顕著である。ここで留意すべきは、NとDの例は互いに素でないことである。
【0219】
特に向きの正規領域に対する合理的なストラテジーは、高解像度が所望される実施形態に対してはa=1、b=1を使用し、やや低い解像度が所望される実施形態に対してはa=1、b=2を使用することである。方程式6によって提供されるガイダンスに従うことを含む別の選択も合理的であり得る。変性領域に対して、特に平行領域に対して、さらに1ピクセル以上のビン間隔が選好されるより低い解像度に対して、本明細書の他の箇所で述べられている他の選択を行うことができる。
【0220】
図17は、規定するモジュール900に対するCプログラミング言語による宣言を例示的な実施形態で提供する。
図17の宣言は、許容可能な向きのセットに対するモジュールをCプログラミング言語における初期化された静的アレイの形で示す、
図18、
図19及び
図20のデータも定義する。
【0221】
列挙宣言1700は、例示的な実施形態で使用することができる種々のDMAスタイルに対して記号名を提供する。Blockstyle、TwoDStyleおよびThreeDStyleは、上述に
図13との関係で説明された。V2DStyle及びV3DStyleは、データを転送するためにTwoDStyle及びThreeDStyleと同じ方法で使用される。これらはx方向(即ち上記の45度)よりもy方向に近い向きに対して使用されて、それらの向きを必要に応じてxとyを交換することにより45度以下の向きから作成することができるようにする。
【0222】
構造宣言1710は、例示的なモジュールに対するレイアウトとデータタイプを規定する。「S16.8」という言葉は、2値点の右に8ビット有する16ビット符号付き固定点値をいう。controlCodes要素は、モジュールのスライスに対するピクセル位置と重量を定義するデータのポインタであり、何らかの適当な形で、例えば制御語1000又は制御語1200のアレイであってもよい。
図18、
図19及び
図20において、このポインタは制御コードポインタ列1840に示されている。
図18、
図19及び
図20の構造宣言1710の他のすべての要素、及び他のすべての列は、本明細書の別の箇所で説明されている。
【0223】
図18、
図19及び
図20のモジュールは、増加する勾配の順序でソートされているので、何らかの与えられた投影線、例えば
図2の要求された投影線250の勾配に最も近いモジュールが、2値検索を用いて迅速に選択することができる。0〜90度の角度のみ示されているが、転送テンプレートからDMA転送パラメータを生成するために、及び当業者には明白なその他の適当な場で、アドレスオフセットを計算するときに座標を無効にすることによって示された角度から90〜180度の向きを作成することができる。
【0224】
図18、
図19及び
図20における許容可能な向きのセットは、連続する向きの間の角度差が0.7度を超えないように、且つD値が小さいモジュールが選好されるように選択された。許容可能な向きのセットを選択するための何らかの適当な方法、例えば連続する向きの間で実質的に一定角度差を有するセットを選択する方法を用いることができる。モジュールがテーブルに記憶されず、むしろ投影線を記述する情報が受け取られた後で必要とされるときに計算される実施形態において、許容可能な向きのセットはここで示されたセットと実質的に異なっていてもよい。
【0225】
上述した技術は、デジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせで実装することができる。実装は、データ処理装置、例えばプログラム可能なプロセッサ、コンピュータ及び/又は多数のコンピュータによる実行、又はそれらの動作を制御するために、コンピュータプログラム製品、即ち機械可読記憶装置に明白に埋め込まれたコンピュータプログラムであってもよい。コンピュータプログラムは、ソースコード、コンパイル済みコード、解釈コード及び/又は機械コードを含む、何らかの形のコンピュータ言語又はプログラミング言語で書くことができ、コンピュータプログラムは、スタンドアロンプログラム又はサブルーチン、エレメント、又はその他の計算環境で使用するのに適したユニットを含む、何らかの形で展開することができる。コンピュータプログラムは1以上のサイトで1台のコンピュータ又は多数のコンピュータで展開されて実行することができる。
【0226】
方法ステップは、本発明の機能を実現するためのコンピュータプログラムを実行する1以上のプロセッサにより、入力データで操作し及び/又は出力データを生成することによってって実施することができる。方法ステップはまた専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)、CPLD(複合プログラム可能論理デバイス)、PSoC(プログラム可能システム−オンチップ)、ASIP(特定用途向き命令セットプロセッサ)、又はASIC(特定用途向き集積回路)によって実施でき、装置として実装することができる。サブルーチンは、1以上の機能を実施するコンピュータプログラム及び/又はプロセッサ/専用回路の部分を意味し得る。
【0227】
コンピュータプログラムの実行に適したプロセッサは、例示により汎用及び専用マイクロプロセッサ、デジタル信号プロセッサ、及び何らかの種類のデジタルコンピュータの1以上のプロセッサを含む。一般にプロセッサは命令とデータを読み出し専用メモリ又はランダムアクセスメモリ又は双方から受け取る。コンピュータの必須の要素は命令を実行するためのプロセッサと、命令及び/又はデータを記憶するための1以上の記憶装置である。データを一時的に記憶するためにキャッシュなどの記憶装置を使用することができる。記憶装置は長期データ保存のために使用されてもよい。コンピュータは外部機器、例えば工場自動化機器若しくは物流機器、又は通信ネットワーク、例えば工場自動化ネットワーク若しくは物流ネットワークと動作結合して、命令及び/又はデータを機器又はネットワークから受け取り及び/又は命令及び/又はデータを機器又はネットワークに転送する。コンピュータプログラム命令を具体化するのに適したコンピュータ可読記憶装置は、あらゆる形態の揮発性及び非揮発性メモリを含み、これには例示の半導体記憶装置、例えばDRAM、SRAM、EPROM、EEPROM、及びフラッシュメモリデバイスや、磁器ディスク、例えば内部ハードディスク又はリムーバブルディスクや、光磁気ディスクや、光ディスク、例えばCD、DVD、HD−DVD及びブルーレイディスクを含む。プロセッサ及びメモリは専用論理回路によって補完され、及び/又は専用論理回路に組み込まれることができる。
【0228】
当業者は本発明が、本発明の精神又は本質的な特徴から逸脱することなく他の具体的な形態において具体化され得ることを認識するであろう。それゆえ上述した実施形態はあらゆる点で例示的なものであり、本明細書で説明された本発明を制限するとみなされてはならない。したがって本発明の範囲は上述した説明よりも添付の特許請求の範囲によって示され、それゆえ請求項の範囲と等効性の範囲内に入るすべての変更は本発明に包含されることが意図されている。