(57)【特許請求の範囲】
【請求項１】
ウェーブレットに基づくデータ圧縮のための方法であって、
１組のピクセルと関連するデータを受け取ることと、
一連の離散ウェーブレット変換（ＤＷＴ）のローパスおよびハイパスフィルタリング動作を適用することによってウェーブレット係数を計算することと、を含んでおり、フィルタリング動作の回数が、
前記ローパスフィルタリング動作と前記ハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、
前記高マグニチュードのウェーブレット係数に対する前記共通の部分積を削除し、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えることによって削減される、方法。
【請求項２】
前記一連のＤＷＴを適用することは、それぞれの処理要素がハイパスフィルタ要素とローパスフィルタ要素とデシメーション要素とを含むマルチコアプロセッサにおける複数の処理要素によって前記ＤＷＴを実行することを更に含む、請求項１に記載の方法。
【請求項３】
前記データを受け取ることは、シリアルインパラレルアウト（ＳＩＰＯ）構成要素において前記１組のピクセルと関連する前記データをデータストリームとして受け取ることを含み、
前記方法は、
前記ＳＩＰＯ構成要素の出力を前記処理要素に提供することと、
パラレルインシリアルアウト（ＰＩＳＯ）構成要素において前記マルチコアプロセッサの出力を受け取ることと、
前記ピクセルと関連する前記圧縮されたデータを前記ＰＩＳＯ構成要素の出力からのデータストリームとして提供することと、
を更に含む、請求項２に記載の方法。
【請求項４】
ウェーブレットに基づくデータ圧縮のため方法であって、
１組のピクセルと関連するデータを受け取ることと、
一連のローパスおよびハイパスフィルタリング動作によって実行される離散ウェーブレット変換（ＤＷＴ）のために、それぞれのピクセルをマルチコアプロセッサにワードシリアルな態様でロードすることと、を含んでおり、フィルタリング動作の回数が、
前記ローパスフィルタリング動作と前記ハイパスフィルタリング動作との少なくとも一方のために共通の部分積を識別し、
それぞれのマグニチュードに基づいて前記フィルタリング動作の結果として生じるウェーブレット係数をソートし、
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、
前記高マグニチュードのウェーブレット係数に対する共通の部分積を削除し、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えることによって削減され、更に、
それぞれの変換された値をワードシリアルな態様でアンロードすることと、
を含む方法。
【請求項５】
前記フィルタリング動作を実行する複数の処理要素の出力をクロック信号の正のエッジにおいて第１の加算器に提供し、前記クロック信号の負のエッジにおいて第２の加算器に提供することを更に含む、請求項４に記載の方法。
【請求項６】
変換された値を、前記第１および第２の加算器の出力において、デュアルバッファとデュアルランダムアクセスメモリ（ＲＡＭ）との一方にワードシリアルなアンローディングのために提供することを更に含む、請求項５に記載の方法。
【請求項７】
前記フィルタリング動作を実行する複数の処理要素の出力をクロック信号の正のエッジにおいて第１の加算器に提供し、前記クロック信号の負のエッジにおいて第２の加算器に提供することは、前記複数の処理要素のローパス出力をクロック信号の前記正のエッジにおいて第１の加算器に提供し、前記クロック信号の前記負のエッジにおいて第２の加算器に提供することを含み、
前記方法は、
前記複数の処理要素のハイパス出力をクロック信号の前記正のエッジにおいて第３の加算器に提供し、前記クロック信号の前記負のエッジにおいて第４の加算器に提供することを更に含む、請求項５に記載の方法。
【請求項８】
ウェーブレットに基づくデータ圧縮を実行するように構成された集積回路（ＩＣ）であって、
１組のピクセルと関連するデータを受け取り、それぞれのピクセルを複数のコアにワードシリアルな態様でロードするように構成された第１のネットワークオンチップ（ＮＯＣ）を含み、
前記複数のコアは、それぞれが、離散ウェーブレット変換（ＤＷＴ）を実行するために、ハイパス処理要素とローパス処理要素とを備えており、
ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、
前記ＤＷＴを実行する際に前記共通の部分積を削除するように構成され、更に、
それぞれの変換された値をワードシリアルな態様で前記複数のコアからアンロードするように構成された第２のＮＯＣと、
一方が正のクロックエッジから読み出され、他方が負のクロックエッジから読み出されるデュアルＲＡＭであって、一方が前記正のクロックエッジにおいて与えられ、他方が前記負のクロックエッジにおいて与えられる２つの独立の遅延線に入力を与えるデュアルＲＡＭと、
を備えている集積回路。
【請求項９】
前記複数のコアは、
それぞれのマグニチュードに基づいて前記フィルタリング動作の結果として生じるウェーブレット係数をソートし、
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、
前記高マグニチュードのウェーブレット係数に対する共通の部分積を削除し、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えるように更に構成されている、請求項８に記載のＩＣ。
【請求項１０】
それぞれのコアが、デシメーション要素を更に含み、
前記第１のＮＯＣがシリアルインパラレルアウト（ＳＩＰＯ）構成要素を含み、
前記第２のＮＯＣがパラレルインシリアルアウト（ＰＩＳＯ）構成要素を含み、
前記処理要素のローパス出力がクロック信号の正のエッジにおいて第１の加算器に提供され、前記クロック信号の負のエッジにおいて第２の加算器に提供され、
前記処理要素のハイパス出力がクロック信号の前記正のエッジにおいて第３の加算器に提供され、前記クロック信号の前記負のエッジにおいて第４の加算器に提供される、請求項８に記載のＩＣ。
【請求項１１】
ウェーブレットに基づくデータ圧縮のための方法であって、
１組のピクセルと関連するデータを受け取ることと、
一連の離散ウェーブレット変換（ＤＷＴ）のローパスおよびハイパスフィルタリング動作を適用することによってウェーブレット係数を計算することと、を含んでおり、
フィルタリング動作の回数が、
前記ローパスフィルタリング動作と前記ハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、
前記共通の部分積を削除することによって削減される、方法。
【請求項１２】
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類することと、
前記高マグニチュードのウェーブレット係数に対する共通の部分積を削除することと、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えることと、
を更に含む、請求項１１に記載の方法。
【請求項１３】
前記シフトおよび加算動作は、正準符号付きディジット符号化を用いる、請求項１２に記載の方法。
【請求項１４】
前記一連のＤＷＴを適用することは、それぞれの処理要素がハイパスフィルタ要素とローパスフィルタ要素とデシメーション要素とを含むマルチコアプロセッサにおける複数の処理要素によって前記ＤＷＴを実行することを更に含む、請求項１に記載の方法。
【請求項１５】
前記データを受け取ることは、
シリアルインパラレルアウト（ＳＩＰＯ）構成要素において前記１組のピクセルと関連する前記データをデータストリームとして受け取ることと、
前記ＳＩＰＯ構成要素の出力を前記処理要素に提供することと、
パラレルインシリアルアウト（ＰＩＳＯ）構成要素において前記マルチコアプロセッサの出力を受け取ることと、
前記ピクセルと関連する前記圧縮されたデータを前記ＰＩＳＯ構成要素の出力からのデータストリームとして提供することと、
を更に含む、請求項１４に記載の方法。
【請求項１６】
それぞれのマグニチュードに基づいて前記ウェーブレット係数をソートすることと、
最大のウェーブレット係数から開始して前記ウェーブレット係数を計算することと、
を更に含む、請求項１１に記載の方法。
【請求項１７】
前記一連のＤＷＴを適用することは、特定の誤差限度に応じてすべてよりも少数のウェーブレット係数を含む部分和に基づいて前記ＤＷＴを適用することを更に含む、請求項１６に記載の方法。
【請求項１８】
前記１組のピクセルは静止画とビデオストリームとの一方と関連している、請求項１１に記載の方法。
【請求項１９】
５つのローパスフィルタ段を用いることを更に含んでおり、前記共通の部分積が第１、第２および第５のウェーブレット係数に対して削除され、第３および第４のウェーブレット係数に対する乗算動作がシフトおよび加算動作によって置き換えられる、請求項１１に記載の方法。
【請求項２０】
４つのハイパスフィルタ段を用いることを更に含んでおり、前記共通の部分積が第１および第４のウェーブレット係数に対して削除され、第２および第３、第４のウェーブレット係数に対する乗算動作がシフトおよび加算動作によって置き換えられる、請求項１９に記載の方法。
【請求項２１】
ウェーブレットに基づくデータ圧縮のための方法であって、
１組のピクセルと関連するデータを受け取ることと、
一連のローパスおよびハイパスフィルタリング動作によって実行される離散ウェーブレット変換（ＤＷＴ）のために、それぞれのピクセルをマルチコアプロセッサにワードシリアルな態様でロードすることと、を含んでおり、フィルタリング動作の回数が、
前記ローパスフィルタリング動作と前記ハイパスフィルタリング動作との少なくとも一方のために共通の部分積を識別し、
それぞれのマグニチュードに基づいて前記フィルタリング動作の結果として生じるウェーブレット係数をソートし、
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、
前記高マグニチュードのウェーブレット係数に対する共通の部分積を削除し、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えることによって削減される、方法。
【請求項２２】
それぞれの変換された値をワードシリアルな態様でアンロードすることを更に含む、請求項２１に記載の方法。
【請求項２３】
ファーストインファーストアウト（ＦＩＦＯ）の態様で、前記ピクセルをロードし、前記変換された値をアンロードすることを更に含む、請求項２２に記載の方法。
【請求項２４】
計算が積の最終和に収束するように、最大のウェーブレット係数から開始して前記部分積を計算することを更に含む、請求項２１に記載の方法。
【請求項２５】
４つの２段パイプライン入力を備えておりそれぞれが前記ＤＷＴを適用する複数の処理要素を用いることを更に含み、それぞれの処理要素に対するパイプラインの１対がローパス計算の専用であり、それぞれの処理要素に対するパイプラインの別の１対がハイパス計算の専用である、請求項２１に記載の方法。
【請求項２６】
それぞれのパイプライン対の１つのパイプラインがクロック信号の正のエッジにおいて入力を与えられ、それぞれのパイプライン対の別のパイプラインが前記クロック信号の負のエッジにおいて入力を与えられる、請求項２５に記載の方法。
【請求項２７】
前記複数の処理要素の出力をクロック信号の前記正のエッジにおいて第１の加算器に提供し、前記クロック信号の前記負のエッジにおいて第２の加算器に提供することを更に含む、請求項２５に記載の方法。
【請求項２８】
変換された値を、前記第１および第２の加算器の出力において、バッファとランダムアクセスメモリ（ＲＡＭ）との一方にワードシリアルなアンローディングのために提供することを更に含む、請求項２７に記載の方法。
【請求項２９】
前記複数の処理要素のローパス出力をクロック信号の前記正のエッジにおいて第１の加算器に提供し、前記クロック信号の前記負のエッジにおいて第２の加算器に提供することと、
前記複数の処理要素のハイパス出力をクロック信号の前記正のエッジにおいて第３の加算器に提供し、前記クロック信号の前記負のエッジにおいて第４の加算器に提供することと、
を更に含む、請求項２５に記載の方法。
【請求項３０】
前記第１、第２、第３および第４の加算器がツリー加算器として動作される、請求項２９に記載の方法。
【請求項３１】
ウェーブレットに基づくデータ圧縮を実行するように構成された集積回路（ＩＣ）であって、
１組のピクセルと関連するデータを受け取り、それぞれのピクセルを複数のコアにワードシリアルな態様でロードするように構成された第１のネットワークオンチップ（ＮＯＣ）を備え、
前記複数のコアは、それぞれが、離散ウェーブレット変換（ＤＷＴ）を実行するために、ハイパス処理要素とローパス処理要素とを備えており、
ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、
前記ＤＷＴを実行する際に前記共通の部分積を削除するように構成されており、更に、
それぞれの変換された値をワードシリアルな態様で前記複数のコアからアンロードするように構成された第２のＮＯＣを備えている、集積回路。
【請求項３２】
前記複数のコアは、
それぞれのマグニチュードに基づいて前記フィルタリング動作の結果として生じるウェーブレット係数をソートし、
前記ウェーブレット係数の第１の部分を低マグニチュード係数として、前記ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、
前記高マグニチュードのウェーブレット係数に対する共通の部分積を削除し、
前記低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えるように更に構成されている、請求項３１に記載のＩＣ。
【請求項３３】
前記複数のコアは、計算が積の最終和に収束するように、最大のウェーブレット係数から開始して前記ウェーブレット係数を計算するように更に構成されている、請求項３２に記載のＩＣ。
【請求項３４】
一方が正のクロックエッジから読み出され、他方が負のクロックエッジから読み出されるデュアルＲＡＭであって、一方が前記正のクロックエッジにおいて与えられ、他方が前記負のクロックエッジにおいて与えられる２つの独立の遅延線に入力を与えるデュアルＲＡＭを更に備えている、請求項３２に記載のＩＣ。
【請求項３５】
それぞれのコアがデシメーション要素を更に備えている、請求項３１に記載のＩＣ。
【請求項３６】
前記第１のＮＯＣがシリアルインパラレルアウト（ＳＩＰＯ）構成要素を含む、請求項３１に記載のＩＣ。
【請求項３７】
前記第２のＮＯＣがパラレルインシリアルアウト（ＰＩＳＯ）構成要素を含む、請求項３１に記載のＩＣ。
【請求項３８】
前記処理要素が４つの２段パイプライン入力を含み、それぞれの処理要素に対するパイプラインの１対がローパス計算の専用であり、別の１対のパイプラインがハイパス計算の専用である、請求項３１に記載のＩＣ。
【請求項３９】
それぞれのパイプライン対の１つのパイプラインがクロック信号の正のエッジにおいて入力を与えられ、それぞれのパイプライン対の別のパイプラインが前記クロック信号の負のエッジにおいて入力を与えられる、請求項３８に記載のＩＣ。
【請求項４０】
前記処理要素の出力が、クロック信号の正のエッジにおいて第１の加算器に提供され、前記クロック信号の負のエッジにおいて第２の加算器に提供される、請求項３８に記載のＩＣ。
【請求項４１】
変換された値を前記第１および第２の加算器からワードシリアルなアンローディングのために受け取るように構成されたバッファとランダムアクセスメモリ（ＲＡＭ）との一方を更に備えている、請求項４０に記載のＩＣ。
【請求項４２】
前記処理要素のローパス出力が、クロック信号の正のエッジにおいて第１の加算器に提供され、前記クロック信号の負のエッジにおいて第２の加算器に提供され、前記処理要素のハイパス出力が、クロック信号の前記正のエッジにおいて第３の加算器に提供され、前記クロック信号の前記負のエッジにおいて第４の加算器に提供される、請求項３８に記載のＩＣ。
【発明の詳細な説明】
【背景技術】
【０００１】
本出願では、２０１０年１１月３０日に出願されたインド特許出願第３６３５／ＣＨＥ／２０１０号に基づく優先権を主張する。なお、上記インド特許出願は、参照によりその開示の全体を本出願において援用する。
【０００２】
本明細書において別の記載がなされない限り、この項目に記載される内容は、本出願における特許請求の範囲に対する従来技術ではなく、この項目に包含されていることによって従来技術であると認められることはない。
【０００３】
マルチコアプロセッサとは、複数のプロセッサコアを含む集積回路（ＩＣ）である。一般的に、コアとは、中央演算装置（ＣＰＵ）などの処理ユニットであり、１つまたは複数の所望の機能または応用例を提供するために、実行可能なモジュール（命令またはコード）を処理する。マルチコアプロセッサは、たとえばアナログデジタルコンバータ（ＡＤＣ）やセンサアレイなどの１つまたは複数の外部データソースによって生成されたデータを受け取り処理することが必要なことがしばしばある。プロセッサへの単純なバスベースのデータインタフェースは、多数のソースからのデータの収集に適応できないことがある。特に、そのようなデータの集合が、実質的にパラレルな態様で実行されることが必要な場合にそうである。マルチコアプロセッサは、データの複数チャネル上でのリアルタイムの信号処理を実行することができる。
【０００４】
ウェーブレット変換は、画像圧縮システムにおいて広く用いられている。ウェーブレット変換に基づく方式は画像および動画圧縮において人気を得ているが、その理由は、高速フーリエ変換（ＦＦＴ）や離散コサイン変換（ＤＣＴ）などの他の変換よりも高性能であって、人工物をブロックし、時間および周波数の両者において優れた時間的および空間的分解能を提供することができるからである。さらに、異なるプラットフォームを横断するマルチメディアコンテンツのより高い流動性への需要のために、空間、時間および品質の領域における高度なスケーラビリティが強調される。ウェーブレットは、これらの目的を達成するのに極めて適している。
【発明の概要】
【０００５】
以下の概要は、説明目的だけのものであり、いかなる意味でも限定を意図していない。上述した説明のための側面、実施形態および特徴に加えて、更なる側面、実施形態および特徴が、図面と以下の詳細な説明とを参照することにより明らかになるはずである。本開示は、一般的に、ウェーブレットに基づくデータ圧縮に関する技術を説明する。
【０００６】
本明細書に記載されるいくつかの例示的な方法は、１組のピクセルと関連するデータを受け取ることと、一連の離散ウェーブレット変換（ＤＷＴ）のローパスおよびハイパスフィルタリング動作を適用することによってウェーブレット係数を計算することとを含み得る。計算の間に、フィルタリング動作の回数が、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、共通部の分積を削除することによって、削減される。この方法は、また、残りのフィルタリング動作に基づいてＤＷＴを適用することを含むこともある。
【０００７】
本明細書に記載される他の例示的な方法は、１組のピクセルと関連するデータを受け取ることと、一連のローパスおよびハイパスフィルタリング動作によって実行される離散ウェーブレット変換（ＤＷＴ）のために、それぞれのピクセルをマルチコアプロセッサにワードシリアルな態様でロードすることと、残りのフィルタリング動作に基づいてＤＷＴを適用することとを含み得る。計算プロセスにおけるフィルタリング動作の回数が、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方のために共通の部分積を識別し、それぞれのマグニチュード（大きさ）に基づいてフィルタリング動作の結果として生じるウェーブレット係数をソートし、ウェーブレット係数の第１の部分を低マグニチュード係数として、ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、高マグニチュードのウェーブレット係数に対する共通の部分積を削除し、かつ／または低マグニチュードのウェーブレット係数に対する乗算動作をシフトおよび加算動作で置き換えることによって削減することができる。
【０００８】
少なくともいくつか実施形態によるウェーブレットに基づくデータ圧縮を実行するためのいくつかの例示的な集積回路（ＩＣ）は、１組のピクセルと関連するデータを受け取り、それぞれのピクセルを複数のコアにワードシリアルな態様でロードするように構成された第１のネットワークオンチップ（ＮＯＣ）を含み、複数のコアは、それぞれが、離散ウェーブレット変換（ＤＷＴ）を実行するために、ハイパス処理要素とローパス処理要素とを備え得る。複数のコアは、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、ＤＷＴを実行する際に共通の部分積を削除することがある。このＩＣは、さらに、それぞれの変換された値をワードシリアルな態様で複数のコアからアンロードするように構成された第２のＮＯＣを含み得る。
【０００９】
本開示の上述のおよびそれ以外の特徴は、添付の図面と共に考察された以下の説明と添付の特許請求の範囲とからより完全に明らかになるはずである。これらの図面は本開示によるいくつかの実施形態を示しているだけであり、したがって、その範囲を限定するものであるとは考えるべきではないことを理解しつつ、本開示は、追加的な特定性および細部と共に、以下の添付の図面を用いて説明される。
【図面の簡単な説明】
【００１０】
【図１】マラープロセスモジュールのための例示的なラッパーのためのブロック図である。
【図２】例示的なマラーフィルタバンクの図解である。
【図３】実施形態によるマラーウェーブレット変換回路における第２のハイパス係数（ｇ２）に対する正準符号付きディジット（ＣＳＤ）動作のためのブロック図である。
【図４】実施形態によるマラーウェーブレット変換回路における第３のハイパス係数（ｇ３）に対するシフトおよび加算動作のためのブロック図である。
【図５】実施形態によるマラーウェーブレット変換回路における第２のローパス係数（ｈ２）に対するシフトおよび加算動作のためのブロック図である。
【図６】実施形態によるマラーウェーブレット変換回路における第３のローパス係数（ｈ３）に対するシフトおよび加算動作のためのブロック図である。
【図７】シリアルインパラレルアウト（ＳＩＰＯ）−マラー−パラレルインシリアルアウト（ＳＩＰＯ）ラッパーの動作の間の例示的なクロックサイクルの図解である。
【図８】係数の６サイクル計算のためのマラー変換回路のローパスフィルタ段の例示的なアーキテクチャの図解である。
【図９】係数の６サイクル計算のためのマラー変換回路のハイパスフィルタ段の例示的なアーキテクチャの図解である。
【図１０Ａ】いくつかの実施形態による正のエッジおよび負のエッジ構成を備えたローパスおよびハイパスマラー変換回路のための例示的なランダムアクセスメモリ（ＲＡＭ）構造の図解である。
【図１０Ｂ】いくつかの実施形態による正のエッジおよび負のエッジ構成を備えたローパスおよびハイパスマラー変換回路のための例示的なランダムアクセスメモリ（ＲＡＭ）構造の図解である。
【図１０Ｃ】いくつかの実施形態による正のエッジおよび負のエッジ構成を備えたローパスおよびハイパスマラー変換回路のための例示的なランダムアクセスメモリ（ＲＡＭ）構造の図解である。
【図１０Ｄ】いくつかの実施形態による正のエッジおよび負のエッジ構成を備えたローパスおよびハイパスマラー変換回路のための例示的なランダムアクセスメモリ（ＲＡＭ）構造の図解である。
【図１１】図１０のＲＡＭ構造のローパス構成要素のための例示的な処理要素の図解である。
【図１２】図１０のＲＡＭ構造のハイパス構成要素のための例示的な処理要素の図解である。
【図１３】図１０のそれぞれの処理要素のためのローパスおよびハイパスマラー係数のための例示的な構成の図解である。
【図１４】他の実施形態によるローパスおよびハイパスマラー変換回路のための別の例示的なＲＡＭ構造の図解である。
【図１５】ローパスマラー変換回路のためのネットワークを形成する例示的なプロダクトの図解である。
【図１６】ハイパスマラー変換回路のためのネットワークを形成する例示的なプロダクトの図解である。
【図１７】ウェーブレット変換のための環境として用いることができる汎用計算機の図解である。
【図１８】図１７の計算機１７００などの計算機によって実行され得る例示的な方法を図解する流れ図である。
【図１９】本明細書に記載されている少なくともいくつかの実施形態に従ってすべてが構成された例示的なコンピュータプログラムプロダクトのブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明では添付の図面を参照するが、添付の図面は本明細書の一部を形成するものとする。図面では、類似の記号は、コンテキストからそうではないことが示されない限り、通常は、類似の構成要素を識別するものとする。詳細な説明、図面および特許請求の範囲に記載された説明のための実施形態は、限定を意図したものではない。本明細書に記載されている主題の精神または範囲から逸脱することなく、他の実施形態を用いることができ、他の変更を行うことも可能である。本明細書で一般的に説明され図面で図解されている本開示の態様は、広範囲の異なる構成で配置され、置換され、組み合わされ、分離されおよび設計されることが可能であり、これらは、すべて本明細書に明示的に含まれることは容易に理解できよう。本開示は、概して、とりわけ、ウェーブレットに基づくデータ圧縮に関係する方法、装置、システム、デバイスおよび／またはコンピュータプログラムプロダクトに向けられたものであり、特に、マルチコアプロセッサを用いたウェーブレット変換に向けられている。
【００１２】
簡単に述べると、本明細書で一般的に説明される技術は、共通の部分積の識別および削除を用いてフィルタリング動作を減らし、乗算動作の一部を置き換え、それぞれのピクセルのワードシリアルな態様でのローディングとそれぞれの変換された値のワードシリアルな態様でのアンローディングとを可能にするマラープロセッサの周囲のラッパーを生成することによる、マルチコアプロセッサ環境におけるウェーブレット変換の機能向上に関する。
【００１３】
図１には、マラー（Mallat）処理モジュールのための例示的なラッパーのためのブロック図が図解されている。ビデオおよびオーディオ信号は、短い時間間隔では統計的に安定的な振る舞いを有する。これらの信号については、１つの時間ウィンドウを横断して計算が可能であり信号の解析を継続するために時間ウィンドウを前方にスライドさせることができる変換技法を用いることの方が、より理にかなっている。信号の離散ウェーブレット変換（ＤＷＴ）は、離散的な時間周波数マップを生じる。ＤＷＴは、ガウス関数の最適性を用い、ハイゼンベルク積によって決定される最良の局所化を生じさせる。ＤＷＴは、高い周波数に対しては短いサンプリング間隔を有し低い周波数に対してはより長いサンプリング間隔を有するブロードバンドおよびナローバンド信号のために調整が可能である。ＤＷＴは、連続ウェーブレットの離散バージョンであり、デジタル的な実装に、より適している可能性がある。ＤＷＴは、一定のＱ分布と称されることもある、中心周波数とＱ分布によって表現されるその帯域幅との間に実質的に一定の比率を維持する周波数分布によって特徴付けられる。従来型のウェーブレット変換回路を用いて、多数回の乗算および加算動作を伴う変換を実行することは可能ではあるが、結果的に電力消費が大きくなり得る。
【００１４】
少なくともいくつかの実施形態によるマルチコア指向ウェーブレット変換プロセスは、動作の回数を削減することにより、かつ、多くの動作の結果のため必要となるストレージを削減することにより、ウェーブレットに基づく圧縮を達成する効率的な方法を提供するように構成することが可能である。そして、これにより、従来型のウェーブレット変換法と比較して、より少数のゲートカウント、メモリの削減、および／または動作を実行するのに必要な電力消費の削減が結果的に実現され得る。実施形態は、マルチコアプロセッサまたはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの特別の集積回路において、実現可能である。
【００１５】
画像または動画のいずれかを表すピクセル群に対して１回計算することが可能な共通の部分積を識別し、（最小の係数を選択することができる）低マグニチュード係数のための乗算をシフトおよび加算動作によって置き換え、それぞれのピクセルのワードシリアルな態様でのローディングとそれぞれの変換された値のワードシリアルな態様でのアンローディングとを容易にするために用いることができるマラーの周囲のラッパーを生成することによって、電力／構成要素の削減と計算の加速化とを達成することができる。
【００１６】
いくつかの例示的な実装によると、最小部分積最初（Lowest Partial Product First）（ＬＰＰＦ）の原理を用いて、その絶対値と最初に最大の係数を用いて計算された部分積とに基づいてウェーブレット係数をソートすることができる。このアプローチにより、最終的な積の総和への比較的迅速な収束が可能になり得る。
【００１７】
ダイアグラム１００には、本明細書において記載されている少なくともいくつかの実施形態に従って構成された、シリアルインパラレルアウト（ＳＩＰＯ）モジュール１０４とパラレルインシリアルアウト（ＰＩＳＯ）モジュール（１２６、１２４）とを備えた例示的な単一段のマラープロセッサ１１０が図解されている。この例示的なマラープロセッサ１１０は、ハイパスフィルタ１１２と、ローパスフィルタ１１４と、１／２デシメーションブロック１１６とを備えている。オプションであるが、ＳＩＰＯモジュール１０４と分配バス１０６とＰＩＳＯモジュール（１２４、１２６）とを備えたラッパーは、その入出力カウントを実質的に減少させるマラープロセッサ１１０の一体的な部分であり得る。入出力カウントを減少させることにより入出力を切り替えることによる電力消費を削減する付加効果を有する。シリアルで提供される入力１０２は、プロセッサに与えられるためにパラレルに変換することができ、プロセッサのパラレル出力は、シリアルな出力１２２に再度変換して戻すことができる。
【００１８】
ダイアグラム１００における例示的な構成要素および構成は、説明の目的のみのものであり、実施形態への限定を構成しない。ＤＷＴ動作を実行するマラープロセッサとシリアル／パラレルおよび逆変換のためのラッパーは、多数の異なる構成要素、構成および／またはプロセッサタイプを用いて実装可能である。さらに、いくつかの実施形態による典型的なプロセッサは、カスケード段として実装可能な複数のハイパスフィルタおよび／または複数のローパスフィルタを有し得る。
【００１９】
図２には、本明細書に記載される少なくともいくつかの実施形態に従って構成された例示的なマラーフィルタバンクが図解されている。ＤＷＴは、離散的な時間領域信号Ｘ（ｎ）のローパスおよびハイパスフィルタリングの連続的な動作によって計算され得る。なお、ｎは整数である。これは、マラーアルゴリズムまたはマラーツリー分解と称される。ローパスフィルタ動作２１４は、Ｈ（ｚ）によって表され、他方で、ハイパスフィルタ動作２１２はＧ（ｚ）によって表される。マラープロセッサは、任意の数のフィルタリング段を用いるように構成することが可能である。ダイアグラム２００における例には、３つのフィルタリング段２１０、２２０および２３０が含まれている。まとめると、ＤＷＴは、任意の入力シーケンスＸ＝｛Ｘ０，Ｘ１，Ｘ２，・・・，ＸＮ−１｝をローパスサブバンドのａ＝｛ａ０，ａ１，・・・，ａＮ／２−１｝とハイパスサブバンドのｄ＝｛ｄ０，ｄ１，・・・，ｄＮ／２−１｝とに分解するのであるが、これは、次のように表すことができる。
【００２０】
【数１】
0005640157.tif 000002
ただし、ｋ＝０からＮ／２−１までであり、ｇｉおよびｈｉは、それぞれ、ハイパスおよびローパスフィルタの係数である。いくつかの実施形態によると、マラープロセッサのフィルタリング段には、９−７の双直交スプラインフィルタを用いることができる。この９−７双直交スプラインフィルタは、９つのローパスフィルタ係数｛ｈ−４，・・・，ｈ−１，ｈ０，ｈ１，・・・，ｈ４｝と７つのハイパスフィルタ係数｛ｇ−２，ｇ−１，ｇ０，ｇ１，・・・，ｇ４｝とを含む。
【００２１】
ローパスフィルタ係数は対称的すなわちｈ−ｉ＝ｈｉである。ハイパスフィルタ係数は、
【００２２】
【数２】
0005640157.tif 000003
および
【００２３】
【数３】
0005640157.tif 000004
によって表される関係を有する。なお、
【００２４】
【数４】
0005640157.tif 000005
によって表されるのは、信号の再構成のために用いることができる７つのローパスフィルタ係数である。したがって、
【００２５】
【数５】
0005640157.tif 000006
となる。
【００２６】
両方のフィルタの動作（２１２、２１３）の出力は、デシメーション要素２１６および２１８によってデシメートされ、係数を形成するその結果は次の段に送られ、プロセスはプロセッサのすべてのフィルタリング段を通過するように継続し得る。デシメーション要素は、２の因子によって時間に関するデシメーションを実行し得る。
【００２７】
ｎ＝０，１，・・・，Ｎ／２−１に対するローパスサブバンドサンプルａｎは、行列形式で表現することができる。この行列は、長さが８の信号ベクトルに対して再構成することが可能であり、（例示的な８Ｘ８の実装の場合には）結果的に次の行列方程式を生じる。
【００２８】
【数６】
0005640157.tif 000007
【００２９】
この行列は、次のような長い形式で書くことができる。
ｈ０＊ｘ０＋ｈ１＊ｘ１＋ｈ２＊ｘ２＋ｈ３＊ｘ３＋ｈ４＊ｘ４＝ａ０
ｈ２＊ｘ０＋ｈ１＊ｘ１＋ｈ０＊ｘ２＋ｈ１＊ｘ３＋ｈ２＊ｘ４＋ｈ３＊ｘ５＋ｈ４＊ｘ６＝ａ１
ｈ４＊ｘ０＋ｈ３＊ｘ１＋ｈ２＊ｘ２＋ｈ１＊ｘ３＋ｈ０＊ｘ４＋ｈ１＊ｘ５＋ｈ２＊ｘ６＋ｈ３＊ｘ７＝ａ２
ｈ４＊ｘ２＋ｈ３＊ｘ３＋ｈ２＊ｘ４＋ｈ１＊ｘ５＋ｈ０＊ｘ６＋ｈ１＊ｘ７＝ａ３
ｈ４＊ｘ４＋ｈ３＊ｘ５＋ｈ２＊ｘ６＋ｈ１＊ｘ７＝ａ４
［３］  ｈ４＊ｘ６＋ｈ３＊ｘ７＝ａ５
【００３０】
共通の項を識別した後では、この行列方程式は次のように書くことができる。
ｈ０＊ｘ０＋（ｈ１＊ｘ１）ｐ３＋（ｈ２＊ｘ２）ｐ９＋（ｈ３＊ｘ３）ｐ１０＋（ｈ４＊ｘ４）ｐ８＝ａ０
ｈ２＊ｘ０＋（ｈ１＊ｘ１）ｐ３＋ｈ０＊ｘ２＋（ｈ１＊ｘ３）ｐ４＋（ｈ２＊ｘ４）ｐ１１＋（ｈ３＊ｘ５）ｐ１１＋（ｈ４＊ｘ６）ｐ１＝ａ１
ｈ４＊ｘ０＋ｈ３＊ｘ１＋（ｈ２＊ｘ２）ｐ９＋（ｈ１＊ｘ３）ｐ４＋ｈ０＊ｘ４＋（ｈ１＊ｘ５）ｐ７＋（ｈ２＊ｘ６）ｐ６＋（ｈ３＊ｘ７）ｐ２＝ａ２
ｈ４＊ｘ２＋（ｈ３＊ｘ３）ｐ１０＋（ｈ２＊ｘ４）ｐ１１＋（ｈ１＊ｘ５）ｐ７＋ｈ０＊ｘ６＋（ｈ１＊ｘ７）ｐ５＝ａ３
（ｈ４＊ｘ４）ｐ８＋（ｈ３＊ｘ５）ｐ１１＋（ｈ２＊ｘ６）ｐ６＋（ｈ１＊ｘ７）ｐ５＝ａ４
［４］  （ｈ４＊ｘ６）ｐ１＋（ｈ３＊ｘ７）ｐ２＝ａ５
【００３１】
マラーウェーブレット変換の計算のための乗算動作の総数を計算するためには、帯状の双直交行列は、和と差行列として書くことができる。この行列は、次に、より単純な複数の行列の和に単純化することができる。いかなる最適化も行わない場合の乗算動作の最小回数は、第１列は５回、第２列は７回、第３列は８回、第４列は６回、第４列は４回、第６列は２回（浮動小数点を伴う実際の乗算）となり得る。したがって、乗算動作の総数は３２回である。これは、ローパスフィルタのための上述の方程式における共通の因数の削除を実行する追加的なステップを用いることで、単純化することができる。共通の因数は、次の通りである。
ｈ４＊ｘ６−ａ１およびａ５；ｈ３＊ｘ７−ａ１およびａ５；ｈ１＊ｘ１−ａ０およびａ１；ｈ１＊ｘ３−ａ１およびａ２；
ｈ１＊ｘ７−ａ３およびａ４；ｈ４＊ｘ４−ａ０およびａ４；ｈ２＊ｘ６−ａ２およびａ４；ｈ１＊ｘ５−ａ２およびａ３；
ｈ４＊ｘ４−ａ０およびａ４；ｈ２＊ｘ２−ａ０およびａ２；ｈ３＊ｘ３−ａ０およびａ３；ｈ２＊ｘ４−ａ１およびａ３。
【００３２】
共通の項が削除されると、実行される乗算動作の回数に実質的な減少が生じ得る（たとえば、３２回から２０回へ）。この乗算の減少は、どのような追加的なハードウェアサイクルも伴わない動作の減少に対応し、また、たとえば、共通の項を削除して回路の実装が可能となるＶＬＳＩチップの電力予算の削減に対応する。
【００３３】
ローパスフィルタリングのための残りの乗加算についても、動作をさらに削減することができる。１２回の乗算動作が削除された後では、ｈ２（第２のローパスフィルタ係数）は７回の乗算を必要とし、第３のローパスフィルタ係数ｈ３は７回の乗算を必要とする。ｈ２とｈ３との間では、ｈ３は、５の因数だけ、最小の乗数である。したがって、ｈ３は、最小の全体近似誤差を加算する可能性が高い。係数ｈ２およびｈ３との乗算を実行する代わりにシフトおよび加算の動作を実行すると、ｈ２のための４回の乗算動作を削除することができる。さらに、ｈ３のための５回の乗算動作も削除することができて、結果的には、合計で９回の乗算動作を追加的に削除することができる。これにより、２０回から９回を引いた１１回の乗算動作が、ローパス動作のために残ることになる。
【００３４】
図５および図６には、本明細書に記載されているさまざまな実施形態によるマラーウェーブレット変換回路における第２および第３のローパスフィルタ係数（ｈ２およびｈ３）のためのシフトおよび加算動作のためのブロック図が図解されている。上述したように、２回の乗算を加算およびシフト動作で置き換えることの合計の効果は、４＋５＝９回の乗算動作が、残っていた２０回の乗算動作から削除されるということになる。
【００３５】
シフトおよび加算という技法を用いることにより、２０回からさらに９回の乗算動作を削除することが可能になる。たとえば、ｈ２を計算する際には、０．０７８２２３２によるすべての乗算を、０．０７８１２５との乗算によって置き換えることができる。この新たな乗数は、２つの動作の累乗として実施することが可能である。すなわち、乗算動作を、単純な一連の加算動作とシフト動作とによって置き換えることが可能となる。０．０６２５＋０．０１５６２５−０．０００１２２１−０．００００６１＋０．００００３１＝０．０７８２１７であり、ここでターゲットとなる乗数は０．０７８２２３２である。このように、７回の加算およびシフト動作によって、１回の浮動小数点乗算動作を置き換えることができる。図５のダイアグラム５００に図解されているように、入力レジスタ５０２からの値に対して、（２＞＞４＋２＞＞６−２＞＞１３−２＞＞１４＋２＞＞１５）＝０．０７８２１７として、ＣＳＤ（正準シフトディジット）動作が行われ、次には一連の加算およびシフト（ブロック５０４、５０６、５０８、５１０、５１２）が続き、結果である０．０７８２１７がｈ２に対する結果レジスタ５１８の中に残る。
【００３６】
図６のダイアグラム６００には、どのようにして、第３のローパスフィルタ係数ｈ３との乗算もまた、（２＞＞６＋２＞＞１０＋２＞＞１２＋２＞＞１５）＝０．０１６８６０（６０４、６０６、６０８、６１０）として、入力レジスタ６０２からの値に対する加算およびシフト動作の組み合わせによって置き換えることができ、結果である０．０１６８６０がｈ３に対する結果レジスタ６１８の中に残ることができるかが、図解されている。このように、ｈ２およびｈ３に対するシフトおよび加算動作により、ローパスフィルタプロセスにおいて、それぞれさらに４回および５回の乗算動作を減らすことができる。
【００３７】
ローパス動作と同じように、ｎ＝０，１，・・・，Ｎ／２−１として、ハイパスサブバンドサンプルｄｎを、行列形式に表現することができる。この行列は、長さ８の信号ベクトルに対して再構成することが可能であり、（例示的な８Ｘ８の実装の場合には）結果的に次の行列方程式を生じる。
【００３８】
【数７】
0005640157.tif 000008
【００３９】
この行列方程式は、次のような長い形式で書くことができる。
ｇ２ｘ０＋ｇ３ｘ１＋ｇ４ｘ２＝ｄ０
ｇ２ｘ０＋ｇ１ｘ１＋ｇ２ｘ２＋ｇ３ｘ３＋ｇ４ｘ４＝ｄ１
ｇ４ｘ０＋ｇ３ｘ１＋ｇ２ｘ２＋ｇ１ｘ３＋ｇ２ｘ４＋ｇ３ｘ５＋ｇ４ｘ６＝ｄ２
ｇ４ｘ２＋ｇ３ｘ３＋ｇ２ｘ４＋ｇ１ｘ５＋ｇ２ｘ６＋ｇ３ｘ７＝ｄ３
ｇ４ｘ４＋ｇ３ｘ５＋ｇ２ｘ６＋ｇ１ｘ７＝ｄ４
［６］  ｇ４ｘ６＋ｇ３ｘ７＝ｄ５
【００４０】
共通の項を識別した後で、この行列方程式は、次のように書くことができる。
（ｇ２ｘ０）ｐ１１＋（ｇ３ｘ１）ｐ９＋（ｇ４ｘ２）ｐ１０＝ｄ０
（ｇ２ｘ０）ｐ１１＋ｇ１ｘ１＋（ｇ２ｘ２）ｐ６＋（ｇ３ｘ３）ｐ７＋（ｇ４ｘ４）ｐ８＝ｄ１
ｇ４ｘ０＋（ｇ３ｘ１）ｐ９＋（ｇ２ｘ２）ｐ６＋ｇ１ｘ３）＋（ｇ２ｘ４）ｐ４＋（ｇ３ｘ５）ｐ３＋（ｇ４ｘ６）ｐ５＝ｄ２
（ｇ４ｘ２）ｐ１０＋（ｇ３ｘ３）ｐ７＋（ｇ２ｘ４）ｐ４＋ｇ１ｘ５＋（ｇ２ｘ６）ｐ２＋（ｇ３ｘ７）ｐ１＝ｄ３
（ｇ４ｘ４）ｐ８＋（ｇ３ｘ５）ｐ３＋（ｇ２ｘ６）ｐ２＋ｇ１ｘ７＝ｄ４
［７］  （ｇ４ｘ６）ｐ５＋（ｇ３ｘ７）ｐ１＝ｄ５
【００４１】
方程式群［６］におけるハイパスフィルタ係数のための行列方程式は、ウェーブレット変換の結果を形成するために２７回の乗算を必要とする。上述の長い形式の方程式において共通の項が識別されると、以下の乗算動作を削除することができる。すなわち、ｇ３ｘ７−ｄ５およびｄ３；ｇ４ｘ６−ｄ５およびｄ２；ｇ４ｘ４−ｄ４およびｄ１；ｇ３ｘ５−ｄ４およびｄ２；ｇ２ｘ６−ｄ４およびｄ３；ｇ２ｘ０−ｄ０およびｄ１；ｇ３ｘ１−ｄ０およびｄ２；ｇ４ｘ２−ｄ０およびｄ３；ｇ３ｘ３−ｄ１およびｄ３；ｇ２ｘ２−ｄ１およびｄ２；ｇ２ｘ４−ｄ２およびｄ３である。このようにして、ハイパスサブバンドサンプルｄ０、ｄ１、ｄ２、ｄ３の計算においては６回の乗算動作を節約することができ、ｄ４およびｄ５においては５回の乗算動作を節約することができる。共通積は、方程式群［７］において示されている。
【００４２】
マラーアルゴリズムを用いるハイパスフィルタのためには、２つの異なる構成を用いることができるが、一方は共通項の識別に基づき、他方は、シフトおよび加算パイプライン構造による乗算動作の削除に基づく。最低の電力消費を目的にするために、いくつかの実施形態では、両方のアプローチを統合することが可能である。第１のアプローチでは、共通項を削除することにより、１１回の冗長な乗算動作を削減することができる。
【００４３】
ハイパスマラーフィルタのための乗算動作の元の回数は２７であるが、１１回の乗算動作を減らすことにより、２７から１１を引いて１６回の乗算動作が残ることになる。１１回の動作を削減した後では、ハイパスフィルタ係数ｇ２のための動作は７回の乗算動作を含み、ハイパスフィルタ係数ｇ３のためには８回の乗算動作を含む。これら２つの間では、ｇ３が最小の乗数であるから、最小の全体近似誤差を加算する可能性が高い。したがって、最小の部分積を最初に計算する少なくともいくつかの実施形態によると、ｇ３に関する動作が最初に実行され得る。ｇ２およびｇ３のための乗算動作の代わりに加算およびシフト動作を実行することによって、追加的な乗算動作を削減することもできる。ｇ２のための４回の乗算動作の代わりに複数回の加算を用いることによって、これらの４回を削減することができる。ｇ３のための追加的な４回の乗算動作は、以下の図４で示されているように、乗算動作をシフトおよび加算動作で置き換えることにより、削減することができる。このようにして、全体で追加的な８回の乗算動作を削減することができて、ハイパス動作のために、１６から８を引いた８回の乗算動作が残ることになる。
【００４４】
図３および図４に戻ると、ダイアグラム３００および４００には、マラーウェーブレット変換回路における第２および第３のハイパスフィルタ係数（ｇ２およびｇ３）のためのシフトおよび加算動作のためのフローが図解されている。このシフトおよび加算動作は、少なくともいくつかの実施形態によると、８回の乗算を回避するのに役立つ。
【００４５】
例示的なシナリオによると、ｇ２のために、０．５９１２７１による任意の乗算を、０．５９１７９６８７５との乗算によって置き換えることができる。新たな乗数は、２のベキ乗によって実装することができる。すなわち、乗算動作を、０．５＋０．０６２５＋０．０１５６２５＋０．００７８１３＋０．００３９０＋０．００１９６−０．０００１２２１＝０．５９１７のような単純な一連の加算およびシフトで置き換えることができる。なお、ここでのターゲットとなる乗数は、０．５９１２７である。
【００４６】
図３のダイアグラム３００に図解されているように、入力レジスタ３０２からの値に対して、７回の加算およびシフトにより、（２＞＞１＋２＞＞４＋２＞＞６＋２＞＞７＋２＞＞８＋２＞＞９−２＞＞１３）＝０．５９１７（３０４、３０６、３０８、３１０、３１２、３１４、３１６）のようにして、１回の浮動小数点乗算を置き換えることができ、結果となる０．０５９１７がｇ２に対する結果レジスタの中に残ることになる。図４のダイアグラム４００には、どのようにして、第３のハイパスフィルタ係数ｇ３との乗算もまた、０．０５７６１７２＝０．０６２５００−０．００７８１３＋０．００３９０６３−０．０００９７６６（２＞＞４−２＞＞７＋２＞＞８−２＞＞１０）＝０．０５７６（４０４、４０６、４０８、４１０）として、加算およびシフト動作の組み合わせによって置き換えることができ、結果である０．０５７６１７２がｇ３に対する結果レジスタ４１８の中に残ることができるかが、図解されている。このように、ｇ２およびｇ３に対するシフトおよび加算動作により、ハイパスフィルタプロセスにおいて、それぞれについてさらに４回の乗算動作を減らすことができる。これにより、ウェーブレットプロセッサの消費回路電力も節約することも可能になる。
【００４７】
ｇ２およびｇ３との乗算に関する誤差の大きさは実質的に小さいことを示すことができる。誤差がこのように小さいということは、図３および４で示されているように、ｇ２およびｇ３との乗算動作をシフトおよび加算動作で置き換えることにより電力を節約できることを意味する。
【００４８】
図７では、ダイアグラム７００の中に、シリアルインパラレルアウト（ＳＩＰＯ）−マラー−パラレルインシリアルアウト（ＳＩＰＯ）ラッパーという動作の間の例示的なクロックサイクルが図解されている。
【００４９】
ＳＩＰＯ−マラー−ＰＩＳＯラッパーを制御する外部信号は、図１との関係で記載したように、ロード信号と、処理信号と、アンロード信号とを含み得る。第１の状態７０２の間には、ロードデータストリームＸｎ（０−７）が、８つのロードサイクルにわたり受け取られ得る。これは、８つの外部クロックサイクルであり得る。ロードデータストリームが受け取られるのと同時に、先行する処理済信号に対するアンロードデータストリームＹｎ−１（０−７）が、アンロードされ得る。このようなラッパーにより、ウェーブレットプロセッサが、ＦＰＧＡにおいて、または、ソフトもしくはハードＩＰにおいて実装される場合に、入出力カウントが減少する。
【００５０】
第２の状態７０４の間は、処理データストリームＸｎ（０−７）が処理されるが、これには、１つまたは２つのクロックサイクルを要し得る。第２の状態７０４の次には第３の状態７０６が続き得る。この第３の状態７０６の間には、処理済データストリームＸｎ（０−７）と関連するアンロードデータストリームＹｎ（０−７）がアンロードされ得るが、これは、例示的な実施形態によると約８つの外部クロックサイクルの間継続する。同時に、次のロードデータストリームＸｎ＋１（０−７）が受け取られ得る。
【００５１】
図８には、係数の６サイクル計算のためのマラー変換回路のローパスフィルタ段の例示的なアーキテクチャが図解されている。
【００５２】
ダイアグラム８００に示されているアーキテクチャでは、奇数番および偶数番の入力サンプル（Ｘ１、Ｘ３、Ｘ５など、および、Ｘ０、Ｘ２、Ｘ４など）として分離されている入力サンプルが図解されている。奇数番のサンプルは、ローパスフィルタ係数ｈ０、ｈ２およびｈ４の計算のための上側の処理要素８０２、８０４および８０６に提供される。偶数番のサンプルは、遅延要素８０８の後のローパスフィルタ係数ｈ１およびｈ３のための下側の２つの処理要素８１０および８１２に提供される。ローパスフィルタリングのためのそれぞれの処理要素における計算プロセスのより詳細な図解は、図１５との関係で、後で示される。
【００５３】
図９には、係数の６サイクル計算のためのマラー変換回路のハイパスフィルタ段の例示的なアーキテクチャが図解されている。
【００５４】
ダイアグラム９００に示されているアーキテクチャでは、奇数番および偶数番の入力サンプル（Ｘ１、Ｘ３、Ｘ５など、および、Ｘ０、Ｘ２、Ｘ４など）としても分離されているハイパス動作のための入力サンプルが図解されている。奇数番のサンプルは、ハイパスフィルタ係数ｇ２およびｇ４の計算のための上側の処理要素９０２および９０４に提供される。偶数番のサンプルは、遅延要素９０６の後のハイパスフィルタ係数ｇ１およびｇ３のための下側の２つの処理要素９０８および９１０に提供される。ハイパスフィルタリングのためのそれぞれの処理要素における計算プロセスのより詳細な図解の例は、図１６との関係で、後で示される。
【００５５】
図１０Ａ〜１０Ｄには、いくつかの実施形態による正エッジおよび負エッジ構成を有するローパスおよびハイパスマラー変換回路のための例示的なランダムアクセスメモリ（ＲＡＭ）構造が図解されている。
【００５６】
ダイアグラム１０００Ａに示されているＤＷＴを実行するためのアーキテクチャは、２つのデータ記憶要素（たとえば、ＲＡＭ１００２および１００８）という構成を用い得る。この構成によって、２つの異なるデータストリームがウェーブレット変換を受けることが可能になり、この際、データフローは、（ＲＡＭ１００２とＲＡＭ１００８との間で）一方のイテレーションから他方のイテレーションに方向を交代する。いくつかの実施形態によると、双直交９：７スプラインフィルタを用いることができる。結果的に得られるモデルは、ダイアグラム１０００Ａに示されているように、キャッシュを備えたｍ個のコアのアレイにマップされ得る。ＤＷＴのための第１の構造すなわちローパス構造は、下記の２つの方程式として表現することができる。
【００５７】
【数８】
0005640157.tif 000009
【００５８】
【数９】
0005640157.tif 000010
【００５９】
奇数番および偶数番のサンプルが、それぞれのイテレーションで交代する態様で、ＲＡＭ（１００２および１００８）から処理要素１０１０のアレイに与えられ得るが、一方のＲＡＭが奇数番のサイクルで用いられ、他方のＲＡＭが偶数番のサイクルで用いられる。これら２つのＲＡＭには、複数の到着チャネルと複数の循環バッファ（図示せず）との構造から入力データが与えられ得るが、それぞれがキャッシュ動作のために構成されたＲＡＭの群に与えられている。それぞれのプロセッサコアは、２つ以上のＲＡＭ（たとえば、１００２、１００８）を含み得る。マラーの１つの段については、同一のコアが、複数の順方向および逆方向のステップにおいて用いられ得る。ある例示的な順方向ステップが、マラーハイパスフィルタ、ローパスフィルタおよびデシメーション動作を通過する１つのパスを構成することがある。Ｎ＝８（８つの入力サンプル）という例では、ＤＷＴのローパス構造のための方程式は、次のように展開することができる。
ａ０＝ｈ０ｘ０＋ｈ−１ｘ１＋ｈ−２ｘ２＋ｈ−３ｘ３＋ｈ−４ｘ４
ａ１＝ｈ２ｘ０＋ｈ１ｘ１＋ｈ０ｘ２＋ｈ−１ｘ３＋ｈ−２ｘ４＋ｈ−３ｘ５＋ｈ−４ｘ６
ａ２＝ｈ４ｘ０＋ｈ３ｘ１＋ｈ２ｘ２＋ｈ１ｈ３＋ｈ０ｈ４＋ｈ−１ｘ５＋ｈ−２ｘ６＋ｈ−３ｘ７
ａ３＝０ｘ０＋０ｘ１＋ｈ４ｘ２＋ｈ３ｈ３＋ｈ２ｘ４＋ｈ１ｘ５＋ｈ０ｘ６＋ｈ−１ｘ７
ａ４＝０ｘ０＋０ｘ１＋０ｘ２＋０ｘ３＋ｈ４ｘ４＋ｈ３ｘ５＋ｈ２ｘ６＋ｈ１ｘ７
ａ５＝ｈ２ｘ０＋ｈ１ｘ１＋ｈ０ｘ２＋ｈ−１ｘ３＋ｈ−２ｘ４＋ｈ−３ｘ５
ａ６＝ｈ４ｘ０＋ｈ３ｘ１＋ｈ２ｘ２＋ｈ１ｘ３＋ｈ０ｘ４＋ｈ−１ｘ５＋ｈ−２ｘ６＋ｈ−３ｘ７
［１０］  ａ７＝ｈ４ｘ２＋ｈ３ｘ３＋ｈ２ｘ４＋ｈ１ｘ３＋ｈ１ｘ５＋ｈ０ｘ６＋ｈ−１ｘ７
【００６０】
ハイパスウェーブレットフィルタは、上で方程式群［１０］として示されている８つの方程式の形式で書くことができる。それぞれの項ｈｉに対するインデクスｉは、異なる時間で識別され、ｈｉｉとｈｉ−１との間の相対時間遅延は遅延要素によって提供され得る。たとえば、項ｈ０からｈ７までの間の時間遅延は、遅延線１００４（正のエッジ）と遅延線１００６（負のエッジ）とによって提供され得る。これら２つの遅延線には、２つの異なるＲＡＭから同時に入力が与えられる。たとえば、項ｈ１は２つの時間遅延に対応し、項ｈ２は４つの時間遅延に対応し、項ｈ３は６つの時間遅延に対応し、項ｈ４は８つの時間遅延に対応し得る。結果的に、８番目の遅延項はｈ４ブロックへの入力に対応し、６番目の遅延項はｈ３ブロックへの入力に対応し得る。
【００６１】
ハイパスマラーフィルタのための方程式は、次のようにも表現することができる。
ｃ０＝ｇ０ｘ０＋ｇ−１ｘ１＋ｇ−２ｘ２
ｃ１＝ｇ２ｘ０＋ｇ１ｘ１＋ｇ０ｘ２＋ｇ−１ｘ３＋ｇ−２ｘ４
ｃ２＝ｇ４ｘ０＋ｇ３ｘ１＋ｇ２ｘ２＋ｇ１ｘ３＋ｇ０ｘ４＋ｇ−１ｘ５＋ｇ−２ｘ６
ｃ３＝ｇ４ｘ２＋ｇ３ｘ３＋ｇ２ｘ４＋ｇ１ｘ５＋ｇ０ｘ６＋ｇ−１ｘ７
ｃ４＝ｇ４ｘ４＋ｇ３ｘ５＋ｇ２ｘ６＋ｇ１ｘ７
ｃ５＝ｇ２ｘ０＋ｇ１ｘ１＋ｇ０ｘ２＋ｇ−１ｘ３＋ｇ−２ｘ４＋ｇ−３ｘ５
ｃ６＝ｇ４ｘ０＋ｇ３ｘ１＋ｇ２ｘ２＋ｇ１Ｘ３＋ｇ０ｘ４＋ｇ−１ｘ５＋ｇ−２ｘ６
［１１］  ｃ７＝ｇ４ｘ２＋ｇ３ｘ３＋ｇ２ｘ４＋ｇ１ｘ５＋ｇ０ｘ６＋ｇ−１ｘ７
【００６２】
ａ０係数の対称性は、逆流原理（counterflow principle）において下記の構造を生じさせるのに用いることができる。ハイパスおよびローパスのサブバンドサンプルａ０およびｃ０の方程式［１０］および［１１］を検討すると、係数が変化しない標準的な収縮構造とは異なり、入力サンプルは左から右へシフトされ、出力サンプルは右から左へシフトされることが判明する。係数と結果とがシフトされサンプルがすべて同時にロードされる場合には、方程式の数を単純化することができる。この性質を利用すると、ローパスフィルタ係数を次のように書くことができる。
ａ０＝ｈ０（０＋ｘ０）＋ｈ１（０＋ｘ１）＋ｈ２（０＋ｘ２）＋ｈ３（０＋ｘ３）＋ｈ４（０＋ｘ４）
ａ１＝ｈ０（０＋ｘ２）＋ｈ１（ｘ１＋ｘ３）＋ｈ２（ｘ０＋ｘ４）＋ｈ３（０＋ｘ５）＋ｈ４（０＋ｘ６）
［１２］  ａ２＝ｈ０（０＋ｘ４）＋ｈ１（ｘ３＋ｘ５）＋ｈ２（ｘ２＋ｘ６）＋ｈ３（ｘ１＋ｘ７）＋ｈ４（ｘ０＋ｘ８）
【００６３】
また、ハイパスフィルタのための対応する方程式は、次のように書くことができる。
ｃ０＝ｇ１（０＋０）＋ｇ２（０＋ｘ０）＋ｇ３（０＋ｘ３）＋ｇ４（０＋ｘ２）
ｃ１＝ｇ１（０＋ｘ１）＋ｇ２（ｘ０＋ｘ２）＋ｇ３（０＋ｘ５）＋ｈ４（０＋ｘ４）
［１３］  ｃ２＝ｇ１（０＋ｘ３）＋ｇ２（ｘ２＋ｘ４）＋ｇ３（ｘ１＋ｘ５）＋ｇ４（ｘ０＋ｘ６）
【００６４】
このアーキテクチャは２つのＲＡＭ１００２および１００８を用いるが、左側のＲＡＭは、入力サンプルを保持するように構成することができる。すると、マラーローパス方程式の拡張形式は、次のようなパターンに従い得る。
ａ０＝ｈ０（０＋ｘ０）＋ｈ１（０＋ｘ１）＋ｈ２（０＋ｘ２）＋ｈ３（０＋ｘ３）＋ｈ４（０＋ｘ４）
ａ１＝ｈ０（０＋ｘ２）＋ｈ１（ｘ１＋ｘ３）＋ｈ２（ｘ０＋ｘ４）＋ｈ３（０＋ｘ５）＋ｈ４（０＋ｘ６）
ａ２＝ｈ０（０＋ｘ４）＋ｈ１（ｘ３＋ｘ５）＋ｈ２（ｘ２＋ｘ６）＋ｈ３（ｘ１＋ｘ７）＋ｈ４（ｘ０＋ｘ８）
ａ３＝ｈ０（０＋ｘ６）＋ｈ１（ｘ５＋ｘ７）＋ｈ２（ｘ４＋ｘ８）＋ｈ３（ｘ３＋ｘ９）＋ｈ４（ｘ２＋ｘ１０）
［１４］  ａ４＝ｈ０（０＋ｘ８）＋ｈ１（ｘ７＋ｘ９）＋ｈ２（ｘ６＋ｘ１０）＋ｈ３（ｘ５＋ｘ１１）＋ｈ４（ｘ４＋ｘ１２）
【００６５】
上述の方程式群［１４］のパターンは、２つのＲＡＭにアクセスすることができる構造を用いて実装することができる。データワードのあるグループは、第１のウェーブレット出力ａ０が第１のクロックサイクルとその後の２番目ごとのクロックサイクルとにおいて書かれるように、処理され得る。
【００６６】
処理要素１０１０からのローパスおよびハイパス動作の出力は、２つの５出力ツリー加算器１０１２および１０１４に結合され得る。１つの加算器を正のエッジにおいて利用可能な出力のために用い（１０１２）、別の加算器を負のエッジにおいて利用可能な処理要素の出力を処理するために用いる（１０１４）ことによって、データが利用可能な速度を有効に２倍にすることができる。いくつかの実施形態では出力データが外部の出力バッファに書き込まれることがあり、または、他の実施形態では出力データが（入力ＲＡＭとは異なる）他のＲＡＭに書き込まれることがある。
【００６７】
ダイアグラム１０００Ａから１０００Ｄには、デュアルＲＡＭ１００２および１００８が示されており、これらのＲＡＭは２つの遅延線に入力を与えるが、一方は正のクロックエッジで動作され、他方は負のクロックエッジで動作される。ダイアグラム１０００Ａ、１０００Ｂ、１０００Ｃおよび１０００Ｄにおける遅延線、ＲＡＭおよび処理要素の詳細な接続は、ローパスの正のエッジ、ローパスの負のエッジ、ハイパスの正のエッジおよびハイパスの負のエッジの構成にそれぞれ対応する。処理要素ＰＥ１からＰＥ５（１０１０）は正および負の両方のエッジにおいて動作を実行するが、その理由は、図１１および図１２との関係で後述するように、一方が正のエッジで動作し他方が負のエッジで動作する２つの独立の乗算・加算パイプラインを有しているからである。
【００６８】
図１１には、少なくともいくつかの実施形態による図１０のＲＡＭ構造のローパス構成要素のための例示的な処理要素が図解されている。
【００６９】
上述した例示的な収縮アレイでは、それぞれの処理要素は、２段のパイプラインを４つ含み得る。これら４つのパイプラインの中で、２つはローパス係数の計算動作の専用であり、他の２つはハイパス係数の計算動作の専用であり得る。ダイアグラム１１００には、例示的なローパス係数の計算専用の２段が示され、そこで入力値はバッファされることがあり（１１０２）、加算およびシフト動作（１１０４）と乗算動作（１１０６）とが行われる。出力バッファ（またはレジスタ）段１１０８は、対応する加算器への出力（Ｚ＿ｐおよびＺ＿ｎ）を提供するように構成され得る。
【００７０】
ローパス計算のための２つのパイプラインは、同時に動作するように構成されることができ、その場合、左側のパイプラインはクロック信号の正のエッジで選択的に結合され、右側のパイプラインはクロック信号の負のエッジで選択的に結合される。
【００７１】
図１２には、図１０のＲＡＭ構造のハイパス構成要素のための例示的な処理要素が図解されている。ダイアグラム１２００には、例示的なハイパス係数の計算動作専用の２段が示されているが、これは、図１１のパイプラインと類似している。入力値はバッファされることがあり（１２０２）、加算およびシフト動作（１２０４）と乗算動作（１２０６）とが行われる。出力バッファ（またはレジスタ）段１２０８は、対応するハイパス出力加算器への出力（Ｗ＿ｐおよびＷ＿ｎ）を提供するように構成され得る。
【００７２】
ハイパス計算のための２つのパイプラインは、同時に動作するように構成されることもでき、その場合、左側のパイプラインはクロック信号の正のエッジで選択的に結合され、右側のパイプラインはクロック信号の負のエッジで選択的に結合される。
【００７３】
ダイアグラム１２００における出力Ｗ＿ｐおよびＷ＿ｎは、４入力加算器において加算される前のハイパスフィルタ係数の成分を表す。図１１のダイアグラム１１００における出力Ｚ＿ｐおよびＺ＿ｎは、５入力加算器において加算される前のローパスフィルタ係数を表す。いくつかの実施形態では、Ｗ＿ｐは４入力加算器に送られ、４入力加算器はクロックの正のエッジにおいてのみ動作し、図１０Ａから１０Ｄの左側のＲＡＭ１００２において生じるデータのためのマラー係数を形成する。Ｗ＿ｎは、図１０Ｄにおける負のエッジにおいて動作する加算器に送られる。それぞれの処理要素は４つの出力ポートを有していて、２つはローパスフィルタ係数（正のエッジおよび負のエッジ）のためであり、２つはハイパスフィルタ係数（正のエッジおよび負のエッジ）のためである。加算器の出力は、図１に示されているように、２組のデシメータに送られ得る。デシメータの一方の組（正のエッジおよび負のエッジ）はローパスフィルタ係数に対応し、デシメータの他方の組はハイパスフィルタ係数に対応する。
【００７４】
図１３には、図１０のそれぞれの処理要素のためのローパスおよびハイパスマラー係数のための例示的な構成が図解されている。
【００７５】
ダイアグラム１３００における処理要素（ＰＥ）１０１０は、それぞれが、２組のパイプラインにおいて入力値Ｘｉを受け取り同時に処理するように構成され得る。その際に、一方のパイプラインはローパスフィルタ動作のためであり、他方のパイプラインはハイパスフィルタ動作のためである。出力データは、ツリー加算器を通じて処理され、出力バッファまたはＲＡＭに記憶され得る。出力データの速度は、クロック信号処理の正および負のエッジを用いることにより、効果的に２倍にすることができる。
【００７６】
いくつかの実施形態によると、第１のデータストリームは、第１のバッファ（またはＲＡＭ）からのすべてのクロックサイクルの正のエッジにおいて処理要素１０１０によって受け取られ得る。第２のデータストリームは、すべてのクロックサイクルの負のエッジにおいて第２のバッファまたはＲＡＭから受け取られ、これにより、この二重構成の処理要素が満たされる速度が２倍になり得る。それぞれの処理要素のパイプライン１１００および１２００は、それぞれの対応するクロックエッジにおいて処理されるデータストリームが異なるように、クロックサイクルの正のエッジと負のエッジとの両方で動作するように構成することができる。両方のエッジにおいて動作することにより、サンプル内部での遅延を効率的に半分にすることができる。ＰＥ要素１０１０は、一方の対が正のクロックエッジに対応し他方の対が負のクロックエッジに対応する４つの入力ポートを有するように両方の遅延線によって与えられる。それぞれのＰＥ要素は４つの出力を有するが、ローパスおよびハイパス信号のそれぞれについて、一方が正のエッジに対応し、他方が負のエッジに対応する。ローパスフィルタリングのための正のエッジの加算には５つのＰＥが必要であり、ハイパスフィルタリングのための正のエッジの加算には４つのＰＥが必要である。
【００７７】
図１４には、他の実施形態によるローパスおよびハイパスマラー変換回路の別の例示的なＲＡＭ構造が図解されている。ダイアグラム１４００は、図１０Ａから１０Ｄの構成のより抽象的な図である。２つのＲＡＭ１００２および１００８は、２つの遅延線に近接して配置されている。遅延線の一方１４０２（図１０Ａから１０Ｄでは、１００４としても表されている）は、正のクロックエッジにおいてのみシフト動作を実行する。第２の遅延線１４０４（図１０Ａから１０Ｄでは、１００６としても表されている）は、負のクロックエッジにおいてシフト動作を実行する。これら５つの処理要素１０１０（ＰＥ１からＰＥ５まで）は、２つの遅延線１４０２および１４０４によって与えられている。ＰＥ要素１０１０は、ローパスフィルタ係数のために２つの５入力加算器に、そして、ハイパスフィルタ係数のために２つの４入力加算器に、入力を与える。２つのＲＡＭ１００２および１００８は、３次元集積回路における遅延線および処理要素と同じシリコン層の上に配置されることもある。また、これらは、３次元集積回路における遅延線および処理要素とは別のシリコン層の上に配置されることもある。
【００７８】
ダイアグラム１４００には、２つのＲＡＭ１００２および１００８、５つの処理要素１０１０、それぞれが８つの遅延を備えた２つの遅延線１４０２および１４０４、ならびに２組の加算器１４０６、１４０８、１４１０および１４１２の別の構成が図解されている。遅延線は、クロック信号の正のエッジ（１４０２）またはクロック信号の負のエッジ（１４０４）のいずれかにおける入力を用いた動作の専用とすることもできる。同様に、加算器も、クロック信号の正のエッジまたは負のエッジのいずれかにおいて動作する専用とすることもできる。たとえば、ローパスサブバンドサンプル出力のための１つの５入力加算器（１４０６）をクロック信号の正のエッジで動作するように構成し、ローパスサブバンドサンプル出力のための別の５入力加算器（１４０８）をクロック信号の負のエッジで動作するように構成し、ハイパスサブバンドサンプル出力のための１つの４入力加算器（１４１０）をクロック信号の正のエッジで動作するように構成し、ハイパスサブバンドサンプル出力のための１つの４入力加算器（１４１２）を、信号の負のエッジで動作するように構成することができる。
【００７９】
加算器１４０６、１４０８、１４１０および１４１２の出力では、４つの独立な組のサブバンドサンプルが利用可能である。すなわち、正のクロックエッジａ０ｐ、ａ１ｐ、ａ２ｐ、・・・を用いて出力されるローパスサブバンドサンプルと、負のクロックエッジａ０ｎ、ａ１ｎ、ａ２ｎ、・・・を用いて出力されるローパスサブバンドサンプルと、正のクロックエッジｃ０ｐ、ｃ１ｐ、ｃ２ｐ、・・・を用いて出力されるハイパスサブバンドサンプルと、負のクロックエッジｃ０ｎ、ｃ１ｎ、ｃ２ｎ、・・・を用いて出力されるハイパスサブバンドサンプルと、である。いくつかの実施形態によると、これらの５入力および４入力加算器は、動作における遅延を最小化するようにツリー加算器として動作するように構成することができる。
【００８０】
図１５には、ローパスマラー変換回路のためのネットワークを形成する例示的なプロダクトが図解されている。図８との関係で既に論じたように、入力サンプルは、奇数番のサンプル群と偶数番のサンプル群とに分割することができる。奇数番のサンプルは奇数番のローパス係数計算動作として処理され、他方で、偶数番のサンプルは偶数番のローパス係数計算動作として処理され得る。
【００８１】
ダイアグラム１５００に示されているように、ローパスフィルタ係数ｈ１、ｈ０およびｈ４は、通常の符号付きの乗算１５０２、１５０４、１５０６（これらは、共通の部分積削除により削減できる）と共に用いられる。いくつかの実施形態による二次的な動作削減アプローチとして、サブバンドサンプルを、シフトおよび加算（Ｓ＆Ａ）動作１５０８、１５１０を通じて計算することもできる。この際には、乗算の代わりに入力としてローパスフィルタ係数ｈ２およびｈ３を用いることで、必要なハードウェア、計算時間および構成要素のための電力がさらに削減される。
【００８２】
図１６には、ハイパスマラー変換回路のためのネットワークを形成する例示的なプロダクトが図解されている。入力サンプルｘ１〜ｘ７は、ハイパス動作において、奇数番のサンプルと偶数番のサンプルとに分けることができる。奇数番のサンプルは、奇数番のハイパスフィルタ係数ｇ１およびｇ３を用いてサブバンドサンプル計算（ｄ０〜ｄ５）において用いられ、他方で、偶数番のサンプルは、偶数番のハイパスフィルタ係数ｇ２およびｇ４を用いてサブバンドサンプル計算において用いられ得る。
【００８３】
ダイアグラム１６００に示されているように、ハイパスフィルタ係数ｇ１およびｇ４は、通常の符号付きの乗算１６０２および１６０４（これらは、共通の部分積削除により削減できる）を含む。いくつかの実施形態による二次的な動作削減アプローチとして、ハイパスフィルタ係数ｇ２およびｇ３を、シフトおよび加算動作１６０６および１６０８を通じて計算することもできる。これは、乗算が、必要なハードウェア、計算時間および構成要素のための電力をさらに削減するのと対照的である。
【００８４】
図１７には、汎用計算機が図解されており、この汎用計算機は、本開示の少なくともいくつかの実施形態に従って構成されたウェーブレット変換のための計算環境として用いることができる。
【００８５】
コンピュータ１７００は、プロセッサ１７１０と、メモリ１７２０と、１つまたは複数のドライブ１７３０とを含む。ドライブ１７３０と、取り外し可能な記憶媒体１７３４（たとえば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）や取り外し不可能な記憶媒体１７３２（たとえば、ハードディスクドライブ）などそれに関連するコンピュータ記憶媒体が、コンピュータ１７００のためのコンピュータ可読な命令、データ構造、プログラムモジュールおよびそれ以外のデータのストレージを提供することができる。ドライブ１７３０は、オペレーティングシステム１７４０と、アプリケーションプログラム１７５０と、プログラムモジュール１７６０と、データベース１７８０とを含み得る。コンピュータ１７００は、それらを介してユーザがコマンドやデータを入力することができるユーザ入力デバイス１７９０をさらに含み得る。入力デバイス１７９０には、電子デジタイザと、マイクロフォン１７９６と、キーボード１７９４と、マウスデバイス１７９２やトラックボールデバイスやタッチパッドデバイスなどのポインティングデバイスとが含まれ得る。他の入力デバイスには、ジョイスティックデバイスや、ゲームパッドデバイスや、衛星ディッシュや、スキャナデバイスなどが含まれ得る。
【００８６】
アプリケーションプログラム１７５０は、１組のピクセルと関連するデータを受け取り処理することができる。アプリケーションプログラム１７５０の中のマラープロセスモジュール１７５２は、一連の離散ウェーブレット変換（ＤＷＴ）のローパスおよびハイパスフィルタリング動作を適用することによりウェーブレット係数を計算し、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方について共通の部分積を識別して共通の部分積を削除することによってフィルタリング動作の数を削減することができる。そして、ＤＷＴを、残りのフィルタリング動作に基づいて、適用することができる。
【００８７】
上述したおよびそれ以外の入力デバイスを、システムバス１７０５に結合されたユーザ入力インタフェースを介してプロセッサ１７１０に結合することができるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などのそれ以外のインタフェースおよびバス構造によって結合することもできる。コンピュータ１７００などのコンピュータは、さらに、スピーカ１７７６、プリンタ１７７４およびディスプレイ１７７２など他の周辺出力デバイスを含むことがあり、これらは、出力周辺インタフェース１７７０または類似のものを介して結合されることがある。
【００８８】
メモリ１７２０と取り外し可能な記憶デバイス１７３４と取り外し不可能な記憶デバイス１７３２とは、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、これらに限定されるのではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくはそれ以外のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくはそれ以外の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはそれ以外の磁気記憶デバイス、または、所望の情報を記憶するのに用いることができコンピュータ１７００によってアクセスが可能である任意のそれ以外の媒体が含まれる。任意のそのようなコンピュータ記憶媒体は、コンピュータ１７００の一部であり得る。
【００８９】
コンピュータ１７００は、ネットワークインタフェース１７０６に接続されたリモートコンピュータなど１つまたは複数のコンピュータへの論理的接続を用いているネットワークされた環境において、動作することができる。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたはそれ以外の共通のネットワークノードであり、コンピュータ１７００に関して上述した要素の多くまたはすべてを含むことがあり得る。ネットワーク環境は、オフィスにおいて通常のものであって、企業の広域エリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、イントラネットおよびインターネットなどの世界規模のネットワークである。たとえば、本出願の主題においては、コンピュータ１７００は、そこからデータが自動ドリルシステムやエッチングシステムなどのマルチレイヤ回路ボード製造システムに移動されるコントローラマシンを含むことがあり、リモートコンピュータは複数のシステムのコントローラを含み得る。しかし、ソースマシンと宛先マシンとはネットワーク１７０８（複数可）または任意のそれ以外の手段によって相互に結合されている必要はなく、その代わりに、データは、ソースプラットフォームによって書かれることが可能であり宛先プラットフォーム（複数の場合もある）によって読まれることが可能な任意の媒体を介して移動されることもあることを留意すべきである。ＬＡＮまたはＷＬＡＮネットワーク環境において用いられるときには、コンピュータ１７００は、ネットワークインタフェース１７０６またはアダプタを介してＬＡＮに結合される場合がある。
【００９０】
これら１つまたは複数のネットワーク（複数可）は、サーバ、クライアント、スイッチ、ルータ、モデム、インターネットサービスプロバイダ（ＩＳＰ）および任意の適切な通信媒体（たとえば、有線または無線通信）を用いる任意のトポロジで構成され得る。いくつかの実施形態によるシステムは、静的または動的なネットワークトポロジを有し得る。これら１つまたは複数のネットワーク（複数可）は、企業ネットワークなどの安全なネットワーク（たとえば、ＬＡＮ、ＷＡＮまたはＷＬＡＮ）、無線のオープンネットワークなどの安全ではないネットワーク（たとえば、ＩＥＥＥ８０２．１１の無線ネットワーク）またはたとえばインターネットなどの世界規模のネットワークを含み得る。これら１つまたは複数のネットワーク（複数可）は、共に動作するように構成されている複数の別個のネットワークで構成されている場合もある。これらの１つまたは複数のネットワークは、本明細書に記載されているノードの間の通信を提供するように構成されている。たとえば、限定を意味しないが、これらの１つまたは複数のネットワーク（複数可）は、音響、ＲＦ、赤外線およびそれ以外の無線媒体を含み得る。
【００９１】
ネットワーク通信リンクは、通信媒体の一例であり得る。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは搬送波もしくはそれ以外の輸送機構などの変調されたデータ信号の中の他のデータによって具体化されるのが典型的であり、任意の情報配送媒体を含み得る。「変調されたデータ信号」とは、信号の中の情報を符号化するようにその特性の１つまたは複数が設定または変更されている信号であり得る。たとえば、限定ではないが、通信媒体は、有線ネットワークまたは直接の有線接続などの有線媒体と、音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）およびそれ以外の無線媒体などの無線媒体とを含み得る。本明細書で用いられているコンピュータ可読媒体という用語は、記憶媒体と通信媒体との両方を含み得る。
【００９２】
コンピュータ１７００は、ポータブル計算機、モバイル計算デバイス、特定アプリケーションデバイス、または以上の機能の任意のものを含むハイブリッドデバイスなどの小型要素のポータブル（またはモバイル）電子デバイスの一部として実装可能である。コンピュータ１７００は、また、ラップトップコンピュータおよび非ラップトップコンピュータの両方の構成を含むパーソナルコンピュータとしても実装可能である。さらに、コンピュータ１７００は、ネットワーク接続されたシステムまたは汎用もしくは専用サーバの一部としても実装可能である。
【００９３】
図１８は、図１７の計算機１７００などの計算機によって実行され得る例示的な方法を図解する流れ図である。ブロック１８２２から１８３２に記載された動作は、コンピュータ１７００のドライブ１７３０またはプロセッサ１７１０のメモリなどのコンピュータ可読媒体に、コンピュータ実行可能な命令として記憶され得る。マルチコアプロセッサ中の１つまたは複数のプロセッサ（たとえば、１７１０）は、以下で述べる動作の１つまたは複数を実行するように構成することができる。
【００９４】
ウェーブレット変換を計算するプロセスは、「それぞれのピクセルをシリアルにロード」動作１８２２と共に開始し得る。動作１８２２では、入力値が、図１のＳＩＰＯ構成要素１０４などのＳＩＰＯ構成要素にロードされるが、これは、マラープロセッサ１１０の処理要素へのシリアルデータとして用いることができる。動作１８２２の次には、「共通の部分積を識別」動作１８２４が続き得る。動作１８２４では、ローパスおよびハイパス係数行列の方程式における共通の部分積が、識別され得る。動作１８２４の次には、「共通の部分積を削除」動作１８２６が続くが、ここでは、動作１８２４で先に識別された部分積が、計算から削除され得る。共通の部分積を削除することにより、図１０の処理要素１０１０によって実行される必要のある動作が、より少数になり、つまり、処理要素を、より少数の構成要素で実装できることになり、それにより、消費電力も少なくなり得る。また、動作数が減少することによって、計算時間の短縮も可能になる。
【００９５】
動作１８２６の次には、「低マグニチュード係数の乗算をシフトおよび加算で代替」動作１８２８が続き得る。動作１８２８では、ｈ２、ｈ３またはｇ３などのマグニチュードがより小さなローパスおよびハイパス係数が、通常の乗算動作の代わりに、シフトおよび加算型の動作（たとえば、図１６の１６０６、１６０８）を用いて計算され得る。このような代替によって生じ得る誤差は、無視できるほど小さい。他方で、乗算動作の実質的な回数と乗算動作に要求される関連のハードウェアとを節約することができ、その結果として、計算時間が高速化し、電力消費を削減できる。
【００９６】
動作１８２８の次には、「それぞれの変換値をシリアルにアンロード」動作１８３０が続き得る。動作１８３０では、同時に動作している処理動作（たとえば、マルチコアプロセッサの異なる処理コアにおけるパラレル動作）の出力を、一連のツリー構造の加算器とＰＩＳＯ構成要素（たとえば、図１の加算器１２６とＰＩＳＯ１２４）によるシリアル出力に変換することができる。マラープロセッサの周囲のラッパーにより、シリアルデータを受け取りかつ提供しながら、ウェーブレット変換のパラレルでマルチコアな処理が可能になる。
【００９７】
上述したプロセスに含まれる動作は、説明目的のものである。マルチコアプロセッサを用いたウェーブレット変換の計算は、より少数のまたは追加的な動作を用いた類似のプロセスによって実装可能である。いくつかの例では、これらの動作は、異なる順序で実行されることもあり得る。他のいくつかの例では、さまざまな動作を削除することも可能である。さらに他の例では、さまざまな動作を追加的な動作に分割したり、より少数の動作にまとめたりすることも可能である。
【００９８】
図１９には、例示的なコンピュータプログラムプロダクトのブロック図が図解されており、すべてが、本明細書に記載されている少なくともいくつかの実施形態に従って構成されている。いくつかの例では、図１９に示されているように、コンピュータプログラムプロダクト１９００は、たとえばプロセッサによって実行されると図１７との関係で上述した機能を提供するマシン可読命令１９０４をも含む信号発生媒体１９０２を含み得る。したがって、たとえば、プロセッサ１７１０を参照すると、図１９に示されているタスクの中の１つまたは複数が、本明細書に記載されているマルチコアプロセッサを用いたウェーブレット変換の計算と関連して動作を実行するために媒体１９０２によってプロセッサ１７１０に運ばれた命令１９０４に応答して、実行され得る。これらの命令の中のいくつかは、共通の部分積を識別すること、共通の部分積を削除すること、低マグニチュードの係数の乗算をＣＳＤによって代替すること、および／またはマラー変換の周囲のラッパーを生じさせることを含み得る。
【００９９】
いくつかの実装では、図１９に示されている信号発生媒体１９０２は、これらに限定されることはないが、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、メモリなどのコンピュータ可読媒体１９０６を包み得る。いくつかの実装では、信号発生媒体１９０２は、これらに限定されることはないが、メモリ、リード／ライト（Ｒ／Ｗ）式ＣＤ、Ｒ／Ｗ式ＤＶＤなどの記録可能媒体１９０８を含み得る。いくつかの実装では、信号発生媒体１９０２は、これらに限定されることはないが、デジタルおよび／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの通信媒体１９１０を含み得る。したがって、たとえば、プログラムプロダクト１９００は、ＲＦ信号発生媒体１９０２によって、プロセッサ１７１０の１つまたは複数のモジュールまで運ばれ得るが、ここで、信号発生媒体１９０２は無線通信媒体１９１０（たとえば、ＩＥＥＥ８０２．１１の標準に従う無線通信媒体）によって運ばれる。
【０１００】
本開示は、ウェーブレットに基づくデータ圧縮のための方法を提供する。いくつかの例によると、この方法は、１組のピクセルと関連するデータ１０２を受け取ることと、一連の離散ウェーブレット変換（ＤＷＴ）のローパスおよびハイパスフィルタリング動作１１４、１１２を適用することによってウェーブレット係数を計算することと、を含む。計算の間に、フィルタリング動作の回数を、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し（１８２４）、その共通の部分積を削除する（１８２６）ことによって、減少させる。この方法は、また、残りのフィルタリング動作に基づいてＤＷＴを適用することも含み得る。
【０１０１】
他の例によると、この方法は、ウェーブレット係数の第１の部分を低マグニチュード係数として、ウェーブレット係数の第２の部分を高マグニチュード係数として分類することと、高マグニチュードウェーブレット係数に対する共通の部分積を削除することと、低マグニチュードウェーブレット係数に対する乗算動作１５０２、１５０６をシフトおよび加算動作１５１４、１５１８で代替することと、をさらに含み得る。
【０１０２】
更なる例によると、この方法は、正準符号付きディジット（ＣＳＤ）符号化を用いてシフトおよび加算動作１５１４を実行すること、それぞれの処理要素がハイパスフィルタ要素１１２とローパスフィルタ要素１１４とデシメーション要素１１６とを含むマルチコアプロセッサにおける複数の処理要素１０１０によってＤＷＴ変換を実行すること、シリアルインパラレルアウト（ＳＩＰＯ）構成要素１０４において１組のピクセルと関連するデータをデータストリームとして受け取ること、処理要素１０１０にＳＩＰＯ構成要素の出力を提供すること、パラレルインシリアルアウト（ＰＩＳＯ）構成要素１２４においてマルチコアプロセッサの出力を受け取ること、および／または、ピクセルと関連する圧縮されたデータをＰＩＳＯ構成要素１２４の出力からのデータストリームとして提供すること、の中の１つまたは複数をさらに含み得る。
【０１０３】
さらに他の例によると、この方法は、その対応するマグニチュードに基づいてウェーブレット係数をソートすることと、最大のウェーブレット係数（４０４、５０４）から開始してウェーブレット係数を計算することと、予め定義された誤差限度に応じてすべてよりも少ないウェーブレット係数を含む部分和に基づいてＤＷＴを適用することと、をさらに含み得る。１組のピクセルは、静止画像とビデオストリームとの一方と関連し得る。
【０１０４】
さらに他の例によると、この方法は、５つのローパスフィルタ段（１５００）を用い、その際に、共通の部分積が第１のウェーブレット係数１５００と第２のウェーブレット係数１５０２と第５のウェーブレット係数１５１０とに対して削除され、第３のウェーブレット係数１５１８と第４のウェーブレット係数１５１４とに対する乗算動作がシフトおよび加算動作で代替され、および／または、４つのハイパスフィルタ段１６００を用い、共通の部分積が第１のウェーブレット係数１６０２と第４のウェーブレット係数１６０４とに対して削除され、第２のウェーブレット係数１６１２と第３のウェーブレット係数１６０８とに対する乗算動作がシフトおよび加算動作で代替されることを含み得る。
【０１０５】
本開示は、さらに、ウェーブレットに基づくデータ圧縮のための別の方法を提供するのであるが、この方法は、１組のピクセルと関連するデータを受け取ることと、一連のローパスおよびハイパスフィルタリング動作によって実行される離散ウェーブレット変換（ＤＷＴ）のために、それぞれのピクセルをマルチコアプロセッサ１８２２にワードシリアルな態様でロードすることと、残りのフィルタリング動作に基づいてＤＷＴを適用することと、を含み得る。計算プロセスにおけるフィルタリング動作の回数は、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方のために共通の部分積を識別し１８２４、それぞれのマグニチュードに基づいてフィルタリング動作の結果として生じるウェーブレット係数をソートし、ウェーブレット係数の第１の部分を低マグニチュード係数として、ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、高マグニチュードウェーブレット係数に対する共通の部分積を削除し１８２６、および／または、低マグニチュードウェーブレット係数に対する乗算動作１５０２、１５０６をシフトおよび加算動作１５１４、１５１８で代替することによって、減らすことができる。
【０１０６】
いくつかの例によると、他の方法は、それぞれの変換された値をワードシリアルな態様でアンロードすること１８３２と、ピクセルをロードすること１８２２と、変換された値をファーストインファーストアウト（ＦＩＦＯ）の態様でアンロードすること１８３２と、をさらに含み得る。部分積は、計算が積の最終和において収束するように最大のウェーブレット係数から開始して計算することができる。
【０１０７】
他の例によると、他の方法は、さらに、それぞれがＤＷＴを適用する４つの２段パイプライン入力を備えた複数の処理要素１０１０を用いることを含むことがあり、それぞれの処理要素に対する１対のパイプラインはローパス計算１１４の専用であり、それぞれの処理要素に対する別の１対のパイプラインはハイパス計算１１２の専用である。それぞれのパイプライン対の一方のパイプラインには、クロック信号の正のエッジ（１００４）において入力が与えられ、それぞれのパイプライン対の別のパイプラインには、クロック信号の負のエッジ（１００６）において入力が与えられる。
【０１０８】
更なる例によると、他の方法は、複数の処理要素の出力をクロック信号の正のエッジにおいて第１の加算器１０１２に提供し、クロック信号の負のエッジにおいて第２の加算器１０１４に提供することと、変換された値を第１および第２の加算器の出力においてバッファとランダムアクセスメモリ（ＲＡＭ）１００２、１００８の一方にワードシリアルなアンローディングのために提供することと、をさらに含み得る。
【０１０９】
さらに他の例によると、他の方法は、複数の処理要素のローパス出力をクロック信号の正のエッジにおいて第１の加算器１４０６に提供し、クロック信号の負のエッジにおいて第２の加算器１４０８に提供することと、複数の処理要素のハイパス出力をクロック信号の正のエッジにおいて第３の加算器１４１０に提供し、クロック信号の負のエッジにおいて第４の加算器１４１２に提供することと、をさらに含み得る。第１、第２、第３および第４の加算器１４０６〜１４１２は、ツリー加算器として動作し得る。
【０１１０】
本開示は、さらに、ウェーブレットに基づくデータ圧縮を実行するように構成された集積回路（ＩＣ）１００を提供する。いくつかの例によると、このＩＣは、１組のピクセルと関連するデータを受け取り、それぞれのピクセルを複数のコアにワードシリアルな態様でロードするように構成された第１のネットワークオンチップ（ＮＯＣ）１０４を含み得る。複数のコア１１０は、それぞれが、離散ウェーブレット変換（ＤＷＴ）を実行するために、ハイパス処理要素とローパス処理要素とを備えている。複数のコアは、ローパスフィルタリング動作とハイパスフィルタリング動作との少なくとも一方に対する共通の部分積を識別し、ＤＷＴを実行する際にその共通の部分積を削除することができる。ＩＣは、また、それぞれの変換された値をワードシリアルな態様で複数のコアからアンロードするように構成された第２のＮＯＣ１２４を含み得る。
【０１１１】
他の例によると、ＩＣの複数のコア１１０は、それぞれのマグニチュードに基づいてフィルタリング動作の結果として生じるウェーブレット係数をソートし、ウェーブレット係数の第１の部分を低マグニチュード係数として、ウェーブレット係数の第２の部分を高マグニチュード係数として分類し、高マグニチュードウェーブレット係数に対する共通の部分積を削除し１８２６、低マグニチュードウェーブレット係数に対する乗算動作をシフトおよび加算動作で代替し１８２８、および／または、計算が積の最終和において収束するように、最大のウェーブレット係数から始めてウェーブレット係数を計算することができる。
【０１１２】
上述した方法と同様に、ＩＣによって実行されるシフトおよび加算動作１５１８は、正準符号付きディジット（ＣＳＤ）符号化を用いて実行され得る。それぞれのコアは、デシメーション要素１１６をさらに含み得る。第１のＮＯＣ１０４はシリアルインパラレルアウト（ＳＩＰＯ）構成要素であり得るし、第２のＮＯＣ１２４はパラレルインシリアルアウト（ＰＩＳＯ）構成要素であり得る。さらに、処理要素１０１０は、４つの２段パイプライン入力を含んでおり、処理要素のそれぞれに対する１方の対のパイプラインがローパス計算専用であり、別の１対のパイプラインはハイパス計算専用である。
【０１１３】
更なる例によると、それぞれのパイプライン対の一方のパイプラインはクロック信号の正のエッジ（１００４）において入力を受け取り、それぞれのパイプライン対の別のパイプラインはクロック信号の負のエッジ（１００６）において入力を受け取ることができる。処理要素の出力は、クロック信号の正のエッジにおいて第１の加算器１０１２に提供され、クロック信号の負のエッジにおいて第２の加算器１０１４に提供され得る。ＩＣは、さらに、ワードシリアルなアンローディングのために第１および第２の加算器から変換された値を受け取るように構成されたバッファまたはランダムアクセスメモリ（ＲＡＭ）１００２、１００８を含み得る。処理要素のローパス出力は、クロック信号の正のエッジにおいて第１の加算器１４０６に提供され、クロック信号の負のエッジにおいて第２の加算器１４０８に提供され、処理要素のハイパス出力は、クロック信号の正のエッジにおいて第３の加算器１４１０に提供され、クロック信号の負のエッジにおいて第４の加算器１４１２に提供され得る。第１、第２、第３および第４の加算器１４０６〜１４１２は、ツリー加算器として動作し得る。
【０１１４】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術をもたらすことができるさまざまな達成手段があり（たとえば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なる。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのなんらかの組み合わせを選択することができる。
【０１１５】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスのさまざまな実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。
【０１１６】
本開示は、本出願に記載されておりさまざまな側面に関する例示として意図されている特定の実施形態に限定されることはない。当業者には明らかである通り、その精神および範囲から逸脱することなく、多くの修正および変更を行うことが可能である。本明細書で列挙されたものに加えて、本開示の範囲に含まれる機能的に均等な方法および装置が、以上の記載から当業者には明らかなはずである。そのような修正および変更は、添付の特許請求の範囲に含まれることが意図されている。本開示は、特許請求の範囲が及ぶ均等物の全範囲と共に、添付の特許請求の範囲の記載によってのみ限定される。本開示は、当然に変動の余地がある特定の方法、材料および構成には限定されないことを理解すべきである。また、用語は特定の実施形態を説明する目的でのみ本明細書において用いられているのであり、限定を意図していないことも理解すべきである。
【０１１７】
さらに、本明細書に記載された主題のメカニズムをさまざまな形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【０１１８】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモジュールを含むコントロールシステム（たとえば、共通の部分積を判定する、乗算演算をＣＳＤ演算に置き換えるなど）を含むことを、当業者は理解するであろう。
【０１１９】
通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。本明細書に記載された主題は、さまざまなコンポーネントをしばしば例示しており、これらのコンポーネントは、他のさまざまなコンポーネントに包含されるか、または他のさまざまなコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的に接続可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【０１２０】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【０１２１】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。
【０１２２】
さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【０１２３】
さらに、本開示の特徴や側面がマーカッシュグループの用語で記載されている場合には、当業者であれば、本開示は、そのマーカッシュグループの個々の構成要素または複数の構成要素からなるサブグループでもまた記載されることを理解すべきである。
【０１２４】
当業者であれば理解するように、任意のおよびすべての目的について、記載された説明を提供することに関し、本明細書で開示されているすべての範囲は、任意のおよびすべての可能性のある下位の範囲と下位の範囲の組み合わせとに及ぶ。任意のリスト化されている範囲は、同一の範囲が、少なくとも、等しい２分の１、３分の１、４分の１、５分の１、１０分の１などに分割されることを十分に説明し可能にしているものとして、容易に認識され得る。非限定的な例として、本明細書で論じられたそれぞれの範囲は、下位の３分の１、中間の３分の１、上位の３分の１などに容易に分割することができる。当業者であれば容易に理解するように、「まで」、「少なくとも」、「超える」、「未満」などのすべての言葉は、言及された数字を含み、上述したように、以後に下位の範囲に分割することができる範囲にも及ぶ。最後に、当業者に理解されるように、範囲はそれぞれの個別の構成要素を含む。したがって、たとえば、１から３個のセルを有するグループは、１、２または３個のセルを有するグループに及ぶ。同様に、１から５個のセルを有するグループは、１、２、３、４または５個のセルを有するグループに及ぶ、などである。
【０１２５】
さまざまな態様および実施形態が本明細書で開示されているが、他の態様および実施形態が当業者には明らかになるであろう。本明細書で開示されたさまざまな態様および実施形態は例示の目的のためのものであり、限定を意図したものではなく、真の範囲および精神は、以下の特許請求の範囲によって示されている。
【図１】
0005640157.tif 000011
【図２】
0005640157.tif 000012
【図３】
0005640157.tif 000013
【図４】
0005640157.tif 000014
【図５】
0005640157.tif 000015
【図６】
0005640157.tif 000016
【図７】
0005640157.tif 000017
【図８】
0005640157.tif 000018
【図９】
0005640157.tif 000019
【図１０Ａ】
0005640157.tif 000020
【図１０Ｂ】
0005640157.tif 000021
【図１０Ｃ】
0005640157.tif 000022
【図１０Ｄ】
0005640157.tif 000023
【図１１】
0005640157.tif 000024
【図１２】
0005640157.tif 000025
【図１３】
0005640157.tif 000026
【図１４】
0005640157.tif 000027
【図１５】
0005640157.tif 000028
【図１６】
0005640157.tif 000029
【図１７】
0005640157.tif 000030
【図１８】
0005640157.tif 000031
【図１９】
0005640157.tif 000032