(57)【要約】      （修正有）【課題】２次元デジタル画像から1次元信号を抽出する方法及び装置を提供する。【解決手段】投影線に沿って２次元デジタル画像から１次元デジタル信号を抽出するために、画像メモリ、ワーキングメモリ、ダイレクトメモリアクセスコントローラ、複数の転送テンプレートを保持するテーブルメモリ、及びプロセッサを用いる。プロセッサは、投影線の向きに応じてテーブルメモリから転送テンプレートを選択し、選択された転送テンプレートと投影線のパラメータとから転送パラメータのセットを計算し、転送パラメータをダイレクトメモリアクセスコントローラに伝送し、ダイレクトメモリアクセスコントローラにデータを画像メモリから転送パラメータによって規定されたワーキングメモリに転送するように命令し、ダイレクトメモリアクセスコントローラによってワーキングメモリに転送されたデータの少なくとも一部を用いて１次元デジタル信号を計算する。【選択図】図１４
2018049605.tif 000002
【特許請求の範囲】
【請求項１】
投影線に沿って２次元デジタル画像から１次元デジタル信号を抽出するためのデジタル電子装置であって、
デジタル画像の少なくとも一部が記憶されている画像メモリを有し、該画像メモリは複数のピクセルを含んでおり；
Ｋ個のレジスタのセットを有し、Ｋは１より大きい所定の整数であり、前記レジスタのセットは線形シフトされ得て、ゼロ値はシフト入力され、シフト出力される値は１次元信号を含んでおり；
複数のモジュールからなるデータを保持するテーブルメモリを有し、各モジュールは２次元デジタル画像に対して相対的な向きに対応しており、且つ相対的ピクセルアドレスのシーケンス及びピクセル重量シーケンスを取得することができるデータを含んでおり；
ピクセルをピクセル重量シーケンスからのピクセル重量で乗算し、その積をレジスタのセットのレジスタに加算するための少なくとも１個の乗加算器を有し；及び
制御装置を有し、該制御装置は２次元デジタル画像に対して相対的な前記投影線の向きに応じて前記テーブルメモリからモジュールを選択し、且つ前記画像メモリ内の複数の位置について動作を繰り返すように作動し、該動作は
前記画像メモリから選択されたモジュールの相対的ピクセルアドレスのシーケンスによって指示されたピクセルを取り出すこと；
取り出されたピクセルと選択されたモジュールのピクセル重量シーケンスからのピクセル重量を用いてレジスタのセットを更新するように少なくとも１個の乗加算器に指示すること；及び
レジスタのセットをシフトし、それによって１次元信号を発生するように指示すること；
を含む上記デジタル電子装置。
【請求項２】
前記Ｋが２である請求項１に記載の装置。
【請求項３】
前記制御装置がマイクロプロセッサである請求項１に記載の装置。
【請求項４】
前記画像メモリが前記マイクロプロセッサのスタティックＲＡＭである請求項３に記載の装置。
【請求項５】
前記マイクロプロセッサはＫ個のレジスタのセットを保持する汎用レジスタを有する請求項３に記載の装置。
【請求項６】
前記制御装置は少なくとも１個の乗加算器にドット積命令を用いて指示する請求項３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野は、概して、２次元デジタル画像から１次元デジタル信号を抽出するためのコンピュータプログラム製品を含む、デジタル電子的方法、システム及び装置に関する。
【背景技術】
【０００２】
デジタル画像処理用途において２次元（２Ｄ）デジタル画像中の線に沿って１次元（１Ｄ）信号を抽出することが望ましいことがある。そのような用途は、例えば電子部品や半導体の検査、測定及び誘導、一般的製造、並びにバーコード及びその他の記号の読み取りを含み得る。
【０００３】
投影という言葉は、しばしば２次元画像中の線（本明細書では投影線と呼ぶ）に沿って１次元信号を抽出する行為をいう。この言葉はしばしば１Ｄ信号自体にも適用されるが、デジタル画像処理の分野ではその他の意味を持つこともよくある。
【０００４】
あるシステム及び方法又はシステムにおいて、投影線はデジタル画像の行、列又は対角線に沿って位置するように制限されている。そのような場合には１Ｄ信号は、正確に投影線上に位置するピクセル値から抽出することができる。１Ｄ信号は、行と列については１ピクセル離れ、対角線については√２ピクセル離れたサンプルを持ち得る（正方形ピクセルを仮定）。
【０００５】
投影線がデジタル画像の行、列又は対角線に沿って位置する他のシステム及び方法又はシステムでは、投影線に垂直であるピクセル値を加算又は平均化することによって１Ｄ信号が抽出される。例えば投影がデジタル画像の行２０に沿って位置する場合、この線に沿った１Ｄ信号の各サンプルは、行１８、１９、２０、２１及び２２を含む列の一部に沿ったピクセル値の合計又は平均であってもよい。
【０００６】
投影線が行、列又は対角線に沿って位置しない場合、正確に線上又は線に垂直な方向に位置するピクセルは、一般に稀にしか存在しないか又はほとんど存在しない。それゆえ、投影線が行、列又は対角線に沿って位置するように制限されていない幾つかの方法又はシステムにおいて、１Ｄ信号は近似的に投影線に従うピクセルのセットから抽出される。そのような方法の１例はいわゆるブレゼンハム線分描画法であり、典型的には観察されたピクセルが近似的に投影線に沿って位置するように、行、列又は対角線に沿って１ピクセルステップを行う。
【０００７】
本明細書で線形畳み込みと称する別のシステム及び方法において、１Ｄ信号はブレゼンハム線分描画法によって選択された位置でデジタル画像を２Ｄフィルタカーネルで畳み込むことによって抽出される。フィルタカーネルは投影線にほぼ垂直に加算又は平均化を提供するように設計されている。フィルタカーネルは一様な重量を持っていてもよいし、あるいは、重量は投影線から遠いピクセルほど小さくなっていてもよい。
【０００８】
本明細書では傾斜投影と呼ぶ別の方法では、１Ｄ信号を抽出するために平行四辺形パターン中のピクセルが使用される。平行四辺形は画像の行に沿って位置する２辺を有し、他の２辺は一般的に列に沿っていない幾らかの斜角にある。こうして平行四辺形は、近似的に斜角に従うようにオフセットされた行のピクセルに対する列が始まる、ある数の連続する行の各々からのある数の連続するピクセルによって構成される。１Ｄ信号は対角方向で加算又は平均化することによって形成される。
【０００９】
本明細書では最近傍投影と称する別の方法において、投影線に沿って典型的には１ピクセルの間隔で位置する点と、投影線に対して垂直に典型的にはやはり１ピクセルの間隔で位置する点とのグリッドが選択される。これらの点の画像座標は最も近い整数に丸めてピクセル座標上に位置し、こうして規定されたピクセルを用いて投影線に対して（最近傍の意味で）近似的に垂直に加算又は平均化することによって１Ｄ信号を抽出する。
【００１０】
本明細書では双線形補間及び双三次補間と呼ぶ別の方法では、点のグリッドは最近傍投影に用いられるのと同様のやり方で選択される。しかしながら点の座標を整数に丸める代わりに、補間されたピクセル値を計算するために座標を用いる。これらの補間された値を用いて、投影線に対して垂直に加算又は平均化することによって１Ｄ信号を抽出する。双線形補間及び双三次補間に対する式は従来技術により公知である。
【００１１】
最近傍投影と補間システム及び方法は、デジタル画像を回動させるのと同等の結果を達成し、投影線は（回動された）画像の行又は列に沿って位置し、次いで投影線に対して垂直に加算又は平均化する。ここで「同等」とは取得された１Ｄ信号に関係するが、それを取得するために必要とされる時間には必ずしも関係しない。デジタル画像を回動させるのは、通常デジタル再サンプリングと呼ばれるタイプの画像処理動作である。
【００１２】
別のシステム及び方法では、等間隔に配置された線は投影線に対して垂直に構成される。１Ｄ信号は垂直線に沿ったピクセルの加重加算によって抽出され、重量は線とピクセルの交差の長さに比例する。
【発明の概要】
【００１３】
本開示は投影線に沿って２次元（２Ｄ）デジタル画像から１次元（１Ｄ）信号を抽出するデジタル電子的方法、システム及び装置を対象とする。
【００１４】
幾つかの実施形態では、デジタル画像内の相対的位置のシーケンスで配置されたピクセル重量テンプレートの反復シーケンスを用いて１Ｄ信号が抽出される。ピクセル重量テンプレートは、ジオメトリがデジタル画像のピクセルグリッドに対応するグリッド上に所定のパターンで配列された複数の重量である。反復シーケンスには少なくとも２個の異なる（同一でない）ピクセル重量テンプレートがある。１Ｄ信号は、相対的位置のシーケンスに適用されるピクセル重量テンプレートの反復シーケンスを用いてピクセルの加重和のシーケンスを計算することによって抽出される。
【００１５】
幾つかの実施形態では、ピクセル重量テンプレートの反復シーケンスと相対的位置のシーケンスは、投影線の向きに応じて選択される。特定の向きに対してシーケンスの種々の特性、例えばシーケンス中のテンプレートの数、重量のパターンと値、ならびに、シーケンスのテンプレートがオーバーラップする程度を選択することができる。幾つかの実施形態ではこれらの特性は、さらに総重量、重心及び／又はテンプレートのぼやけを含んでいてもよい。幾つかの実施形態ではこれらの選択は１Ｄ信号のある望ましい特徴、例えば測光精度、幾何精度、解像度及びノイズ低減を達成するように行うことができる。
【００１６】
幾つかの実施形態では重量テンプレートのシーケンスの選択は、投影線の向きがピクセルグリッド軸の１つに平行か若しくは平行に近いか、又はピクセルグリッドの対角線であるか若しくは対角線に近いかに依存する。
【００１７】
投影線に沿って２次元（２Ｄ）デジタル画像から１Ｄ信号を抽出するための種々の装置が開示される。幾つかの実施形態は、マイクロプロセッサなどのプログラム可能デバイス上で実行されるコンピュータソフトウェアを使用する。幾つかの実施形態は主としてソフトウェアに依拠しない計算手段、例えばフィールドプログラマブルゲートアレイを使用する。
【００１８】
幾つかの実施形態では、部分和を保持するためにＫ個のレジスタのセットが使用され、Ｋは少なくとも２である。ピクセルは画像メモリから取り出され、重量はテーブルメモリから取り出される。１個以上の乗加算器又は何らかの同等の計算手段を用いて各ピクセルにＫ個の重量を乗算し、その積をＫ個のレジスタのセットに加算する。レジスタのセットは線形シフトされてもよく、セットの一方の端でゼロがシフト入力され、他方の端から１Ｄ信号のサンプルがシフト出力される。マイクロプロセッサなどのプログラム可能デバイスを用いる実施形態では、１個以上の乗加算器を制御するためにドット積命令が使用される。
【００１９】
幾つかの実施形態では、ダイレクトメモリアクセス（ＤＭＡ）コントローラを用いてデジタル画像の一部が画像メモリからワーキングメモリに転送される転送パターンは投影線の向きに応じて選択される。何らかの特定の向きに対して、画像メモリ内の位置及び投影線の長さについての情報と組み合わせると、ピクセルを転送するためにコントローラによって利用することができるＤＭＡパラメータのセットを生じる転送テンプレートが選択されている。
【００２０】
本明細書でさらに説明するように、ＤＭＡを使用すると望ましい特性、例えば合理的にシーケンシャルなメモリアクセス、ピクセルの取り出しと処理のオーバーラップ、及び事前に画像行のピッチ及び投影線の長さの知識なくピクセルに対するアドレスオフセットを使用する能力を達成することができる。
【００２１】
その他の側面と利点は、デジタル電子的方法、システム及び装置の原理を例示するに過ぎない添付の図面に基づいて、以下に詳細に説明することから明らかになるであろう。
【００２２】
本デジタル電子的方法、システム及び装置について上述したこと、その他の側面、特徴及び利点、並びにデジタル電子的方法及び装置自体が、添付の図面と併せて読むとき、種々の実施形態に関する以下の説明から完全に明らかになるであろう。
【図面の簡単な説明】
【００２３】
【図１】図１は、１次元信号抽出のための例示的な装置を示す。
【００２４】
【図２】図２は、グリッド上に配列されたピクセルアレイを示す。
【００２５】
【図３】図３は、本発明の幾つかの実施形態で使用することができる例示的なピクセル重量テンプレートの反復シーケンスを示す。
【００２６】
【図４】図４は、本発明に従う方法、システム又は装置の種々の実施形態にとって有用なテンプレートの特性を示す、図３のピクセル重量テンプレートの他の描写を示す。
【００２７】
【図５】図５は、図３と図４のピクセル重量テンプレートを３回反復するためのスライスを示す。
【００２８】
【図６】図６は、勾配が右方向に９ピクセル当り１ピクセル下降している向きの、平行領域における投影線６１０を示す。
【００２９】
【図７】図７は、与えられた投影線の向きに対してピクセル重量テンプレートを選択するための、本発明に従う方法及びシステムの例示的な実施形態を示す。
【００３０】
【図８】図８は、双線形補間を用いる方法及びシステムと比較して、本明細書で説明する実施形態によって達成することができる強化された解像度を示す。
【００３１】
【図９】図９は、本発明に従う装置の種々の実施形態のために使用することができるモジュールデータ構造を示す。
【００３２】
【図１０】図１０は、マイクロプロセッサ又はその他のプログラム可能な計算手段を含む実施形態で使用することができる、Ｃ言語によるコンピュータプログラムの一部である。
【００３３】
【図１１】図１１は、その動作のために主としてソフトウェアに依拠しないデジタル電子デバイス、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）によって実行することができる計算ステップの実施形態を示す。
【００３４】
【図１２】図１２は、ドット積命令を提供するデジタル信号プロセッサ（ＤＳＰ）を利用する実施形態を示す。
【００３５】
【図１３】図１３は、２Ｄ及び３Ｄ転送を用いて不必要なピクセルを最小限にし、且つソース画像の行ピッチ又は投影線の長さを事前に知ることなくピクセルに対するアドレスオフセットを可能にする本発明の実施形態を示す。
【００３６】
【図１４】図１４は、図１３に関連して上述した転送テンプレートを使用することができる装置の実施形態を示す。
【００３７】
【図１５】図１５は、例示的な転送パラメータのセットの詳細を示す。
【００３８】
【図１６】図１６は、勾配３／５の向きに対する密度性能指数とビン間隔との関係を表す図を示す。
【００３９】
【図１７】図１７は、例示的な実施形態でモジュールを規定するための宣言をＣプログラミング言語で示す。
【００４０】
【図１８】図１８は、１７１の許容可能な向きの特定セットに対するモジュールデータを示す。
【図１９】図１９は、１７１の許容可能な向きの特定セットに対するモジュールデータを示す。
【図２０】図２０は、１７１の許容可能な向きの特定セットに対するモジュールデータを示す。
【発明を実施するための形態】
【００４１】
例示的な実施形態の以下の詳細な説明において、実施形態の一部をなす添付の図面の参照が求められる。これらの図面には、本明細書で説明される方法、システム又は装置が実施することができる具体的な実施形態が例示の方法で示されている。これ以外の実施形態が用いられてよく、また本発明の範囲を逸脱することなく構造的な変更が行われ得ると理解すべきである。
【００４２】
図１は、１次元信号抽出のための例示的な装置を示す。２次元（２Ｄ）デジタル画像１００は、例えばカメラ、スキャナ又はコンピュータレンダリングから受け取られる。デジタル画像１００は、例えば例示のバーコード１１０などの特徴を含んでいてもよい。１次元デジタル信号、例えば例示の特徴のバーコード１１０に対応する信号１４０を抽出するために、それに沿うことが望ましいと考えられる投影線１２０を記述する情報が受け取られる。デジタル電子装置１３０は、投影線１２０に沿って画像１００から信号１４０を抽出する。
【００４３】
一般に、１次元デジタル信号１４０は、しばしばサンプル又は投影ビンと呼ばれる値のシーケンスを含む。値は、単数若しくは複素数などの数又はベクトル、例えばカラーベクトルのセットであってもよい。これらの数は２進整数又は浮動小数点値など種々のフォーマットで符号化することができる。
【００４４】
デジタル画像１００に対する投影線１２０の向きは、許容可能な向きのセットの１つであり、これらは投影線１２０を記述する受け取られた情報に符号化することができるすべての向きを含んでよく、さらに０〜４５°の範囲に、有理勾配の向きに、ある測定基準に従い好都合として選択された向きに、任意に選択された向きに、又はその他の適当な制限又は制限の組み合わせに制限されてもよい。
【００４５】
装置１３０は、画像１００から信号１４０を抽出する複数のストラテジーの中から選択でき、それらのストラテジーは投影線１２０の向きに依存して選択される。与えられた実施形態に対して本明細書の種々の教示は、発明の範囲を逸脱することなく、異なる向きに対して異なって適用されてもよく、またある向きには全く適用されなくともよい。ストラテジーは、与えられた向きについてある測定基準に従い好ましい結果を達成するために選択されてもよい。
【００４６】
ここで留意すると、本明細書では例としてバーコードが所々に使用されているが、デジタル画像中の投影線に沿って１Ｄ信号を抽出することは様々な用途にとって、例えば印刷回路基板、ソーラパネル及び集積回路の製造で有用であることがよく知られている。集積回路製造におけるそのような用途の１つは、ワイヤーボンディング中にリードをリードフレームに位置付けることである。したがって本明細書におけるバーコードの例は、単に例示を目的としており、制限的なものとみなされるべきではない。
【００４７】
図２は、グリッド上に配列されたピクセルアレイを示す。例示のデジタル画像１００などのデジタル画像は、グリッド上に配列されたピクセルアレイ、例えばピクセルグリッド２００を含む。例示のピクセル２１０などのピクセルは一般に１個の数値又は数値のセットとピクセルグリッド内の位置を含む。数値は物理的測定から取得されてもよく、又は合成によって生成されてもよく、及び２進整数や浮動小数点数などの多様な公知の方法でデジタル画像に符号化されてもよい。「ピクセル」という言葉は、通常ピクセルグリッド内の位置における数値を指すために用いられ、隣り合うグリッド要素の間隔に等しい距離の単位であり、画像輝度を測定する電気光学検出要素である。
【００４８】
本明細書では一般にグリッド上のピクセル座標を規定するために（ｘ、ｙ）を使用する。ピクセルは整数座標上にあり、非整数座標はピクセル間の位置を表す。画像グリッド座標の小数部分はしばしばサブピクセル位置又はサブピクセルオフセットと呼ぶ。その他のスキーム、例えばピクセルが半整数座標上に位置すると見なすことはよく知られており、これも使用できる。
【００４９】
引き続き図２の例示的な実施形態を参照して、装置１３０は例示の投影線２２０を記述する情報を受け取る。この情報は、第１端点２３０及び第２端点２４０の位置など線を記述できるどのような形式でもよい。代替としてこの情報は点の位置、長さ及び向き、一次方程式の係数、又はその他の適当な符号化を含むこともできよう。
【００５０】
別の例示的な実施形態では、装置１３０は例示の投影線２２０を記述する情報を間接的に受け取る。最初に、装置１３０は要求された投影線２５０を記述する情報を受け取る（図２に破線で示す）。次に、要求された投影線２５０を記述する情報からその向き、位置、長さ又はその他の特性をわずかに調整することによって、例示の投影線２２０を記述する情報が導出されるので、例示の投影線２２０は要求された投影線２５０に類似しているが、ピクセルグリッド２００に対してより好都合なアラインメントにある。１実施形態において要求された投影線２５０はその中心の周りを回動されてより好都合な向き、例えば図１８、図１９又は図２０に列挙され、さらに以下に説明する向きを生じる。別の実施形態では、要求された投影線２５０の端点は、より好都合なサブピクセルオフセット、例えば図７で説明するように選択されたオフセットを生じさせるために移動される。さらに別の実施形態では、要求された投影線２５０は回動も移動もされる。
【００５１】
図２の実施形態において、第１端点２３０と第２端点２４０は一般には整数グリッド位置に置かれていない。幾つかの実施形態では、投影線を記述する情報はサブピクセル位置が受け取られるようにする。幾つかの実施形態では、上述した調整はサブピクセル位置をもたらし得る。別の実施形態では、上述した調整はサブピクセル位置を消去する。さらに別の実施形態では、投影線は規定された端点を持たないか、又は規定された端点を１個しか持たず、その代わりに欠けている端点をデジタル画像の境界から導き出してもよい。
【００５２】
例示の投影線２２０はピクセルグリッド２００に対して相対的な向きを有する。種々の実施形態において、向きは１個の数又は数のセットとして、例えば角度、ラジアン、２値又は何らかの適当な角度単位として、ベクトルの方向として、勾配又は接線として、比が勾配又は接線をなす１対の数として、又はその他の何らかの適当な符号として符号化されてもよい。比が勾配又は接線をなす１対の数を用いる実施形態において、比の分母は垂直線を示す０であってもよい。例示の投影線２２０の向きは、投影線を記述する情報から多様な方法で取得することができる。向きは例示の投影線２２０を記述する情報に直接符号化され得、又は第１端点２３０と第２端点２４０の位置から計算され得、又は一次方程式の係数から計算することができ、又は上述した調整の結果として導出することができ、又はその他何らかの適当な方法で取得することができる。
【００５３】
ピクセルグリッドは一般にある特定の向きを定義する。例えばピクセルグリッド２００は、グリッド軸に平行な２個の特定の向き２６０を定義する。正方形、長方形又は平行四辺形のピクセルを有するピクセルグリッドは、本明細書で平行な向きと呼ぶ、これらの２個の特定の向きを持つであろう。正方形又は長方形のピクセルを有するピクセルグリッドについて、平行な向きは互いに垂直であろう。六角形のピクセルを有するピクセルグリッドについては、６０°離れた３つの平行な向きがあろう。
【００５４】
ピクセルグリッド２００は、平行な向きから４５°離された、グリッド軸に対して対角の２個の特定の向き２７０を定義する。正方形、長方形又は平行四辺形のピクセルを有するピクセルグリッドは、本明細書で対角の向きと呼ぶ、これらの２個の特定の向きを持つであろう。正方形ピクセルを有するピクセルグリッドに対しては、対角の向きは平行な向きから４５°離されるであろう。
【００５５】
図３は、本発明の幾つかの実施形態で使用できるような、ピクセル重量テンプレートの例示的な反復シーケンスを示す。ピクセル重量テンプレートは、ジオメトリ（グリッド要素のサイズと形状）がデジタル画像のピクセルグリッドに対応するパターンでグリッド上に配列された複数の重量である。重量は数量であり、例えばさらに以下に説明するように整数、実数、複素数又はベクトルである。本明細書では要素という言葉は、テンプレート内の特定の位置における特定の重量を表すのに使用できる。テンプレートのグリッドジオメトリはピクセルグリッドに対応しているので、テンプレートの位置とオフセットはピクセルの単位で記述することができる。
【００５６】
例示の投影線３００は、右方向に５ピクセル当り３ピクセル下降している勾配に対応する向きを有する。この向きに対して、第１のテンプレート３１０、第２のテンプレート３１１、第３のテンプレート３１２、第４のテンプレート３１３、第５のテンプレート３１４、第６のテンプレート３１５、第７のテンプレート３１６及び第８のテンプレート３１７を含むピクセル重量テンプレートの反復シーケンスが選択される。シーケンスは、第１のテンプレート３１０（破線輪郭で示す）が第８のテンプレート３１７に続くというように繰り返す。図３の例示的な実施形態において、シーケンスの各テンプレートは他のテンプレートと異なっている。幾つかの実施形態では、若干のテンプレートは同一であってもよいが、少なくとも２個の異なるテンプレートがある。
【００５７】
テンプレートを適用するデジタル画像内部の相対的配置を規定する相対的位置のシーケンスが選択される。図３の例示的な実施形態では、相対的位置はテンプレートを拡張されたグリッド上に置くことによって示されており、数又は記号を含む正方形はテンプレート要素を表し、ドットはテンプレートのない拡張されたグリッド上の点を表す。相対的位置はテンプレートがオーバーラップする位置であり、ピクセルグリッドを用いて図示するのは困難であろう。それゆえ例示の目的のためにテンプレートは拡張されたグリッド上に置かれて、水平方向に別途３グリッド位置だけ分離されている。図示されたシーケンステンプレートに対して実際の相対的位置を得るために、第２のテンプレート３１１は左に３グリッド位置、第３のテンプレート３１２は左に６グリッド位置、第４のテンプレート３１３は左に９グリッド位置というようにシフトする。
【００５８】
図３に図示されたシーケンスにおける各テンプレートの相対的位置は、以前のシーケンスの反復における同じテンプレートの位置から右に５ピクセル、及び３ピクセル下にある。これは上述したように第１のテンプレート３１０で破線のテンプレートを２４グリッド位置だけ左にシフトした後で見ることができる。この反復されたテンプレートの相対的位置は、（上述したように適切にシフトした後）図に示された他の相対的位置と組み合わせると、反復の全数を包含しないシーケンスを含めて任意の長さの反復シーケンスに対応する相対的位置を定義する。
【００５９】
図３の正方形の中の数と記号は、相対的ピクセル重量を表し、記号ｘｘは１００を表す。重量を計算し使用するための方法、システム及び装置は、本明細書を通して説明する。図３に対応する例示的な１実施形態において、重量は０〜１００の範囲における整数である。図３に対応する別の例示的な実施形態では、重量は０〜１００の範囲における浮動小数点値であり、これらは図中に示された整数で表示する目的のために切り捨てられており、例えば「０」と表示された重量はゼロではなく１未満であり得る。別の実施形態では、重量は何らかの適当な範囲における整数又は浮動小数点値、例えば０〜２５５の範囲における整数であるか、又は０〜１の範囲における浮動小数点値である。幾つかの実施形態では重量は、本明細書の他の箇所で述べられているように負数、複素数又はベクトルである。上記の範囲は任意選択である。
【００６０】
図３の例示的な実施形態は、デジタル画像中の相対的位置のシーケンスにおける図示されたピクセル重量テンプレートの反復シーケンスを用いてデジタル画像のピクセルの加重和のシーケンスを計算することにより、例示の投影線３００に沿って１次元信号を抽出する。加重和は、ピクセル重量テンプレートをデジタル画像中の所定の位置に置き、重量に当該位置で対応するピクセル値を乗算し、その積を加算することによって計算される。この乗算と加算は任意の順序で実行できる。乗算及び加算は、算術動作、論理動作、ルックアップテーブル、又は乗算と加算の効果を有するその他の動作若しくは動作の組み合わせを含んでよい。１次元信号は結果として生じる加重和のシーケンスであるか、又は当該シーケンスから導出される。
【００６１】
幾つかの実施形態では、ピクセル又は重量あるいはそれら両方は複素数であってもよく、加重和は複素数の積の複素数の和である。１Ｄ信号は複素数であるか、又は複素数の和から導出された実数であってもよい。幾つかの実施形態では、ピクセル又は重量あるいはそれら両方はベクトルであってもよい。例えば、ピクセルはＲＧＢカラーベクトルであってもよく、重量はベクトルであってもよく、加重和はドット積の和であってもよく、その結果としてスカラ値１Ｄ信号が生じる。別の例では、ピクセルＲＧＢカラーベクトルであってもよく、重量はスカラであってもよく、加重和は積のベクトル和であってもよく、結果としベクトル値１Ｄ信号が生じる。
【００６２】
図３に示すピクセル重量テンプレートの反復シーケンスと相対的位置のシーケンスは、例示の投影線３００の向き、具体的には右方向に５ピクセル当り３ピクセル下降する勾配に対して選択されている。その他の向きに対しては、異なるピクセル重量テンプレートの反復シーケンス及び相対的位置が選択されてもよい。幾つかの実施形態では大多数の向きに対してこの性質の選択がなされるが、ある向きに対してはその他の選択がなされる。例えば、ある向きに対しては同一テンプレートの反復シーケンスが使用されてもよく、非反復シーケンスが使用されてもよく、いかなる種類のピクセル重量テンプレートに含まない方法が使用されてもよく、又は何らかの適当な手順若しくは手順の組み合わせが使用されてもよい。幾つかの実施形態では、ある向きは平行な向きを含む。別の実施形態では、ある向きは平行な向きと対角の向きを含む。さらに別の実施形態では、ある向きはそのような選択をするのに好都合と思われる少数の向きを含む。
【００６３】
図３の例示的な実施形態に対応して、例示の投影線３００の向き及びその他の向きに対してピクセル重量テンプレートと相対的位置を選択するための、並びにそれらの選択を他の種々の実施形態に対して行うための詳細なコンピュータ化された方法が、以下に図７と関連して、及び本明細書の他の種々の箇所で与えられる。
【００６４】
投影線の向きに応じて、少なくとも許容可能な向きの大多数に対して選択される、ピクセル重量テンプレートの反復シーケンスを使用することは、１次元信号を抽出するための方法、システム又は装置の設計にフレキシビリティを与える。このフレキシビリティを活用してある実施形態で利点を達成できる。達成できる利点には高精度、高解像度、良好なノイズ低減、高速動作、計算の単純性、及び当業者にとって明白なその他の利点がある。種々の実施形態はこれらの利点の各々を様々な程度で達成でき、又は全く達成できない。
【００６５】
種々の実施形態において、これらの利点は、全体又は一部として、テンプレートのある望ましい特性を達成するためにピクセル重量を選択する能力に基づく。これらの特性は、測光精度に影響する第０のモーメント（総重量）、幾何精度に影響する第１のモーメント（重心）、及び解像度とノイズ低減に影響する第２のモーメント（ぼやけ）を含んでよい。投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、これらのモーメントは互いに独立に選択できる。例えば高い幾何精度を達成するために第１のモーメントを選択でき、解像度とノイズ低減との間で所望のトレードオフを達成するために独立に第２のモーメントを選択できる。
【００６６】
幾つかの実施形態において、ピクセル重量テンプレートは、テンプレートの総重量が同じであるか又は実質的に同じであるように選択されている。これらの実施形態では、２Ｄ画像から１Ｄ信号への実効利得は実質的に一定であり、位置に左右されず、結果として高い測光精度を生じる。図３に対応する実施形態においては、図示された重量は図中に示された整数で表示する目的のために切り捨てた浮動小数点値であり、テンプレートの総重量は浮動小数点精度に等しい。図示された重量が示された通りの整数である代替的な実施形態においては、テンプレートの総重量は実質的に１パーセントの約３分の１の精度に等しい。
【００６７】
幾つかの実施形態において、ピクセル重量テンプレートは実質的に同じ総重量を持たない。これらの実施形態では、測光精度は投影ビンを、当該ビンを生じるテンプレートの総重量に比例する値で除算することによって、又はそのような値を逆数で乗算することによって維持できる。しかしながらそのような調整は、与えられた用途で測光精度はそれほど重要な問題ではない場合は行う必要がない。
【００６８】
ピクセル重量テンプレートは、テンプレートのピクセル重量の加重平均位置として定義される重心を有する。例えば第８のテンプレート３１７は第８の重心３２７を有する。図３のその他のピクセル重量テンプレートもそれぞれ重心を有するが、参照番号で示されていない。重心は各テンプレートに対して相対的に定義されてもよく、また画像中のテンプレートの各配置についてデジタル画像に対して相対的に定義されてもよい。したがってピクセル重量テンプレートの反復シーケンスは、相対的位置のシーケンスに従って配置されたときに重心のシーケンスを生じる。
【００６９】
１Ｄ信号の投影ビンの画像中における位置を、投影ビンを生じた配置位置におけるピクセル重量テンプレートの重心と見なすのは合理的である。したがって投影ビンは投影線に沿って位置することもあれば、位置しないこともある２Ｄ位置を有するとみなされてもよい。重心以外の方法も２Ｄ位置を定義するために使用されてもよい。例えば重量が放物線又はガウス関数などの位置の２Ｄ関数によって生成される場合には、投影ビンの位置は関数の極値の位置として定義できる。
【００７０】
投影線に対して相対的なデジタル画像中の２方向を定義することが有用である。信号方向は投影線に平行であると定義され、投影方向は特定の実施形態に適したある平行でない方向と定義される。多くの実施形態において投影方向は信号方向に対して垂直であるが、一般的にそうである必要はない。さらに投影ビンの２Ｄ位置及びその他の種々の特性は信号方向における成分又は座標と、投影方向における成分又は座標を有すると見なすことが有用である。本明細書では信号方向の座標を表すために記号ｕが使用され、投影方向の座標を表すために記号ｖが使用される。
【００７１】
信号方向における連続した投影ビンの間隔が、２Ｄ画像のピクセル間隔に対して相対的な１Ｄ信号の幾何スケーリング（拡大又は縮小）を決定する。ビン間隔が一様であり、スケーリングが一様であり、１Ｄ信号が高い幾何精度を有する場合、それは画像中の特徴のジオメトリ（例えば相対的距離）を忠実に保存しよう。バーコード読み取りなど幾つかの用途では、高い幾何精度を達成することが望ましい。
【００７２】
投影方向における投影ビンの位置が一定（即ち一定のｖ座標）ならば、投影ビンは投影線上又は投影線と平行な直線上に位置する。一般に一様なスケーリング特性とは関係ないこの特性も、用途によっては望ましいことがある。
【００７３】
幾つかの実施形態において、ピクセル重量テンプレートの反復シーケンス及び対応する相対的位置のシーケンスは、重心が直線に沿って等間隔に置かれるように選択されている。結果として生じる１次元信号は一様にスケーリング（拡大又は縮小）され、それゆえ幾何精度が高いであろう。幾つかの実施形態では、直線は投影線に実質的に平行である。幾つかの実施形態では、直線は投影線である。
【００７４】
図３に対応する実施形態において、図示された重量は図中に示された整数で表示する目的のために切り捨てられた浮動小数点値であり、ピクセル重量テンプレートの重心は投影線３００に沿って非常に高い精度で等間隔に置かれている。図示された重量が示された通りの整数である代替的な実施形態においては、重心はやや低い精度で等間隔に置かれているが、ピクセルのサイズにしては依然として高い。
【００７５】
投影ビンの位置を定義するため、またそれにより２Ｄ画像から１Ｄ信号を抽出する方法、システム又は装置の種々の特性を評価するために重心を使用することは、投影ビンが１ピクセルに応じる取るに足りないケースも含め、投影ビンがあるピクセルの線形結合に応じる何らかの方法、システム又は装置に適用できる。そのような方法はブレゼンハム線分描画、線形畳み込み、最近傍投影、傾斜投影、双線形補間、双三次補間及びその他の先行技術の方法を含む。
【００７６】
一般に、ブレゼンハム線分描画、線形畳み込み及び最近傍投影は、平行でない向きと対角でない向きで（即ち大多数の向きで）一様でないスケーリングを生じ、それゆえ一般に幾何精度はより低い。傾斜投影、双線形補間及び双三次補間はすべての向きで一様なスケーリングを生じ得るが、本明細書で指摘されるその他の望ましくない制限を呈示することがある。
【００７７】
１Ｄ信号抽出の方法が信号をどの程度ぼやけさせるか考慮することが有用であり得る。さらに信号方向のぼやけと投影方向のぼやけを考慮することが有用であり得る。
【００７８】
最初に留意すべきは、２Ｄデジタル画像を生じたプロセスは、信号抽出方法によって導入される、いかなるぼやけとも区別され無関係なぼやけを導入し得ることである。そのような画像形成ぼやけは、例えば物体運動、光学的歪みや焦点ぼけ、センサの電気光学ピクセルの有限の広がりを含む多数の原因から発生し得る。
【００７９】
与えられた方向（例えば信号方向又は投影方向）におけるピクセル重量テンプレートのぼやけは、当該方向における位置の加重標準偏差、又は同等に与えられた方向における重心周りの第２慣性モーメントの平方根として定義できる。この定義により、ぼやけは距離の単位を持つ。本明細書ではピクセル重量テンプレートの各要素は、有限の広がり領域よりも点を占めるものとみなされる。この選択は単純化のためになされており、その他の多様な方法、例えばテンプレート要素を正方形又は円形の領域にわたる一様な密度と定義する選択もなされてもよい。
【００８０】
代替として、幾つかの実施形態でぼやけは、ピクセル重量テンプレートの計算されたぼやけと、画像形成ぼやけの効果をモデル化する、本明細書ではシステムぼやけと呼ぶ値との結合として定義される。この代替策に従う幾つかの実施形態では、ピクセル重量テンプレート要素は点を占め、それらのぼやけ及びシステムぼやけは２乗和の平方根を用いて結合され、これは一般に標準偏差を結合するための適切な方法であるとみなされている。
【００８１】
ぼやけを定義するためにその他の方法も使用できる。例えば正の重量を有するピクセル重量テンプレートを低域フィルタとして使用できる。ぼやけは、与えられた方向（例えば信号方向又は投影方向）におけるカットオフ波長（慣用的には３ｄＢ減衰の波長）として定義され得て、やはり距離の単位で表される。
【００８２】
投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、投影方向のぼやけを与えられた用途に適合するように選択することが可能になる。幾つかの実施形態では選択はピクセルグリッドのジオメトリによって加えられる制約を受けるので、実際の投影方向のぼやけはテンプレート間で意図された値からやや変動することがある。しかし投影方向のぼやけは、デジタル画像中の無相関のノイズを低減できる。バーコード読み取り、位置決めリード、及びその他多くの用途において、バー、リード又はその他の関連する画像特徴が投影方向に実質的に平行である場合は、当該方向のぼやけは信号品質の点でほぼ完全に有益である。
【００８３】
図３に示す例では、投影方向のぼやけは近似的に２．３ピクセルであるように選択された。しかしながら、上述したように幾らかの変動がある。第２のテンプレート３１１、第３のテンプレート３１２、第４のテンプレート３１３、第５のテンプレート３１４、第７のテンプレート３１６及び第８のテンプレート３１７については、投影方向のぼやけは２．３ピクセル目標に対して±０．０２の範囲内にある。第１のテンプレート３１０及び第６のテンプレート３１５については、投影方向のぼやけは約２．０ピクセルである。
【００８４】
本明細書では解像度という言葉は、しばしば１Ｄ信号を抽出して微細な特徴を解像する、例えば信号方向における小さいサイズの特徴、例えばバーコードの個々のバーとスペース、プリント基板の細線、又はリードフレーム上の狭いリードを合理的な忠実度で再現するための方法の能力を記述するために用いられる。解像度は、投影ビン間隔（デジタル信号理論ではしばしばサンプリング周期と呼ぶ）、信号方向におけるぼやけ、及び画像形成ぼやけなどの外的要因によって制限されることがある。例えばビン間隔を縮めても、信号方向のぼやけによって加えられる制限を超えて解像度を改善しないであろう。同様に、信号方向のぼやけを減らしても、ビン間隔によって加えらえる制限を超えて解像度を改善せず、縮小も画像形成ぼやけによって加えらえる制限を超えて解像度を改善しないであろう。
【００８５】
投影線の向きに応じて選択される、ピクセル重量テンプレートの反復シーケンスを使用することにより、投影ビン間隔及び信号方向におけるぼやけは与えられた用途に適合するよう選択できる。幾つかの実施形態では選択はピクセルグリッドのジオメトリによって加えられる制約を受けるので、実際の信号方向のぼやけはテンプレートの間で意図された値からやや変動し得る。
【００８６】
信号方向のぼやけは投影方向のぼやけと同様にノイズを低減できるので、通常は所望の解像度を達成するために必要であるぼやけより小さくない信号方向のぼやけを選択することが望ましい。このトレードオフ、及びビン間隔とぼやけの両方が解像度を制限することを前提として、幾つかの実施形態では信号方向のぼやけとビン間隔は共依存的な仕方で選択される。そのような１実施形態においてビン間隔は、さらに以下に説明するように投影線の向きの関数として選択される。次に信号方向のぼやけが、上述したように実際のぼやけはやや変動することがあると理解した上で、ビン間隔の所定の分数として選択される。
【００８７】
幾つかの実施形態では、ビン間隔が投影線の向き及びシステムぼやけの関数として選択され、次に信号方向のぼやけがビン間隔の所定の分数として選択される。この実施形態でビン間隔及び信号方向のぼやけは、外的システムぼやけによってモデル化される外的要因によって導入されるぼやけに適しているものとして選択されてもよい。
【００８８】
図３に対応する実施形態において、信号方向におけるぼやけは投影ビンの間隔の約０．３４であるように選択されており、投影ビンの間隔は図示された投影線の向きに対して一定の０．７３ピクセルであり、信号方向のぼやけを約０．２５ピクセルとする。
【００８９】
ぼやけとビン間隔は、投影ビンが１ピクセルに応じる取るに足りないケースも含め、投影ビンがあるピクセルの線形結合に応じる何らかの方法、システム又は装置で、２Ｄ画像から１Ｄ信号を抽出する方法、システム又は装置の解像度及びノイズ低減特性を分析するために使用できる。そのような方法はブレゼンハム線分描画、線形畳み込み、最近傍投影、傾斜投影、双線形補間、双三次補間及びその他の先行技術の方法を含む。
【００９０】
ブレゼンハム線分描画は一般に外的要因によって引き起こされるぼやけを超えるぼやけを導入しない。それゆえ顕著なノイズ低減はなく、解像度はほとんどビン間隔によって制限され、ビン間隔は水平、垂直又は対角のステップから生じる間隔に対するピクセルグリッドのジオメトリに制約される。
【００９１】
線形畳み込み及び傾斜投影は一般に投影方向のぼやけを許すことによってノイズを低減する。通常は信号方向におけるぼやけはほとんどなく、解像度は一般にビン間隔によって制限され、ビン間隔は水平、垂直又は対角のステップから生じる間隔に対するピクセルグリッドのジオメトリに制約される。
【００９２】
最近傍投影、双線形補間及び双三次補間は一般に投影方向と信号方向のぼやけを許すことによってノイズを低減する。解像度は一般に信号方向における顕著なぼやけによって制限され、このぼやけは補間式によって決定され、それゆえ選択されない。これらの方法は一般に固定した所定のビン間隔、典型的には１ピクセルを使用する。これより小さい値は一般に信号方向のぼやけのために不都合である。例えば双線形補間の方法にとって、信号方向のぼやけは一般にほとんどの投影線の向きに対して、ビン間隔とほとんど関係なく約０．４ピクセルである。
【００９３】
図４は、図３のピクセル重量テンプレートの別の描写であり、本発明に従う方法、システム又は装置の種々の実施形態にとって有用なテンプレートの特性を示している。上述したように、図３のピクセル重量テンプレートは適切な相対的位置に配置されたときにオーバーラップする。これは、与えられたテンプレートの要素は反復シーケンスにおける他のテンプレートの要素と同じデジタル画像中のピクセル位置に当り得ることを意味する。逆に言えば、デジタル画像の与えられたピクセルは、多数のテンプレートによって使用され得て、それゆえ多数の投影ビンに影響する。
【００９４】
図４は、図３の特定のテンプレートのオーバーラップを示しており、これらのテンプレートは種々の実施形態において図示された投影線の向きに対して選択される。第１のピクセル重量テンプレート３１０の要素４００（実線の輪郭で示す）は第２のピクセル重量テンプレート３１１の要素４０２と重なり、第２のピクセル重量テンプレート３１１の要素４１０は第３のピクセル重量テンプレート３１２の要素４１２と重なり、第３のピクセル重量テンプレート３１２の要素４２０は第４のピクセル重量テンプレート３１３の要素４２２と重なり、第４のピクセル重量テンプレート３１３の要素４３０は第５のピクセル重量テンプレート３１４の要素４３２と重なり、第５のピクセル重量テンプレート３１４の要素４４０は第６のピクセル重量テンプレート３１５の要素４４２と重なり、第６のピクセル重量テンプレート３１５の要素４５０は第７のピクセル重量テンプレート３１６の要素４５２と重なり、第７のピクセル重量テンプレート３１６の要素４６０は第８のピクセル重量テンプレート３１７の要素４６２と重なり、及び第８のピクセル重量テンプレート３１７の要素４７０は第１のピクセル重量テンプレート３１０要素４７２とオーバーラップする。
【００９５】
図３に対応する実施形態において各テンプレート要素は隣接テンプレートの１要素とオーバーラップすることが見て取れる。これは、１Ｄ信号に影響するデジタル画像のピクセルが隣接する２個の投影ビンに影響することを意味する。図３に対応する実施形態など幾つかの実施形態において、投影線の許容可能な向きの大多数に対して、１Ｄ信号に影響するデジタル画像のピクセルは隣接する２個の投影ビンに影響する。この特性は、第０のモーメント、第１のモーメント及び第２のモーメントなどテンプレートの特性の選択におけるフレキシビリティを含む種々の望ましい属性につながり得る。１Ｄ信号に影響するピクセルが１個のみの投影ビンに影響するブレゼンハム線分描画、線形畳み込み及び傾斜投影などの先行技術の方法はフレキシビリティがより小さい。
【００９６】
本発明に従う幾つかの実施形態において、１Ｄ信号に影響するデジタル画像のピクセルは隣接する２個の投影ビンに影響する。そのような実施形態では、例えば図３のピクセル重量テンプレートを使用できる。これらの実施形態は、さらに以下に説明するように単純且つ高速の動作を提供できる。最近傍投影、双線形補間及び双三次補間などの先行技術の方法にとって、１Ｄ信号に影響するピクセルは１個、２個、３個又はそれ以上の投影ビンに影響でき、複雑さの増加と速度の低下を招く。例えば双線形補間とビン間隔１ピクセルだと、１Ｄ信号に影響するピクセルは１個、２個又は３個の投影ビンに影響するであろう。ビン間隔をこれより小さくすると、デジタル画像のピクセルは４個の投影ビンに影響し得る。
【００９７】
ピクセルが隣接する２個の投影ビンに影響する、本発明に従う方法、システム又は装置の実施形態は、投影線の向きの大多数に対して、多くの先行技術の方法と比較して良好な技術的トレードオフを提供できる。ピクセル重量テンプレートの特性の選択における良好なフレキシビリティを達成できると同時に、単純且つ高速の動作を可能にする。これらの実施形態では、大多数の向きにとって他のストラテジーも好都合であり得るが、これについては以下に、例えば図６に関連して説明する。
【００９８】
図３と図４の８個のピクセル重量テンプレートは、８個のスライスから生成されることができ、１個のスライスは互いに排他的なセットのピクセルの処理についての情報を含んでいる。
【００９９】
図４に対応する実施形態について、要素４００と要素４０２はスライス０を含み、要素４１０と要素４１２はスライス１を含み、要素４２０と要素４２２はスライス２を含み、要素４３０と要素４３２はスライス３を含み、要素４４０と要素４４２はスライス４を含み、要素４５０と要素４５２はスライス５を含み、要素４６０と要素４６２はスライス６を含み、及び要素４７０と要素４７２はスライス７を含む。
【０１００】
スライスは、ピクセル重量テンプレートの反復シーケンスを定義する代替法として使用できる。一般に、ピクセル重量テンプレートは１個の投影ビンがどのように計算されるか定義するが、特定のピクセルがどのように使用されるかは定義しない。なぜなら当該ピクセルは多数のテンプレートによって使用され得るからである。これと対照的に、一般に、スライスはピクセルのセットがどのように使用されるかを定義するが、特定の投影ビンがどのように計算されるかは定義しない。なぜなら当該ビンは多数のスライスによって影響されるからである。どちらにしても同じ１Ｄ信号が生み出される。スライスを用いてピクセル重量テンプレートの反復シーケンスを定義することにより、計算を所定の順序で、単純さと速度を含む好都合な特性を有し得る装置によって実行することが可能となるが、これについてはさらに本明細書で説明する。
【０１０１】
図５は、図３と図４のピクセル重量テンプレートを３回反復するためのスライスを示す。第１の反復５００、第２の反復５１０及び第３の反復５２０が示されている。この図のグリッド上の数字がスライスを特定する。図５は、反復をどのように組み合わせて任意の長さの反復シーケンスを形成するかも示す。ここではスライスは８個の周期で反復し、示された３回の反復から２４個のスライスのシーケンスを生成できる。
【０１０２】
図５の例では２個の連続スライスを使用して、各ピクセル重量テンプレートを生成し、示された２４個のスライスは２３個のピクセル重量テンプレートを生成する。例えば第１の反復５００のスライス７と第２の反復５１０のスライス０〜７を使用して、図３と図４のピクセル重量テンプレートの１回の完全な反復を生成する。この例におけるピクセル重量テンプレートは８個の反復周期を有する。
【０１０３】
ピクセル重量テンプレートの反復シーケンスから生成された投影ビンのシーケンスの長さは、反復の全数である必要はない。本明細書で開示される装置の種々の実施形態は、反復周期に関わりなく任意の長さのシーケンスを生成できる。
【０１０４】
図５では、右方向に５ピクセル当り３ピクセル下降している投影線５３０の勾配がより容易に見て取れる。それはスライスが重ならないからであり、スライスは図３と図４で用いられた別途の水平分離なしに図示され得る。
【０１０５】
図５はさらに、図示のスライスにより図３と図４の重量を用いて生成された２３ピクセル重量テンプレートに対応する重心５４０のシーケンスを示す。重心５４０は前述したように投影線５３０に沿って等間隔に置かれており、ここではこの特性が反復境界に沿って維持されていることが見て取れる。
【０１０６】
与えられた向きに対する反復シーケンス、及び随意に、与えられた実施形態においてテンプレートで全部又は一部使用される追加のデータを含む、ピクセル重量テンプレート又は同等にスライスの完全なセットを、本明細書ではモジュールと呼ぶ。
【０１０７】
上述したように、デジタル画像のピクセルが２個の投影ビンに影響するようにピクセル重量テンプレートを選択することは、投影線の向きの大多数に対して良好な技術的トレードオフであり得る。しかしながら、ピクセルグリッドのジオメトリの故に幾つかの少数の向きに対しては、別の選択が好都合であり得る。このことは特にグリッドの平行な向きと対角の向きに近い向きに該当する。平行か又は平行に近い投影線の許容可能な向きのサブセットを平行領域と呼ぶ。対角か又は対角に近い投影線の許容可能な向きのサブセットを対角領域と呼ぶ。平行領域又は対角領域にない向きは、正規領域にある。平行領域と対角領域の集合を変性領域と呼ぶ。
【０１０８】
上述したように、信号方向におけるピクセル重量テンプレートのぼやけは、１Ｄ信号抽出方法の解像度を制限し得る。信号方向におけるぼやけは、例えば当該方向における位置の加重標準偏差として定義できる。ピクセル、及びピクセル重量テンプレートを構成する重量を選択できるにもかかわらず、ピクセルグリッド自体がそれらのピクセルの信号方向における位置を定義する。大多数の向きに対して、投影線近傍のピクセルの信号方向の座標はかなり一様に分布して、信号方向のぼやけの選択においてフレキシビリティを可能にする。しかしながら平行領域と対角領域における向きに対しては、これらの信号方向の座標は一様に分布しておらず、グリッドの行、列又は対角線の周りに、間に空きスペースを置いて集まっている。ぼやけは重量よりも強く影響し得るので、平行領域及び／又は対角領域における向きに対するピクセル重量テンプレートの選択において異なるストラテジーに従うことが好都合であり得る。
【０１０９】
幾つかの実施形態において、平行領域における向きに対してピクセル重量テンプレートは、デジタル画像のピクセルが１個の投影ビンに影響するように選択されている。図６は、平行領域において勾配が右方向に９ピクセル当り１ピクセル下降している向きの投影線６１０を示す。ピクセル重量テンプレート６００の反復シーケンスが示されており、各テンプレーは１列である。そのようなテンプレートが９個ある。図３の例におけるように、重量は、テンプレートが実質的に同じ総重量を有するように、且つ重心が投影線６１０に沿って等間隔に置かれるように選択されている。ピクセルは１個の投影ビンに影響するので、テンプレートは重ならないことに留意すべきである。
【０１１０】
幾つかの実施形態では、対角領域における向きに対してピクセル重量テンプレートは、デジタル画像のピクセルが１個の投影ビンに影響するように選択されている。図６は、対角領域において勾配が右方向に８ピクセル当り７ピクセル下降している向きの投影線６３０を示す。ピクセル重量テンプレート６２０の反復シーケンスが示されており、各テンプレーは対角に向けられた矩形内に位置する。そのようなテンプレートが１５個ある。図３の例におけるように、重量は、テンプレートが実質的に同じ総重量を有するように、且つ重心が投影線６３０に沿って等間隔に置かれるように選択されている。ピクセルは１個の投影ビンに影響するので、テンプレートは重ならないことに留意すべきである。
【０１１１】
幾つのピクセルが投影ビンに影響するかの選択は、平行領域及び／又は対角領域における異なるストラテジーに従う１例に過ぎない。別の例はビン間隔の選択であり、以下に図７及び図１６と関連して説明する。
【０１１２】
平行領域と対角領域の広がりは、例えば所望の解像度、所望のノイズ低減、及び投影方向における所望のぼやけを含む多数の要因に依存し得る設計上の選択である幾つかの実施形態で、例えば高い解像度がそれほど重要でなく、及び／又は大きいノイズ低減が所望される場合は、一方又は両方の領域を小さくし、あるいは空にしてもよい。さらに、正規領域の信号方向位置特徴のかなり一様な分布から、変性領域の一様でない分布特徴への移行点は、投影方向におけるピクセル重量テンプレートの広がりに依存する。その広がりが大きければ大きいほど、変性領域は小さくなろう。投影方向におけるピクセル重量テンプレートの広がりは、投影方向における所望の量のぼやけによるノイズ低減に大きく依存している。
【０１１３】
これらの設計上の選択の１例が図１８、図１９及び図２０に示されており、以下により詳細に説明する。それらの図は、投影方向における所望のぼやけが約２．３ピクセルであり、且つ信号方向における所望のぼやけがビン間隔の約３４％である実施形態のために、０〜９０度の範囲における１７１個の許容可能な向きのセットを示す。各行のデータは特定の１個の向きについての情報を与え、これは角度列１８５０における度で表されている。領域列１８１０は、正規領域における向きに対して「０」、及び変性領域における向きに対して「１」を含む。平行領域は０〜６．３４度及び８３．６６〜９０度の範囲における向きを含み、１７１個の許容可能な向きのうち２４個を包含する。対角領域は４１．１９〜４８．８１度の範囲における向きを含み、１５個の向きを包含する。正規領域は１３２個の向きを包含するが、これは総数の約７７％の大多数である。本明細書では大多数は５０％以上を意味する。
【０１１４】
図７は、与えられた投影線の向きに対してピクセル重量テンプレートを選択するための、本発明に従う方法の例示的な実施形態である。図７の方法は、特定の投影線を記述する情報が受け取られた後で適用できる。代替として、図７の方法は許容可能な向きのセットのうちの幾つかの向き又はすべての向きに適用でき、その結果はメモリに記憶され、特定の投影線を記述する情報が受け取られた後で順次使用のために引き出される。図７の方法は図３、図４及び図６の例でピクセル重量テンプレートを取得するために使用された。
【０１１５】
図７の例示的な方法では、許容可能な向きは有理勾配を有するがこれは勾配が整数Ｎの整数Ｄに対する比であることを意味する。ＮとＤは通常は互いに素であるが、以下に説明するようにそうでなくともよい。Ｄは無限勾配を表す０であってもよい。ＮとＤがいずれも非負数であれば、０〜９０度の範囲における勾配を規定できる。ＮとＤのいずれか一方が非負数であり、他方が何らかの整数値であることが許される場合は、０〜１８０度の範囲における勾配を規定できるが、これは平面上で可能な向きの全範囲をカバーする。
【０１１６】
許容可能な向きのセットは、図１８、図１９及び図２０の１７１個の向きなどの有理勾配の向きの特定のサブセットに制限できる。図１８、図１９及び図２０において分子列１８００はＮを含み、分母列１８０１はＤを含む。許容可能な向きのセットの選択については、さらに以下に説明する。０°と９０°を除くすべての向きを複製し、複製中のＤを無効にするならば、０〜１８０°の全範囲をカバーする３４０個の許容可能な向きが得られる。
【０１１７】
再び図２を参照するならば、例示の投影線２２０は有理勾配を有しており、許容可能な向きのセットの１員である。要求された投影線２５０は有理勾配であってもなくてもよく、許容可能な向きのセットの１員であってもなくともよいが、その理由の１つはプロセスが何を提供しようとも要求された投影線２５０は許容可能な向きのセットの存在又は詳細に気付かないことがあるからである。図２の例では１員ではなく、例示の投影線２２０を取得するために要求された投影線２５０は、例えば中心の周りをわずかに回動される。
【０１１８】
図７の方法において、Ｐ個のピクセル重量テンプレートの反復シーケンスが選択される。Ｐ個のテンプレートがあるのだから、反復周期はＰである。シーケンスの各テンプレートは以前の反復における同じテンプレートからｘ方向（例えば右方向）にＮ個のピクセル、及びｙ方向（例えば下方向）にＤ個のピクセルに置かれて、テンプレートは投影線の勾配に従う。図３〜図５の例では、Ｎ＝３、Ｄ＝５及びＰ＝８である。図６のピクセル重量テンプレート６００については、Ｎ＝１、Ｄ＝９及びＰ＝９である。図６のピクセル重量テンプレート６２０についてはＮ＝７、Ｄ＝８及びＰ＝１５である。
【０１１９】
引き続き図７を参照して、ステップ７００は、与えられた用途の必要、主として解像度とノイズ低減によって決定される種々の基準に従い与えられた勾配Ｎ／Ｄに適切なビン間隔とぼやけを選択する。各テンプレートは１個の投影ビンを生成するから、またテンプレートはＰ個のビンにおいて（Ｎ、Ｄ）ピクセル座標が移動するから、ピクセルにおけるビン間隔Ｂは、
【数１】
2018049605.tif 000003
である。
【０１２０】
ここで我々は正方形ピクセルを仮定していることに留意すべきである。正方形、平行四辺形又は六角形のピクセルなど他のジオメトリに対する同等の式は容易に導出される。さらに我々は、投影方向は信号方向に対して垂直であると仮定している。非垂直方向に対する同等の式も容易に導出される。
【０１２１】
方程式１を用いて、ステップ７００はＰを選択することによってビン間隔Ｂを選択できる。この選択はＰの整数値に限られているが、何らかのビン間隔はＮとＤに整数を乗算することによって任意の精度に近似され得て、投影線の勾配を保ちながらビン間隔の選択においてより高い精度を可能にする。高い解像度が所望される幾つかの実施形態において、例えば図３、図４、図６、図１８、図１９及び図２０の実施形態では、平行領域における向きに対してはＰ＝ｍａｘ（｜Ｎ｜，｜Ｄ｜）及び他のすべての向きに対してはＰ＝｜Ｄ｜＋｜Ｎ｜である。やや低い解像度が所望される幾つかの実施形態では、平行領域における向きに対してはＰ＝ｍａｘ（｜Ｎ｜，｜Ｄ｜）、及び他のすべての向きに対してはＰ＝ｍａｘ（｜Ｎ｜，｜Ｄ｜）＋ｍｉｎ（｜Ｎ｜，｜Ｄ｜）／２であり、Ｐを整数にするために必要ならばＤとＮは２で乗算される。さらに低い解像度が所望される幾つかの実施形態では、すべての向きに対してＰ＝ｍａｘ（｜Ｎ｜，｜Ｄ｜）である。ビン間隔のこれらの特定の選択については、以下に図１６との関係でさらに説明する。これらのビン間隔選択は、平行領域及び／又は対角領域における異なるストラテジーに従う別の例である。
【０１２２】
ステップ７００も、目標信号方向ぼやけσｕ及び目標投影方向ぼやけσνを選択する。ピクセル重量テンプレートの実際のぼやけ値は、さらに以下に説明するように一般にやや異なることに留意すべきである。幾つかの実施形態では、信号方向ぼやけσｕと投影方向ぼやけσνの一方又は両方はあらかじめ決めることができ、それゆえステップ７００で選択されない。
【０１２３】
目標投影方向のぼやけσνのより大きい値は、より大きいノイズ低減を提供するが、バーコードのバーなどの画像特徴が投影方向に実質的に平行でない場合は、より大きい値のσνは１Ｄ信号の品質を劣化させ得る。したがって使用するのに適した値は、用途に依存している。図３、図４、図６、図１８、図１９及び図２０の実施形態では、σν＝３．０ピクセルである。
【０１２４】
目標信号方向ぼやけσｕは、ビン間隔に比例するように選択でき、投影線の向きと共に変わる。高い解像度が所望される幾つかの実施形態において、例えば図３、図４、図６、図１８、図１９及び図２０の実施形態では、σｕは正規領域におけるビン間隔の３５％であり、変性領域におけるビン間隔の７０％であり、これは平行領域及び／又は対角領域における異なるストラテジーに従うさらに別の例である。より低い解像度が所望される別の実施形態では、σｕはすべての領域でビン間隔の５０％である。
【０１２５】
正方形ピクセルと垂直投影方向に対して、（ｘ、ｙ）ピクセル座標と（ｕ、ｖ）信号投影座標との間のマッピングは、
【数２】
2018049605.tif 000004
である。ここで、（ｘ０、ｙ０）は、０＜ｘ０，ｙ０＜１の範囲におけるサブピクセルオフセットである。ステップ７１０、７２０、７３０、７４０、７５０及び７６０は、以下に説明する性能指数に従って最良のサブピクセルオフセットを選択することを目的とする１組のサブピクセルオフセットにわたるループを表す。例示的な実施形態において、サブピクセルオフセットは１／８ピクセルの間隔を有する第１の８ｘ８グリッドを包含する。別の例示的な実施形態では、第２の８ｘ８グリッドが１／６４ピクセルの間隔で加算され、最高の性能指数を受け取った第１のグリッドからのサブピクセルオフセットに焦点を合わせる。さらに別の実施形態では、単一の固定したサブピクセルオフセットが使用され、ステップ７２０、７３０、７４０が１回実行されるだけで、ステップ７１０、７５０、７６０及び７７０は必要とされない。
【０１２６】
ステップ７２０では、生ピクセル重量テンプレートを次のように作成できる。まず、Ｐ個のスライスが作成されて０−Ｐ−１と番号付けされる。｜ｖ｜≦ｖｍａｘ及び０≦ｕ／Ｂ＜Ｐのような概念的に非有界のグリッド上のどのピクセルも、スライス［ｕ／Ｂ］の要素となる。ここで、ｖｍａｘはパラメータ、例えば１．５σνである。上述したように、Ｐ個のスライスはＰ個のピクセル重量テンプレートの要素を定義する。例示的な実施形態では正規領域における向きに対しては２個の隣接スライスモジュロＰがテンプレートを定義し、変性領域では各スライスがテンプレートを定義する。
【０１２７】
次に、各テンプレートに対し、テンプレートを定義するスライスに重量を割り当てることによって、当該テンプレートの一部である各要素に重量が割り当てられる。これは正規領域における向きについて、スライスによって影響される２個のテンプレートに対応して、各スライスの各要素に２個の重量が割り当てられることを意味する。変性領域においては、各スライスの各要素に１個の重量が割り当てられる。
【０１２８】
図７の教示と一致してテンプレートに重量を割り当てるために、多様な方法を用いることができる。例示的な実施形態においては、浮動小数点重量が、楕円ガウス関数に従って割り当てられる
【数３】
2018049605.tif 000005
ここで、（ｕ，ｖ）はテンプレート要素の信号−投影座標であり、ｗｂａｌはステップ７２０で１．０であり、ステップ７４０で調整され、及び（ｕ０，ｖ０）はテンプレートの原点の座標である。ステップ７２０で原点（ｕ０，ｖ０）はテンプレートの幾何中心に設定され、ステップ７３０で調整される。スライスｓとｓ＋１（モジュロＰ）からなる正規領域におけるテンプレートについては、幾何中心は（ｓ＋１，０）にある。スライスｓからなる変性領域におけるテンプレートについては、幾何中心は（ｓ＋０．５，０）にある。
【０１２９】
ステップ７３０で、各テンプレートの重量は、重心が勾配Ｎ／Ｄの直線に沿って等間隔に置かれるように調整される。式３に従う連続非有界楕円ガウス関数に対して重心は（ｕ０，ｖ０）にあり、テンプレートが連続的で非有界であったなら重心は既に勾配Ｎ／Ｄの直線に沿って等間隔に置かれているであろう。しかしながら重量は不連続不規則有界グリッド上にあり（例えば図３）、重心は一般にそれほど好都合に位置付けられない。
【０１３０】
ステップ７３０の範囲内でテンプレートの重量を調整するために使用できる多くの方法がある。比較的小さい調整を行うことが望ましいので、幾つかの実施形態はテンプレートの重心のそれらの幾何中心からの平均オフセットを計算する。幾何中心は勾配Ｎ／Ｄの線に沿って等間隔に置かれているので、それらの幾何中心からの何らかの固定したオフセットにおける点も存在するであろう。重心の幾何中心からの平均オフセットは固定したオフセットであり、重心を所望の勾配の線に沿って等間隔に置くような、重心の最小の全体運動である。したがって各テンプレートの重心に対する目標位置は、最小の全体運動を可能にするように定めることができる。
【０１３１】
目標位置が定まると、各テンプレートの重心に対する運動ベクトルが知られる。例示的な実施形態では、重量が各テンプレートの一方の側に優先的に加算されて重心を所望の方向に所望の量だけ動かす。図３、図４、図６、図１８、図１９及び図２０の例に対応する別の例示的な実施形態では、原点（ｕ０，ｖ０）は各テンプレートに対して個々に調整されて、重心が目標位置に移動される。この実施形態は、２個の未知数（原点の座標の関数としての重心の座標）を含む２個の非線形連立方程式を解くことを要求し、これはよく知られたニュートン・ラプソン法を用いて行うことができる。
【０１３２】
テンプレートが２個のスライスから生成され、ｕ座標がかなり均一に分布している正規領域については、連立方程式は通常好条件のためニュートン・ラプソン法は迅速に合理的な解に収束する。変性領域については、連立方程式は条が悪いか変性していることがある。したがって平行領域では運動は投影方向に最も近い平行方向（ｘ又はｙ）にあらざるを得ず、対角領域では運動は投影方向に最も近い対角方向にあらざるを得ない。その結果として好条件の１度の自由度問題が生じ、これはニュートンの方法で解くことができる。変性領域を処理するこの方法は、好ましくは以下に説明する領域選択法と共に使用される。
【０１３３】
ステップ７２０と７３０の代替的な実施形態において、楕円ガウス関数の代わりに楕円放物線が使用される。図７の範囲内で位置の何らかの適当な関数を使用できる。本明細書で説明する、又は当業者が予想する実施形態は、特定の特性、例えば連続的であるという特性を有する関数に依拠してよい。
【０１３４】
重心を調整するための上述した方法は例示であり、ステップ７２０で得られたよりも均一な重心の間隔を提供する他の多くの方法が案出され得る。最小の全体運動を可能にする目標位置を用いることは望ましいが、要求されない。ニュートン・ラプソン法は非常に正確な結果を提供できるが、精度よりも速度が重要であれば、より単純な評価を使用できる。重量が一方の側に優先的に加算される実施形態において、加算される重量と、この重量を加算する位置は、計算に利用可能な時間に応じて種々の精度で計算できる。
【０１３５】
ステップ７４０は、各テンプレートについて個々にｗｂａｌを調整することによって重量を増減して、各テンプレートが同じ総重量を持つように、及びすべてのテンプレートを通して最大要素重量が所望の値、例えば１．０であるようにする。ｗｂａｌは重心にもテンプレートのぼやけにも影響がないので、所望の重心とぼやけを得るためになされたすべての作業を無効にすることなく自由に調整できる。
【０１３６】
式３に従う連続非有界楕円ガウス関数について、信号方向のぼやけはσｕであり、投影方向のぼやけはσνである。しかしながら重量は不連続不規則有界グリッド上にあるので、実際のぼやけは一般にやや異なるであろう。例えばσν＝３．０及びｖｍａｘ＝４．５に対して、計算された投影方向のぼやけは一般に２．１〜２．４の範囲内にある。正規領域におけるσｕ＝０．３５Ｂに対して、計算された信号方向のぼやけは一般に０．３３Ｂ〜０．３８Ｂの範囲内にある。変性領域におけるσｕ＝０．７０Ｂに対して、計算された信号方向のぼやけは一般に０（平行な向きと対角の向き）〜０．２３Ｂの範囲内にある。変性領域が正規領域と同様に処理されたなら、信号方向のぼやけはさらに高く、最大０．５Ｂとなろう。留意すべきは、計算されたぼやけが変性領域におけるように非常に低いと、解像度は一般に外的要因によって制限され、一般により現実的に上述したシステムぼやけを含むことである。
【０１３７】
ステップ７５０は、ステップ７７０で最良のサブピクセルオフセットを選択するために、及び例えば図１６で使用されているように別の目的に使用できるモジュール（テンプレートの完全なセット）に対する性能指数を計算する。ステップ７４０の調整の後で各テンプレートは同じ総重量ｗｔｏｔを持つので、モジュール重量はｗｔｏｔであると定義できる。重量は正規化されているので、モジュールの最大要素重量は１．０である。異なるモジュールの重量を比較することが合理的である。一般により高い総重量はより大きいノイズ低減を提供するので、幾つかの実施形態では性能指数はｗｔｏｔである。
【０１３８】
別の実施形態では、システムぼやけσｓｙｓを考慮してノイズ低減と解像度を結合した、密度と呼ばれる性能指数が使用される。
【数４】
2018049605.tif 000006
ここでσｕ＊は、モジュール内のすべてのテンプレートにわたって計算された信号方向のぼやけの最大値である。σｓｙｓに対する合理的な値は０．２８ピクセルで、これは運動ぼやけがなく焦点が完璧なシステムにおける１００％フィルファクタの電気光学ピクセルをモデル化し得よう。異なる外的条件をモデル化するために、これより高い又は低い値を使用できる。
【０１３９】
幾つかの実施形態では、ピクセル重量テンプレートはそれまでに得られた浮動小数点重量を使用する。別の実施形態では、ステップ７８０は浮動小数点値を、整数演算動作に依拠して加重和を計算する装置で使用するための整数に変換する。ステップ７８０に対しては、整数値に変換しながら、総重量の品質及びそれまでに得られた重心の均一な間隔を合理的な精度で保つことが望ましい。
【０１４０】
上述したように、テンプレートの重量を増減することは、重心又はぼやけに影響しない。整数に丸めることは一般に小さいがゼロではない影響を持つ。例示的な実施形態で、モジュールの各テンプレートに対してスケールファクタが選択されて丸める前に適用され、その結果そしてほとんど常に正確に同じ総整数重量を持つモジュールのテンプレートが生じる。
【０１４１】
目標スケールファクタｗ１は、所望の最大整数重量のすぐ下の値となるように選択される。例えば整数重量が８ビットに収まるべきだとすれば、所望の最大重量は２５５であってもよく、ｗ１は２５４であり得よう。ｗ１は浮動小数点値であることに留意すべきである。テンプレートのどの要素についても、ｗ１と以前計算された浮動小数点重量との積を丸めることによって暫定整数重量が計算される。テンプレートに対する暫定総整数重量は、暫定整数重量の合計である。
【０１４２】
各浮動小数点重量ｗｆ及び対応する暫定整数重量ｗｉについて、目標スケールファクタｗｉの上界及び下界は、両界の間の何らかの値ｗ１がｗｉを変化させないように計算される。両界は（ｗｉ±０．５）／ｗｆである。与えられたテンプレートについて、テンプレートのすべての要素に対するすべての下界及び上界がアレイに集められ、増加する数値順にソートされる。したがってアレイは上半分＞ｗ１及び下半分＜ｗ１の偶数の値を含む。
【０１４３】
アレイは、点間のギャップの大きさが様々である、実数線に沿った点と見なすことができる。ギャップ内の何らかの値ｗ１に対して、ｗｉの丸めた積と浮動小数点重量の合計であるテンプレートの総整数重量は変わらない。ｗｉはアレイ内の１点を通って次のギャップに進むので、総整数重量は１だけ変わる。総整数重量が暫定総整数重量に等しい場合、アレイ内の中心ギャップ、即ち上半分と下半分の間のギャップはｗｉの値に対応する。
【０１４４】
１つのギャップから次のギャップへの正確な移行点は、浮動小数点動作の挙動が機械に依存するためやや不明瞭である。アレイ内の２点が大凡の機械精度で同一であるか又はほぼ同一であるならば、具体的な総整数重量が達成される明瞭なギャップはないことになろう。近接した対を通過してｗ１が増加又は減少すると総重量は事実上２だけ変化するであろうが、これらのケースは比較的稀である。その理由は１つには浮動小数点重量が取得される方法にあり、１つには浮動小数点数の精度が高ければ、極小のギャップでも充分だからである。
【０１４５】
上記の理解により、ステップ７８０の例示的な実施形態の説明を完結させることができる。与えられたモジュールのすべてのテンプレートに対する目標総整数重量は、ｗｉとｗｔｏｔの積を丸めることによって計算される。与えられたテンプレートに対する目標総整数重量と暫定総整数重量との差が、目標に達するには総整数重量をどれだけ変化させなければならないかを示す。総整数重量は通過されたアレイ内の各点に対して（上又は下に）１だけ変化するので、この差は目標総整数重量に対応するギャップを見いだすためにアレイの中心からのオフセットを使用できる。オフセットを用いてｗｉの値はアレイ内の隣接する２個の値の中点に変えられる。ｗ１の新しい値を用いて、最終的な整数重量はｗ１と浮動小数点重量との積を丸めることによってテンプレートに対して計算される。
【０１４６】
最終的な整数重量はスケーリングと丸めによって計算されるのであるから、重心とぼやけにおける高精度は維持される。ｗ１の新しい値を計算するために使用するギャップが機械精度よりも実質的に大きい場合は、テンプレートの総整数重量は正確に目標値であろう。幾つかの実施形態では、総整数重量が目標と異なる稀なケースはあっさり無視される。即ち差は顕著であるとみなされない。別の実施形態では、目標に達しなかったテンプレートの個々の整数重量を上又は下に調整して総重量を補正する。調整されるべき重量は、丸めるポイントに最も近いことが好ましい。
【０１４７】
幾つかの実施形態では、ステップ７９０を実行してモジュールに対するＤＭＡ（ダイレクトメモリアクセス）転送テンプレートを選択する。このテンプレートは種々の装置でパラメータを取得するために使用でき、ＤＭＡコントローラはこれらのパラメータを使用して、与えられた投影線に対する１Ｄ信号を発生するために使用するピクセルをメモリから得ることができる。転送テンプレートの選択、及びこの目的のためにＤＭＡを使用することについては、さらに以下図９、図１３、図１４、図１５、図１７、図１８、図１９及び図２０との関係で説明する。
【０１４８】
幾つかの実施形態では、モジュールに対する領域（平行、対角、又は正規）を決定するためにステップ７２０の部分の変形例が使用される。Ｎ、Ｄ、σν、及びｖｍａｘの既知の値から、及びサブピクセルオフセット与えられた値（ｘ０，ｙ０）に対して、スライスの要素となるであろうすべてのピクセル位置が、ステップ７２０の上記の説明に従うことによって特定できる。各スライスに対して当該スライスのすべての要素が全部ピクセルグリッドの１行又は１列に包含されるようなサブピクセルオフセットがある場合、モジュールは平行領域にある。各スライスに対して当該スライスのすべての要素が全部ピクセルグリッドの１対角線に包含されるようなサブピクセルオフセットがある場合、モジュールは対角領域にある。それ以外の場合にはモジュールは正規領域にある。
【０１４９】
代替的な実施形態において、ステップ７２０、７３０及び７４０は、ピクセル重量テンプレートを補間、例えば双線形補間に基づいて選択する方法と置き換えられる。この代替的な実施形態では、ピクセル重量テンプレートを使用して、投影方向における線に沿った諸点で補間されたピクセル値の合計を計算する。補間式は、先行技術の補間法で通常行われているようにデジタル画像のピクセル自体には適用されず、むしろテンプレートを計算するために使用される。このやり方で得られたモジュールのテンプレートは、一般に本明細書の別の箇所で説明されるよりも複雑なオーバーラップのパターンを有するであろう。なぜなら上に述べたように、例えば双線形補間によってピクセルは１個、２個、３個又はさらに４個の投影ビンに影響し得るからである。
【０１５０】
先行技術の補間法において、固定した投影ビン間隔、例えば１ピクセルは一般にすべての向きで使用される。しかしながら、ピクセル重量テンプレートの反復シーケンスを生成するために、投影ビンの間隔は慎重に選択された向きの関数である。方程式１を参照すると、Ｐを整数とするためにＢは、一般に無理数の特定のセットからＮとＤの関数として選択されなければならない。Ｎ＝３、Ｄ＝４などの稀な向きでのみ、Ｂの単純な値、例えば１ピクセルは反復シーケンステンプレートを生じるであろう。したがってピクセル重量テンプレートを選択するために補間を使用するこの代替的な実施形態のために、ビン間隔は、本明細書の他の箇所で述べられているように向きの関数として選択される。
【０１５１】
図８は、双線形補間を用いる方法と比較して、本明細書で説明する実施形態によって達成できる強化された解像度を示す。先行技術による双線形補間を用いてバーコード８００から１ピクセルのビンの間隔で投影線８１０に沿って１Ｄ信号８２０が抽出される。１Ｄ信号８３０は本明細書で説明する実施形態を用いて投影線８１０に沿って抽出される。いずれの方法も高い測光精度と幾何精度を有するが、本明細書で説明する実施形態の信号方向のぼやけは実質的に低減されて、より小さいビン間隔とより高い解像度を可能にする。
【０１５２】
双線形補間によって抽出される１Ｄ信号８２０では、特徴８４０、８４２及び８４４は著しく減衰されている。特徴８５０、８５２、８５４及び８５６は完全に消失している。これらの減衰又は消失した特徴は、バーコード８００の狭いバーとスペースに対応し、減衰及び／又は消失はバーコード８００が復号されるのを防ぐ。１Ｄ信号８３０ではこれらの特徴はやや減衰されているが、減衰はそれほど著しくないためバーコード８００が複合されるのを防ぐことはできない。
【０１５３】
図９は、本発明に従う装置の種々の実施形態で使用できるモジュールデータ構造９００を示す。プロセッサデータ９１０は、ピクセル重量テンプレートの反復シーケンスを用いて１Ｄ信号を計算するために、マイクロプロセッサ又はプログラム可能なゲートアレイなどの計算装置によって使用される情報を含む。プロセッサデータ９１０には、上述したように整数ＮとＤの比である勾配によって規定される、モジュール９００に対応する投影線の許容可能な向きの記述が含まれている。また、モジュールのピクセル重量テンプレートの数Ｐも含まれており、これは１回の反復によって生じる投影ビンの数と、及びモジュールの周期とも同じである。向きがそれぞれ該当する領域（平行、対角又は正規）についての情報は、例えばモジュールのスライスが１個又は２個の投影ビンに影響するか決定するために使用できる。
【０１５４】
テンプレートの重心を規定する情報は有用であり得る。Ｐ個の重心が勾配Ｎ／Ｄの線に沿って充分な精度で等間隔に置かれている実施形態においては、すべての重心の位置を規定するために１個のみの重心の位置で充分であり得る。重心はアンカーピクセルと相対的に規定できるが、これは１個のモジュールの任意に選択された１個のテンプレート内で任意に選択された１個のピクセル、例えば第１のテンプレートの第１のピクセルである。
【０１５５】
モジュールデータ構造９００は転送テンプレート９２０も含んでよい。このテンプレートは、ＤＭＡ転送パラメータのセットを計算するのに必要とされる情報を提供する。これらのパラメータはモジュール９００の向きで特定の投影線に対応するピクセルを得るのに使用できるが、これについては以下に詳細に説明する。
【０１５６】
幾つかの実施形態ではモジュールデータ構造９００は、マイクロプロセッサなどのプログラム可能デバイスのためのソフトウェアで実施される。マイクロプロセッサは、図１４に示され、さらに以下に説明するようなＤＭＡコントローラを含んでよい。モジュールデータ構造９００は、図１７に示されているように、及びさらに以下に説明するように、周知のＣ言語などのプログラミング言語で規定できる。
【０１５７】
幾つかの実施形態ではモジュールデータ構造９００は、許容可能な向きのセットの各々又は一部に対して計算されて、メモリに記憶される。１例が図１８、図１９及び図２０に示されている。分子列１８００、分母列１８０１、ビンカウント列１８０２、領域列１８１０、ｘ重心列１８２０及びｙ重心列１８２１はプロセッサデータ９１０を保持する。ＤＭＡスタイル列１８３０、「Ａ」カウント列１８３１、ベースカウント列１８３２、追加スライスインデックス列１８３３、「Ｂ」オフセット列１８３４、ｘ原点列１８３５、及びｙ原点列１８３５は転送テンプレート９２０を保持する。
【０１５８】
図９には、モジュール９００の実際のピクセル重量テンプレートは示されていない。テンプレートを定義するデータの例を、以下に図１０と図１２に関連して掲げる。
【０１５９】
図１０は、マイクロプロセッサ又はその他のプログラム可能な計算手段を含む実施形態において使用できる、Ｃ言語によるコンピュータプログラムの一部である。これらの実施形態では、上述したようにスライスからモジュールが生成される。スライスは１個以上の制御語１０００を含んでいる。各制御語１０００は、ピクセルの相対的位置（ｐｉｘｅｌｏｆｆｓｅｔ）と、スライスから生成される２個の隣接ピクセル重量テンプレートに対する重量（ｂｉｎＷｅｉｇｈｔ０，ｂｉｎＷｅｉｇｈｔｌ）を定義する。
【０１６０】
ピクセルオフセットはアンカーピクセルと相対的である。アンカーピクセルはモジュールの各々の完全な反復に対して固定されたままであり、次の反復に対して更新される。ピクセルオフセットは（ｘ、ｙ）オフセットとして規定できる。それはまた制御語１０００におけるようにアドレスオフセットとして規定されてもよく、これは行ピクセルのピッチ（行アドレス差）に基づいてｘ成分とｙ成分を結合する。例示の制御語１０００ではピクセルオフセットに対して１５ビットが割り当てられており、完全な制御語１０００は簡便な３２ビットである。与えられた実施形態において必要であれば、これより多い又は少ないビットを割り当てることができる。
【０１６１】
図１０の実施形態において、モジュールのすべての制御語はメモリに、スライス０の制御語で始まりスライスＰ−ｌの制御語で終わるアレイの連続要素で記憶される。各制御語１０００は、１個のスライスの終わりと１個の投影ビンの出力を示すフラッグ（ｎｅｘｔＢｉｎ）を含んでいる。
【０１６２】
モジュールのスライスを用いて１Ｄ信号を抽出するために、例えばサブルーチンの呼び出し又は何らかの適切な手段によって入力変数１０１０が提供される。見出されるように、これらの入力変数１０１０の幾つかは内側ループ１０３０の実行中に更新され、その他は一定である。
【０１６３】
入力変数ｐｉｘｅｉＡｄｄｒｅｓｓは、モジュールの現在の反復のアンカーピクセルのポインタである。それは最初に第１の反復のアンカーピクセルを規定し、反復ごとに更新される。入力変数ｂｉｎＡｄｄｒｅｓｓは生成されるべき次の投影ビンのポインタである。それは最初に１Ｄ信号の第１のビンを規定し、各スライスの後で更新される。入力変数カウントは、生成されるべき１Ｄ信号中の制御語の残りの数を規定する。それは最初に制御語の全数を規定するが、これはスライスの全数に対応していなければならず、反復の全数に対応しても、対応しなくともよい。ｃｏｕｎｔの初期値は、所望される投影ビンの数と、各スライス中の制御語の既知の数に基づいて計算され、０までカウントダウンされて内側ループ１０３０が実行される。
【０１６４】
入力変数ｃｏｎｔｒｏｌＡｄｄｒｅｓｓはモジュールの第１の制御語のポインタであり、更新されない。入力変数ｍｏｄｕｌｅＳｉｚｅはモジュール中の制御語の数を規定し、更新されない。入力変数ｍｏｄｕｌｅＯｆｆｓｅｔはある１回の反復のアンカーピクセルから次の反復のアンカーピクセルまでのピクセルアドレスオフセットを規定し、更新されない。
【０１６５】
内側ループ１０３０の実行中、ループ変数１０２０が用いられる。ループ変数ｂｉｎ０及びｂｉｎ１は２個１組のレジスタであり、現在処理しているスライスによって影響される２個の投影ビンに対する現在の部分和を保持している。これらは示されているようにゼロに初期化され、以下に説明するように、内側ループ１０３０の実行中に線形シフトされる。ループ変数ｃｏｎｔｒｏｌＬｏｏｐｃｏｕｎｔは、現在の反復に対して処理されたモジュールの制御語の数のカウントを保持する。それは０に初期化されて、各制御語に対して増分され、各反復の終わりに０にリセットされる。
【０１６６】
内側ループ１０３０は、処理される各制御語に対して１回実行される。現在の制御語が取り出され、制御語中のピクセルオフセットを用いて現在のピクセルが取り出される。次に制御語中のピクセルと２個の重量を用いて２個のレジスタ（ｂｉｎ０及びｂｉｎｌ）のセット中のビン部分和が更新される。
【０１６７】
制御語中のフラッグがスライスの終わりを指示したら、２個のレジスタ（ｂｉｎ０及びｂｉｎ１）のセットは線形シフトされる。次の投影ビンが、シフト出力されたｂｉｎ０の値から生成され、ｂｉｎ１がｂｉｎ０にシフト入力され、０値がｂｉｎ１にシフト入力される。その効果は、どの投影ビンもモジュールの１ピクセル重量テンプレートを定義する２個の連続スライスから生成されることである。
【０１６８】
ループ変数ｃｏｎｔｒｏｌＬｏｏｐｃｏｕｎｔは増分され、その値がピクセル重量テンプレートのシーケンスの１回の完全な反復に対応するモジュールの終わりを指示したら、ｐｉｘｅｌＡｄｄｒｅｓｓが更新されて、次の反復に対するアンカーピクセルを指し示し、ｃｏｎｔｒｏｌＬｏｏｐｃｏｕｎｔは０にリセットされる。
【０１６９】
ここで、１個のスライスのみ使用されたのであるから、内側ループ１０３０によって生成された第１の投影ビンは不要なデータであることに留意すべきである。
【０１７０】
図１０のプログラムは、例えばピクセル又は完全なスライスが２個ではなく１個のみの投影ビンに影響する変性領域のモジュールに対して使用できる。そのようなケースではｂｉｎＷｅｉｇｈｔｌは０に設定されてもよい。代替として、制御語当り１個のみの重量と１個のみのレジスタのセットを有する類似のプログラムが使用されてもよい。
【０１７１】
各ピクセルが２個以上のビン、例えばＮ個のビンに影響し得る実施形態に対して、制御語１０００はＮ個の重量を保持でき、ループ変数１０２０はＮ個のレジスタのセットを含むことができ、内側ループ１０３０はＮ個のレジスタのセットを更新及び線形シフトできる。当業者であればこのようなプログラムの修正を行うことができよう。
【０１７２】
図１１は、計算ステップがその動作のため主としてソフトウェアに依拠しないデジタル電子デバイス、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）で実行し得る実施形態を示す。テーブルメモリ１１００は例示のモジュール１１１０を含むモジュールのセットを保持し、このセットは投影線の許容可能な向きのセット又はそのようなセットの一部に対応する。例示のモジュール１１１０はピクセル重量テンプレートの反復シーケンスを規定するデータを保持し、情報は前述したようにスライスの形で存在する。
【０１７３】
画像メモリ１１２０はデジタル画像又はその一部を保持する。例示のモジュール１１１０からのピクセル位置データがアドレス生成器１１２５によって使用されて、アドレスを画像メモリ１１２０に送って適当なピクセル取り出すことができる。ピクセルは第１の乗加算器１１３０と第２の乗加算器１１３２に供給され、第２の乗加算器１１３２はピクセル値に例示のモジュール１１１０から読み出された重量を乗算し、レジスタ０１１４２とレジスタ１１１４０との積を加算する。
【０１７４】
レジスタ０１１４２とレジスタ１１１４０は２個１組のレジスタを包含する。これらのレジスタは、レジスタ１１１４０にシフト入力されている０値と、レジスタ０１１４２からシフト出力されて１Ｄ信号１１５０の投影ビンに書き込まれている値で示されているように線形シフトできる。例示のモジュール１１１０内のフラッグビット、カウント又はその他のデータによって示される各スライスの終わりで線形シフトが起きる。
【０１７５】
各ピクセルが２個以上のビン、例えばＮ個のビンに影響し得る実施形態に対して、例示のモジュール１１１０はＮ個の重量を保持し、Ｎ個の乗加算器及びＮ個のレジスタが存在してよい。当業者であればデバイスに対するそのような修正を行うことができよう。
【０１７６】
制御装置１１６０は図１１の装置の種々の要素制御及び調整する責任がある。それはアドレス及び読み出し信号をテーブルメモリ１１００に供給し、アドレス生成器１１２５を制御し、読み出し信号を画像メモリ１１２０に送り、第１の乗加算器１１３０と第２の乗加算器１１３２に命令して作動させ、レジスタ０１１４２とレジスタ１１１４０に命令してシフトさせて１Ｄ信号１１５０に書き込ませ、その他何らかの必要な命令及び制御機能を提供する。図１１の制御装置１１６０とこれらの他の要素との接続は、図を見やすくするために図からは省略されている。制御装置１１６０はコンピュータソフトウェアを含んでも含まなくともよい。
【０１７７】
本明細書では乗加算器という言葉は、ピクセルに重量を乗算し、積をある形の記憶域置に加算することができる何らかのデジタル電子デバイス又はその一部をいう。乗加算器は、第１の乗加算器１１３０又は第２の乗加算器１１３２など、その目的のための専用の要素を包含でき、又は内側ループ１０３０の場合に想定されるように、マイクロプロセッサに内蔵された演算ユニットなどより汎用的なデバイスの一部も包含することができる。
【０１７８】
図１２は、ドット積命令を提供するデジタル信号プロセッサ（ＤＳＰ）を利用する実施形態を示す。ＤＳＰは、デジタル信号処理を強化するために設計された種々のアーキテクチャ特徴を有するマイクロプロセッサである。図１２の例示的な実施形態では、テキサス・インスツルメンツＣ６４ｘ＋命令セットを実行することができるＤＳＰ、例えばテキサス州ダラスのテキサス・インスツルメンツ社によって製造及び販売されているＴＭＳ３２０ＤＭ６４３５が使用される。この命令セットはテキサス・インスツルメンツ社から一般に入手可能な文書、例えば「文献番号ＳＰＲＵ７３２Ｈ」に記述されている。図１２では、小文字テキストを含む矩形は一般にデータを保持する記憶域（レジスタ又はメモリ）を表し、大文字を含む角丸矩形はＣ６４ｘ＋命令セットの命令を表す。
【０１７９】
図示された実施形態では、すべて上述したように、モジュールはスライスからなり、各ピクセル重量テンプレートは２個のスライスから生成され、各ピクセルは２個の投影ビンに影響する。しかしながら前の例とは異なり、図１２の実施形態では一部Ｃ６４ｘ＋命令セットの単一命令複数データ（ＳＩＭＤ）能力を使用して２個のピクセルが並行に処理される。したがって制御語１２００は制御語１０００と同様であるが、制御語１２００が２個のピクセルオフセットと４個の重量を含み、６４ビットである点を除く。制御語１２００はまた「ｅ」と表示された１個のスライス終了フラッグも含んでいるが、これはこの実施形態におけるすべてのスライスは偶数のピクセルを取り出して処理することを含意する。
【０１８０】
各制御語１２００に対して、第１のＬＤＢＵ（符号なし負荷バイト）命令１２２０は第１のピクセル１２２２を取り出し、第２のＬＤＢＵ命令１２１０は第２のピクセル１２１２を取り出す。ピクセルは制御語１２００に含まれている。２個のオフセットを用いてメモリから取り出される。メモリはＤＲＡＭ又はキャッシュの一部であってもよく、又はオンチップＳＲＡＭの一部であってもよい。ＰＡＣＫ２命令１２３０は第１のピクセル１２２２と第２のピクセル１２１２を単一の３２ビットレジスタ１２３２に結合する。
【０１８１】
ＤＤＯＴＰ４（２重ドット積）命令１２４０は、示されているように４回の乗算と２回の加算を実行するが、これは１個のみの命令に対して相当な量の計算である。結果として生じる２個のドット積は汎用レジスタ１２６０と汎用レジスタ１２５０に置かれる。第１の加算命令１２６２と第２の加算命令１２５２はドット積を、第１のレジスタ１２６４と第２のレジスタ１２５４を包含する２個１組のレジスタに加算し、これは示されていない命令を用いて線形シフトすることができ、１Ｄ信号を発生する。
【０１８２】
ＤＤＯＴＰ４命令１２４０、第１の加算命令１２６２及び第２の加算命令１２５２は結合して４個の乗加算器の等価物を提供する。Ｃ６４ｘ＋命令セットを実施する特定のＤＳＰが、図１２に従うプログラムの制御下で、実際に４回の別個の乗算及び４回の別個の加算を使用するか否かは重要ではない。
【０１８３】
マイクロプロセッサやＤＳＰなどその他の一般に入手可能なプログラム可能デバイスは、１回、２回又はさらにそれ以上のドット積を実行してよいドット積命令を提供する。例えば、インテル社とアドバンスト・マイクロ・デバイシーズ社から出ている、いわゆるＭＭＸ命令セットを実施するマイクロプロセッサはＰＭＡＤＤＷＤ命令を含むが、この命令は２重ドット積を実行し、図１２と類似の実施形態で使用することができる。浮動小数点ドット積命令、例えばやはりインテル社とアドバンスト・マイクロ・デバイシーズ社によって提供されている、いわゆるＳＳＥ４命令セットも使用することができる。
【０１８４】
例えば図７の例示的な方法を用いて、前記許容可能な向きのセットに対してテンプレートを作成することは計算が複雑で高価であり得るが、図１１のテーブルメモリ１１００などのメモリに記憶されている結果を用いてオフラインで実行することができる。上述したようにランタイム動作のためにスライスからピクセル重量テンプレートを生成することは、図１０、図１１及び図１２の例示的な実施形態に見られるように計算が単純で装置の高速化につながり得る。しかしながら計算が動作の速度に影響する唯一の要因でなくともよい。ピクセルをデジタル画像から取り出すために必要とされる時間も考慮してよく、これは幾つかの実施形態ではピクセルを処理するために必要とされる時間よりはるかに大きいことがある。
【０１８５】
スライスを用いる場合、ピクセルは一般に投影線の向きとピクセルグリッドのジオメトリによって決定される所定の順序で取り出される。この順序はある種のメモリ、特にダイナミックＲＡＭ（ＤＲＡＭ）にとって好都合でないことがある。デジタル画像がスタティックＲＡＭ（ＳＲＡＭ）内に保持される場合、何らかのアクセスの順序は他のどの順序とも同じように速く、スライスによって生成されるピクセル順序は実質的に動作の速度に影響しない。しかしながら利用可能なＳＲＡＭは小さ過ぎて完全な画像を保持できないため、画像は一般にはるかに大きいＤＲＡＭに入れられなければならない。
【０１８６】
ＤＲＡＭは、シーケンシャルメモリ位置へのアクセスが一般に非シーケンシャルアクセスよりはるかに速いという特性を有する。それゆえデジタル画像がＤＲＡＭに保持される実施形態においては、ピクセルをシーケンシャル順序で取り出し、それらをスライスによって決定される異なる順序で処理することが好都合であり得る。これはＤＲＡＭに保持されているデジタル画像の適当な一部をＳＲＡＭに転送する（コピー）することによって達成することができる。転送は合理的にシーケンシャルな順序で行われてもよく、ＳＲＡＭに入ったらスライスによって課せられる処理順序は性能を劣化させないであろう。ここで留意すべきは、シーケンシャルはある画像中の連続したｘ座標を意味するが、どの方向がｘで、どの方向がｙであるかの選択は言うまでもなく任意の約束事であるという点である。
【０１８７】
幾つかの実施形態では、速度の一層の改善は、第１の１Ｄ信号を抽出するために使用されるピクセルの転送と、第２の１Ｄ信号を抽出するために前に取り出されたピクセルの処理がオーバーラップすることによって達成することができる。
【０１８８】
図１０と図１２の例示的な実施形態などの幾つかの実施形態では、既知の行ピッチを用いてピクセルオフセットのｘ成分とｙ成分を結合するアドレスオフセットであるピクセルオフセットが使用される。そのような実施形態において、及びアドレスオフセットがオフラインで生成されてメモリに記憶される場合、デジタル画像の行ピッチが事前に知られていないことがある。したがってピクセルを転送する動作の間に行ピッチをデジタル画像の行ピッチから事前に知られている値に変えることが望ましいことがあり得る。
【０１８９】
したがって、デジタル画像の適切な部分からピクセルをワーキングメモリに転送することは、シーケンシャルアクセス、ピクセルの取り出しと処理のオーバーラップ、及び行ピッチが事前に知られていないアドレスオフセットを使用する能力を含む、ある利点を提供できることは明らかである。何らかの特定の実施形態において、これらの利点の幾つか又はすべてが望ましいことがある。これらの幾つかの利点に対して、デジタル画像は好ましくはＤＲＡＭに保持されており、ワーキングメモリは好ましくはＳＲＡＭであるが、別の実施形態では他の構成も使用することができる。
【０１９０】
上記の利点の幾つか又はすべてを達成するためにピクセルを転送する１つの方法は、ダイレクトメモリアクセスコントローラ（ＤＭＡ）、マイクロプロセッサやＤＳＰなどのプログラム可能デバイスでしばしば提供されるデジタル電子コンポーネントである。例えば、テキサス・インスツルメンツ社によって提供され、「文献番号ＳＰＲＵ９８７Ａ」などの一般に入手可能な文書に記述されている強化ダイレクトメモリアクセスコントローラを使用することができる。
【０１９１】
ＤＭＡ転送の１つの重要な特徴はその次元性である。１次元転送はピクセルのシーケンス（例えばバイト）をソースから宛先に単純にコピーする。１Ｄ転送のためのパラメータは、ソースアドレスと宛先アドレス及びカウントであろう。
【０１９２】
２次元転送は２Ｄソースアレイの部分を２Ｄ宛先アレイの部分にコピーする。２次元はＡ及びＢと称することができる。当該部分は行当りのＡカウントピクセルのＢカウント行として規定でき、各アレイはアドレスとＢピッチ（例えば行間のアドレスの差）によって規定することができる。ソースアレイと宛先アレイのＢピッチは異なることがあることに留意すべきである。
【０１９３】
３次元転送はソースアレイの部分を３Ｄ宛先アレイの部分にコピーする。３次元はＡ、Ｂ及びＣと称することができる。当該部分は行当りのＡカウントピクセルのフレーム当りのＢカウント行のＣカウントフレームとして規定でき、各アレイはアドレス、Ｂピッチ（例えば行間のアドレスの差）及びＣピッチ（例えばフレーム間のアドレスの差）によって規定することができる。ソースアレイと宛先アレイのＢピッチ及びＣピッチは異なることがあることに留意すべきである。
【０１９４】
一般に、Ｎ次元転送はＮカウント、Ｎ−ｌソースピッチ、及びＮ−ｌ宛先ピッチを有する。２Ｄ及び３Ｄ転送のこれ以上の説明及び例は、上に引用した文書ＳＰＲＵ９８７Ａに見いだすことができる。２Ｄ転送は提供するが３Ｄ転送は提供しないデバイスに対して、３Ｄ転送は２Ｄ転送のシーケンスの適当な連鎖、リンク又はそれ以外のプログラミングによって用意することができる。
【０１９５】
ＤＭＡ転送の形状は少数のパラメータ（カウントとピッチ）によって決定されるので、投影線のほとんどの向きにとって、それらのピクセル重量テンプレートの反復シーケンスによって必要とされるピクセルだけを転送することは通常は可能ではない。それゆえ不必要なピクセルが転送されるが、それは時間とスペースを浪費することでありこれらの不必要な転送を最小化することが望ましい。
【０１９６】
ある先行技術による画像処理システムにおいては、ＤＭＡを使用して、デジタル画像の矩形部分が処理のためのより高速なメモリに転送される。矩形部分は、例えば処理されるピクセルの最小境界矩形であってもよい。ここでは２Ｄ転送が、ソース画像の行ピッチに等しいソースＢピッチで用いられる。宛先ＢピッチはＡカウントに設定されてもよく、結果として行間スペースを浪費しない宛先アレイが生じる。
【０１９７】
この先行技術の方式は様々な欠点を持ち得る。例えば投影線の向きの大多数に対して必要とされるピクセルの最小境界矩形は、一般に過度に多くの不必要なピクセルを含む。したがって転送のための追加時間はＤＭＡ転送を行う速度の利点を無効にしかねない。それらを補助するために必要とされる追加スペースが利用可能なＳＲＡＭにとって過大になることがある。宛先の行ピッチ投影線の長さに依存するが、これは事前に知られていないことがある。
【０１９８】
図１３は、２Ｄ及び３Ｄ転送を用いて不必要なピクセルを最小限にし、及びソース画像の行ピッチ又は投影線の長さを事前に知ることなくピクセルに対するアドレスオフセットを可能にする本発明の実施形態を示す。これは一部２ステッププロセスによって達成される。第１に、与えられた投影線の向きについて、当該向きにとって好都合な転送パターンを規定する転送テンプレート、例えば不必要なピクセルを最小限にする転送テンプレートが選択される。転送テンプレートは当該向きと関連付けられているモジュールの一部であり、許容可能な向きのセット又はセットの大多数に対してオフラインで計算されて、メモリに記憶することができる。代替として、転送テンプレートは特定の投影線を記述する情報が受け取られた後で計算することができる。図１３の例示的な実施形態は転送テンプレート９２０を使用する。
【０１９９】
第２に、特定の投影線を記述する情報が受け取られたら（例えば実行時）、投影線の向きと関連付けられた転送テンプレートが使用されて、当該特定の投影線に対してカスタマイズされたＤＭＡ転送パラメータを生成する。転送テンプレートから転送パラメータを生成することは、一般に投影線の開始点のメモリ中のアドレス及び投影線の長さに関する情報を使用することを含む。
【０２００】
図１３の例では、投影線（図示せず）は、勾配が右方向に３ピクセル当り２ピクセル下降している向きを持つ。５個のスライスから生成された５個のピクセル重量テンプレートを有するモジュールが使用される。ここでＮ＝２、Ｄ＝３、及びＰ＝５である。５個のスライスは第１の反復１３４０、第２の反復１３４２、及び第３の反復１３４４に対して示されている。図５の例にあるように、反復の全数が示されているが、上述したように処理を全数に制限する必要はない。第１の反復アンカーピクセル１３２０も示されている。
【０２０１】
図１３では、転送される不必要なピクセルは、例示の不必要なピクセル１３３０を含めドットで図示されている。図では不必要なピクセルはかなり少ないように見えるが、投影線が長くなると加えられる不必要なピクセルは非常に少ない。この例では反復当り２個に過ぎない。
【０２０２】
図１３の例では向きに対して３Ｄ転送が使用される。Ａカウントは転送テンプレート９２０の一部で、この例では１７である。ＢカウントはＮ、ここでは２であり、一般にモジュールの他の箇所で得られるので転送テンプレートで反復される必要はない。Ｃカウントは次の通り計算される。：
【数５】
2018049605.tif 000007
【０２０３】
ここでＢａｓｅＣｏｕｎｔ（ここでは４）及びＥｘｔｒａＳｌｉｃｅＩｎｄｅｘ（ここで１）は転送テンプレート９２０にあり、Ｐ（ここでは５）は一般にモジュールの他の箇所で得られるので転送テンプレートで反復される必要はなく、ＮｕｍＳｌｉｃｅ（ここでは１５）は当該投影線について処理されるべきスライスの総数であり、これは反復の全数（即ちＰの倍数）である必要はない。図１３の例の値を用いると、Ｃカウント＝４＋［（１５＋１）／５］＝４＋［３．２］＝７が得られる。図に見られるように、例示のフレーム１３００を含む、行当り１７ピクセルのフレーム当り２行の７フレームがある。
【０２０４】
図１３の例では、ソースＢピッチは、ソース画像の行ピッチ＋転送テンプレート９２０内のＢオフセット（ここでは２）に等しい。ソースＢピッチは一般にソース行ピッチに等しいことに留意すべきである。ソースＣピッチはソース行ピッチのＮ倍＋Ｄであり、３Ｄ転送が投影線に従うことを可能にする。
【０２０５】
宛先ＢピッチはＡカウントに等しく、宛先ＣピッチはＡカウントのＮ倍に等しく、これは２つの望ましい特性を有している。第１に、宛先メモリ内のピクセルは記憶域をほとんど浪費しない。もちろん不必要なピクセルに対する記憶域は求められるが、記憶域はほとんど浪費されないか又は追加の記憶域は不要である。第２に、宛先Ｂピッチ及びＣピッチは事前に知られている情報から完全に計算されるため、ピクセルに対するアドレスオフセットはソース画像の行ピッチ又は投影線の長さを事前に知ることなく使用することができる。
【０２０６】
ソース開始アドレスは第１の反復アンカーピクセル１３２０の座標から計算され、座標は投影線を記述する情報と、転送テンプレート９２０におけるＤＭＡオフセットベクトルから導出でき、ここでは（−１６，０）である。宛先開始アドレスは、ピクセルを置くことができるワーキングメモリ中の何らかの適当な位置である。
【０２０７】
Ｎ＝１であるモジュールでは、Ｂカウントは１であろう。これらの向きに対しては２Ｄ転送で十分である。Ｃ次元であったであろうものはＢ次元となり、Ｃ次元は必要とされない。
【０２０８】
投影線の向きがｘ方向に接近すると、Ａカウントが増加し、不必要なピクセルの数が増加する。十分浅い角度では、即ちｘ方向に十分近いと、上述したスタイルの２Ｄ又は３Ｄ転送を使用するのは望ましくないことがある。これらの浅い向きは一般に平行領域の向きと同じではなく、それらの方向近傍の向きを含んでいないことに留意すべきである。これらの浅い向きに対してはブロックスタイルのＤＭＡ転送を使用することができる。ブロックスタイル転送は３Ｄであり、各ソースフレームはモジュールの１回の反復に必要とされるピクセルの最小境界矩形である。
【０２０９】
図１８、図１９及び図２０は、１７１個の許容可能な向きの特定のセットに対する転送テンプレートを示す。このうち図１３の向きは図１９では３３．６９度に対応する行に現れている。転送テンプレートは、ＤＭＡスタイル列１８３０、「Ａ」カウント列１８３１、ベースカウント列１８３２、追加スライスインデックス列１８３３、「Ｂ」オフセット列１８３４、ｘ原点列１８３５、及びｙ原点列１８３５に現れている。
【０２１０】
図１４は、図１３に関連して上述した転送テンプレートを使用することができる装置の実施形態を示す。マイクロプロセッサ１４００は、テキサス・インスツルメンツ社によって製造及び販売されているＴＭＳ３２０ＤＭ６４３５などのＤＳＰであってもよく、メモリコントローラ１４２０を介してＤＲＡＭ１４１０に接続されている。マイクロプロセッサ１４００は、命令とデータキャッシュ１４４０を介するプログラム制御下でＤＲＡＭ１４１０内のデータにアクセスでき、データキャッシュ１４４０はメモリコントローラ１４２０によってＤＲＡＭ１４１０から必要に応じて満たされる。
【０２１１】
マイクロプロセッサ１４００はまたＤＭＡコントローラ１４３０に命令してデータをＤＲＡＭ１４１０からＳＲＡＭ１４５０に転送でき、そうするためにメモリコントローラ１４２０を用いる。マイクロプロセッサ１４００はプログラム制御下でＳＲＡＭ１４５０にアクセスし、ＤＲＡＭ１４１０からそこに転送されるデータ用いて計算を実行することができる。マイクロプロセッサ１４００はＤＭＡコントローラ１４３０に一部転送パラメータ１４３２を用いて命令する。
【０２１２】
ＤＲＡＭ１４１０の一部が、許容可能な向きのセット又はそのようなセットの一部のための転送テンプレートを保持する転送テーブルメモリ１４７０のために使用される。転送テーブルメモリ１４７０は、図９に示すモジュールデータを保持するメモリの一部であってもよい。ＤＲＡＭ１４１０のその他の一部は、デジタル画像保持する画像メモリ１４６０のために使用される。ＳＲＡＭ１４５０の一部は、部分画像メモリからデジタル画像の一部を受け取るワーキングメモリ１４５２のために使用される。
【０２１３】
マイクロプロセッサ１４００は、転送テーブルメモリ１４７０から投影線の向きに応じて転送テンプレートを選択する。マイクロプロセッサ１４００は転送テンプレート及び投影線についての情報を用いてカスタマイズされた転送パラメータのセットを計算し、それらをＤＭＡコントローラ１４３０内の転送パラメータ１４３２に伝送し、ＤＭＡコントローラ１４３０に命令して画像メモリ１４４０からワーキングメモリ１４５２にデータを転送する。マイクロプロセッサ１４００は、ワーキングメモリ１４５２に転送されたデータの少なくとも一部（例えば不必要なピクセルは無視）を用いて投影線に沿って１Ｄ信号を計算する。
【０２１４】
図１５は、図１３の方法と組み合わせて、及び図１４の転送パラメータ１４３２のために使用することができる転送パラメータの例示的なセット１５００の詳細を示す。「オプション」欄は、幾つかある機能の中で特に２Ｄ転送又は３Ｄ転送の選択を可能にする。転送パラメータ１５００のその他のすべての欄は、上述の図１３の関連で説明された。
【０２１５】
図７のステップ７００は、例えば与えられた勾配Ｎ／Ｄに対して方程式１に従いＰを選択することによって、投影線の与えられた向きに対するビン間隔の向きを選択する。ビン間隔の選択に関する追加情報がここで提供される。
【０２１６】
図１６は、上に方程式４で定義された密度性能指数のグラフ１６００を、勾配３／５の向きに対するピクセルにおけるビン間隔Ｂの関数として示す。グラフ１６００に対して、σｕ＝０．３５Ｂ、σν＝３．０、及びσｓｙｓ＝０．２８である。密度は正方形ピクセル当りのモジュール重量の単位で表し、一般にモジュール重量の値が高くなればノイズ低減は大きくなる。重量は一般にビン間隔が小さくなるに連れて減少するが、密度曲線１６１０に沿って見られるように密度は小数の顕著な山形を除いてビン間隔の広い範囲にわたりおおよそ一定であるので、密度はノイズ低減とぼやけ減少の双方の利点を含む有用な性能指数であってもよい。
【０２１７】
一般にビン間隔を山形の１つ、例えば第１の山形１６２０、第２の山形１６３０、第３の山形１６４０、又は第４の山形１６５０に対応して選択することが望ましい。別の向きは一般にやや異なるビン間隔ではあるが一般に類似の山形を呈し、多かれ少なかれ顕著であり得る。ビン間隔を向きの関数として合理的になだらかに変動するように選択することが望ましいと考えられてもよく、それによって向きの小さい変化に対してビン間隔の大きい飛躍が一般に回避される。したがって、これらの山形がどこで現れそうか予測できることが有用である。
【０２１８】
山形は一般に次式を満たすＮ、Ｄ及びＰ値に対して現れてもよい。
【数６】
2018049605.tif 000008
ここでａとｂは小さい整数である。グラフ１６００ではＮ／Ｄ＝３／５であり、山形は次のように現れる。
【表１】
2018049605.tif 000009
一般に山形はａとｂの小さい値、例えばａ＝１及びｂ＝１又は２に対して最も顕著である。ここで留意すべきは、ＮとＤの例は互いに素でないことである。
【０２１９】
特に向きの正規領域に対する合理的なストラテジーは、高解像度が所望される実施形態に対してはａ＝１、ｂ＝１を使用し、やや低い解像度が所望される実施形態に対してはａ＝１、ｂ＝２を使用することである。方程式６によって提供されるガイダンスに従うことを含む別の選択も合理的であり得る。変性領域に対して、特に平行領域に対して、さらに１ピクセル以上のビン間隔が選好されるより低い解像度に対して、本明細書の他の箇所で述べられている他の選択を行うことができる。
【０２２０】
図１７は、規定するモジュール９００に対するＣプログラミング言語による宣言を例示的な実施形態で提供する。図１７の宣言は、許容可能な向きのセットに対するモジュールをＣプログラミング言語における初期化された静的アレイの形で示す、図１８、図１９及び図２０のデータも定義する。
【０２２１】
列挙宣言１７００は、例示的な実施形態で使用することができる種々のＤＭＡスタイルに対して記号名を提供する。Ｂｌｏｃｋｓｔｙｌｅ、ＴｗｏＤＳｔｙｌｅおよびＴｈｒｅｅＤＳｔｙｌｅは、上述に図１３との関係で説明された。Ｖ２ＤＳｔｙｌｅ及びＶ３ＤＳｔｙｌｅは、データを転送するためにＴｗｏＤＳｔｙｌｅ及びＴｈｒｅｅＤＳｔｙｌｅと同じ方法で使用される。これらはｘ方向（即ち上記の４５度）よりもｙ方向に近い向きに対して使用されて、それらの向きを必要に応じてｘとｙを交換することにより４５度以下の向きから作成することができるようにする。
【０２２２】
構造宣言１７１０は、例示的なモジュールに対するレイアウトとデータタイプを規定する。「Ｓ１６．８」という言葉は、２値点の右に８ビット有する１６ビット符号付き固定点値をいう。ｃｏｎｔｒｏｌＣｏｄｅｓ要素は、モジュールのスライスに対するピクセル位置と重量を定義するデータのポインタであり、何らかの適当な形で、例えば制御語１０００又は制御語１２００のアレイであってもよい。図１８、図１９及び図２０において、このポインタは制御コードポインタ列１８４０に示されている。図１８、図１９及び図２０の構造宣言１７１０の他のすべての要素、及び他のすべての列は、本明細書の別の箇所で説明されている。
【０２２３】
図１８、図１９及び図２０のモジュールは、増加する勾配の順序でソートされているので、何らかの与えられた投影線、例えば図２の要求された投影線２５０の勾配に最も近いモジュールが、２値検索を用いて迅速に選択することができる。０〜９０度の角度のみ示されているが、転送テンプレートからＤＭＡ転送パラメータを生成するために、及び当業者には明白なその他の適当な場で、アドレスオフセットを計算するときに座標を無効にすることによって示された角度から９０〜１８０度の向きを作成することができる。
【０２２４】
図１８、図１９及び図２０における許容可能な向きのセットは、連続する向きの間の角度差が０．７度を超えないように、且つＤ値が小さいモジュールが選好されるように選択された。許容可能な向きのセットを選択するための何らかの適当な方法、例えば連続する向きの間で実質的に一定角度差を有するセットを選択する方法を用いることができる。モジュールがテーブルに記憶されず、むしろ投影線を記述する情報が受け取られた後で必要とされるときに計算される実施形態において、許容可能な向きのセットはここで示されたセットと実質的に異なっていてもよい。
【０２２５】
上述した技術は、デジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせで実装することができる。実装は、データ処理装置、例えばプログラム可能なプロセッサ、コンピュータ及び／又は多数のコンピュータによる実行、又はそれらの動作を制御するために、コンピュータプログラム製品、即ち機械可読記憶装置に明白に埋め込まれたコンピュータプログラムであってもよい。コンピュータプログラムは、ソースコード、コンパイル済みコード、解釈コード及び／又は機械コードを含む、何らかの形のコンピュータ言語又はプログラミング言語で書くことができ、コンピュータプログラムは、スタンドアロンプログラム又はサブルーチン、エレメント、又はその他の計算環境で使用するのに適したユニットを含む、何らかの形で展開することができる。コンピュータプログラムは１以上のサイトで１台のコンピュータ又は多数のコンピュータで展開されて実行することができる。
【０２２６】
方法ステップは、本発明の機能を実現するためのコンピュータプログラムを実行する１以上のプロセッサにより、入力データで操作し及び／又は出力データを生成することによってって実施することができる。方法ステップはまた専用論理回路、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＣＰＬＤ（複合プログラム可能論理デバイス）、ＰＳｏＣ（プログラム可能システム−オンチップ）、ＡＳＩＰ（特定用途向き命令セットプロセッサ）、又はＡＳＩＣ（特定用途向き集積回路）によって実施でき、装置として実装することができる。サブルーチンは、１以上の機能を実施するコンピュータプログラム及び／又はプロセッサ／専用回路の部分を意味し得る。
【０２２７】
コンピュータプログラムの実行に適したプロセッサは、例示により汎用及び専用マイクロプロセッサ、デジタル信号プロセッサ、及び何らかの種類のデジタルコンピュータの１以上のプロセッサを含む。一般にプロセッサは命令とデータを読み出し専用メモリ又はランダムアクセスメモリ又は双方から受け取る。コンピュータの必須の要素は命令を実行するためのプロセッサと、命令及び／又はデータを記憶するための１以上の記憶装置である。データを一時的に記憶するためにキャッシュなどの記憶装置を使用することができる。記憶装置は長期データ保存のために使用されてもよい。コンピュータは外部機器、例えば工場自動化機器若しくは物流機器、又は通信ネットワーク、例えば工場自動化ネットワーク若しくは物流ネットワークと動作結合して、命令及び／又はデータを機器又はネットワークから受け取り及び／又は命令及び／又はデータを機器又はネットワークに転送する。コンピュータプログラム命令を具体化するのに適したコンピュータ可読記憶装置は、あらゆる形態の揮発性及び非揮発性メモリを含み、これには例示の半導体記憶装置、例えばＤＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリデバイスや、磁器ディスク、例えば内部ハードディスク又はリムーバブルディスクや、光磁気ディスクや、光ディスク、例えばＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ及びブルーレイディスクを含む。プロセッサ及びメモリは専用論理回路によって補完され、及び／又は専用論理回路に組み込まれることができる。
【０２２８】
当業者は本発明が、本発明の精神又は本質的な特徴から逸脱することなく他の具体的な形態において具体化され得ることを認識するであろう。それゆえ上述した実施形態はあらゆる点で例示的なものであり、本明細書で説明された本発明を制限するとみなされてはならない。したがって本発明の範囲は上述した説明よりも添付の特許請求の範囲によって示され、それゆえ請求項の範囲と等効性の範囲内に入るすべての変更は本発明に包含されることが意図されている。
【０２２９】
特許請求の範囲は以下の通りである。
【図１】
2018049605.tif 000010
【図２】
2018049605.tif 000011
【図３】
2018049605.tif 000012
【図４】
2018049605.tif 000013
【図５】
2018049605.tif 000014
【図６】
2018049605.tif 000015
【図７】
2018049605.tif 000016
【図８】
2018049605.tif 000017
【図９】
2018049605.tif 000018
【図１０】
2018049605.tif 000019
【図１１】
2018049605.tif 000020
【図１２】
2018049605.tif 000021
【図１３】
2018049605.tif 000022
【図１４】
2018049605.tif 000023
【図１５】
2018049605.tif 000024
【図１６】
2018049605.tif 000025
【図１７】
2018049605.tif 000026
【図１８】
2018049605.tif 000027
【図１９】
2018049605.tif 000028
【図２０】
2018049605.tif 000029
【外国語明細書】
2018049605000001.pdf