(57)【要約】【課題】多次元データたとえば画像データをフィルタリングするためのシステム。【解決手段】プロセッサは、第１データ構造の単一行に水平方向に整列された多次元データ値を結合することで、水平フィルタを実行するための命令を受取ることができる。第２データ構造は、複数の個別アドレス指定可能内部メモリユニットを含んでよい。ロードユニットは、水平方向に整列された値を転置された配列でロードでき、個別アドレス指定可能メモリユニットにおける第２データ構造に、単一列内に垂直方向に整列された値として記憶する。単一列内の転置された各値は、個別アドレス指定可能メモリユニットのそれぞれ互いに異なる一つに別個に記憶され得る。プロセッサは、別個のメモリユニットに独立にアクセスすることで、水平フィルタによって結合用に指定された転置された各値を、独立に操作および結合できる。【選択図】図３
2012009025.tif 000002
【特許請求の範囲】
【請求項１】
多次元の第１データ構造をフィルタリングするためのフィルタリング方法であって、前記フィルタリング方法は、
前記第１データ構造の単一行に、水平方向に整列された値を結合することで、水平フィルタを実行するための命令を受取ることと；
前記第１データ構造の単一行から、少なくとも結合されるべき値を転置された配列でロードして、内部メモリにおける多次元の第２データ構造の単一列として記憶することであって、前記単一列内の転置された各値は、前記内部メモリにおける複数の個別アドレス指定可能メモリユニットのそれぞれ互いに異なる一つに別個に記憶されることと；
転置された各値を記憶する別個の個別アドレス指定可能メモリユニットにアクセスすることで、前記水平フィルタによって結合用に指定された各値を独立に操作および結合することと
を含むことを特徴とする、フィルタリング方法。
【請求項２】
前記フィルタリング方法はさらに、
前記第１データ構造の単一列に垂直方向に整列された値を結合することで垂直方向にフィルタリングするための命令を、受取ることと；
前記第１データ構造の単一列から、結合されるべき値を同じ転置されない配列でロードして、前記内部メモリにデータ構造の単一列として記憶することと
を含む、請求項１記載のフィルタリング方法。
【請求項３】
前記フィルタリング方法はさらに、
前記第１データ構造の何らかの任意のパターンで配置された値を結合することでフィルタリングの命令を受取ることと；
前記第１データ構造から結合されるべき値をロードして、前記内部メモリにおけるデータ構造の単一列として記憶することと
を含む、請求項１記載のフィルタリング方法。
【請求項４】
前記フィルタは、値の線形結合を用いて指定された値を結合する、
請求項１記載のフィルタリング方法。
【請求項５】
前記フィルタは、値の非線形結合を用いて指定された値を結合する、
請求項１記載のフィルタリング方法。
【請求項６】
フラグ値またはレジスタ値は、フィルタが水平フィルタまたは垂直フィルタであるかを示す、
請求項１記載のフィルタリング方法。
【請求項７】
前記第１データ構造は、密結合メモリに初期配列で記憶され、
前記第２データ構造は、個別アドレス指定可能メモリユニットに転置された配列で記憶され、
前記密結合メモリと前記個別アドレス指定可能メモリユニットとは、同じプロセッサの内部に存在するか、またはプロセッサに直接アクセス可能である、
請求項１記載のフィルタリング方法。
【請求項８】
前記フィルタリング方法はさらに、前記第２データ構造から値を転置された配列で伝送して、前記個別アドレス指定可能メモリユニットの外部に存在する１個以上のメモリユニットに記憶することを含む、
請求項１記載のフィルタリング方法。
【請求項９】
前記値は、ピクセル値であり、
前記データ構造は、画像データまたは映像データを表し、
前記フィルタリング方法はさらに、フィルタリングされたピクセル値を有する画像を表示することを含む、
請求項１記載のフィルタリング方法。
【請求項１０】
多次元の第１データ構造をフィルタリングするためのプロセッサであって、前記プロセッサは、
前記プロセッサに直接アクセス可能な複数の個別アドレス指定可能メモリユニットを有する内部メモリと；
前記第１データ構造の単一行に水平方向に整列された値を検索して、前記水平方向に整列された値を転置された配列で前記個別アドレス指定可能メモリユニットにおける多次元の第２データ構造の単一列に垂直方向に整列して記憶するためのロードユニットと
を含み、
単一列内の転置された各値は、前記内部メモリにおける複数の前記個別アドレス指定可能メモリユニットのそれぞれ互いに異なる一つに別個に記憶され、前記プロセッサは、転置された各値を記憶する別個の前記個別アドレス指定可能メモリユニットにアクセスすることで、水平フィルタによって結合用に指定された各値を独立に操作および結合する
ことを特徴とする、プロセッサ。
【請求項１１】
前記プロセッサが、前記第１データ構造の単一列に垂直方向に整列された値を結合することで、画像を垂直方向にフィルタリングするための命令を受取ると、
前記ロードユニットは、前記第１データ構造の単一列から結合されるべき値を同じ転置されない配列でロードして、前記内部メモリにおけるデータ構造の単一列として記憶する、
請求項１０記載のプロセッサ。
【請求項１２】
前記プロセッサが、前記第１データ構造の何らかの任意のパターンで配置された値を結合することで、フィルタリングの命令を受取ると、
前記ロードユニットは、前記第１データ構造から結合されるべき値をロードして、前記内部メモリにデータ構造の単一列として記憶する、
請求項１０記載のプロセッサ。
【請求項１３】
前記ロードユニットは、前記第２データ構造から値を転置された配列で伝送して、前記個別アドレス指定可能メモリユニットの外部に存在する１個以上のメモリユニットに記憶する、
請求項１０記載のプロセッサ。
【請求項１４】
前記プロセッサは、前記第２データ構造から値を転置された配列でロードして、前記個別アドレス指定可能メモリユニットの外部に存在する１個以上のメモリユニットに記憶する、
請求項１０記載のプロセッサ。
【請求項１５】
多次元データ構造をフィルタリングするためのフィルタリングシステムであって、前記フィルタリングシステムは、
多次元データの値を記憶するための第１メモリユニットにおける多次元の第１データ構造と；
前記第１データ構造の単一行に水平方向に整列された値を結合することで、水平フィルタを実行するための命令を受取るプロセッサと；
プロセッサに直接アクセスできる複数の個別アドレス指定可能メモリユニットを有する内部メモリユニットである内部メモリにおける、多次元の第２データ構造と；
前記第１データ構造の単一行から少なくとも結合されるべき値を転置された配列でロードして、前記内部メモリの複数の前記個別アドレス指定可能メモリユニットに、前記第２データ構造の単一列として記憶するためのロードユニットと
を含み、
前記単一列の転置された各値が、前記内部メモリにおける複数の前記個別アドレス指定可能メモリユニットの互いに異なる一つに別個に記憶され、さらに前記プロセッサは、転置された各値を記憶する別個の個別アドレス指定可能メモリユニットにアクセスすることで、水平フィルタによって結合用に指定された各値を独立に操作および結合することを特徴とする、フィルタリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像および画像アプリケーションに関する。より具体的には本発明は、たとえば映像および画像アプリケーションにおいてデータをフィルタリングするための方法に関する。
【背景技術】
【０００２】
画像データを処理するために、線形および非線形の幅広いフィルタが用いられる。フィルタは、互いに隣合うピクセルの線形または非線形結合を補間または外挿することで画像のエッジをシャープにし、または画像のシャープなエッジを平滑化することで画質を改善できる。フィルタは、方向性を有してよく、たとえば垂直方向、水平方向、または斜め方向に平滑化または外挿できる。方向性フィルタは、フィルタの特定の方向に整列された互いに隣合うピクセルの値を結合してよい。たとえば垂直フィルタは、１列で垂直方向に整列された互いに隣合うピクセルの値を結合でき、水平フィルタは、１行で水平方向に整列された互いに隣合うピクセルの値を結合できる。
【０００３】
動き補償フィルタなどのフィルタは、動きに起因する影響を低減でき、他のフィルタは、画像データの圧縮率または符号化もしくは復号化の精度を改善できる。一例において、画像データを復号化するためにブロック符号化技術が用いられる場合にはマクロブロック間のエッジを平滑にするために、復号化された映像のブロックにデブロッキングフィルタが使用されてよい。別の例において、すべてのピクセル遷移を画像全体で均一に平滑化するために、各ピクセル境界にランニングフィルタが使用され得る。
【０００４】
発明と見なされる主題は、明細書の結論部分において具体的に指摘され、明確に請求されている。しかしながら本発明は、作動の組織と方法に関して、対象、特徴および利点と併せ、添付の図面を参照しながら以下の詳細な説明を読むことによって最も良く理解されよう。本発明の特定の実施態様を以下の図面に基づいて説明する。
【０００５】
図解を単純で分かりやすくするために、図中に示された要素は、必ずしも縮尺通りに描かれていないことは理解されよう。たとえば分かりやすくするために幾つかの要素の寸法は、他の要素に対して誇張されることがある。さらに、適切と考えられる場合には、対応する要素または類似の要素を示すために図中で参照符号が繰返されることがある。
【０００６】
以下の記述において、本発明の種々の側面を記述する。説明の目的のために、本発明の完全な理解を提供すべく、特定の構成および詳細が記される。しかしながら当業者にとって、本発明は、本明細書中に記された特定の詳細なしに実施できることは明白であろう。さらに、本発明を曖昧にしないために、良く知られている特徴は省略するか、単純化することがある。
【０００７】
特に別途指摘しない限り、以下の議論から明らかなように、明細書全体を通して「処理」、「コンピューティング」、「計算」、「判定」などの用語を用いた議論は、コンピューティングシステムのレジスタおよび／またはメモリにおいて物理的な量、たとえば電子的な量で表されるデータを、コンピューティングシステムのメモリ、レジスタまたは他の類似の情報記憶ユニット、伝送装置または表示装置における物理的な量として類似に表される他のデータに操作および／または変換するコンピュータ、コンピューティングシステムまたは類似の電子計算装置の動作および／またはプロセスに関係している。
【０００８】
コンピュータメモリに記憶されたデータ要素の多次元アレイは、ピクセルの多次元グリッドまたはアレイを含むデジタル画像を表すことができ、各データ要素は、ピクセル値に一意的に対応する。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プロセッサは、内部または外部コンピュータメモリからデータ（たとえばピクセル）値を検索して、プロセッサの内部に存在するか、またはプロセッサによって直接アクセス可能で個別アドレス指定可能メモリユニット、たとえばベクトルレジスタに記憶させることができる。典型的には各ベクトルレジスタは、データアレイの単一行または行セグメントからの一連の値を含むベクトルを記憶する。プロセッサは典型的にはそれぞれ個別アドレス指定可能メモリユニットに記憶された完全なデータセットを一緒に依存的に操作する。しかし、フィルタを使用するためには、プロセッサは、互いに隣合うデータ値を線形結合もしくは非線形結合において、または加重和で結合しなければならず、各値は、互いに異なる重みを持ってよい。互いに異なる重みを持って線形結合または非線形結合において結合された値は、独立に操作され得るので、フィルタは、各計算サイクルにおいて別個のレジスタに記憶された値に対してのみ適用され得る。
【００１０】
垂直フィルタは、列内の値を結合し、これらの典型的には別個のレジスタまたはメモリユニットに記憶されるので、プロセッサは、１回のサイクルで垂直方向の値を独立に操作および結合できる。しかしながら、水平フィルタは、典型的には単一行内の値を結合し、これらの値は、同じレジスタまたはメモリユニットに記憶され、それゆえ１回のサイクルで独立に操作してデータを寸法水平方向にフィルタリングすることはできない。
【００１１】
従来の画像システムにおいて、この問題を解決して水平フィルタを実行するために、幾つかのプロセッサは、水平ピクセル値の行セグメントをさらに個別レジスタに細分して、各レジスタが個々のピクセルに対する１個の値を記憶して独立に操作されるようにする。この技術は、非常に多数のメモリとアドレス資源を使用し、追加の計算サイクルを加える。他の従来のプロセッサは、線形結合された単一データ値に対して意図された各動作を、同じレジスタまたはメモリユニットに記憶された同じ行からの多数のデータ値の全部で反復的に実行することがある。この技術は、動作が意図されていないデータ値で不必要な動作を実行し、したがってレジスタまたは個別アドレス指定可能メモリユニット内の各データ値に対して意図された動作を実行するために、別個の計算サイクルを要求する。
【課題を解決するための手段】
【００１２】
本発明の実施態様は、従来の画像システムの難点を伴わずに水平フィルタに対するデータ値を独立に操作するために、１回の計算サイクルで画像の行セグメントから検索された各データ値を独立にロードまたは記憶するシステム、方法およびプロセッサを対象とする。
【００１３】
本発明の実施態様に従い、水平フィルタを実行するプロセッサは、データブロック内の各行のデータ値を検索し、内部メモリに転置された配列で（たとえば行から列に回転して）ロードして記憶する。したがって、従来は、内部メモリ内の単一の個別アドレス指定可能メモリユニットに記憶されて、依存的であって自動的に結合され得ない水平方向に互いに隣合うピクセルまたはその他のデータに対する値が、内部メモリから列として配列されて検索される。それぞれ個別アドレス指定可能メモリユニットは、多次元アレイの単一行に水平方向に配列された要素を記憶し、列内の各要素は、互いに異なる行にあり、再配列された列の各要素は、個別アドレス指定可能メモリユニットのそれぞれ互いに異なる一つに自動的に分離され、そこで独立に操作されてよい。水平フィルタに対するデータ値は、転置された配列で検索し、かつ垂直フィルタに対するデータ値は、転置されない配列で（
これらは既に理想的に配列されている）検索することで、本発明の実施態様に従って動作するプロセッサは、同じ線形結合で結合されるべき互いに隣合うデータ値を、内部プロセッサメモリにおける互いに異なる個別アドレス指定可能メモリユニットに自動的に分離する。したがってプロセッサは、垂直フィルタまたは水平フィルタで結合されたすべての互いに隣合うデータ値を、１回の計算サイクルでそれぞれのレジスタから並行にアクセスして独立に操作できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施態様に従うシステムの概略的な図解。
【図２】本発明の実施態様の理解に有用な映像データおよび画像データを記憶するためのデータアレイの概略的な図解。
【図３】本発明の実施態様に従ってフィルタリングされる図２Ｂのデータアレイのデータ構造の概略的な図解。
【図４】本発明の実施態様に従う方法のフローチャート。
【発明を実施するための形態】
【００１５】
図１は、本発明の実施態様に従う例示的な装置の概略的な図解を参照する。
装置１００は、コンピュータ装置、映像、または画像取込装置または再生装置、セル装置、またはその他の何らかのデジタル装置、たとえば携帯電話、個人用デジタル補助装置（ＰＤＡ）、ビデオゲームコンソールなどを含んでよい。装置１００は、映像データまたは画像データを記録、保存、記憶、処理、編集、表示、投影、受信、送信などして使用または操作するための一連の命令を実行できる装置を含むことができる。装置１００は、入力装置１０１を有することができる。装置１００が記録能力を有するときは、入力装置１０１は、撮像装置、たとえばイメージャ、１個以上のレンズ、プリズムまたはミラーなどを含むカムコーダを備えて、物理的対象の像を、対象から出る光波の反射を介して取込むことができ、および／またはオーディオレコーダ、マイクロホンなどを含む録音装置を備えて、これに投射される音波を記録することができる。
【００１６】
装置１００が画像処理能力を有するときは、入力装置１０１は、ユーザが映像または画像処理操作を制御、修正または選択するために、ポインティングデバイス、クリックホイールもしくはマウス、キー、タッチスクリーン、音声認識を用いたレコーダ／マイクロホン、その他の入力コンポーネントを有してよい。装置１００は、プロセッサ１によって実行される命令のシーケンスに従って映像データまたは画像データをユーザインタフェースに表示するための出力装置１０２（たとえばモニター、プロジェクタ、スクリーン、プリンタまたはディスプレイ）を有してよい。
【００１７】
例示的な装置１００は、プロセッサ１を含むことができる。プロセッサ１は、中央処理装置（ＣＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロプロセッサ、コントローラ、チップ、マイクロチップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）またはその他の何らかの集積回路（ＩＣ）、またはその他の何らかの適切な多目的もしくは特定プロセッサまたはコントローラを有してよい。
【００１８】
装置１００は、外部メモリユニット２とメモリコントローラ３を含んでよい。メモリコントローラ３は、たとえば１個以上のデータバス８を介してプロセッサ１、外部メモリユニット２および出力装置１０２との間のデータ伝送を制御できる。装置１００は、たとえば１個以上のデータバス９を介して出力装置１０２に表示されるデータ伝送を制御するためのディスプレイコントローラ５を含んでよい。
【００１９】
装置１００は、記憶ユニット（ストレージユニット）４を備えることができる。記憶ユ
ニット４は、映像データまたは画像データを圧縮して記憶でき、外部メモリユニット２は、映像データまたは画像データを圧縮せずに記憶され得る。しかしながら、圧縮されたデータまたは圧縮されないデータは、いずれのメモリユニットでも記憶されることができ、またデータを１個以上のメモリに記憶するための別の配置構成が使用されてもよい。各圧縮されないデータ要素は、画像または映像フレーム内の１ピクセルに一意的に関連付けられた値を持つことができ、各圧縮されたデータ要素は、１フレーム内のピクセルの値、またはビデオストリームもしくは動画における連続フレームの間のピクセルの値の変動または変化を表すことができる。別途指摘のない限り、本明細書中で使用されるデータ要素は一般に、たとえば単一の画像フレームにおける１ピクセル値またはピクセル成分値（たとえばＹＵＶ値またはＲＧＢ値）に関係する圧縮されないデータ要素を指し、たとえば連続画像フレームにおけるピクセルの値の間の変化に関係する圧縮されたデータ要素を指すのではない。ピクセルアレイに対する圧縮されないデータは、対応する１個の多次元データアレイ（たとえば図２のうちの２Ａ部分（以下、図２Ａ）と２Ｂ部分（以下、図２Ｂ）、および図３に示す）において表されてよく、圧縮されたデータは、データストリームまたは一次元（１Ｄ）データアレイ（図示せず）として表されてよい。
【００２０】
内部メモリユニット１４は、直接アクセス可能か、またはプロセッサ１の内部の（物理的に取付けた、もしくは内部に格納された）メモリユニットであることができる。内部メモリユニット１４は、短期的メモリユニットであってよく、外部メモリユニット２は、長期的または短期的メモリユニットであってよく、記憶ユニット４は、長期的メモリユニットであってよい。しかしながらこれらのいずれのメモリも長期的メモリユニットまたは短期的メモリユニットであることができる。記憶ユニット４は、１個以上の外部駆動装置、たとえばディスクドライブもしくはテープドライブ、または外部装置、たとえばビデオレコーダ、オーディオレコーダおよび／または画像レコーダ内のメモリを含んでよい。内部メモリユニット１４、外部メモリユニット２および記憶ユニット４は、たとえばランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、キャッシュメモリ、揮発性メモリ、非揮発性メモリまたはその他の適切なメモリユニットもしくは記憶ユニットを含むことができる。内部メモリユニット１４、外部メモリユニット２および記憶ユニット４は、各別のメモリユニット（たとえば「オフチップ」）または一体化されたメモリユニット（たとえば「オンチップ」）として実装できる。多層メモリまたはメモリ階層が存在する実施態様において、記憶ユニット４と外部メモリユニット２は、オフチップであってよく、内部メモリユニット１４は、オンチップであってよい。たとえば内部メモリユニット１４は、密結合メモリ（ＴＣＭ）、バッファまたはキャッシュ、たとえばＬ１キャッシュもしくはＬ２キャッシュを含んでよい。Ｌ１キャッシュは、Ｌ２キャッシュよりも比較的多くプロセッサ１に一体化され、プロセッサのクロックレートで動作できるのに対し、Ｌ２キャッシュは、Ｌ１キャッシュよりも比較的少なくプロセッサ１に一体化され、プロセッサのクロックレートとは異なる速度で動作できる。一実施態様において、プロセッサ１は、メモリユニット、たとえば外部メモリユニット２、内部メモリユニット１４および／または記憶ユニット４との間でデータの読取り、書込み、および／または伝送を行うためにダイレクトメモリアクセス（ＤＭＡ）ユニットを使用してよい。その他の、または追加のメモリアーキテクチャーも使用できる。
【００２１】
プロセッサ１は、ロードユニット１２、マップユニット６および実行ユニット１１を含んでよい。プロセッサ１は、外部メモリユニット２、内部メモリユニット１４および／または記憶ユニット４からのデータを要求、検索および処理でき、一般にデータで実行された操作のパイプラインフローを制御できる。
【００２２】
プロセッサ１は、デジタル映像または画像の１個以上のピクセルをフィルタリングする命令を、たとえばプログラムメモリ（たとえば外部メモリユニット２および／または記憶ユニット４）から受取る。この命令は、フィルタリングされるべきピクセルまたはそのア
ドレスのセット、ピクセルのセットをフィルタリングするために使用される互いに隣合うピクセルの相対的位置、フィルタの加重和の重みまたは式、および／またはフィルタが水平フィルタ、垂直フィルタ、互いに異なる方向を有するフィルタもしくは非方向性フィルタを示してよい。一実施態様において、フラグ値または他のレジスタ値は、フィルタが垂直フィルタ（フラグ値＝＝０）であるか水平フィルタ（フラグ値＝＝１）であるか示すことができる。プロセッサ１は、画像内の各々の順次的なピクセル、行、列、ブロックまたはその他のピクセルのセットで、たとえば全部の画像がフィルタリングされるまで、フィルタを反復的に実行してよい。
【００２３】
プロセッサ１は、データ要素を処理するために、複数の個別アドレス指定可能メモリユニット１６を含んでよい。個別アドレス指定可能メモリユニット１６（たとえばベクトルレジスタ）は、プロセッサ１の内部にあり、内部プロセッサ１４の内部に組み込まれているか、または内部プロセッサ１４の外部に隔離されてよい。各計算サイクルにおいてロード／記憶ユニット１２は、たとえば内部メモリユニット１４（または外部メモリユニット２）におけるＴＣＭ（密結合メモリ）内のデータ構造の単一行から、順次データ要素のセットまたは「バースト」を検索し、または取り出すことができ、このデータを内部メモリユニット１４の個別アドレス指定可能メモリユニット１６にロードして記憶できる。代替として、単一行からデータ要素を検索する代わりに、ロード／記憶ユニット１２は、各ロード／記憶動作でデータ構造の単一列から順次データ要素を検索してよい。さらに別の実施態様では、各サイクルにおいてロード／記憶ユニット１２は、多次元データブロック（たとえば図２Ａの多次元データアレイ２００）を検索できるが、これはたとえば２０１０年６月１０日に提出され本発明と同じ譲受人に譲渡された同時係属の米国特許出願第１２／７９７７２７号明細書（特願２０１１−１２９２２８号）で開示されている。
【００２４】
従来のベクトルレジスタは、典型的には多次元データ構造の単一行から検索された複数の順次データ値を記憶する。従来のプロセッサは、典型的には同じベクトルレジスタに記憶された各データ値を、同じベクトルの互いに異なる座標のように一緒に処理する。データ構造の列からのデータ値を結合する垂直フィルタを実行するために、従来のプロセッサは、データ構造の互いに異なる行から検索された各データ値を、互いに異なるレジスタに別個に記憶し、ここでデータ値は、同時に独立に操作され得る。しかしながら従来のプロセッサは、典型的には水平フィルタにおいて結合されるべきデータ値をデータ構造の同じ行から検索し、それゆえデータ値を同じレジスタに記憶し、ここではデータ値は、独立に操作され得ない。したがって、水平フィルタリングのために新しい解決が必要とされる。
【００２５】
発明の実施態様に従い、プロセッサ１は、水平フィルタを実行し、ロード／記憶ユニット１２は、データブロック内の各行のデータ値を、内部メモリユニット１４のレジスタまたは個別アドレス指定可能メモリユニット１６に転置された配列で（たとえば行から列に回転して）記憶する。したがって画像については、画像の１行水平方向に整列されたピクセル値は、個別アドレス指定可能メモリユニット１６における１列に垂直方向に整列される。転置されて垂直方向に整列された各ピクセル値は、互いに異なる行にあり、それゆえ互いに異なる個別アドレス指定可能メモリユニット１６に記憶され得る。プロセッサ１は、各々互いに異なるメモリユニット１６を独立に操作でき、したがって線形結合における各データ値も同様に１回の計算サイクルで独立に検索および操作され得る。したがってプロセッサ１は、水平フィルタに対する値を、転置された配列で（単一行セグメントに結合されるべき値を垂直方向に整列する）検索し、一方で垂直フィルタに対する値を、転置されない配列で（結合されるべき値は既に垂直方向に整列されている）検索してよく、データ値を自動的に異なるメモリユニット１６に分離して、多次元データに垂直フィルタと水平フィルタの双方を適用するために結合された値を同時に独立に操作できる。
【００２６】
以下に挙げる例で、本発明の実施態様をより詳細に説明する。この例は、画像の（４ｘ
４）ピクセル小領域を表す（４ｘ４）サブアレイのフィルタリングについて説明しており、各サブアレイは、たとえば次のような（１６）ピクセル値ｐｉｊを含んでいる。（サイズまたは寸法が、これとは異なる他のサブアレイも等しく使用できる）。
【００２７】
【表１】
2012009025.tif 000003
【００２８】
垂直フィルタを実行するプロセッサ１は、画像の列セグメントからの垂直方向に互いに隣合うピクセルの値を結合して、各々フィルタリングされたピクセル値を生成できる。たとえば上記のデータブロックの第ｊ列からの互いに隣合う垂直ピクセルの線形結合は、（ａ）＊（ｐ１ｊ）＋（ｂ）＊（ｐ２ｊ）＋（ｃ）＊（ｐ３ｊ）＋（ｄ）＊（ｐ４ｊ）であってよく、ここでａ、ｂ、ｃおよびｄは、有理数値または整数値である。水平フィルタを実行するプロセッサ１は、画像の行セグメントからの水平方向に互いに隣合うピクセルの値を結合して、各々フィルタリングされたピクセル値を生成できる。たとえば上記のデータブロックの第ｉ行から水平方向に互いに隣合うピクセル値の線形結合は、（ｅ）＊（ｐｉ１）＋（ｆ）＊（ｐｉ２）＋（ｇ）＊（ｐｉ３）＋（ｈ）＊（ｐｉ４）であってよく、ここでｅ、ｆ、ｇおよびｈは、有理数値または整数値である。互いに隣合うピクセル値を垂直フィルタまたは水平フィルタで結合するために、プロセッサ１は、結合された各ピクセル値ｐｉｊに独立に加重和における互いに異なる重みを乗じることができる。
【００２９】
プロセッサ１は、データブロックの要素を行毎に検索してそれぞれ（４）ベクトルレジスタ（たとえば個別アドレス指定可能メモリユニット１６）のセットに記憶できる。たとえば
レジスタｖ１は、ピクセル値ｐ１１、ｐ１２、ｐ１３、ｐ１４を記憶できる。
【００３０】
レジスタｖ２は、ピクセル値ｐ２１、ｐ２２、ｐ２３、ｐ２４を記憶できる。
レジスタｖ３は、ピクセル値ｐ３１、ｐ３２、ｐ３３、ｐ３４を記憶できる。
レジスタｖ４は、ピクセル値ｐ４１、ｐ４２、ｐ４３、ｐ４４を記憶できる。
【００３１】
ベクトル（またはアレイ）プロセッサ１は、典型的には同じ計算をすべての要素、たとえば各ベクトルレジスタｖｉに記憶されているピクセル値ｐｉ１、ｐｉ２、ｐｉ３およびｐｉ４で一緒に実行する。各レジスタは、単一行からのデータ要素を記憶し、垂直フィルタは、単一列からのピクセル値を結合するので、プロセッサ１は、結合された各ピクセル値をそれぞれ互いに異なるレジスタｖ１、ｖ２、ｖ３、ｖ４に分離できる。このようにしてプロセッサ１は、垂直方向に互いに隣合うピクセル値ｐ１ｊ、ｐ２ｊ、ｐ３ｊおよびｐ４ｊを独立に乗算して結合できる。
【００３２】
上述した垂直フィルタの線形結合、たとえば（ａ）＊（ｐ１１）＋（ｂ）＊（ｐ２１）＋（ｃ）＊（ｐ３１）＋（ｄ）＊（ｐ４１）を計算するために、プロセッサ１は、各レジスタのピクセル値と相応の重みまたは乗数の積を計算する。たとえば線形結合における項（ａ）＊（ｐ１ｊ）を計算するために、プロセッサ１は、ピクセル値ｐ１ｊを含むレジスタｖ１内の値に乗数ａを乗算して、ベクトル（（ａ）＊（ｐ１１）、（ａ）＊（ｐ１２）
、（ａ）＊（ｐ１３）、（ａ）＊（ｐ１４）を生成できる。同様に、線形結合における次の項を計算するために、プロセッサ１は、レジスタｖ２内の値に乗数ｂを掛けるというように続いてよい。プロセッサ１は、（４）積から関連する項（ａ）＊（ｐ１１）、（ｂ）＊（ｐ２１）、（ｃ）＊（ｐ３１）および（ｄ）＊（ｐ４１）を結合して垂直フィルタに対する線形結合（ａ）＊（ｐ１１）＋（ｂ）＊（ｐ２１）＋（ｃ）＊（ｐ３１）＋（ｄ）＊（ｐ４１）を生成できる。各ピクセル値は、互いに異なるレジスタ内に存在するので、プロセッサ１は、同じ（または互いに異なる）計算サイクルで各ピクセル値に互いに異なる乗数を掛けることができる。各レジスタ内で単一の項のみ各線形結合に用いられ、ベクトルプロセッサ１は、ベクトルレジスタのすべての要素で同じ計算を実行するので、各ベクトル計算の副産物として追加の項が生成されよう。線形結合においてピクセルの現在の（第１）列をフィルタリングするために使用されない計算された項、たとえば追加の項（ａ）＊（ｐ１２）、（ａ）＊（ｐ１３）および（ａ）＊（ｐ１４）は、同じ計算サイクルで次のそれぞれ空間的に連続するピクセルの（第２、第３および第４）列をフィルタリングするために使用され得る。
【００３３】
水平フィルタに対して、水平方向に整列されたピクセルの値ｐｉ１、ｐｉ２、ｐｉ３およびｐｉ４は、従来単一レジスタｖｉに記憶され、それゆえプロセッサ１は、これらのピクセルを同じ計算サイクルで個別に操作または結合できないであろう。この問題を解決するために、水平フィルタを実行するとき、本発明の実施態様に従って動作するプロセッサ１は、各ピクセル値ｐｉｊを転置された配列ｐｊｉで検索してよい。したがってプロセッサ１は、レジスタ内の画像の（第ｉ）行からのピクセルを表すピクセル値ｐｉ１、ｐｉ２、ｐｉ３およびｐｉ４の各セットを（第ｉ）列として記憶してよい。たとえば
レジスタｖ１は、ピクセル値ｐ１１、ｐ２１、ｐ３１、ｐ４１を記憶できる。
【００３４】
レジスタｖ２は、ピクセル値ｐ１２、ｐ２２、ｐ３２、ｐ４２を記憶できる。
レジスタｖ３は、ピクセル値ｐ１３、ｐ２３、ｐ３３、ｐ４３を記憶できる。
レジスタｖ４は、ピクセル値ｐ１４、ｐ２４、ｐ３４、ｐ４４を記憶できる。
【００３５】
したがってプロセッサ１は、画像内で水平方向に整列されたピクセルの値を列として再配列でき、それによってこれらの値をそれぞれのレジスタｖ１、ｖ２、ｖ３、ｖ４に分離できる。このような転置は、垂直フィルタに対するピクセル値を検索するためには必要とされず、これらのピクセル値は、既に垂直方向に配列されていてよい。
【００３６】
プロセッサ１は、水平フィルタに対しては内部メモリ１４の行から、垂直フィルタに対しては、内部メモリ１４の列から互いに隣合うピクセル値を、互いに異なるレジスタ（たとえば個別アドレス指定可能メモリユニット１６）間で分離された列として検索および記憶できる。このようにしてプロセッサ１は、１回の計算サイクルで、かつ同じ効率をもって各ピクセル値を検索し、水平フィルタまたは垂直フィルタによって結合され得るように別個のレジスタに独立に記憶できる。フィルタによって結合されるべき各ピクセル値が互いに異なるレジスタに記憶されていることで、プロセッサ１は、水平フィルタおよび垂直フィルタの双方に対して線形（または非線形）結合を計算できる。
【００３７】
一般に、プロセッサ１は、何らかの方向フィルタに対して列として再配列されて結合されるべきピクセル値を検索できる（たとえば斜め、ラジアンなど）。このようにして、プロセッサ１は、結合されるべき各ピクセル値を、同じ計算サイクルで独立の操作のために別個のレジスタアドレスに個別に記憶できる。さらに、何らかの非方向性フィルタ（たとえば２次元ブロックに及ぶピクセルなど優勢な方向性を持たないフィルタ）に対して、プロセッサ１は、ピクセル値を独立に、たとえば並行または同時に操作するために、フィルタによって結合されるべき各ピクセル値を同じ計算サイクルで別個のレジスタに記憶できる。
【００３８】
従来のプロセッサは、典型的には画像の同じ行から検索されたピクセル値を別個のレジスタに独立に記憶するために追加の（多数の）ステップを用いて、これらの値を水平フィルタに対して独立に操作し、他方、垂直フィルタに対してはピクセル値を１回の計算サイクルで検索して独立に記憶する。これとは対照的に、本発明の実施態様に従って動作するプロセッサ１は、いずれのフィルタも同じ効率で適用するために、水平フィルタまたは垂直フィルタによって結合されるべき各ピクセル値を１回の計算サイクルで検索して別個のレジスタに独立に記憶できる。
【００３９】
本発明の実施態様のその他の利点は、フィルタリングに使用されるプログラムとメモリ資源を少なくすることである。従来の画像システムでは、水平フィルタと垂直フィルタは、２つの互いに異なる図式で動作する２個の別個のフィルタであり、これらの図式は、たとえば行セグメントまたは、列セグメントにおいて結合されるべき互いに隣合うピクセルの互いに異なる空間的関係を識別する。したがって、従来の水平フィルタと垂直フィルタは、別個の命令図式およびメモリ資源を使用する。しかしながら本発明の実施態様に従い、単にフィルタが動作するデータを転置することで、プロセッサは、自動的に垂直フィルタと水平フィルタの実行を切り替える。すなわち、ピクセル値が転置されると、水平フィルタは、垂直フィルタと等しくなるのである。したがって水平フィルタリングと垂直フィルタリングの双方に対して単一のフィルタを使用することができ、それによってプログラムとメモリ資源を２の倍数で少なくできる。一般に、プロセッサは、何らかのフィルタで結合される何らかのピクセルのセットを内部メモリのレジスタユニットの列に再配列して独立に操作されるようにできる。したがって何らかの方向のフィルタおよび／または非方向性フィルタに対するピクセルを結合するために単一のフィルタが使用されてよく、それによってプログラムとメモリ資源の使用を画像で使用される互いに異なるフィルタの数に等しい倍数だけ少なくできる。ある実施態様において、画像を処理するために使用されるプログラムは、オーバーヘッドおよび／または計算またはメモリ資源を増やすことなく、方向性フィルタまたは非方向性フィルタの数を増すことができる。
【００４０】
図２Ａは、本発明の実施態様の理解に有用な映像データおよび画像データを記憶するための多次元データアレイ２００を概略的に図解する。
データアレイ２０７は、水平フィルタが実行されるべき（ｎｘｍ）データブロックである。データアレイ２００は、データアレイ２０７と、データアレイ２０７で水平フィルタを実行するために使用される互いに隣合うピクセル値とを含む（ｎｘ（ｍ＋ｑ））データブロックであってよい。水平フィルタに対する線形結合は、データアレイ２０７における各ピクセル値を、同じ行でこのピクセル値に先行する項および／またはこのピクセル値に後続する項を含め、水平方向に互いに隣合う項（ｑ）と結合できる。線形結合は、フィルタリングされるべき値それ自体を含んでも含まなくてもよく、たとえばそれぞれ（ｑ＋１）または（ｑ）ピクセル値を結合できる。
【００４１】
図２Ａの例では、データアレイ２０７は、（８ｘ４）データアレイ２０７をフィルタリングするための（８ｘ９）データブロックであり、線形結合は、（１）フィルタリングされるべきピクセル値と、（ｑ）＝（５）水平方向に互いに隣合うピクセル値、たとえば（２）先行ピクセル値および（３）後続ピクセル値とを有する（ｑ＋１）＝（６）ピクセル値を含んでよい。たとえばフィルタ式は、（ｑ＋１）＝（６）項の線形加重和、たとえば（ｘ１-５＊ｘ２＋２０＊ｘ３＋２０＊ｘ４-５＊ｘ５＋ｘ６＋１６）／３２であってよく、ここでｘｉは、レジスタｖｉ内のピクセル値ベクトルである。
【００４２】
データアレイ２００および２０７は、他のサイズまたは寸法を有してよく、線形結合は、同じ行からの任意の数の項またはピクセル値、互いに隣合うピクセル値を含んでよく、その場合にフィルタリングされるべきピクセル値に先行するピクセル値のみ、後続するピ
クセル値のみ、先行するピクセル値と後続するピクセル値の双方を含み、フィルタリングされるべきピクセル値を含み、または含まず、これらは順次列挙されてもされなくてもよいことが理解されよう。一実施態様において、水平フィルタに対する線形結合において結合されるピクセル値の数（ｑ）または（ｑ＋１）を増すと、データアレイ２０７を水平方向にフィルタリングするために使用されるデータアレイ２００の幅寸法（ｍ＋ｑ）が増してよい。同様に、垂直フィルタに対して結合されるピクセルの数を増すと、データアレイ２０７を垂直方向にフィルタリングするために使用されるデータアレイ２００の高さ寸法が増す。図２Ａの例は、水平動き補償フィルタに対して使用されてよく代替としてデブロッキングフィルタなど他のタイプのフィルタに対して使用されるか、または使用されるように調整されてよい。
【００４３】
発明の実施態様に従い、本明細書において、第１メモリユニットで初期配列を有する図２Ａのデータアレイ２００からピクセル値を検索してロードし、ピクセル値を第２メモリユニットに転置された配列で（たとえば図２Ｂの転置されたデータアレイ２００’として）記憶することを含む水平フィルタリングのための機構が設けられている。プロセッサは、初期データアレイ２００の同じ行から検索された各ピクセル値が、転置されたデータアレイの互いに異なる行に、それゆえ内部メモリユニットの互いに異なるレジスタに記憶され、水平フィルタ動作に対して同時に独立に操作され得るようにできる。ある実施態様において、水平フィルタに対する命令を受取り、垂直フィルタに対する命令を受取らないときは、プロセッサは、転置された検索動作を実行するように指示されてよい。しかしながら各レジスタに記憶されたピクセル値が行に代えて列から検索される別の実施態様では、プロセッサは、垂直フィルタに対する命令を受取り、水平フィルタに対する命令を受取らないときは相応に実行するように指示されてよい。
【００４４】
図２Ｂは、本発明の実施態様に従う水平フィルタを実行するため図２Ａのデータアレイ２００から転置されたデータアレイ２００’を，概略的に図解する。
水平フィルタを実行するプロセッサは、図２Ａのデータアレイ２００内の初期位置またはインデックスを有するピクセル値を、図２Ｂのデータアレイ２００’内の相対的に転置された新しい位置またはインデックスに転置できる。たとえばデータアレイ２００内の各ピクセルｐｉｊは、データアレイ２００’内の新しい位置ｐｊｉに再配列され得る。したがって（ｎｘ（ｍ＋ｑ））データアレイ２００は、（（ｍ＋ｑ）ｘｎ）データアレイ２００’に転置されてよく、データアレイ２００の各（第ｎ）行の要素は、データアレイ２００’の（第ｎ）列として再配列される。たとえばデータアレイ２００の第１行のピクセル値（００）−（０８）は、データアレイ２００’の第１列として再配列され得る。図２Ａと図２Ｂの例では、（８ｘ９）データアレイ２００は、（９ｘ８）データアレイ２００’に転置されてよい。
【００４５】
プロセッサは、ピクセル値を個々に、またはグループで、またはサブアレイ２０１−２０６で検索および転置できる。データアレイ２００からの各サブアレイ２０１−２０６は、転置された配列で再配列されて、データアレイ２００’のサブアレイ２０１’−２０６’を形成できる。ある実施態様においてサブアレイ２０１−２０６は、（８）または（１６）ロード／記憶サイクルで行毎に検索されてよい。別の実施態様では、米国特許出願第１２／７９７７２７号明細書で開示されているように、完全な各サブアレイ２０１−２０６が単一の（１）ロード／記憶サイクルで検索され得る。
【００４６】
転置されたデータアレイ２００’は、内部メモリ（たとえば図１に示す個別アドレス指定可能メモリユニット１６）のレジスタ２０８に行毎に記憶されてよく、各レジスタ２０８は、ピクセルの値を単一行として配列またはロードされて記憶する。水平フィルタにおいて結合されたデータアレイ２００内のピクセル値の行は、転置されたデータアレイ２００’における列としてロードされ、各レジスタ２０８は、単一行としてロードされたピク
セル値を記憶するので、結合されたピクセル値の各々は、（ｍ＋ｑ）＝（９）レジスタ２０８、ｖ０−ｖ８に別個に記憶されてよい。プロセッサは、別個のレジスタ２０８に記憶されたピクセル値を独立に操作することでフィルタを使用できる。プロセッサは、別個のアドレス経由で各レジスタ２０８に独立にアクセスできる。水平フィルタの各線形結合に使用されるすべてのピクセル値は、それぞれ別個のレジスタ２０８に記憶されるので、プロセッサは、このようなすべてのピクセル値を独立に検索し、乗算し、結合できる。
【００４７】
各レジスタ２０８は、行として配列されたデータ要素を記憶し、垂直フィルタは、単一列から検索されたピクセル値を結合するので、同じ線形結合で結合されたピクセル値の各セットは、自動的に別個のレジスタ２０８、ｖ０−ｖ８にロードされ得る。したがって垂直フィルタに対しては、プロセッサは、ピクセル値をデータアレイ２００’において元の転置されない配列で記憶できる。
【００４８】
図３は、本発明の実施態様に従い映像データおよび画像データにフィルタを摘要するためのデータアレイを、概略的に図解する。プロセッサは、データアレイ２００’を使用してデータアレイ２０７’をフィルタリングしてよく、データアレイ２０７’は、水平フィルタにとって図２Ａの元のデータアレイ２０７を転置したもの（それゆえフィルタリングの等効物）である。
【００４９】
図２Ａと図２Ｂを参照して説明したように、結合されるべき互いに隣合うピクセル値（たとえば水平フィルタと垂直フィルタに対してそれぞれ図２Ａのデータアレイ２００の水平方向または垂直方向に整列されたピクセル値）は、図２Ｂのデータアレイ２００’の単一列に配列される。したがってプロセッサは、線形結合において結合されるべき各ピクセル値を、垂直フィルタと水平フィルタの双方に対して別個の個別アドレス指定可能レジスタ２０８に記憶できる。一般にプロセッサは、垂直フィルタまたは水平フィルタ以外の非方向性フィルタまたは方向性フィルタで結合された別個のピクセル値を、それぞれ互いに異なるレジスタ２０８に分離してもよい。
【００５０】
水平フィルタと垂直フィルタの双方を実行するために、プロセッサは、データアレイ２００’の各列セグメントで（ｑ＋１）垂直方向に整列されたピクセル値を結合して同じ列内の各ピクセルをフィルタリングしてよい。プロセッサは、一度に多数のピクセルをフィルタリングできる。一実施態様において、プロセッサは、データアレイ２００’内の各（１ｘｎ）行のピクセルをフィルタリングするために、各（（ｑ＋１）ｘｎ）データアレイ２０９’を、それぞれ（（ｑ＋１）ｘ１）列セグメントの互いに隣合う値と一緒に使用してよい。たとえばプロセッサは、第１（６ｘ８）データアレイ２０９’を使用して、データアレイ２００’の第１行２１０をフィルタリングしてよい。プロセッサは、第２（６ｘ８）データアレイ２０９’（第１データアレイ２０９’の１行下で垂直方向に順次的な（（ｑ＋１）ｘｎ）データアレイ）を使用して、データアレイ２００’内の次の順次的なピクセル行２１１をフィルタリングできる、というように続く。プロセッサは、全データアレイ２０７’がフィルタリングされるまで、データアレイ２００’の各々の順次的な（（ｑ＋１）ｘｎ）データアレイ２０９’を使用して、データアレイ２０７’の順次的な各行２１０、２１１、２１２および２１３でフィルタリングを継続できる。総じて、（ｍｘｎ）データアレイ２０７’内のすべての（ｍ）行を順次的な（（ｑ＋１）ｘｎ）データアレイ２０９’と一緒にフィルタリングするために、全（（ｍ＋ｑ）ｘｎ）データアレイ２００’が使用されてよい。
【００５１】
プロセッサは、データアレイ２０７’とデータアレイ２００’の互いに隣合うピクセル値とのフィルタリングされた結合であるフィルタリングされたデータアレイ２１４’を生成できる。フィルタリングされたデータアレイ２１４’の各行のフィルタリングされたピクセル値は、内部メモリで別個のレジスタ２０８、たとえばレジスタｖ９−ｖ１２に記憶
されてよい。
【００５２】
フィルタリングされたデータアレイ２１４’が生成されたら、プロセッサは、フィルタリングされたピクセル値を記憶および使用できる。垂直フィルタが使用されて元のデータアレイ２０７と２００がレジスタ２０８に対して転置されなかった場合にはプロセッサは、レジスタ２０８の配列においてフィルタリングされたピクセル値を記憶および使用できる。しかしながら、水平フィルタが使用されて、図２Ａの元のデータアレイ２０７および２００が図２Ｂおよび図３のレジスタ２０８に転置されたら、プロセッサは、転置されたデータアレイ２０７’と２００’をそれらの元の転置されない配列（たとえば次の動作のために必要とされる配列に依存して）に再配列してよい（または再配列しなくてよい）。転置マッピングを逆にすると他の転置マッピングになるので、転置されたフィルタリングされたデータアレイ２１４’を、転置されないフィルタリングされたデータアレイ２１４に戻すために、同じ転置マッピングが使用されてよい。したがって、ちょうどプロセッサが転置マッピングを使用してデータアレイを垂直フィルタリングではなく水平フィルタリング用にレジスタにロードできるように、プロセッサは、同じ転置マッピングを使用して垂直方向ではなく水平方向にフィルタリングされたレジスタからフィルタリングされたデータアレイを伝送できる。
【００５３】
一実施態様において、ピクセル値を転置するためにマッピングユニット６が使用されてよい。別の実施態様において、図２Ｂのレジスタ２０８は、幾つかのアドレスを含む一連のアドレスポートを有してよく、これらのアドレスポートのアドレスは、それ自体で再配列または転置されている。そのような実施態様では、アドレスポートのアドレスは、ピクセル値がその中に伝送される順序で配列されてよい。たとえば第１レジスタが第１ピクセル値、第２ピクセル値、第３ピクセル値などに対してインデックスを付けられ、またはアドレス指定される代わりに、第１レジスタは、第１ピクセル値、第１０ピクセル値、第２０ピクセル値などに対してインデックスを付けられてよい。したがってプロセッサ１は、図２Ａのデータアレイ２００からのピクセル値を、図２Ｂの複数のレジスタ２０８の順次アドレスに従って自動的に転置でき、別個のマッピングユニットは、必要とされない（ただし、マッピングユニットは使用されてよい）。
【００５４】
本発明の実施態様は、（８ｘ４）の２Ｄデータアレイにおけるデータをフィルタリングすることに関して記述されているが、任意の方形サブアレイ、たとえば（３ｘ５）、（４ｘ４）、（４ｘ６）、（８ｘ８）、（４ｘ１６）、（１６ｘ１６）、または任意の整数（ｍ）および（ｎ）で任意の（ｍｘｎ）サブアレイが使用されてよいことが理解されよう。さらに、２Ｄデータアレイ（たとえば図３のフィルタデータアレイ２０９’）をフィルタリングするために使用されるデータブロックのサイズは、（（ｑ＋１）ｘｎ）＝（６ｘ８）サブアレイであることが示されているが、任意の（ｓｘｎ）サイズのサブアレイが使用されてよい。また、３Ｄマトリックスまたはテンソルデータ構造によって表され得る、より高次の、たとえば３次元（３Ｄ）のデータアレイが使用されてよいことも理解されよう。一例において輝度データ要素は、２Ｄデータアレイで表されてよく、色度データ要素は、２Ｄまたは３Ｄデータアレイで表されてよい。
【００５５】
本発明の実施態様は、別の、もしくは互いに異なる次元の行、列またはデータアレイ、線形または非線形フィルタ結合において結合されたピクセル値の数、元の、または転置されたデータアレイの配列、個別アドレス指定可能レジスタ２０８の数または配列、および計算サイクルを使用できることが理解されよう。
【００５６】
ある実施態様において、プロセッサは、最初にデータ要素を内部メモリ（たとえば図１の内部メモリユニット１４）における図２Ａのデータアレイ２００に記憶してよく、そしてプロセッサは、ピクセル値をレジスタ（たとえば図１のレジスタユニット１６）におけ
る図２Ｂのデータアレイ２００’に再配列、マッピング、転置、順序付けなどによって再配置できる。他の実施態様において、プロセッサは、ピクセル値を外部メモリ（たとえば図１の外部メモリユニット２）における図２Ｂのデータアレイ２００’に記憶して、ピクセル値を内部メモリ（たとえば図１の内部メモリユニット１４）における図２Ｂのデータアレイ２００’に転置できる。しかしながらその他のメモリ配置も使用されてよい。
【００５７】
図４は、本発明の実施態様に従い多次元データをフィルタリングする方法のフローチャートである。
ステップＳ４００において、プロセッサ（たとえば図１のプロセッサ１）は、（たとえば図１の外部メモリ２または記憶ユニット４における）プログラムメモリから命令を受取って、多次元データセットの１個以上の値、たとえばデジタル映像または画像中のピクセルをフィルタリングできる。この命令は、フィルタリング用に結合されるべきピクセルの値またはアドレスを示してよい。命令は、フィルタが水平フィルタであるか垂直フィルタであるか、および／またはフィルタが他の方向性フィルタであるか非方向性フィルタであるかを示すことができる。
【００５８】
多次元の第１データ構造は、多次元データセットの値を表すことができる。水平フィルタを実行する命令は、第１データ構造（たとえば図２Ａのデータアレイ２００）の単一行に水平方向に整列された値の結合を指定するのに対し、垂直フィルタを実行する命令は、第１データ構造の単一列で垂直方向に整列された値の結合を指定できる。一般に、何らかのフィルタを実行する命令は、第１データ構造の何らかの任意のパターンにおける値の結合を指定できる。
【００５９】
ステップＳ４１０において、プロセッサは、第１データ構造から第２データ構造（たとえば図２Ｂのデータ構造２００’）に結合するように指定された値をロードできる。第２データ構造は、複数の個別アドレス指定可能メモリユニット（たとえば図２Ｂおよび図３のレジスタ２０８）を含んでよい。一実施態様において、第１データ構造は、内部メモリに記憶され、第２データ構造は、同じ内部メモリまたは互いに異なる内部メモリの個別アドレス指定可能メモリユニットに記憶されてよい（たとえばそれぞれ図１の内部メモリユニット１４と個別アドレス指定可能メモリユニット１６）。代替として、両データ構造が内部メモリか外部メモリのどちらか一方に記憶されてよく、またはあるデータ構造は、外部メモリに記憶され、別のデータ構造は、内部メモリに記憶されてもよい。個別アドレス指定可能メモリユニットは、互いに異なるアドレスおよび／またはアドレスポート経由で個別にアクセス可能であってよい。一実施態様において、値はピクセル値であってよく、データ構造は、画像データまたは映像データを表してよいが、他のタイプの多次元データも使用できる。
【００６０】
水平フィルタに対しては、第１データ構造の同じ行から検索された値を、水平フィルタリング用に個別に操作するべく別個の個別アドレス指定可能メモリユニットに分離するために、プロセッサは、値を転置された配列で検索できる。したがって、第１データ構造の単一行において水平方向に整列された値は、第２データ構造の単一列に垂直方向に整列され得る。
【００６１】
垂直フィルタに対しては、値は、既に単一列に記憶されているから、垂直方向に整列する値は不必要であろう。
したがってプロセッサは、水平フィルタ用の値を転置された配列で検索でき、垂直フィルタ用の値を転置されない配列で検索して、フィルタによって別個の個別アドレス指定可能メモリユニットに結合される値が自動的にロードされ得る。フラグ値またはレジスタ値は、フィルタが垂直フィルタ（フラグ値＝＝０）であるか、水平フィルタ（フラグ値＝＝１）であるかを示す一実施態様において、プロセッサは、フラグの値に基づく配列（たと
えばフラグ値＝＝０に対しては転置されない配列、フラグ値＝＝１に対しては転置された配列）で値を検索できる。
【００６２】
ステップＳ４２０において、プロセッサは、互いに隣合う値の重み付けられた線形結合または非線形結合を用いて値を、たとえばフィルタ命令によって定義されたように結合できる。フィルタによって結合されるべき値は、互いに異なる個別アドレス指定可能メモリユニットに別個に記憶されるので、プロセッサは、各々の値を独立に乗算して結合できる。生成されるフィルタリングされた値は、たとえば利用可能な個別アドレス指定可能メモリユニットで第３データ構造（たとえば図３のフィルタリングされたデータアレイ２１４’）に記憶されてよい。
【００６３】
ステップＳ４３０において、プロセッサは、第３データ構造からのフィルタリングされた値を伝送し、記憶し、処理するなど使用できる。垂直フィルタが使用された場合には第２データ構造と第３データ構造は、第１データ構造と同じ元の配列を有してよく、プロセッサは、フィルタリングされた値を個別アドレス指定可能メモリユニットの最終配列において使用できる。しかしながら、水平フィルタが使用された場合には第２データ構造と第３データ構造は、第１データ構造の元の配列から転置され、プロセッサは、第２データ構造と第３データ構造からの値を転置された配列でロードまたは伝送して、たとえば個別アドレス指定可能メモリユニットの外部に存在する１個以上のメモリユニットに記憶してよく（またはしなくてもよい）。一実施態様において、既に転置されている構造を転置することでフィルタリングされた値をそれらの元の転置されない配列に再配列できる。転置された配列から戻すためにプロセッサは、他の転置マッピングを第３データ構造に適用して、フィルタリングされた値をそれらの元の配列で生成できる（たとえば図３に示す転置されていないフィルタリングされたデータアレイ２１４）。   プロセッサは、多次元デー
タの各々の順次的なデータアレイが各反復に対する第１データ構造によって表されるようにして、フィルタのステップＳ４００−Ｓ４３０を、たとえば多次元データの全アレイ（たとえば全画像フレームまたは全音声ファイル）がフィルタリングされるまで反復実行してよい。
【００６４】
ステップＳ４４０において、出力装置（たとえば図１の出力装置１０２）は、フィルタリングされた多次元データを出力してよい。たとえば出力装置は、フィルタリングされたピクセル値を有する画像またはフィルタリングされた音声値を有する音声ファイルを表示してよい。
【００６５】
他の動作または一連の動作が用いられてよい。
本発明の実施態様は、映像データまたは画像データに関して記述されているが、互いに異なるデータタイプに関連して同じかまたは類似のデジタル構造を有する何らかのデータも使用できることは、当業者によって理解されるべきである。たとえば音声データ、グラフィックデータ、マルチメディアデータ、または何らかの多次元データが使用され得る。
【００６６】
本発明の幾つかの実施態様は、値を１つのデータアレイから他のデータアレイに転置するためのシステム、データ構造および方法について記述しているが、本発明の別の実施態様では、たとえば値それ自体を実際に動かしたり再位置決めしたりすることなく、元のデータ構造に互いに異なるアドレス図式を等効に割り当てることは、当業者によって理解されるべきである。
【００６７】
値を検索するためのバーストが記述され、値を行毎に記憶するためのレジスタが記述されているが、代替として列毎に動作するバーストとレジスタが記述されてよいことは理解されよう。このような実施態様において、水平フィルタにおいて結合されるように水平方向に整列された値は、自動的に転置されない配列でロードされ、垂直フィルタで結合され
るように垂直方向に整列された値は、転置された配列でロードされる。
【００６８】
線形フィルタリングは、コンボリューションと呼ばれる動作を使用できることには気づかれよう。コンボリューションは、各出力ピクセルが互いに隣合うピクセル値の加重和であるような動作であり、重みのマトリックスは、「コンボリューションカーネル」または「フィルタ」と呼ばれる。コンボリューションカーネルは、１８０度回転した相関カーネルである。回転は、転置とは異なるため、フィルタまたは相関カーネルの回転が上述した転置とは異なること、さらにコンボリューションは、相関カーネル（ピクセルアレイ上の演算子）を回転させ、ピクセルアレイそれ自体は回転させないことは、当業者によって理解されるべきである。
【００６９】
本発明の実施態様は、プロセッサまたはコントローラ（たとえば図１のプロセッサ１）によって実行されるときに本明細書中に開示された方法を実施する命令を符号化、包含または記憶する物品、たとえばコンピュータまたはプロセッサ可読媒体、コンピュータまたはプロセッサ記憶媒体、たとえばメモリ、ディスクドライブ、ＵＳＢフラッシュメモリを含むことができる。
【００７０】
以上に示された記述された特定の実施態様は、本発明に関連した多くの配分システムにとって有用であることが明らかであるが、本発明の別の修正も当業者に想到されよう。そのような修正は、すべて添付の特許請求の範囲によって定義される本発明の範囲と精神の内部に存在するものと考量される。
【図１】
2012009025.tif 000004
【図４】
2012009025.tif 000005
【図２】
2012009025.tif 000006
【図３】
2012009025.tif 000007
【外国語明細書】
2012009025000001.pdf