すべてのスケールについてウェブレット係数を計算するのは
かなりの量の仕事であり、膨大な量のデータを作り出す。
これでは、限られた大きさのスケールでしかも信号のごく一部分を選ぶなら、その計算結果はどうなるのだろう?。
そこで、スケールの大きさや位置を、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ピクセルだけになるまで、
続けることができる。
実際には、信号の性質にに基づいてレベルの適切な数か、エントロピーのような
適切な基準を選択することになる。