Matlab probléma DWT

szavazat
0

Én próbálok a 4. szint DWT egy kép a 10 pont Daubechies szűrőt. (És természetesen megfordításával is!)

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

A fenti kód tartja, hogy nekem a hiba:

??? Hiba segítségével ==> plusz Matrix méretei meg kell egyeznie.

Hiba a ==> idwt2 át 93 x = upsconv2 (a, {Lo_R, Lo_R}, sx, dwtEXTM, műszak) + ...% közelítése.

Hiba a ==> dummy 18 fullRecon = idwt2 (fullRecon, cH {iLevel}, cV {iLevel}, CD {iLevel}, 'db10');

Ez azt hiszem, annak köszönhető, hogy az inverz DWT csinál valami funky cucc. Én is próbáltam a változó dwtmode de ez sem segített. Én nagyon appriciate segítségre.

PS: lena512.bmp csak szürkeárnyalatos képet Lena. Ez méretei 512x512.

Nyitott vagyok az új ötletek =)

A kérdést 12/06/2011 13:36
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Átírta a kódot

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

rögzített az én problémám. Remélem ez segít másoknak ...

Válaszolt 12/06/2011 21:36
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more