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

wavedec2

2 次元ウェーブレット分解

説明

[C,S] = wavedec2(X,N,wname) は、ウェーブレット wname を使用して行列 X のレベル N のウェーブレット分解を返します。出力の分解構造は、ウェーブレット分解ベクトル C と各レベルの方向ごとの係数の数を含むブックキーピング行列 S で構成されます。

[C,S] = wavedec2(X,N,Lod,Hid) は、指定されたローパスおよびハイパスの分解フィルター LoD および HiD を使用してウェーブレット分解を返します。詳細は、wfilters を参照してください。

すべて折りたたむ

この例では、ウェーブレット分解レベルの Detail のイメージを抽出して表示する方法を示します。

イメージを読み込みます。haar ウェーブレットを使用して、イメージのレベル 2 ウェーブレット分解を実行します。

load woman
[c,s]=wavedec2(X,2,'haar');

レベル 1 の Approximation 係数と Detail 係数を抽出します。

[H1,V1,D1] = detcoef2('all',c,s,1);
A1 = appcoef2(c,s,'haar',1);

wcodemat を使用して、係数をそれらの絶対値に基づいて再スケーリングします。再スケーリングした係数を表示します。

V1img = wcodemat(V1,255,'mat',1);
H1img = wcodemat(H1,255,'mat',1);
D1img = wcodemat(D1,255,'mat',1);
A1img = wcodemat(A1,255,'mat',1);

subplot(2,2,1)
imagesc(A1img)
colormap pink(255)
title('Approximation Coef. of Level 1')

subplot(2,2,2)
imagesc(H1img)
title('Horizontal Detail Coef. of Level 1')

subplot(2,2,3)
imagesc(V1img)
title('Vertical Detail Coef. of Level 1')

subplot(2,2,4)
imagesc(D1img)
title('Diagonal Detail Coef. of Level 1')

レベル 2 の Approximation 係数と Detail 係数を抽出します。

[H2,V2,D2] = detcoef2('all',c,s,2);
A2 = appcoef2(c,s,'haar',2);

wcodemat を使用して、係数をそれらの絶対値に基づいて再スケーリングします。再スケーリングした係数を表示します。

V2img = wcodemat(V2,255,'mat',1);
H2img = wcodemat(H2,255,'mat',1);
D2img = wcodemat(D2,255,'mat',1);
A2img = wcodemat(A2,255,'mat',1);

figure
subplot(2,2,1)
imagesc(A2img)
colormap pink(255)
title('Approximation Coef. of Level 2')

subplot(2,2,2)
imagesc(H2img)
title('Horizontal Detail Coef. of Level 2')

subplot(2,2,3)
imagesc(V2img)
title('Vertical Detail Coef. of Level 2')

subplot(2,2,4)
imagesc(D2img)
title('Diagonal Detail Coef. of Level 2')

この例では、wavedec2 の出力行列の構造を示します。

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

load woman
imagesc(X)
colormap(map)

現在の離散ウェーブレット変換の拡張モードを保存します。

origMode = dwtmode('status','nodisplay');

周期的な境界の処理に変更します。関数 dwtmode で、DWT 拡張モードを変更することを示すメッセージが表示されます。

dwtmode('per');
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!  WARNING: Change DWT Extension Mode  !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                         
*****************************************
**  DWT Extension Mode: Periodization  **
*****************************************
                                         

db1 (Haar) ウェーブレットを使用して、イメージのレベル 3 分解を実行します。

[c,s] = wavedec2(X,3,'db1');

イメージ X と係数ベクトル c の要素の数を返します。それぞれの要素の数が等しいことを確認します。

numel(X)
ans = 65536
numel(c)
ans = 65536

ブックキーピング行列 s を表示します。最初の行に、イメージの粗いスケールの Approximation の次元が表示されます。最後の行に、元のイメージの次元が表示されます。中間の行に、分解の 3 つのレベルの Detail 係数の次元が粗いスケールから細かいスケールの順に表示されます。

s
s = 5×2

    32    32
    32    32
    64    64
   128   128
   256   256

離散ウェーブレット変換の拡張モードを元のモードにリセットします。関数 dwtmode で、DWT 拡張モードを変更することを示すメッセージが表示されます。

dwtmode(origMode);
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!  WARNING: Change DWT Extension Mode  !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                                       
*******************************************************
**  DWT Extension Mode: Symmetrization (half-point)  **
*******************************************************
                                                       

入力引数

すべて折りたたむ

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

分解レベル。正の整数として指定します。wavedec2 では最大レベルの制限は適用されません。ウェーブレット wname を使用した行列 X の分解における最大分解レベルを特定するには、wmaxlev を使用します。最大レベルは、少なくとも 1 つの係数が正しい最後のレベルです。

解析ウェーブレット。文字ベクトルまたは string スカラーとして指定します。

メモ

wavedec2 では、タイプ 1 (直交) とタイプ 2 (双直交) のウェーブレットのみがサポートされます。直交ウェーブレットと双直交ウェーブレットの一覧については、wfilters を参照してください。

直交ウェーブレットまたは双直交ウェーブレットに関連するウェーブレット分解フィルター。偶数長の実数値のベクトルとして指定します。LoD はローパス分解フィルター、HiD はハイパス分解フィルターです。詳細は、wfilters を参照してください。

出力引数

すべて折りたたむ

ウェーブレット分解ベクトル。ベクトル C には、Approximation 係数と Detail 係数がレベルごとに格納されます。ブックキーピング行列 S を使用して C が解析されます。

ベクトル C は、A(N)、H(N)、V(N)、D(N)、H(N-1)、V(N-1)、D(N-1)、…、H(1)、V(1)、D(1) のように編成されます。A、H、V、および D はそれぞれ行ベクトルです。各ベクトルは行列の列方向のストレージです。

  • A には、Approximation 係数が含まれています。

  • H には、水平方向の Detail 係数が含まれています。

  • V には、垂直方向の Detail 係数が含まれています。

  • D には、対角方向の Detail 係数が含まれています。

ブックキーピング行列。行列 S には、各レベルのウェーブレット係数の次元が格納されます。ウェーブレット分解ベクトル C の解析に使用されます。

  • S(1,:) = Approximation 係数 (N) のサイズ。

  • S(i,:) = Detail 係数 (N-i+2) のサイズ (i = 2、...N+1)、S(N+2,:) = size(X)

次の図は、512 行 512 列の行列のウェーブレット分解における CS の関係を示したものです。

X がインデックス付きイメージを表す場合、出力配列 cA、cH、cV、および cD は m 行 n 列の行列です。X がトゥルーカラー イメージを表す場合は、m 行 n 列の各行列が 3 番目の次元に沿って連結される赤、緑、青の色平面を表す m x n x 3 の配列になります。ベクトル C のサイズと行列 S のサイズは、解析対象のイメージのタイプによって異なります。

トゥルーカラー イメージの場合、分解ベクトル C とそれに対応するブックキーピング行列 S を次のように表現できます。

アルゴリズム

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

次のチャートに、イメージの基本的な分解ステップを示します。

ここで、

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

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

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

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

初期化: cA0 = s。

したがって、J = 2 であるとすると、2 次元ウェーブレットのツリーの形式は次のようになります。

参照

[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.

拡張機能

R2006a より前に導入