(57)【特許請求の範囲】
【請求項１】
第１次元と第２次元から成る２次元配列のデータを格納する第１の格納手段と、
前記２次元配列における第１次元に対するウェーブレット変換のベクトル処理を行う第１のベクトル処理手段と、
前記第１次元に対するウェーブレット変換の結果を格納する第２の格納手段と、
前記第１次元に対するウェーブレット変換の結果を転置する転置手段と、
転置結果を格納する第３の格納手段と、
前記転置結果における第１次元に対するウェーブレット変換を行うことで、前記第１次元に対するウェーブレット変換の結果における第２次元に対するウェーブレット変換のベクトル処理を行う第２のベクトル処理手段と、
前記第２次元に対するウェーブレット変換の結果を出力する出力手段と
を備えることを特徴とする処理装置。
【請求項２】
前記転置手段は、前記第１次元に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項１記載の処理装置。
【請求項３】
前記第１のベクトル処理手段は、前記２次元配列における第２次元の方向のデータをベクトル化して、前記第１次元に対するウェーブレット変換を行い、前記第２のベクトル処理手段は、前記転置結果における第２次元の方向のデータをベクトル化して、該転置結果における第１次元に対するウェーブレット変換を行うことを特徴とする請求項１または２記載の処理装置。
【請求項４】
前記第１のベクトル処理手段は、部分ウェーブレット変換を繰り返して、前記第１次元に対するウェーブレット変換を行い、前記第２のベクトル処理手段は、
部分ウェーブレット変換を繰り返して、前記転置結果における第１次元に対するウェーブレット変換を行うことを特徴とする請求項３記載の処理装置。
【請求項５】
前記第１のベクトル処理手段は、前記２次元配列における第２次元の方向のデータをベクトル化して、前記第１次元に対するウェーブレット変換を行うことを特徴とする請求項１または２記載の処理装置。
【請求項６】
前記第２のベクトル処理手段は、前記第１次元に対するウェーブレット変換の結果における第１次元の方向のデータをベクトル化して、前記第２次元に対するウェーブレット変換を行うことを特徴とする請求項１または２記載の処理装置。
【請求項７】
前記第１のベクトル処理手段は、前記２次元配列における第２次元の方向のデータをベクトル化して、前記第１次元に対するウェーブレット変換を行い、前記第２のベクトル処理手段は、該第１次元に対するウェーブレット変換の結果における第１次元の方向のデータをベクトル化して、前記第２次元に対するウェーブレット変換を行うことを特徴とする請求項１または２記載の処理装置。
【請求項８】
多次元配列のデータを格納する第１の格納手段と、
前記多次元配列における１つの次元に対するウェーブレット変換のベクトル処理を行うベクトル処理手段と、
前記１つの次元に対するウェーブレット変換の結果を格納する第２の格納手段と、
前記１つの次元に対するウェーブレット変換の結果を転置する転置手段と、
転置結果を格納する第３の格納手段と、
前記転置結果における前記１つの次元に対するウェーブレット変換を行うことで、前記１つの次元に対するウェーブレット変換の結果における他の次元に対するウェーブレット変換のベクトル処理を行う第２のベクトル処理手段と、
前記他の次元に対するウェーブレット変換の結果に基づく前記多次元配列のウェーブレット変換の結果を出力する出力手段と
を備えることを特徴とする処理装置。
【請求項９】
行列データを格納する第１の格納手段と、
前記行列データの行に対するウェーブレット変換を行う第１の処理手段と、
前記行に対するウェーブレット変換の結果を転置して、転置行列データを生成する転置手段と、
前記転置行列データの行に対するウェーブレット変換を行う第２の処理手段と、
前記転置行列データの行に対するウェーブレット変換の結果を出力する出力手段と
を備えることを特徴とする処理装置。
【請求項１０】
コンピュータのためのプログラムを記録した記録媒体であって、
第１次元と第２次元から成る２次元配列のデータを入力する機能と、
前記２次元配列における第１次元に対するウェーブレット変換のベクトル処理を行う機能と、
前記第１次元に対するウェーブレット変換の結果を転置する機能と、
前記転置結果における第１次元に対するウェーブレット変換を行うことで、前記第１次元に対するウェーブレット変換の結果における第２次元に対するウェーブレット変換のベクトル処理を行う機能と、
前記第２次元に対するウェーブレット変換の結果を出力する機能と
を前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１１】
コンピュータのためのプログラムを記録した記録媒体であって、
行列データを入力する機能と、
前記行列データの行に対するウェーブレット変換を行う機能と、
前記行に対するウェーブレット変換の結果を転置して、転置行列データを生成する機能と、
前記転置行列データの行に対するウェーブレット変換を行う機能と、
前記転置行列データの行に対するウェーブレット変換の結果を出力する機能とを前記コンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
ベクトル計算機を用いて、第１次元と第２次元から成る２次元配列のデータにおける第１次元に対するウェーブレット変換のベクトル処理を行い、
ベクトル計算機を用いて、前記第１次元に対するウェーブレット変換の結果を転置する処理を行い、
ベクトル計算機を用いて、転置結果における第１次元に対するウェーブレット変換を行うことで、前記第１次元に対するウェーブレット変換の結果における第２次元に対するウェーブレット変換のベクトル処理を行う
ことを特徴とする処理方法。
【請求項１３】
ベクトル計算機を用いて、行列データの行に対するウェーブレット変換のベクトル処理を行い、
前記行に対するウェーブレット変換の結果を転置して、転置行列データを生成し、
ベクトル計算機を用いて、前記転置行列データの行に対するウェーブレット変換のベクトル処理を行う
ことを特徴とする処理方法。
【請求項１４】
前記転置手段は、前記行列データの行に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項９記載の処理装置。
【請求項１５】
前記転置する機能は、前記第１次元に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項１０記載のコンピュータ読み取り可能な記録媒体。
【請求項１６】
前記転置行列データを生成する機能は、前記行列データの行に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項１１記載のコンピュータ読み取り可能な記録媒体。
【請求項１７】
前記転置する処理は、前記第１次元に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項１２記載の処理方法。
【請求項１８】
前記行に対するウェーブレット変換の結果の転置において、前記行列データの行に対するウェーブレット変換の結果の対角方向のデータをベクトル化して、ベクトル処理により転置を行うことを特徴とする請求項１３記載の処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、信号処理等において、ベクトル処理を利用したウェーブレット変換を行う処理装置およびその方法に関する。
【０００２】
【従来の技術とその問題点】
近年、局所的な現象を表現／解析するための方法としてウェーブレット変換（wavelet transform ）が注目されており、特に、信号処理の分野においては、音声や画像（または映像）のデジタル信号を圧縮／復元する際に有効なツールであることが指摘されている。また、ウェーブレット変換は、偏微分方程式の解法等の多様な科学技術計算にも用いることができる。
【０００３】
１次元のウェーブレット変換は、入力データをその半分の数の平滑成分（低周波成分）と高周波成分（変化率を表す成分）に分ける部分ウェーブレット変換（ＰＷＴ）を再帰的に繰り返すことで行われる。
【０００４】
今、簡単のため、長さＮ＝２p のベクトルデータｓp ＝（ｓp,0 ，ｓp,1 ，．．．，ｓp,N-1 ）を入力データとし、これに対する次数Ｄのウェーブレット変換の係数（ウェーブレットフィルタ係数）を、ｈ0 ，ｈ1 ，．．．，ｈD-1 とする。このとき、入力データｓp を半分の長さの平滑成分ｓp-1 ＝（ｓp-1,0 ，ｓp-1,1 ，．．．，ｓp-1,N-1 ）と高周波成分ｄp-1 ＝（ｄp-1,0 ，ｄp-1,1 ，．．．，ｄp-1,N-1 ）に変換する部分ウェーブレット変換は、次式で与えられる。
【０００５】
【数１】
0003943224.tif 000002
【０００６】
ここで、記号Σはｉ＝０，１，．．．，２p −１についての総和を表し、ｋの値の範囲はｋ＝０，１，．．．，２p-1 −１である。また、ｉ−２ｋ＜０またはｉ−２ｋ＞Ｄ−１の場合はｈi-2k＝０とし、１−ｉ＋２ｋ＜０または１−ｉ＋２ｋ＞Ｄ−１の場合はｈ1-i+2k＝０とする。この部分ウェーブレット変換は、図１７に示すようにモデル化することができ、これを変換行列ＱN を用いて書くと、次式のようになる。
【０００７】
【数２】
0003943224.tif 000003
【０００８】
変換行列ＱN は、ウェーブレット係数ｈ0 ，ｈ1 ，．．．，ｈD-1 がサイクリックに現れる構成を持ち、例えば、Ｄ＝４、Ｎ＝８の場合は、次式のようになる。
【０００９】
【数３】
0003943224.tif 000004
【００１０】
入力データｓp に対するウェーブレット変換は、図１８に示すように、ｐ回の部分ウェーブレット変換を組み合わせて行われる。各部分ウェーブレット変換の出力ｓr 、ｄr （ｒ＝ｐ−１，ｐ−２，．．．，１）のうち、平滑成分ｓr のみが次の部分ウェーブレット変換の入力として用いられ、最終的には、ｓ0 ＝（ｓ0,0 ）とｄp-2 ，ｄp-1 ，．．．，ｄ0 とがウェーブレット変換の結果として出力される。例えば、Ｄ＝４、Ｎ＝１６＝２4 の場合は、図１９に示すように、入力データｓ4 が４回の部分ウェーブレット変換により変換される。
【００１１】
このように、（１）、（２）式で定義される部分ウェーブレット変換を、その出力に繰り返し適用することで、ウェーブレット変換が行われる。このため、その処理は再帰的または回帰的となり、ベクトル計算機によるベクトル化には向いていない。
【００１２】
また、（１）式または（２）式の右辺の演算をベクトル化することも考えられるが、ウェーブレット係数の次数Ｄは、通常、入力データの長さＮに比べてはるかに小さいため、ベクトル長が短くなってしまう。したがって、十分なベクトル化の効果が得られないという問題もある。
【００１３】
本発明の課題は、ウェーブレット変換をベクトル化して効率よく処理する処理装置およびその方法を提供することである。
【００１４】
【課題を解決するための手段】
１次元データに対するウェーブレット変換はベクトル化に向いていないが、２次元データに対するウェーブレット変換では、ベクトル化の方向を工夫することで、効率のよいベクトル化を実現することができる。２次元のウェーブレット変換は、２次元配列の行列データに対して行われ、まず、すべての行データに対するウェーブレット変換を行った後、得られた行列のすべての列データに対するウェーブレット変換を行うことで完了する。
【００１５】
図１は、このような２次元のウェーブレット変換を行う処理装置の原理図である。図１の処理装置は、第１の格納手段１、第１のベクトル処理手段２、第２の格納手段３、第２のベクトル処理手段４、および出力手段５を備える。
【００１６】
第１の格納手段１は、第１次元と第２次元から成る２次元配列のデータを格納する。
第１のベクトル処理手段２は、上記２次元配列における第１次元に対するウェーブレット変換のベクトル処理を行う。
【００１７】
第２の格納手段３は、上記第１次元に対するウェーブレット変換の結果を格納する。
第２のベクトル処理手段４は、上記第１次元に対するウェーブレット変換の結果における第２次元に対するウェーブレット変換のベクトル処理を行う。
【００１８】
出力手段５は、上記第２次元に対するウェーブレット変換の結果を出力する。
２次元配列のデータが行列データに対応する場合は、例えば、第１次元は行方向に対応し、第２次元は列方向に対応する。第１の格納手段１は、例えば、第２次元の方向をアドレスの連続方向として、２次元配列のデータを格納する。
【００１９】
次に、第１のベクトル処理手段２は、第１の格納手段１内で、第２次元の方向に並んでいる複数のデータをベクトル化して、第１次元の方向に並んでいる複数の１次元データに対する部分ウェーブレット変換のベクトル処理を行う。
【００２０】
このとき、各１次元データに対しては互いに独立に部分ウェーブレット変換が施されるため、これらの部分ウェーブレット変換は並列に行うことができ、ベクトル化に適している。このときのベクトル化の方向は第２次元の方向であるため、第１の格納手段１に対するアクセスは連続アクセスとなり、効率のよいベクトル処理が行われる。
【００２１】
第１のベクトル処理手段２は、この部分ウェーブレット変換を必要な回数だけ繰り返すことで、２次元配列における第１次元に対するウェーブレット変換を行い、変換結果を第２の格納手段３に格納する。
【００２２】
次に、第２のベクトル処理手段４は、第２の格納手段３内で、第１次元の方向に並んでいる複数のデータをベクトル化して、第２次元の方向に並んでいる複数の１次元データに対する部分ウェーブレット変換のベクトル処理を行う。
【００２３】
この場合も、各１次元データに対しては互いに独立に部分ウェーブレット変換が施されるため、これらの部分ウェーブレット変換は並列に行うことができ、ベクトル化に適している。また、このときのベクトル化の方向（第１次元の方向）がアドレスの連続方向になるように、第２の格納手段３の格納方法を工夫することにより、ベクトル処理はさらに効率化される。
【００２４】
この部分ウェーブレット変換を必要な回数だけ繰り返すことで、第１次元に対するウェーブレット変換の結果における第２次元に対するウェーブレット変換が行われる。
【００２５】
そして、出力手段５は、この第２次元に対するウェーブレット変換の結果を、上記２次元配列のデータに対する２次元ウェーブレット変換の結果として出力する。
【００２６】
このように、図１の処理装置によれば、ベクトル化の方向を適切に選ぶことで、２次元配列に含まれる複数の１次元データの部分ウェーブレット変換を効率よく処理することができ、２次元ウェーブレット変換が高速化される。
【００２７】
例えば、図１の第１の格納手段１および第２の格納手段３は、後述する図４のメモリ１３に対応し、第１のベクトル処理手段２および第２のベクトル処理手段４はベクトルユニット１１に対応し、出力手段５は出力装置１８に対応する。
【００２８】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
２次元のウェーブレット変換は、２次元配列の行列データに対して行われ、まず、すべての行データに対するウェーブレット変換を行った後、得られた行列のすべての列データに対するウェーブレット変換を行うことで完了する。
【００２９】
例えば、インタリーブ方式でアドレスを割り当てられた複数のバンクから成るメモリに、図２に示すように行列データが格納されているとすると、各行データは互いに異なるバンクに属することになる。また、各行データに対しては互いに独立に部分ウェーブレット変換が繰り返されるため、これらの部分ウェーブレット変換は並列に行うことができ、ベクトル化に適しているといえる。このときのベクトル化の方向は、アドレスの連続する方向、つまり列方向となり、メモリに対するアクセスは連続アクセスとなる。
【００３０】
図３は、行データに対するウェーブレット変換の後の行列データを示している。図３の各列データに対する部分ウェーブレット変換も、同様にして並列化することができるが、ベクトル化の方向は行方向となり、連続アクセスが行えない。このため、バンクコンフリクト（バンク競合）が発生し、処理速度が著しく低下する。
【００３１】
そこで、行データに対するウェーブレット変換を行った後、列データに対するウェーブレット変換を行う代わりに、行列全体を転置して、転置後の行データに対するウェーブレット変換を行うことにする。これにより、転置前の各列データは互いに異なるバンクに行データとして格納され、ベクトル化の方向は列方向となって、連続アクセスが可能になる。
【００３２】
また、行列を転置するとき、その対角方向のデータに着目してベクトル化することで、バンクコンフリクトを避けて転置を行うことができる。こうして、高速な２次元ウェーブレット変換が実現される。
【００３３】
図４は、本実施形態で用いるベクトル計算機の構成図である。図４のベクトル計算機は、ベクトルユニット１１、スカラユニット１２、メモリ１３、メモリ制御ユニット１４、ＩＯポート１５、およびネットワーク接続ユニット１６を備え、それらはバスにより互いに接続されている。また、ＩＯポート１５には、入力装置１７、出力装置１８、外部記憶装置１９、および媒体駆動装置２０が接続される。
【００３４】
メモリ１３には、ウェーブレット変換の処理に用いられるプログラムとデータが格納される。メモリ１２は、例えばＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含む。
【００３５】
メモリ制御ユニット１４は、ベクトルユニット１１、スカラユニット１２、およびネットワーク接続ユニット１６から発生するアクセス要求を受け取り、メモリ１３に対するアクセスを制御する。ベクトルユニット１１とスカラユニット１２は、メモリ１３を利用してプログラムを実行することにより、必要な処理を行う。
【００３６】
ベクトルユニット１１は、ロードパイプライン３１、ストアパイプライン３２、ベクトルレジスタ３３、加算／論理演算パイプライン３４、および乗算パイプライン３５を含む。これらの各パイプラインは、それぞれ複数要素のデータを同時に処理することができる。ベクトルユニット１１は、これらのパイプラインを用いて複数のベクトル命令を並列に実行することができる。
【００３７】
スカラユニット１２は、キャッシュメモリ、汎用レジスタ、浮動小数点レジスタ、スカラ演算器等を含み、スカラ演算を実行する。
ＩＯポート１５は、入力装置１７、出力装置１８、外部記憶装置１９、および媒体駆動装置２０との間で、入出力データの転送を行う。
【００３８】
入力装置１７は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、オペレータからの指示やデータの入力に用いられる。出力装置１８は、例えば、ディスプレイやプリンタ等であり、処理結果等の出力に用いられる。
【００３９】
外部記憶装置１９は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク（magneto-optical disk）装置等である。この外部記憶装置１９に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ１３にロードして使用することもできる。
【００４０】
媒体駆動装置２０は、可搬記録媒体２１を駆動し、その記録内容にアクセスする。可搬記録媒体２１としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体２１に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ１３にロードして使用することもできる。
【００４１】
ネットワーク接続ユニット１６は、ＬＡＮ（local area network）等の任意のネットワーク（回線）を介して外部の装置と通信し、通信に伴うデータ変換を行う。これにより、必要に応じて、上述のプログラムとデータを外部の装置から受け取り、それらをメモリ１３にロードして使用することができる。
【００４２】
図５は、図４のベクトル計算機にプログラムとデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体２１や外部のデータベース３６に保存されたプログラムとデータは、メモリ１３にロードされる。そして、ベクトルユニット１１とスカラユニット１２は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００４３】
図６は、図４のベクトル計算機による２次元データのウェーブレット変換のフローチャートである。ベクトル計算機は、まず、行ベクトルに対するウェーブレット変換を列の長さに着目してベクトル化し（ステップＳ１）、各行ベクトルのウェーブレット変換を並列に行う（ステップＳ２）。このとき、各行ベクトルの変換結果は対応する元の行ベクトルに格納される。
【００４４】
次に、得られた行列データを転置して（ステップＳ３）、転置後の行列の行ベクトルに対するウェーブレット変換を列の長さに着目してベクトル化する（ステップＳ４）。そして、各行ベクトルのウェーブレット変換を並列に行って（ステップＳ５）、処理を終了する。転置後の行列の行ベクトルと列ベクトルは、それぞれ、転置前の行列の列ベクトルと行ベクトルに対応しているので、ステップＳ５の処理は、転置前の行列の列ベクトルに対するウェーブレット変換に対応する。
【００４５】
図７および図８のフローチャートは、図６のステップＳ２で行われる行ベクトルの変換処理を示している。ここでは、Ｎ行Ｍ列の２次元データに対してウェーブレット変換を行うものとし、メモリ１３に２つの２次元配列Ａ（Ｎ，Ｍ）とＢ（Ｎ，Ｍ）を用意する。
【００４６】
変換対象となる入力データはＡ（Ｎ，Ｍ）に格納し、その行ベクトルに対するウェーブレット変換を行うとき、Ｂ（Ｎ，Ｍ）をＮ行Ｍ列の作業領域として利用する。このウェーブレット変換において繰り返される部分ウェーブレット変換の出力は、Ａ（Ｎ，Ｍ）とＢ（Ｎ，Ｍ）に交互に格納される。
【００４７】
ＮとＭが、Ｎ＝２p とＭ＝２q のように、２の巾で表現できるものとすると、ここでは、長さＭ＝２q の各行ベクトルデータに対して部分ウェーブレット変換をｑ回行うことになる。そして、各部分ウェーブレット変換の高周波成分と最後の部分ウェーブレット変換の平滑成分を、変換結果として生成する。
【００４８】
今、入力データのｊ行目（ｊ＝１，．．．，２p ）の行ベクトルをｓ(j) q ＝（ｓ(j) q,0 ，ｓ(j) q,1 ，．．．，ｓ(j) q,M-1 ）と書くことにすると、行ベクトルｓ(j) q の長さはＭ＝２q となる。図９は、Ｎ＝２p 個の行ベクトルｓ(j) q がＡ（Ｎ，Ｍ）に格納された様子を示している。例えば、各行ベクトルｓ(j) q は、それぞれ異なるメモリバンクに格納される。
【００４９】
最初の部分ウェーブレット変換は、各行ベクトルの２q 個の平滑成分を入力として、２q ／２＝２q-1 個の平滑成分と２q-1 個の高周波成分を出力する。次の部分ウェーブレット変換は、１つ前の部分ウェーブレット変換の出力である２q-1 個の平滑成分を入力として、２q-1 ／２＝２q-2 個の平滑成分と２q-2 個の高周波成分を出力する。このような処理を続けていき、最後の部分ウェーブレット変換は、２個の平滑成分を入力として、１個の平滑成分と１個の高周波成分を出力し、処理を終了する。
【００５０】
ベクトル計算機は、図７の処理を開始すると、まず、部分ウェーブレット変換の繰り返し回数を表す制御変数ｎを１とおき（ステップＳ１１）、配列Ａ（Ｎ，Ｍ）に格納されたデータを入力として、ｎ回目の部分ウェーブレット変換を行う（ステップＳ１２）。
【００５１】
ｎ回目の部分ウェーブレット変換は、配列Ａ（Ｎ，Ｍ）の各行Ａ（ｊ，１：２q+1-n ）に格納された長さ２q+1-n の平滑成分のベクトルｓ(j) q+1-n を入力として、長さ２q+1-(n+1) ＝２q-n の平滑成分のベクトルｓ(j) q-n と長さ２q-n の高周波成分のベクトルｄ(j) q-n を出力する。この変換は、列の長さＮ＝２p をベクトル長として、ｊ＝１，．．．，２p についてベクトル処理される。
【００５２】
ベクトルｓ(j) q+1-n は２q+1-n 個の平滑成分ｓ(j) q+1-n,k （ｋ＝０，．．．，２q+1-n −１）から成り、ベクトルｓ(j) q-n は２q-n 個の平滑成分ｓ(j) q-n,k （ｋ＝０，．．．，２q-n −１）から成り、ベクトルｄ(j) q-n は２q-n 個の高周波成分ｄ(j) q-n,k （ｋ＝０，．．．，２q-n −１）から成る。
【００５３】
そして、得られた平滑成分のベクトルｓ(j) q-n と高周波成分のベクトルｄ(j) q-n は、それぞれ、配列Ｂ（Ｎ，Ｍ）のＢ（ｊ，１：２q-n ）とＢ（ｊ，２q-n ＋１：２q+1-n ）に格納される（ステップＳ１３）。
【００５４】
図１０は、ｎ回目の部分ウェーブレット変換の前の配列Ａ（Ｎ，Ｍ）を示しており、図１１は、その変換の後の配列Ｂ（Ｎ，Ｍ）を示している。これらの配列は、図示されたｎ回目の部分ウェーブレット変換の入出力データ以外に、１〜ｎ−１回目の部分ウェーブレット変換で得られた高周波成分のベクトルｄ(j) q-1 ，ｄ(j) q-2 ，．．．，ｄ(j) q-(n-1) も保持している。
【００５５】
このｎ回目の部分ウェーブレット変換は、（１）、（２）式に準じて次のように記述される。
【００５６】
【数４】
0003943224.tif 000005
【００５７】
ここで、ウェーブレット係数の次数をＤとすると、ｉ−２ｋ＜０またはｉ−２ｋ＞Ｄ−１の場合はｈi-2k＝０とみなし、１−ｉ＋２ｋ＜０または１−ｉ＋２ｋ＞Ｄ−１の場合はｈ1-i+2k＝０とみなす。
【００５８】
次に、ベクトル計算機は、Ｂ（ｊ，２q-n ＋１：２q+1-n ）に格納された変換結果のベクトルｄ(j) q-n をＡ（ｊ，２q-n ＋１：２q+1-n ）にコピーし（ステップＳ１４）、ｎをｑと比較する（ステップＳ１５）。ｎがｑに達していないときは、ｎ＝ｎ＋１とおき（図８、ステップＳ１７）、配列Ｂ（Ｎ，Ｍ）に格納されたデータを入力として、ｎ回目の部分ウェーブレット変換（次の部分ウェーブレット変換）を行う（ステップＳ１８）。この変換も、ステップＳ１２と同様に、ベクトル処理される。
【００５９】
次に、得られた平滑成分のベクトルｓ(j) q-n と高周波成分のベクトルｄ(j) q-n を、それぞれ、配列Ａ（Ｎ，Ｍ）のＡ（ｊ，１：２q-n ）とＡ（ｊ，２q-n ＋１：２q+1-n ）に格納し（ステップＳ１９）、ｎをｑと比較する（ステップＳ２０）。ｎがｑに達していないときは、ｎ＝ｎ＋１とおき（ステップＳ２１）、図７のステップＳ１２以降の処理を繰り返す。
【００６０】
そして、ステップＳ１５においてｎ＝ｑになったときは、配列Ｂ（Ｎ，Ｍ）の１列目のＢ（ｊ，１）に格納された変換結果ｓ(j) 0,0 を、Ａ（ｊ，１）にコピーし（ステップＳ１６）、処理を終了する。これにより、行ベクトルに対するウェーブレット変換の結果がすべて配列Ａ（Ｎ，Ｍ）に格納されることになる。また、ステップＳ２０においてｎ＝ｑになったときは、すべての変換結果が既に配列Ａ（Ｎ，Ｍ）に格納されているので、そのまま処理を終了する。
【００６１】
このような処理では、ｑが奇数のとき、ステップＳ１５においてｎ＝ｑとなり、ｑが偶数のとき、ステップＳ２０においてｎ＝ｑとなる。こうして、行ベクトルに対するウェーブレット変換が終了すると、その変換結果は、図１２に示すように、配列Ａ（Ｎ，Ｍ）に格納される。
【００６２】
次に、得られた変換結果の行列の列ベクトルに対してウェーブレット変換を行うわけであるが、仮に、行列の転置を行わずに、複数の列ベクトルに対するウェーブレット変換をベクトル処理するものと仮定してみる。この場合、入力データは、Ｎ＝２p 、Ｍ＝２q となるＮ行Ｍ列の配列Ａ（Ｎ，Ｍ）に、図１３に示すように格納されている。ここで、ＡIJはＩ行Ｊ列の要素Ａ（Ｉ，Ｊ）を表し、ベクトル化の方向は行方向となる。
【００６３】
図１３において、アドレスの連続方向は列方向であるので、各列ベクトルの先頭要素Ａ11，Ａ12，Ａ13，．．．は、メモリ上に長さ２p の間隔を持って配置される。２p がメモリバンクの数に比べてかなり小さい場合は、隣り合う２つの列ベクトルを異なるバンクに格納することも可能であるが、ｐが大きくなると、これらの列ベクトルの要素Ａ11，Ａ12，Ａ13，．．．は、同一のメモリバンクに格納されてしまう。このため、行方向の要素のベクトルアクセス（ロード／ストア）は、バンクコンフリクトのために、著しく性能が劣化する。
【００６４】
これを避けるために、図６のステップＳ３において変換結果の行列を転置している。このとき、同様のバンクコンフリクトの発生を避けるため、図１４の破線の矢印が示すように、対角方向の要素に着目してベクトルアクセスする。図１４において、対角方向の要素Ａ13，Ａ24，Ａ35，．．．の読み出しは、メモリ上で２p ＋１の間隔でのアクセスになる。したがって、これらをベクトル処理によりロードしても、バンクコンフリクトが起こらず、効率のよいベクトル処理が可能になる。
【００６５】
読み出した要素をＭ行Ｎ列の配列Ｂ（Ｍ，Ｎ）に格納するときも、図１５の破線の矢印が示すように、対角方向のベクトルアクセスが行われる。図１５において、対角方向の要素Ａ13，Ａ24，Ａ35，．．．の書き込みは、メモリ上で２q ＋１の間隔でのアクセスになる。したがって、これらをベクトル処理によりストアしても、バンクコンフリクトが起こらず、効率のよいベクトル処理が可能になる。
【００６６】
図１６は、このような転置処理のフローチャートである。この処理では、配列Ａ（Ｎ，Ｍ）を転置して配列Ｂ（Ｍ，Ｎ）に格納するものとする。ベクトル計算機は、まず、対角方向のベクトルを指定する制御変数ｉを１とおき（ステップＳ３１）、Ａ（ｉ−１＋ｊ，ｊ）をＢ（ｊ，ｉ−１＋ｊ）にコピーする（ステップＳ３２）。この処理は、対角方向のベクトルに着目して、ｊ＝１，．．．，ＭＩＮ（Ｎ＋１−ｉ，Ｍ）についてベクトル処理される。ここで、ＭＩＮ（Ｎ＋１−ｉ，Ｍ）は、Ｎ＋１−ｉとＭの最小値を表し、ベクトル長に対応している。
【００６７】
次に、ｉ＝ｉ＋１とおき（ステップＳ３３）、ｉをＮと比較する（ステップＳ３４）。ｉがＮを越えていなければ、ステップＳ３２以降の処理を繰り返す。例えば、ｉ＝１のときは、配列Ａ（Ｎ，Ｍ）の対角線上の要素Ａ11，Ａ22，Ａ33，．．．が配列Ｂ（Ｍ，Ｎ）の対角線上の要素Ｂ11，Ｂ22，Ｂ33，．．．にコピーされ、ｉ＝２，．．．，Ｎのとき、配列Ａ（Ｎ，Ｍ）の対角線より下の部分が転置されて、配列Ｂ（Ｍ，Ｎ）の対角線より上の部分にコピーされる。
【００６８】
ステップＳ３４においてｉがＮを越えれば、次に、ｉを２とおき（ステップＳ３５）、Ａ（ｊ，ｉ−１＋ｊ）をＢ（ｉ−１＋ｊ，ｊ）にコピーする（ステップＳ３６）。この処理は、対角方向のベクトルに着目して、ｊ＝１，．．．，ＭＩＮ（Ｍ＋１−ｉ，Ｎ）についてベクトル処理される。
【００６９】
次に、ｉ＝ｉ＋１とおき（ステップＳ３７）、ｉをＭと比較する（ステップＳ３８）。ｉがＭを越えていなければ、ステップＳ３６以降の処理を繰り返し、ｉがＭを越えれば、処理を終了する。ステップＳ３６の処理をｉ＝２，．．．，Ｍについて繰り返すことで、配列Ａ（Ｎ，Ｍ）の対角線より上の部分が転置されて、配列Ｂ（Ｍ，Ｎ）の対角線より下の部分にコピーされる。例えば、ｉ＝３のとき、図１４の破線が示す対角方向の要素Ａ13，Ａ24，Ａ35，．．．が、図１５に示すように、配列Ｂ（Ｍ，Ｎ）の対角方向の要素Ｂ31，Ｂ42，Ｂ53，．．．にコピーされる。
【００７０】
行列の転置が終了すると、図６のステップＳ４、Ｓ５においては、配列ＡとＢの役割を入れ替えて、ステップＳ１、Ｓ２と同様の処理を行う。ここでは、変換対象となる入力データはＢ（Ｍ，Ｎ）に格納されており、その行ベクトルに対するウェーブレット変換を行うとき、Ａ（Ｍ，Ｎ）をＭ行Ｎ列の作業領域として利用する。このウェーブレット変換において繰り返される部分ウェーブレット変換の出力は、Ａ（Ｍ，Ｎ）とＢ（Ｍ，Ｎ）に交互に格納される。
【００７１】
このように、配列Ａ（Ｍ，Ｎ）、Ｂ（Ｍ，Ｎ）を用い、図７、８においてＮとＭを入れ替えて（つまり、ｐとｑを入れ替えて）、同様の処理を行うことで、転置された配列の行ベクトルについてウェーブレット変換を行うことができる。この変換は、転置前の配列の列ベクトルに対するウェーブレット変換に対応しており、得られた変換結果は、２次元ウェーブレット変換の結果を転置したものに相当する。
【００７２】
図６のアルゴリズムにおいては、２次元配列を行列とみなして、配列の要素が並ぶ方向を行または列と表現しているが、２次元配列を単に２つの次元を持つ配列として定義する場合は、要素の並ぶ方向を第１次元または第２次元と呼ぶことができる。この場合、図６のアルゴリズムは、行を第１次元に置き換え、列を第２次元に置き換えて記述される。
【００７３】
以上説明した実施形態においては、２次元データに対するウェーブレット変換について説明したが、同様のアルゴリズムを用いることで、複数の１次元データに対するウェーブレット変換を効率化することができる。
【００７４】
例えば、コンパイラによるプログラムの最適化において、１次元データのウェーブレット変換が複数含まれることが分かったとき、それらの１次元データを行ベクトルとする２次元配列を生成する。そして、図６のステップＳ１、Ｓ２の処理を行えば、複数の１次元データのウェーブレット変換を、効率よくベクトル処理することができる。
【００７５】
また、３次元以上の多次元のデータについても、ベクトル化の方向をメモリ上でアドレスが連続する方向に揃えてから、各次元のウェーブレット変換を行うことで、同様のベクトル処理の効果が得られるものと考えられる。
【００７６】
さらに、本発明は複数のプロセッシングエレメント（ＰＥ）を有する並列計算機によるウェーブレット変換にも適用可能である。並列計算機においては、変換対象の配列データを複数のＰＥに分割して格納し、必要に応じてＰＥ間でデータ転送を行いながら、ウェーブレット変換を行う。
【００７７】
【発明の効果】
本発明によれば、２次元配列に格納された２次元データまたは複数の１次元データのウェーブレット変換を、ベクトル処理を利用して高速に行うことができる。
【図面の簡単な説明】
【図１】本発明の処理装置の原理図である。
【図２】行データを示す図である。
【図３】列データを示す図である。
【図４】ベクトル計算機の構成図である。
【図５】記録媒体を示す図である。
【図６】２次元ウェーブレット変換のフローチャートである。
【図７】行ベクトルの変換のフローチャート（その１）である。
【図８】行ベクトルの変換のフローチャート（その２）である。
【図９】第１の行列データを示す図である。
【図１０】第２の行列データを示す図である。
【図１１】第３の行列データを示す図である。
【図１２】第４の行列データを示す図である。
【図１３】第５の行列データを示す図である。
【図１４】第６の行列データを示す図である。
【図１５】第７の行列データを示す図である。
【図１６】行列の転置のフローチャートである。
【図１７】部分ウェーブレット変換を示す図である。
【図１８】ウェーブレット変換を示す図である。
【図１９】部分ウェーブレット変換の繰り返しを示す図である。
【符号の説明】
１  第１の格納手段
２  第１のベクトル処理手段
３  第２の格納手段
４  第２のベクトル処理手段
５  出力手段
１１  ベクトルユニット
１２  スカラユニット
１３  メモリ
１４  メモリ制御ユニット
１５  ＩＯポート
１６  ネットワーク接続ユニット
１７  入力装置
１８  出力装置
１９  外部記憶装置
２０  媒体駆動装置
２１  可搬記録媒体
３１  ロードパイプライン
３２  ストアパイプライン
３３  ベクトルレジスタ
３４  加算／論理演算パイプライン
３５  乗算パイプライン
３６  データベース
【図１】
0003943224.tif 000006
【図２】
0003943224.tif 000007
【図３】
0003943224.tif 000008
【図４】
0003943224.tif 000009
【図５】
0003943224.tif 000010
【図６】
0003943224.tif 000011
【図７】
0003943224.tif 000012
【図８】
0003943224.tif 000013
【図９】
0003943224.tif 000014
【図１０】
0003943224.tif 000015
【図１１】
0003943224.tif 000016
【図１２】
0003943224.tif 000017
【図１３】
0003943224.tif 000018
【図１４】
0003943224.tif 000019
【図１５】
0003943224.tif 000020
【図１６】
0003943224.tif 000021
【図１７】
0003943224.tif 000022
【図１８】
0003943224.tif 000023
【図１９】
0003943224.tif 000024