0

10ポイントのドブシーフィルターを使用して、画像の4レベルのDWTを取得しようとしています。(そして自然にそれを反転させます!)

host = double(imread('lena512.bmp'));       % Load image data
nLevel = 4;                                 % Number of decompositions
cwA = cell(1,nLevel);                       % Approximation coefficients
cwH = cell(1,nLevel);                       % Horizontal detail coefficients
cwV = cell(1,nLevel);                       % Vertical detail coefficients
cwD = cell(1,nLevel);                       % Diagonal detail coefficients

% Do the DWT
myImage = host;
for iLevel = 1:nLevel,
  [cwA{iLevel},cwH{iLevel},cwV{iLevel},cwD{iLevel}] = dwt2(myImage,'db10');
  myImage = cwA{iLevel};
end

% Do the inverse DWT
fullRecon = cA{nLevel};
for iLevel = nLevel:-1:1
  fullRecon = idwt2(fullRecon,cH{iLevel},cV{iLevel},cD{iLevel},'db10');
end

上記のコードは私にエラーを出し続けます:

??? ==>と行列の次元の使用エラーは一致する必要があります。

==> idwt2 at 93 x = upsconv2(a、{Lo_R、Lo_R}、sx、dwtEXTM、shift)+ ...%近似のエラー。

==>ダミーの18でのエラーfullRecon=idwt2(fullRecon、cH {iLevel}、cV {iLevel}、cD {iLevel}、'db10');

これは、逆dwtがファンキーなことをしているためだと思います。また、dwtmodeを変更してみましたが、役に立ちませんでした。私は本当にどんな助けにも感謝します。

PS:lena512.bmpは、レナのグレースケール画像です。寸法は512x512です。

私は新鮮なアイデアを受け入れています=)

4

1 に答える 1

1

コードを次のように書き換えます

clear all;
host = double(imread('lena512.bmp'));       % Load image data
nLevel = 4;                                 % Number of decompositions
cwA = cell(1,nLevel);                       % Approximation coefficients
cwH = cell(1,nLevel);                       % Horizontal detail coefficients
cwV = cell(1,nLevel);                       % Vertical detail coefficients
cwD = cell(1,nLevel);                       % Diagonal detail coefficients

% Size matrix
s = [size(host,1) size(host,2)];

% Do the DWT
myImage = host ;
for iLevel = 1:nLevel
  [cwA{iLevel},cwH{iLevel},cwV{iLevel},cwD{iLevel}] = dwt2(myImage, 'db10');
  s = [s; size(cwH{iLevel},1) size(cwH{iLevel},2)];
  myImage = cwA{iLevel};
end

% Do the inverse DWT
fullRecon = cwA{nLevel};
for iLevel = nLevel:-1:1
  fullRecon = idwt2(fullRecon,cwH{iLevel},cwV{iLevel},cwD{iLevel},'db10',s(iLevel,:));
end

私の問題を修正しました。それが他の人に役立つことを願っています...

于 2011-06-12T22:36:34.377 に答える