ウェーブレット変換のソースを表示
←
ウェーブレット変換
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2022年2月}} '''ウェーブレット変換'''('''ウェーブレットへんかん'''、{{lang-en-short|wavelet transformation}})は、周波数解析の手法の一つ。[[基底関数]]として、[[ウェーブレット]][[関数 (数学)|関数]]を用いる。[[フーリエ変換]]によって周波数特性を求める際に失われる[[時間領域]]の情報を、この変換においては残すことが可能である。フーリエ変換でも[[窓関数]]を用いる窓フーリエ変換で時間領域の情報は残せたが、窓幅を周波数に合わせて固定する必要があるため、広い周波数領域の解析には向かなかった。ウェーブレット変換では、基底関数の拡大縮小を行うので、広い周波数領域の解析が可能である。しかし、[[不確定性原理]]によって精度には限界がある。フーリエ変換では、''N'' をデータのサイズとしたときに ''N'' log''N'' の[[ランダウの記号|オーダー]]で[[計算複雑性理論|計算量]]が増える(''O''(''N'' log''N''))が、ウェーブレット変換では ''O''(''N'') の計算量でできる利点がある。 [[VP6]]、[[JPEG 2000]]、[[信号解析]]、[[量子力学]]、[[フラクタル]]等の多くの分野に応用されている。 == 基本概念 == 基本的には、小さい波([[ウェーブレット]])を拡大縮小、平行移動して足し合わせることで、与えられた入力の波形を表現しようとする手法。ある信号が与えられた時に、時間的に局在した周波数成分を知りたい場合でも、[[フーリエ解析]]においては、サイン波、コサイン波を拡大縮小して足し合わせることで入力を表現しようとしていたが、波が局在化していないため、時系列の情報が失われていた。 [[フーリエ変換]]の式<math>(\mathfrak{F} f)(\omega)=\frac{1}{\sqrt{2\pi}}\int dt\, e^{-i\omega t}f(t)</math>に窓を掛け、<math>(T^\text{win} f)(\omega, t)=\frac{1}{\sqrt{2\pi}}\int d\tau\, g(\tau-t)e^{-i\omega \tau}f(\tau)</math>とするのがフーリエ変換における局在化の一般的な手法である。この場合、周波数によって窓の幅が変わることがない。そのため、例えば<math>\sin(\alpha t)+\delta (t-t_{1})</math>の様な波を解析しようとした場合、広い窓を取るとサイン波の周波数ははっきりとするが、パルスの波の情報はぼやける。逆に窓を狭くすればパルスの波ははっきりとするが、サイン波の周波数が見えにくくなるといったことがおこる。 ウェーブレット変換では、周波数に合わせてウェーブレットの幅が変化するので、周波数解像度が格段に良くなる。 ウェーブレット変換は連続量を扱う連続ウェーブレット変換が基本だが、計算機上では連続量を扱うのが難しい。このため信号を無理やり連続ウェーブレット変換の式に従って計算すると、かなりの情報が失われ、逆変換ができなくなる。そこで、逆変換を考慮した形のウェーブレット変換を[[離散ウェーブレット変換]]という。 連続ウェーブレット変換は逆変換を持たないものの、離散ウェーブレット変換よりも緻密な解析ができるという特徴がある。離散ウェーブレット変換は一度変換した情報を加工して逆変換することで、ノイズの除去などに応用することができる。 == 連続ウェーブレット変換 == ウェーブレットは以下の許容条件を満たす。即ち、<math>\hat{\psi}</math>を<math>\psi</math>のフーリエ変換として、 :<math>C_{\psi}=2\pi\int d\xi\left| \xi\right|^{-1}\left| \hat{\psi}(\xi)\right|^{2}<\infty</math> もし<math>\psi\in L^{1}(\mathbf{R})</math>ならば、そのフーリエ変換<math>\hat{\psi}</math>は連続であり、上の許容条件は<math>\hat{\psi}(0)=0</math>つまり<math>\int dx\,\psi (x)=0</math>の時にのみ満たされる。 この許容条件を満たすウェーブレットに対しウェーブレット変換が以下の様に定義される。 :<math>(T^\text{wav} f)(a, b) :=\int dx \left| a\right|^{-1/2}f(x) \overline{\psi\left(\frac{x-b}{a}\right)}</math> ここで、<math>a</math>はscale、<math>b</math>はtranslationを表す。<math>\psi(x)</math>を、マザーウェーブレットと言う。 元の関数は、以下の式で得られる。 :<math>f(x)=C_{\psi}^{-1}\int_{-\infty}^{\infty} da \int_{-\infty}^{\infty} db ~ a^{-2}(T^\text{wav}f)(a,b)\psi\left(\frac{x-b}{a}\right)</math> 例えばウェーブレットには{{仮リンク|メキシカンハット関数|en|Mexican hat wavelet}}<math> \psi(t)=(1-t^{2})\exp(-t^2/2)</math>や、 変形ガウシアン<math>\psi(x)=\pi^{-1/4}(e^{-ix\pi(2/\ln2)^{1/2}}-e^{-ix\pi^{2}(2/\ln2)})e^{-x^{2}/2}</math>などがある。 連続ウェーブレット変換は、FFT([[高速フーリエ変換]])を用いて計算できる。数値計算で連続ウェーブレット変換を求める場合、スケールパラメータ <math> a </math> を変化させながら、マザーウェーブレット <math> \psi(x) </math> と信号 <math> f(x) </math> のフーリエ変換を計算し、畳み込みを計算した後、逆フーリエ変換によって時間領域に戻す事で連続ウェーブレット変換を求める事が出来る。 == 離散ウェーブレット変換 == {{main|離散ウェーブレット変換}} 離散ウェーブレット変換は、元信号を高周波成分と低周波成分に分解し、分解された低周波成分をまた高周波成分と低周波成分に分解するという処理を繰り返し行うことと等価である。そのため多重解像度解析とも呼ばれる。離散ウェーブレット変換は可逆変換であるため、変換そのものに圧縮効果は無いが、変換画像の効率的な符号化方式が開発されたため画像圧縮方式である[[JPEG 2000]]に利用されるようになった。 連続ウェーブレット変換で用いたウェーブレットに対し、 <math>\psi_{m,n}(x)=a_{0}^{-m/2}\psi(a_{0}^{-m}x-nb_{0})</math> として離散化を行う。但し<math>a_{0}>1, b_{0}>0, m\in\mathbf{Z}, n\in\mathbf{Z}</math>とする。<math>a_{0}, b_{0}</math>の値はウェーブレットに対して適切に選ぶ事になる。この場合連続ウェーブレット変換と異なり、[[単位の分解公式]]を用いる事が出来ないため、別の方法で元の関数を復元する必要がある。 離散ウェーブレット変換例([[ハールウェーブレット]]) :<math> \psi(x)= \begin{cases} 1 & (0<x<1) \\ -1 & (-1<x<0) \\ 0 & (\text{otherwise}) \end{cases} </math> をマザーウェーブレットとして用いるならアルゴリズムは for freq in 適当な範囲: for pos in データの範囲: sum = 0 for t in データの範囲: sum += data[t] * phi((t-pos)/freq) result[pos][freq] = sum / sqrt(freq) となるが、tについてのイテレーションに関してphiが明らかに0になる範囲を省くことができるので実際には for freq in 適当な範囲: for pos in データの範囲: sum = 0 for t in range(pos-freq, pos+freq): if t < pos: sum += data[t] else: sum -= data[t] result[pos][freq] = sum / sqrt(freq) となる。これがフーリエ解析より計算量が少なくて済むことの大きな原因である。(アルゴリズムの解説のための[[擬似コード]]であり添え字の範囲チェックなどがないことに注意) == 多重解像度解析とウェーブレット変換 == {{main|多重解像度解析}} 多重解像度解析とは、2倍毎の解像度の[[ウェーブレット]]を用いて解析する手法。 == 正規直交ウェーブレット変換の構成法 == # Riesz基底を成す<math>\phi</math>を、<math>\phi</math>とそのフーリエ変換が適度に速く減衰し<math>\int dx\, \hat{\phi}(x)\neq 0</math>と成るように取る。 # 直交化をする。即ち、新たな関数<math>\hat{\phi ^{\ast}}(\xi)=\hat{\phi}(\xi)\left\{ 2\pi\sum_{l}\mid\hat{\phi}(\xi+2\pi l)\mid^{2}\right\}</math>を作る。 # <math>\phi_{j,n}^{\ast}=2^{j/2}\phi^{\ast} (2^{j}x-n)</math>に対し、<math>\phi^{\ast}=\sum_{n}h^{\ast}_{n}\phi^{\ast}_{1,n}</math>を満たす<math>h^{\ast}_{n}</math>を用いて、<math>\psi=\sum_{n}(-1)^{n}h^{\ast}_{-n+1}\phi ^{\ast}(2x-n)</math>とする。 == 関連項目 == * [[ウェーブレット]] * [[離散ウェーブレット変換]] {{Normdaten}}{{データ圧縮}} {{DEFAULTSORT:うええふれつとへんかん}} [[Category:関数解析学]] [[Category:信号処理]] [[Category:ウェーブレット]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:Normdaten
(
ソースを閲覧
)
テンプレート:データ圧縮
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
ウェーブレット変換
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報