(57)【特許請求の範囲】
【請求項１】
複数の画素を有する１つ以上の画像を処理するための方法であって、該方法は、
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理することと、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合に、記憶デバイスから、該次の画素ブロックの１つの新しいベクトルをフェッチすることと、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合に、該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルを所定の画素値によって充填し、該記憶デバイスから、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルをフェッチすることと、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在するかしないかに関わらず、１つの出力画素値を出力し、それによって、メモリフェッチおよび画素出力の一定速度を維持することと
を含む、方法。
【請求項２】
前記連続する画素ブロックの処理は、ｎ×ｍのカーネルマトリクスを該連続する画素ブロックに適用することを含み、ｎおよびｍは、奇数の整数である、請求項１に記載の方法。
【請求項３】
前記連続する画素ブロックの処理は、２次元畳み込み演算を含む、請求項１に記載の方法。
【請求項４】
前記連続する画素ブロックの処理は、２次元相関演算を含む、請求項１に記載の方法。
【請求項５】
前記所定の画素値は、ゼロである、請求項１に記載の方法。
【請求項６】
前記所定の画素値は、前記第２のエッジの対応する部分の画素値である、請求項１に記載の方法。
【請求項７】
複数の画素を有する１つ以上の画像を処理するための装置であって、該装置は、
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための手段と、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合に、記憶デバイスから、該次の画素ブロックの１つの新しいベクトルをフェッチする手段と、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合に、該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルを所定の画素値によって充填し、該記憶デバイスから、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルをフェッチする手段と、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在するかしないかに関わらず、１つの出力画素値を出力し、それによって、メモリフェッチおよび画素出力の一定速度を維持する手段と
を備える、装置。
【請求項８】
前記連続する画素ブロックを処理するための手段は、ｎ×ｍのカーネルマトリクスを前記連続する画素ブロックに適用する手段をさらに備え、ｎおよびｍは、奇数の整数である、請求項７に記載の装置。
【請求項９】
前記連続する画素ブロックを処理するための手段は、２次元畳み込み演算のための手段をさらに備える、請求項７に記載の装置。
【請求項１０】
前記連続する画素ブロックを処理するための手段は、２次元相関演算のための手段をさらに備える、請求項７に記載の装置。
【請求項１１】
前記所定の画素値は、ゼロである、請求項７に記載の装置。
【請求項１２】
前記所定の画素値は、前記第２のエッジの対応する部分の画素値である、請求項７に記載の装置。
【請求項１３】
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための装置であって、該装置は、
該画像の画素値の少なくとも１つの入力ストリームを受信するために１つ以上の記憶デバイスと連結される入力データインターフェースと、
画素処理セルのアレイであって、各セルは、
２次元画像処理の間に、該画像に適用されるべきカーネルの係数値を記憶する係数記憶ユニットと、
該画像の画素値を記憶する画素記憶ユニットであって、該画素記憶ユニットは、隣接するセルの別の画素記憶ユニットまたは該入力データインターフェースのいずれかに連結され、それによって、該画素値が、最初に該入力データインターフェースを介して受信され、続いて該アレイにわたって１つのベクトルから隣接するベクトルまで伝搬されることを可能にする、画素記憶ユニットと、
該各セルが該アレイの中心ベクトルの中にない場合に、入力を該画素記憶ユニット、該アレイの同一ライン上の中心ベクトル画素記憶ユニット、および該中心ベクトルと該各セルとの間に位置する任意の画素記憶ユニットに連結されるマルチプレクサユニットと、
１つ以上のセル内演算ユニットと
を含む、アレイと、
該画素処理セルのアレイからの出力を処理して、出力画素値を生成するセル間演算ユニットと、
該入力データインターフェース、該画素処理セルのアレイ、および該セル間演算ユニットの演算を調整するタイミング制御モジュールであって、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合には、該タイミング制御モジュールは、該次の画素ブロックの１つの新しいベクトルが該１つ以上の記憶デバイスからフェッチされるようにさせ、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合には、該タイミング制御モジュールは、該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルが所定の画素値によって充填されるようにさせる一方、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルが該１つ以上の記憶デバイスからフェッチされるようにさせ、それによって、メモリフェッチおよび画素出力の一定速度を維持する、タイミング制御モジュールと
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、同時係属の米国特許出願第１２／６１９，８２５号（２００９年１１月１７日出願）の優先権および利益を主張し、この出願は、その全体が参照することによって本明細書に援用される。
【０００２】
（発明の分野）
本発明は、概して、デジタル信号処理およびコンピュータグラフィックスに関し、より具体的には、画素速度での画像処理に関する。
【背景技術】
【０００３】
２次元（２−Ｄ）画像を処理する際に、小マトリクスまたはカーネルを連続する画素ブロックに適用し、出力画素を生成することが知られている。例えば、２−Ｄ畳み込み演算では、ｎ×ｍのマトリクス（「畳み込みマスク」）が、典型的には、ラスタパターンに従って画像に適用され、画像内の各画素に対して、畳み込みマスクがその画素上の中心に置かれ、画像内の対応するｎ×ｍの画素によって畳み込まれ、出力画素値を計算する。次いで、そのように生成された出力画素は、集合的に、新しい（処理された）デジタル画像を形成する。使用される畳み込みマスクに応じて、２−Ｄ畳み込み演算が、ノイズをフィルタリングするか、オブジェクトエッジを向上させるか、またはデジタル画像に及ぼす他の所望の効果を達成することができる。同様に、２−Ｄ相関演算では、マトリクスは、ラスタモードで画像に適用されて、各画素およびその近傍画素によって計算され、対応する出力画素を生成する。これらおよび他のカーネルベースの２−Ｄ処理演算は、ソフトウェアまたはハードウェア内に実装されて、静止画像またはビデオシーケンス内のフレームに適用することができる。
【０００４】
図１は、２６×２０のアレイの画素を有する例示的な画像１００を示し、各小さい正方形は、１つの画素を表す。ラスタモードにおいて、左上隅（すなわち、画素Ａ１）から開始し、一行毎に、エッジからエッジまで通過する３×３のカーネル１０２が、画像１００に適用されてもよい。画像１００内の各画素に対して、対応する画素ブロック（その画素およびその８つの近傍画素）のデジタル値は、それらの画素データがカーネルマトリクスの値によって計算される前に、メモリデバイスまたは入力バッファから読み出される必要がある。画素データを読み出し、カーネルによって画素データを計算するステップは、典型的には、パイプライン化され、クロックによる画素速度で駆動される。カーネルが、例えば、画像１００内の画素Ｋ１６（「１」とマークされる）から画素Ｌ１６（「２」とマークされる）まで次の画素に前進されることに伴って、画素データの１つの新しい列のみ（すなわち、画素Ｍ１５−１７のもの）を読み出す必要がある。すなわち、パイプライン化されたプロセスにおける各クロックサイクルの間に、画素データの１つの新しい列のみが、メモリまたは入力バッファから読み出され、通常、１つの出力画素値が、同時に生成される。したがって、画像１００の境界内に位置するそれらの画素ブロック（「内部画素ブロック」）が完全に処理されるとき、画素データ列を読み出す速度と発信画素速度との間に、１対１関係が存在し得る。
【０００５】
しかしながら、そのような１つの列をフェッチし、１つの画素を出力するタイミングパターンは、カーネルが、画像のエッジに到達し、新しいラインまたはフレーム上において走査および演算を開始しようとすると、維持することができない。図２は、再び、画像１００およびカーネル１０２によるこの問題を例示する。画素Ｚ１６上に中心が置かれた、図２におけるカーネル１０２によってカバーされる画素ブロックは、「エッジ画素ブロック」と呼ばれ得る。カーネル１０２が、ライン１６上の最後の画素（画素Ｚ１６）からライン１７上の第１の画素（画素Ａ１７）まで移動することに伴って、画素データの２つの新しい列（すなわち、画素Ａ１６−１８およびＢ１６−１８のもの）は、画素Ａ１７に対応する出力画素値が計算され得る前にフェッチされる必要がある。類似の問題は、他のサイズのカーネル、およびカーネルが、ビデオシーケンス内の新しいフレームに移行するときにも存在する。移行の際に発信画素速度を維持するための、従来の２−Ｄ画像処理アプローチは、フェッチされるべき余剰列のための余剰クロックサイクル、または非エッジ画素ブロックのために使用されるものより遥かに大きいメモリ帯域幅のいずれかを要求するであろう。これらの解決策のいずれもが、効率性の欠如のために望ましくない。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態は、処理演算が、画素の新しいラインまたはフレームに移行するときでも、メモリフェッチおよび画素出力の一定速度を維持するために、２−Ｄ画像処理において改良されたタイミング制御を提供する。
【０００７】
本発明の一側面において、複数の画素を有する、１つ以上の画像を処理するための方法は、画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するステップを含む。各単一クロックユニットの間に、処理されるべき次の画素ブロックが第２のエッジを越えて延在しないとき、次の画素ブロックの１つの新しいベクトル（すなわち、行または列）が、記憶デバイスからフェッチされる。各単一クロックユニットの間に、処理されるべき次の画素ブロックが第２のエッジを越えて延在するとき、第２のエッジを越えて位置する次の画素ブロック内の新しいベクトルが、所定の画素値で充填される一方、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルが、記憶デバイスからフェッチされる。各単一クロックユニットにおいて、１つの出力画素値が生成され、それによって、メモリフェッチおよび画素出力の一定速度を維持する。
【０００８】
本発明の別の側面において、複数の画素を有する１つ以上の画像を処理するための装置は、（ｉ）画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための手段と、（ｉｉ）各単一クロックユニットの間に、処理されるべき次の画素ブロックが、第２のエッジを越えて延在しないとき、次の画素ブロックの１つの新しいベクトルを記憶デバイスからフェッチする手段と、（ｉｉｉ）各単一クロックユニットの間に、処理されるべき次の画素ブロックが、第２のエッジを越えて延在するとき、第２のエッジを越えて位置する次の画素ブロック内の新しいベクトルを所定の画素値で充填する手段と、同時に、記憶デバイスから、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルをフェッチする手段と、（ｉｖ）各単一クロックユニットにおいて、１つの出力画素値を出力し、それによって、メモリフェッチおよび画素出力の一定速度を維持する手段とを含む。
【０００９】
さらに別の側面では、画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための装置は、画像の画素値の少なくとも１つの入力ストリームを受信するために、１つ以上の記憶デバイスに連結された入力データインターフェースと、画素処理セルのアレイであって、各セルが、２次元画像処理の際に、画像に適用されるカーネルの係数値を記憶する係数記憶ユニットと、画像の画素値を記憶する画素記憶ユニットであって、隣接するセルの別の画素記憶ユニットまたは入力データインターフェースのいずれかに連結され、それによって、最初に、入力データインターフェースを介して画素値を受信させ、続いて、アレイにわたって、１つのベクトルから隣接するベクトルに伝搬させる画素記憶ユニットと、各セルが、アレイの中心ベクトル内にない場合、入力を画素記憶ユニット、アレイの同一ライン上の中心ベクトル画素記憶ユニット、および中心ベクトルと各セルとの間に位置する任意の画素記憶ユニットに連結させるマルチプレクサユニットと、１つ以上のセル内演算ユニットとを含むアレイと、画素処理セルのアレイからの出力を処理し、出力画素値を生成するセル間演算ユニットと、入力データインターフェース、画素処理セルのアレイ、およびセル間演算ユニットの演算を調整するタイミング制御モジュールとを備えてもよい。各単一クロックユニットの間に、処理されるべき次の画素ブロックが、第２のエッジを越えて延在しないとき、タイミング制御モジュールは、次の画素ブロックの１つの新しいベクトルを１つ以上の記憶デバイスからフェッチされるようにさせる。各単一クロックユニットの間に、処理されるべき次の画素ブロックが、第２のエッジを越えて延在するとき、タイミング制御モジュールは、第２のエッジを越えて位置する次の画素ブロック内の新しいベクトルを所定の画素値で充填されるようにさせる一方、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルを１つ以上の記憶デバイスからフェッチされるようにさせ、それによって、メモリフェッチおよび画素出力の一定速度を維持する。
本明細書は、例えば、以下の項目も提供する。
（項目１）
複数の画素を有する１つ以上の画像を処理するための方法であって、該方法は、
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理することと、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合には、
記憶デバイスから、該次の画素ブロックの１つの新しいベクトルをフェッチすることと、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合には、
該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルを所定の画素値によって充填することと、
該記憶デバイスから、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルをフェッチすることと、
該各単一クロックユニットにおいて、１つの出力画素値を出力し、それによって、メモリフェッチおよび画素出力の一定速度を維持することと
を含む、方法。
（項目２）
前記連続する画素ブロックの処理は、ｎ×ｍのカーネルマトリクスを該連続する画素ブロックに適用することを含み、ｎおよびｍは、奇数の整数である、項目１に記載の方法。
（項目３）
前記連続する画素ブロックの処理は、２次元畳み込み演算を含む、項目１に記載の方法。
（項目４）
前記連続する画素ブロックの処理は、２次元相関演算を含む、項目１に記載の方法。
（項目５）
前記所定の画素値は、ゼロである、項目１に記載の方法。
（項目６）
前記所定の画素値は、前記第２のエッジの対応する部分の画素値である、項目１に記載の方法。
（項目７）
複数の画素を有する１つ以上の画像を処理するための装置であって、該装置は、
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための手段と、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合には、
記憶デバイスから、該次の画素ブロックの１つの新しいベクトルをフェッチする手段と、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合には、
該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルを所定の画素値によって充填する手段と、
該記憶デバイスから、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルをフェッチする手段と、
該各単一クロックユニットにおいて、１つの出力画素値を出力し、それによって、メモリフェッチおよび画素出力の一定速度を維持する手段と
を備える、装置。
（項目８）
前記連続する画素ブロックを処理するための手段は、ｎ×ｍのカーネルマトリクスを前記連続する画素ブロックに適用する手段をさらに備え、ｎおよびｍは、奇数の整数である、項目７に記載の装置。
（項目９）
前記連続する画素ブロックを処理するための手段は、２次元畳み込み演算のための手段をさらに備える、項目７に記載の装置。
（項目１０）
前記連続する画素ブロックを処理するための手段は、２次元相関演算のための手段をさらに備える、項目７に記載の装置。
（項目１１）
前記所定の画素値は、ゼロである、項目７に記載の装置。
（項目１２）
前記所定の画素値は、前記第２のエッジの対応する部分の画素値である、項目７に記載の装置。
（項目１３）
画像の第１のエッジと第２のエッジとの間の連続する画素ブロックをラスタモードで処理するための装置であって、該装置は、
該画像の画素値の少なくとも１つの入力ストリームを受信するために１つ以上の記憶デバイスと連結される入力データインターフェースと、
画素処理セルのアレイであって、各セルは、
２次元画像処理の間に、該画像に適用されるべきカーネルの係数値を記憶する係数記憶ユニットと、
該画像の画素値を記憶する画素記憶ユニットであって、該画素記憶ユニットは、隣接するセルの別の画素記憶ユニットまたは該入力データインターフェースのいずれかに連結され、それによって、該画素値が、最初に該入力データインターフェースを介して受信され、続いて該アレイにわたって１つのベクトルから隣接するベクトルまで伝搬されることを可能にする、画素記憶ユニットと、
該各セルが該アレイの中心ベクトルの中にない場合に、入力を該画素記憶ユニット、該アレイの同一ライン上の中心ベクトル画素記憶ユニット、および該中心ベクトルと該各セルとの間に位置する任意の画素記憶ユニットに連結されるマルチプレクサユニットと、
１つ以上のセル内演算ユニットと
を含む、アレイと、
該画素処理セルのアレイからの出力を処理して、出力画素値を生成するセル間演算ユニットと、
該入力データインターフェース、該画素処理セルのアレイ、および該セル間演算ユニットの演算を調整するタイミング制御モジュールであって、
各単一クロックユニットの間に、処理されるべき次の画素ブロックが該第２のエッジを越えて延在しない場合には、該タイミング制御モジュールは、該次の画素ブロックの１つの新しいベクトルが該１つ以上の記憶デバイスからフェッチされるようにさせ、
各単一クロックユニットの間に、該処理されるべき次の画素ブロックが該第２のエッジを越えて延在する場合には、該タイミング制御モジュールは、該第２のエッジを越えて位置する該次の画素ブロックの中の新しいベクトルが所定の画素値によって充填されるようにさせる一方、画素の次のラインまたはフレーム上の第１の画素ブロックの１つの新しいベクトルが該１つ以上の記憶デバイスからフェッチされるようにさせ、それによって、メモリフェッチおよび画素出力の一定速度を維持する、モジュールと
を備える、装置。
【００１０】
次に、添付図面に示されるように、その例示的実施形態を参照して本発明について詳述する。本発明は、例示的実施形態を参照して後述されるが、本発明は、それらに限定されないことを理解されたい。本明細書の教示へのアクセスを有する当業者は、付加的な実装、修正、および実施形態、ならびに他の使用分野を認識するであろうが、それらは、本明細書に説明される本発明の範囲内であって、それに関して、本発明は、非常に有用であり得る。
【００１１】
他の目的、特徴、および利点は、好ましい実施形態ならびに添付図面から、当業者に想起されるであろう
【図面の簡単な説明】
【００１２】
【図１】図１は、画素のアレイを有する例示的な画像を示す。
【図２】図２は、従来の２−Ｄ画像処理アプローチにおいて遭遇する、一定画素速度の途絶を例示する。
【図３】図３は、本発明の実施形態による、３×３のカーネルによる２−Ｄ画像処理の例示的な方法を例示する。
【図４】図４は、本発明の実施形態による、５×３のカーネルによる２−Ｄ画像処理の例示的な方法を例示する。
【図５】図５は、本発明の実施形態による、例示的な２−Ｄ画像処理エンジンを示す。
【図６】図６は、本発明の実施形態による、画像処理のための例示的な２−Ｄ畳み込みエンジンを示す。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、画像処理を改良し、処理演算が、画素の新しいラインまたは新しいフレームに移行するときでも、付加的なクロックサイクルまたはメモリ帯域幅を伴うことなく、着信画素速度と発信画素速度との間の１対１関係を維持することができる。本発明に従って改良されたタイミング制御は、現在のライン上のエッジ画素ブロックの新しい列が、複製されるか、またはゼロに設定される一方、次のラインまたはフレームの第１の画素ブロック内の画素データの新しい列をプリフェッチすることによって、アイドルメモリ帯域幅を利用する。現在のライン上のエッジ画素ブロックが処理されるので、次のラインまたはフレームの第１の画素ブロック内のデータは、余剰クロックサイクルまたは余剰メモリ帯域幅を伴わずに、計算のための準備ができる。本発明のさらなる詳細、特徴、および利点は、添付図面を参照して理解され、以下に詳細に説明され得る。
【００１４】
図３を参照すると、本発明の実施形態による、３×３のカーネル３０２を有する２−Ｄ画像処理の例示的方法が例示される。図３は、カーネル３０２がラスタモードで走査される、デジタル画像３００の一部を示す。
【００１５】
本明細書において使用されるように、用語「ラスタモード」は、畳み込みまたは相関等の２−Ｄ画像処理演算の際に、画像にわたってカーネルを走査するライン別またはライン毎のパターンを指す。典型的には、カーネルは、１つの画像のエッジから反対のエッジまで、１度に１つの画素だけ前進させられ、それによって、連続する画素ブロックをカバーし、各新しいブロックは、その隣接するブロック内にはない画素の１つの新しい列のみ含む。しかしながら、ラスタモードは、必ずしも、画像の各単一ラインをカバーするように走査すること、または１つのラインからその次の隣接するラインへと一貫して移動することを要求しない。例えば、ラスタパターンは、画像の奇数ラインをカバーし、次いで、偶数ラインをカバーしてもよい。また、ラスタモードは、必ずしも、画像の各ライン上に具体的な走査方向を要求しない。さらに、当業者は、用語「列」および「ライン」が、一方が他方の文脈で使用されるとき、相対的な重要性を有することを理解するであろう。したがって、カーネルが列方向に走査され、画素データの新しいラインが、プリフェッチされる２−Ｄ画像処理実装もまた、本明細書に開示される本発明の範囲内である。
【００１６】
図３において、カーネル３０２は、ラスタモードにおいて１つのラインから別のラインへと、画像３００にわたって走査される。カーネル３０２が、ライン８上において、画像３００の右側エッジへと前進させられることに伴って、カーネル３０２によってカバーされる最後の完了画素ブロックは、画素Ｙ８の周りに集中され、そのライン上でフェッチされた新しいデータの最後の列は、画素Ｚ７−９に対応する。画素Ｚ７−９の値は、１つのクロックユニットの間に、記憶デバイス（例えば、メモリ、入力バッファ、または先入先出（ＦＩＦＯ）デバイス）からフェッチされてもよい。本明細書において使用されるように、用語「クロックユニット」は、パイプライン化された画像処理演算の間にタイミング基準を提供するか、あるいは論理ゲートまたは算術デバイスを同期させる１つのフルクロックサイクルまたはクロックサイクルの半分等、時間の単位を指す。
【００１７】
カーネルが、ライン８上の最後の画素（すなわち、画素Ｚ８）に前進させられることによって、処理されるべき次の画素ブロックであるブロック３０４は、画像３００の右側エッジを越えて延在する。そうでなければ記憶デバイスからフェッチされる必要があるような画素データの新しい列（列Ｚ＋１上かつ画素ブロック３０４内）は、代わりに、画像３００の右側エッジの対応する部分内の画像から複製された値を受信するであろう。すなわち、一実施形態では、新しい列（列Ｚ＋１）は、以前のクロックユニットにおいて既にフェッチされた最後の列（画素Ｚ７−９）の値のコピーであろう。別の実施形態において、画像プロセッサは、新しい列をゼロまたは他の数値で充填するように構成されてもよい。すなわち、一般に、「新しい」列（列Ｚ＋１）は、記憶デバイスからフェッチされる必要がない画素値で充填されることになる。列Ｚ＋１は、所定の値（例えば、複製された値またはゼロのいずれか）によって充填されるが、メモリ帯域幅は、記憶デバイスからフェッチされるべき新しいデータに対して利用可能である。故に、本発明の実施形態は、このアイドルメモリ帯域幅を利用して、画像の次のラインまたはフレーム上の画素データの第１の列をプリフェッチさせてもよい。図３に示される、この特定の実施例では、単一クロックユニットの間に、ライン８上の列Ｚ＋１は、列Ｚから複製された画素値で充填されるか、または単純にゼロで充填されるが、ライン９上の第１の列の画素値である画素Ａ８−１０が記憶デバイスからプリフェッチされてもよい。
【００１８】
次いで、次のクロックユニットにおいて、ライン９上の画素データの第２の列が、記憶デバイスからプリフェッチされてもよい。画像３００の左側エッジを越えて延在するライン９上の第１の画素ブロックの部分は、第１の列（以前のクロックユニットで既にフェッチされた画素Ａ８−１０）の画素値またはゼロのいずれかによって充填されてもよい。前述のタイミング配設の結果、画像プロセッサは、２−Ｄ画像処理演算が、画像３００のライン８からライン９まで移行するときでも、各単一クロックユニットの間に、画素データの唯一の新しい列をフェッチすることが可能である。したがって、他の計算ステップとパイプライン化された、一定の入力画素速度で行われるそのようなメモリフェッチは、クロックユニット当たり１つの出力画素値の一定出力速度を保証することができる。
【００１９】
図４は、本発明の実施形態に従う、５×３のカーネル４０２による２−Ｄ画像処理の例示的な方法を例示する。図４は、カーネル４０２がラスタモードで走査されるデジタル画像４００の一部を示す。
【００２０】
クロックユニットＴにおいて、カーネル４０２の中心が画素Ｘ８に前進した場合、処理されるべき次の画素ブロックであるブロック４０４は、画素Ｙ８上に中心が置かれ、画像４００の右側エッジを越えて延在するだろう。単一クロックユニットＴの間に、列Ｚ＋１は、ゼロまたは画素Ｚ７−９から複製された値で充填されるが、次のライン（ライン９）上の第１の列である画素Ａ８−１０が、記憶デバイスからプリフェッチされてもよい。
【００２１】
次のクロックユニットＴ＋１において、処理されるべき次の画素ブロック４０６は、画素Ｚ８に中心が置かれ、画像４００の右側エッジをさらに越えて延在するであろう。単一クロックユニットＴ＋１の間に、列Ｚ＋２は、ゼロまたは画素Ｚ７−９から複製された値で充填されるが、ライン９上の第２の列が、記憶デバイスからプリフェッチされてもよい。
【００２２】
次のクロックユニットＴ＋２において、処理されるべき次の画素ブロック４０８は、画素Ａ９上の中心に置かれるであろう。単一クロックユニットＴ＋２の間に、ライン９上の第３の列が、記憶デバイスからフェッチされてもよい。ライン９上の列Ａ−ｌおよびＡ−２は、ゼロまたは画素Ａ８−１０の値等、所定の画素値で充填されてもよい。
【００２３】
クロックユニットＴ＋２の結果において、ライン９上の第１の画素ブロック（４０８）のすべての要素は、カーネル４０２による計算に対して準備ができている。
【００２４】
本発明の実施形態は、ソフトウェア、ファームウェア、および／またはハードウェア内に実装されてもよい。最も好ましくは、本発明の実施形態は、デジタル画像処理システムまたはグラフィックス加速装置の一部として、２−Ｄの畳み込みまたは相関計算エンジン内に実装される。
【００２５】
図５は、本発明の実施形態による、例示的な２−Ｄ画像処理エンジン５００を示す。
【００２６】
２−Ｄ画像処理エンジン５００は、画素処理セルのアレイ（この実施形態において、５×３のアレイ）と、入力データインターフェース５０２と、セル間演算ユニット５０４と、タイミング制御モジュール５０６とを含む。
【００２７】
アレイ内の画素処理セルはそれぞれ、２−Ｄ画像処理（例えば、畳み込みまたは相関演算）の間、画素ブロックに適用されるカーネルの係数値を記憶するデータレジスタ（例えば、ＣＡ１およびＣＢ２）等の係数記憶ユニットを含む。各画素処理セルはまた、画素ブロックの画素値を記憶するデータレジスタ（例えば、ＤＡ１およびＤＢ２）等の対応する画素記憶ユニットを含む。各画素記憶ユニットは、同一ライン上の隣接する画素処理セルの画素記憶ユニットと連結される。画素処理セルが、入力側（ここでは、列Ｅ）上のエッジ列内にある場合、画素記憶ユニットはまた、データ入力インターフェース５０２に連結され、新しい画素データを受信する。その結果、画素値の新しい列が、データ入力インターフェース５０２を介して取得され、一時的に、入力側エッジ列における画素記憶ユニット内に記憶されてもよく、画素記憶ユニットの各列内に以前に記憶された画素値は、左側の次の列に「プッシュ」または複製されることができる。この配設は、画素値の列が、データ入力インターフェース５０２から左側に伝搬され、クロックユニット当たり１つの列だけホップするデータパスを形成する。各クロックユニットの終了によって、最左列（ここでは、列Ａ）の画素記憶ユニット内に以前に記憶された画素値は、上書きされ、したがって、廃棄される。
【００２８】
各画素処理セルはまた、それが中心列（ここでは、列Ｃ）にない場合、マルチプレクサユニット（「ＭＵＸ」）を含む。マルチプレクサユニットは、同一セル内の画素記憶ユニットに連結された１つの入力を有する。加えて、マルチプレクサユニットは、同一ライン上の中心列画素記憶ユニットならびに中心列と現在のセルとの間に位置する任意の画素記憶ユニットに連結された入力を有する。その結果、データパスは、アレイの左または右側エッジ上に位置しない各列（「非エッジ列」）に対して作成され、他の列に対して外向きにそのコンテンツを複製する。マルチプレクサユニットが、非中心列セル内に付加的遅延を導入する範囲において、当業者によって理解され得るように、遅延要素が、中心列セル内に含まれ、セル間の遅延を平衡化してもよい。
【００２９】
各画素処理セルはさらに、同一セル内の対応する係数記憶ユニットから入力を受信する１つ以上のセル内演算ユニット（例えば、乗算器等の算術または論理デバイス）を含む。セル内演算ユニットはまた、対応する画素記憶ユニットから直接（ここでは、中心列、列Ｃ）またはマルチプレクサユニットの出力から（非中心列におけるように）入力を受信する。セル内演算の結果は、セル間演算ユニット５０４（詳細図示せず）によってさらに処理され、出力画素値等の処理された出力を生成してもよい。
【００３０】
２−Ｄ画像処理エンジン５００の入力データインターフェース５０２は、画素処理セルの３つの行のための新しい画素値を提供する入力バッファおよび／または入力先入先出（ＩＦＩＦＯ）デバイス等の１つ以上の記憶デバイス（図示せず）とアレイとを連結する。より具体的には、新しい画素値は、残りの列に伝搬される前に、入力ライン５２１、５２２、および５２３を介して、入力側のエッジ列（ここでは、列Ｅ）内の画素記憶ユニットに入力される。２つのマルチプレクサ、ＭＵＸ１およびＭＵＸ３は、例えば、画像の上または下ラインを処理するとき、中心行（ここでは、行２）画素値が非中心行に複製されることを可能にするように提供される。典型的には、入力画像画素データはすべて、一時的に、入力バッファ内に記憶され、したがって、すべての３つの入力ライン５２１、５２２、および５２３が、入力バッファに連結される。本発明の一実施形態によると、入力ラインのうちの１つ（例えば、最終行入力をフィードする、ライン５２３）は、画素値のうちの１つの行のライブフィードを受信する、ＩＦＩＦＯに直接連結されてもよく、したがって、そうでなければ要求されるだろうバッファ容量およびメモリ帯域幅の３分の１を節約する。
【００３１】
タイミング制御モジュール５０６は、その係数値が係数記憶ユニット内に記憶されるカーネルに対して、画像の連続する画素ブロックを計算するパイプライン化されたプロセスを調整する。各クロックユニットにおいて、タイミング制御モジュール５０６は、新しい画素値のうちの１つの列を、データ入力インターフェース５０２を介して、画素記憶ユニットＤＥ１、ＤＥ２、およびＤＥ３（ここでは、列Ｅ内）にフェッチする。現在のライン上の画像のエッジ列の画素値が、次のクロックユニット（Ｔ＋１）において、エッジ列画素記憶ユニット（ここでは、列Ｅ）にフェッチされた後、タイミング制御モジュール５０６は、画像の次のライン（または、次のフレームの新しいライン）上の第１の列を、データ入力インターフェース５０２を介して、エッジ列（ここでは、列Ｅ）にプリフェッチしてもよい。ここで、このエッジ列の画素値は、左の隣接する列（ここでは、列Ｄ）内の画素記憶ユニットに複製される。次いで、次のクロックユニット（Ｔ＋１）では、エッジ列のそのような画素値は、セル内演算のために、エッジ列（ここでは、列Ｅ）内のマルチプレクサユニットによって、選択することができる。クロックユニット（Ｔ＋１）の間に、タイミング制御モジュール５０６は、画像の次のライン上の第２の列を、データ入力インターフェース５０２を介して、エッジ列（ここでは、列Ｅ）にプリフェッチしてもよい一方、次のライン上の第１の列の画素値を左の隣接する列（ここでは、列Ｄ）にプッシュし、現在のライン上のエッジ列の画素値を次の左の隣接する列（ここでは、列Ｃ）にプッシュする。次のクロックユニット（Ｔ＋２）では、エッジ列の画素値は、セル内演算のために、列Ｄおよび列Ｅ内のマルチプレクサユニットによって、再び、選択することができる。クロックユニット（Ｔ＋２）の間に、タイミング制御モジュール５０６は、画像の次のライン上の第３の列を、エッジ列（ここでは、列Ｅ）にプリフェッチさせてもよい一方、次のライン上の第１および第２の列の画素値を、２つの左の隣接する列（ここでは、それぞれ、列Ｃおよび列Ｄ）にプッシュする。次のクロックユニット（Ｔ＋３）は、２−Ｄ画像処理エンジン５００が、画像の次のライン上の第１の画素に関する計算を進める準備ができたことが分かる。
【００３２】
図５に示される、２−Ｄ画像処理エンジン５００のアーキテクチャは、任意のカーネルサイズに対応するように、両次元において、スケーラブルである。図６は、本発明の実施形態による、画像処理のための処理セルの５×５の画素アレイを伴う、例示的２−Ｄ畳み込みエンジン６００を示す。２−Ｄ畳み込み演算のために、各画素処理セル内のセル内演算ユニットは、乗算器であって、セル間演算ユニットは、すべての乗算器の出力の積を合計し、最後に、処理された出力を生成するように、カスケード接続された加算器を含む。２−Ｄ画像処理エンジン５００より多くの行によって、２−Ｄ畳み込みエンジン６００は、その入力データインターフェース６０２内に付加的マルチプレクサを含み、中心行画素値を非中心行にルーティングする。タイミング制御モジュール６０６は、パイプライン化されたプロセス内の種々の要素の演算を調整し、入力画素速度および出力画素速度は、前述のメモリフェッチおよびデータルーティング技法に従って、１対１関係を維持する。
【００３３】
図３−６に例示される実施例から、本発明の実施形態は、任意のｎ×ｍのカーネルマトリクス（ｎおよびｍは両方とも、典型的には、奇数の整数である）を連続する画素ブロックに適用する、２−Ｄ画像処理演算に実装することができることが理解され得る。いくつかの実施形態によると、本明細書に開示される方法および装置は、ｎ×ｍのカーネルマトリクス（ｎおよび／またはｍは、偶数整数である）に対応するように適合されてもよい。加えて、そのような２−Ｄ画像処理は、畳み込み演算に限定されず、２−Ｄ相関または他の演算にも適用することができる。
【００３４】
前述の説明は、多くの詳細および仕様を含むが、これらは、説明目的のためだけに含まれ、本発明の限定として解釈されるべきではないことを理解されたい。前述の実施形態の他の修正も、発明の精神および範囲から逸脱することなく、行うことができることは当業者には明白であろう。故に、そのような修正は、以下の請求項およびその法的均等物によって包含されることが意図されるように発明の範囲内と見なされる。
【図１】
0005587422.tif 000002
【図２】
0005587422.tif 000003
【図３】
0005587422.tif 000004
【図４】
0005587422.tif 000005
【図５】
0005587422.tif 000006
【図６】
0005587422.tif 000007