ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

dwt2

単一レベル 2 次元離散ウェーブレット変換

説明

dwt2 は、単一レベル 2 次元ウェーブレット分解を計算します。dwt2 と比較すると、wavedec2 の方が用途によっては便利な場合もあります。分解は、特定のウェーブレット (詳細については wfilters を参照) または特定のウェーブレット分解フィルターのいずれかに対して行われます。

[cA,cH,cV,cD] = dwt2(X,wname) は、wname ウェーブレットを使用して入力データ X の単一レベル 2 次元離散ウェーブレット変換 (DWT) を計算します。dwt2 は、Approximation 係数の行列 cA と Detail 係数の行列 cH (水平方向)、cV (垂直方向)、および cD (対角方向) を返します。

[cA,cH,cV,cD] = dwt2(X,LoD,HiD) は、ウェーブレット分解のローパス フィルター LoD とハイパス フィルター HiD を使用して単一レベル 2 次元 DWT を計算します。分解フィルターは同じ長さでなければなりません。

[cA,cH,cV,cD] = dwt2(___,'mode',extmode) は、拡張モード extmode で単一レベル 2 次元 DWT を計算します。この引数を他のすべての引数の後に含めます。

すべて折りたたむ

イメージを読み込んで表示します。

load woman
imagesc(X)
colormap(map)

次数 4 の Symlet と周期的拡張を使用して、イメージの単一レベル 2 次元離散ウェーブレット変換を求めます。

[cA,cH,cV,cD] = dwt2(X,'sym4','mode','per');

垂直方向の Detail 係数と Approximation 係数を表示します。

imagesc(cV)
title('Vertical Detail Coefficients')

imagesc(cA)
title('Approximation Coefficients')

イメージを読み込んで表示します。

load sculpture
imagesc(X)
colormap gray

Haar ウェーブレットのローパス分解フィルターとハイパス分解フィルターを生成します。

[LoD,HiD] = wfilters('haar','d');

フィルターを使用して、単一レベル 2 次元ウェーブレット分解を実行します。半分の点の対称拡張を使用します。Approximation 係数と Detail 係数を表示します。

[cA,cH,cV,cD] = dwt2(X,LoD,HiD,'mode','symh');
subplot(2,2,1)
imagesc(cA)
colormap gray
title('Approximation')
subplot(2,2,2)
imagesc(cH)
colormap gray
title('Horizontal')
subplot(2,2,3)
imagesc(cV)
colormap gray
title('Vertical')
subplot(2,2,4)
imagesc(cD)
colormap gray
title('Diagonal')

入力引数

すべて折りたたむ

入力データ。インデックス付きイメージを表す mn 列の行列かトゥルーカラー イメージを表す m x n x 3 の配列として指定します。トゥルーカラー イメージの詳細については、RGB (トゥルーカラー) イメージ (MATLAB)を参照してください。

データ型: double

2 次元 DWT の計算に使用する解析ウェーブレット。文字ベクトルまたは string スカラーとして指定します。解析ウェーブレットは、Daubechies、Coiflets、Symlets、Fejér-Korovkin、Discrete Meyer、Biorthogonal、Reverse Biorthogonal のいずれかのウェーブレット ファミリから指定します。各ファミリの利用可能なウェーブレットについては、wfilters を参照してください。

ウェーブレット分解ローパス フィルター。偶数長の実数値のベクトルとして指定します。LoDHiD と同じ長さでなければなりません。

ウェーブレット分解ハイパス フィルター。偶数長の実数値のベクトルとして指定します。HiDLoD と同じ長さでなければなりません。

DWT の実行時に使用する拡張モード。次のいずれかとして指定します。

mode

DWT 拡張モード

'zpd'

ゼロ拡張

'sp0'

次数 0 の平滑化拡張

'spd' (または 'sp1')

次数 1 の平滑化拡張

'sym' または 'symh'

対称拡張 (半分の点): 境界値の対称的な複製

'symw'

対称拡張 (全点): 境界値の対称的な複製

'asym' または 'asymh'

非対称拡張 (半分の点): 境界値の非対称の複製

'asymw'

非対称拡張 (全点): 境界値の非対称の複製

'ppd'

周期化拡張 (1)

'per'

周期化拡張 (2)

信号長が奇数の場合、wextend は最後の値と等しい追加サンプルを右に追加し、'ppd' モードを使用して拡張を実行します。そうでない場合、'per''ppd' に縮小します。このルールはイメージにも適用されます。

既定の拡張モードは dwtmode で管理されるグローバル変数で指定されます。

例: [cA,cH,cV,cD] = dwt2(x,'db4','mode','symw');

出力引数

すべて折りたたむ

Approximation 係数。サイズが X に応じて異なる配列として返されます。sx = size(X) および lf = 分解フィルターの長さとします。

  • DWT 拡張モードが周期化に設定されている場合、この出力のサイズは ceil(sx/2) です。

  • それ以外の拡張モードの場合、この出力のサイズは floor((sx+lf-1)/2) です。

データ型: double

水平方向の Detail 係数。サイズが X に応じて異なる配列として返されます。sx = size(X) および lf = 分解フィルターの長さとします。

  • DWT 拡張モードが周期化に設定されている場合、この出力のサイズは ceil(sx/2) です。

  • それ以外の拡張モードの場合、この出力のサイズは floor((sx+lf-1)/2) です。

データ型: double

垂直方向の Detail 係数。サイズが X に応じて異なる配列として返されます。sx = size(X) および lf = 分解フィルターの長さとします。

  • DWT 拡張モードが周期化に設定されている場合、この出力のサイズは ceil(sx/2) です。

  • それ以外の拡張モードの場合、この出力のサイズは floor((sx+lf-1)/2) です。

データ型: double

対角方向の Detail 係数。サイズが X に応じて異なる配列として返されます。sx = size(X) および lf = 分解フィルターの長さとします。

  • DWT 拡張モードが周期化に設定されている場合、この出力のサイズは ceil(sx/2) です。

  • それ以外の拡張モードの場合、この出力のサイズは floor((sx+lf-1)/2) です。

データ型: double

アルゴリズム

イメージの 2 次元ウェーブレット分解のアルゴリズムは 1 次元の場合と同様です。2 次元のウェーブレット関数とスケーリング関数は、1 次元のウェーブレット関数とスケーリング関数のテンソル積を取ることで得られます。このような 2 次元の DWT は、4 つの成分 (レベル j + 1 の Approximation と 3 つの方向 (水平、垂直、対角方向) の Detail) におけるレベル j の Approximation 係数の分解になります。次のチャートに、イメージの基本的な分解ステップを示します。

  • — 列をダウンサンプリング: 偶数のインデックスが付いた列を維持

  • — 行をダウンサンプリング: 偶数のインデックスが付いた行を維持

  • — フィルター X でエントリの行を畳み込み

  • — フィルター X でエントリの列を畳み込み

分解は、Approximation 係数をイメージ s と等しくなるように設定 (CA0=s) することで初期化されます。

メモ

畳み込みに基づくアルゴリズムによる信号の端点の影響に対処するために、1 次元および 2 次元の DWT では dwtmode で管理されるグローバル変数を使用します。この変数で、使用される信号拡張モードの種類が定義されます。使用可能なオプションとしては、ゼロ パディング拡張や対称拡張 (既定のモード) があります。

参照

[1] Daubechies, I. Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: SIAM Ed, 1992.

[2] Mallat, S. G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation,” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 11, Issue 7, July 1989, pp. 674–693.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

R2006a より前に導入