Daubechies-4 ウェーブレットシミュレーター 戻る
信号処理シミュレーター

Daubechies-4 ウェーブレットシミュレーター — db4による多重解像度解析

4タップ直交ウェーブレットdb4で1D信号を多段分解。詳細係数を閾値でゼロ化したときの圧縮率と再構成誤差を可視化し、Haarより滑らかな基底の圧縮性能を体感できます。

パラメータ設定
サンプル数 N=2^k
分解レベル L
詳細係数閾値
信号タイプ(0=正弦, 1=ステップ, 2=ガウス峰)

Nは最も近い2のべきに自動丸めされます(例: 250→256)。境界は巡回畳み込みで処理しています。

計算結果
256
サンプル数 N=2^k
4
分解レベル L
閾値ゼロ化後の非ゼロ係数数
再構成 MSE
原信号・係数・再構成

上から: 原信号 x[n] / 近似係数 a^(L)[n] / 各段の詳細係数 d^(L)[n] / 再構成信号 x_rec[n]

理論・主要公式

Daubechies-4のスケーリング係数 $h_k$ と、対応するウェーブレット係数 $g_k = (-1)^k h_{3-k}$:

$$h_0 = \frac{1+\sqrt3}{4\sqrt2},\ h_1 = \frac{3+\sqrt3}{4\sqrt2},\ h_2 = \frac{3-\sqrt3}{4\sqrt2},\ h_3 = \frac{1-\sqrt3}{4\sqrt2}$$

1段分解(巡回畳み込み + 1/2ダウンサンプル)。近似 $a$、詳細 $d$、信号 $x$、フィルタ長 $K=4$:

$$a[i] = \sum_{k=0}^{3} h_k\,x[(2i+k)\bmod N], \qquad d[i] = \sum_{k=0}^{3} g_k\,x[(2i+k)\bmod N]$$

直交条件 $\sum h_k^2=1,\ \sum g_k^2=1,\ \sum h_k g_k=0$ から、再構成は転置フィルタで一意に得られます。

再構成MSE($N$点平均二乗誤差):

$$\mathrm{MSE} = \frac{1}{N}\sum_{n=0}^{N-1}\bigl(x[n]-x_\text{rec}[n]\bigr)^2$$

Daubechies-4 ウェーブレットシミュレーターとは

🙋
ウェーブレットってフーリエ変換と何が違うんですか?sin/cosで分解するのとどっちがいいんでしょう?
🎓
ざっくり言うと、フーリエは「どの周波数がどれだけ含まれているか」を全体で平均化して見る。ウェーブレットは「どの位置にどの周波数があるか」を局所的に見られるのが強みだ。シミュレーターで信号タイプを「1(ステップ)」にしてみて。フーリエだと無限個のsin/cosが必要だけど、db4だと段差の近くの詳細係数だけが大きくなって、ほとんどはゼロに近い。
🙋
あ、本当だ。詳細係数のグラフがほとんど真ん中だけ尖ってますね。閾値を0.1くらいに上げると、ほぼ全部消えますけど、再構成MSEはそれほど増えない…?
🎓
そこがウェーブレット圧縮の核心だ。「エネルギーが少数の係数に集中する」性質(スパース性)があるから、小さい係数を捨てても元の信号はほぼ復元できる。JPEG2000やMP3の派生規格、医療画像のDICOM圧縮なんかが全部この原理だよ。db4はHaarと違って1次関数まで滑らかに表現できるから、段差の周りのリンギング(不自然な振動)が少ない。
🙋
「分解レベル」を上げるとどうなるんですか?
🎓
レベルLを上げるたびに、近似側をさらに半分にダウンサンプルして同じ分解を繰り返す。これが「多重解像度解析」だ。例えばL=4なら、原信号の長さの1/16の近似と、4段階の詳細係数が得られる。低周波成分はN/16個に圧縮され、高周波は段ごとに細かく見られる。画像で言えば「サムネイル+差分」を再帰的に作るイメージだね。
🙋
信号タイプ0の正弦波だと、詳細係数がほぼゼロですね。Haarだと違うんですか?
🎓
いい観察だ。db4は「1次モーメントが消失」する設計なので、定数や1次の傾きを持つ部分は詳細係数がゼロになる。Haarは0次(定数)だけ消失するから、傾きを持つ部分でも係数が残ってしまう。だから滑らかな信号ではdb4の方が圧倒的にスパースになるんだ。実務で画像や音声を圧縮するなら、Haarではなくdb4以上を選ぶ理由がここにある。

よくある質問

