1-6 離散ウェブレット変換



すべてのスケールについてウェブレット係数を計算するのは かなりの量の仕事であり、膨大な量のデータを作り出す。 これでは、限られた大きさのスケールでしかも信号のごく一部分を選ぶなら、その計算結果はどうなるのだろう?。

そこで、スケールの大きさや位置を、2分子と呼ばれるスケールと位置の、2の累積的に選んだら、 その解析は十分有効で正確なものとなるだろう。このような手法を離散ウェブレット変換(DWT:Discrete wavelet Transform) と呼ぶ。

離散ウェブレット変換を、フィルタを用いて実行する手法が、 1988年、マラット(Mallat)によって開発された。

この非常に実用的なフィルタリング アルゴリズムは、信号を通すだけですぐにウェブレット係数が出力される 高速ウェブレット変換を可能にした。


1段階フィルタリング:近似と詳細

多くの信号にとって、低周波数成分は信号に個性を与えるもので、最も重要な部分である。 一方、高周波成分は信号に微妙な特徴を与える。人間の声で考えてみよう。 高周波数成分を取り除くと声質は変わってしまうが、話している内容はまだ理解できる。 しかし、低周波数成分を取り除くと、何を話しているのかわからなくなってしまう。

このことから、ウェブレット解析において、近似(approximation)、詳細(detail)という言葉が使われる。

近似は大きいスケール、つまり、信号の低周波数成分である。 詳細は小さいスケール、つまり、信号の高周波数成分である。 最も基本的なフィルタリング工程は、下図のようなものである:

オリジナル信号Sは、互いに補い合うような二つのフィルタを 通過することにより、二つの信号となって現れる。

実際のディジタル信号でこの操作を実行すると、 データ数は初めの2倍になってしまう。 たとえば、オリジナル信号Sが1000個のデータサンプルから なっているとすると、近似と詳細はそれぞれ 1000個ずつのサンプルを持っていて、 あわせて2000個となってしまう。

この問題を解決するために、ダウンサンプリングを導入する。 これについては後で詳しく説明する。


上図の右側はダウンサンプリングを含んだ過程で、 離散ウェブレット変換係数を作り出している。

このプロセスをより理解するために、 信号の1段階離散ウェブレット変換を実行してみよう。 使用する信号は、高周波数ノイズが加えられた正弦波である。 下図は実際の信号が、このプロセスに挿入された図である。

cDとcAを生成するのに必要なMATLABコードは次のようなものです:

  s = sin(20.*linspace(0,pi,1000)) + 0.5.*rand(1,1000);
  [cA,cD] = dwt(s,'db2');
ここで"db2"は、解析に使うウェブレットの名前である。

詳細係数 cD は主に高周波数ノイズからなり、 近似係数 cA が含んでいるノイズは、オリジナル信号よりも はるかに少なくなっていることに注目しよう。

  [length(cA) length(cD)]
  ans = 
  	501   501
詳細と近似の長さが、オリジナル信号の長さの半分より、 少しだけ長いことに気づいただろう。 これは、フィルタリングプロセスが、 信号とともにフィルタも巻き込んで、実行されたためで、 このことにより、いくつかの余分なサンプルが 入り込んでしまったものである。


複数レベルの分解

分解過程は、連続的に近似を分解することを繰り返し、 その結果、ひとつの信号が、たくさんのより低い分解成分に分解される。 これを、ウェブレット分解ツリーと呼ぶ。

信号のウェブレット分解ツリーを見ることにより、 価値のある情報が得られることがわかる。

レベル数

解析過程が繰り返されるので、理論上は限界なく続けられる。 実際に分解は、個々の詳細が1サンプルまたは1ピクセルだけになるまで、 続けることができる。 実際には、信号の性質にに基づいてレベルの適切な数か、エントロピーのような 適切な基準を選択することになる。




BACK 】 【 NEXT