Haarは2タップのフィルタで、矩形の不連続な基底です。Daubechies-4(db4)は4タップで、Haarが持たない「1次モーメントの消失」を持つ最短の直交ウェーブレットです。これにより区分的に1次(線形)まで滑らかな信号を、より少ない係数で精度よく表現できます。ステップやエッジ近傍のリンギングも穏やかになり、画像や音声の圧縮で広く使われています。
Daubechiesは消失モーメント数で番号付けされる無限の家系で、db1(Haar), db2(4タップ), db3(6タップ), …, dbN(2Nタップ)と続きます。Nが大きいほど滑らかですが、フィルタ長が伸び、境界処理のコストやエッジ近傍の解析範囲が広がります。実務では信号の特性と圧縮率のバランスからdb4〜db8あたりが多用されます。
JPEG2000は離散ウェーブレット変換(DWT)をベースにした標準で、可逆圧縮にはCDF 5/3、非可逆圧縮にはCDF 9/7という双直交ウェーブレットを使います。Daubechies系は対称性がないため画像には双直交版がよく使われますが、設計思想はdb4と同じく「少ない係数でエネルギーを集中させる」点にあります。本ツールの1Dデモを2D(行・列)に拡張すれば、そのまま画像のウェーブレット圧縮プロトタイプになります。
ウェーブレット変換は信号のエネルギーを少数の大きな係数に集中させる性質(スパース性)を持ちます。残った小さな詳細係数は主にノイズや微小な変動を表しており、これらをゼロにしても再構成信号への影響は限定的です。ゼロが多い係数列はランレングス符号化などで効率的に圧縮できるため、閾値処理 → エントロピー符号化 が現代の画像・音声圧縮の標準的な流れになっています。

実世界での応用

画像圧縮(JPEG2000・DICOM):JPEG2000は2D離散ウェーブレット変換をコア技術にしており、双直交ウェーブレットを用いて画像をマルチスケールに分解します。医療画像のDICOM圧縮もウェーブレットベースで、可逆・非可逆の両モードがサポートされます。本ツールが示す「少数の大きな係数にエネルギーが集中する」性質が、圧縮率と画質の両立を可能にしています。

音声・音楽の圧縮と分析:MP3の後継規格や音声認識の特徴抽出では、ウェーブレットパケットや適応的ウェーブレット分解が使われます。打楽器のような過渡的な音を、フーリエより少ないパラメータで再現できるため、低ビットレートでも自然な音質を保てます。

地震波・脳波などの非定常信号解析:地震計の波形、心電図、脳波(EEG)、振動センサ信号など「いつ・どんな周波数で・どんな大きさの」イベントが起きたかを知りたい用途で、ウェーブレットは標準ツールです。スパイク検出やノイズ除去のアルゴリズムにdb4〜db8がよく使われます。

CAEにおける信号処理と特徴抽出:振動試験の応答データ、構造ヘルスモニタリング、流体の乱流速度信号などからイベントや異常を抽出する際、ウェーブレット係数の閾値処理によるデノイズが効果的です。FFTでは時間情報が失われるため、ウェーブレットで「いつ何が起きたか」を残せる点が機械学習の前処理としても重宝されています。

よくある誤解と注意点

最も多い誤解は、「ウェーブレットはフーリエの上位互換」と考えてしまうことです。両者は得意分野が違います。定常な周波数解析(電源の50Hz、回転機の固有振動数)はフーリエ変換の方が圧倒的に簡潔で解釈しやすい。一方、過渡現象・段差・局所イベントの解析ではウェーブレットが強い。シミュレーターで信号タイプを「0(純正弦)」にすると、詳細係数がほぼゼロになります。これは正弦波がdb4基底ではスパースに表現できない(=元の正弦の方が簡潔)ためです。用途で使い分けてください。

次に多いのが、「閾値を大きくすれば圧縮率がいくらでも上がる」と思い込むことです。確かに非ゼロ係数数は減りますが、ある臨界点を超えると再構成MSEが急激に増え、信号の主要な特徴が失われます。シミュレーターで閾値スライダーを0から1.0まで動かしながらMSEカードを見ると、ステップ信号では0.1付近までは緩やかで、それ以上で急増する様子が分かります。実務では「許容歪み量」を先に決め、それを満たす最大閾値を選ぶ反復設計が一般的です。

最後に、境界処理の選び方を軽視する点に注意が必要です。本ツールは実装の単純化のため「巡回畳み込み(periodic)」を採用しています。これは信号の両端をつなぐ前提で、実際の信号では端点の不連続が大きな詳細係数を生み、再構成にリンギングが残ることがあります。実務ではゼロパディング、対称拡張(symmetric/反射)、周期拡張のいずれかを信号の性質に合わせて選びます。画像処理では対称拡張、自然なテクスチャでは周期拡張が好まれます。