How to image de-noise whit (Wavelet) using dwt3 and idwt3

조회 수: 2 (최근 30일)
lech king
lech king 2020년 11월 27일
답변: Suraj Kumar 2025년 4월 3일
Hello
I have implemented using dwt2 and idwt2
But I have not used dwt3 and idwt3 so far. Is it possible to help me with these commands to de-noiseize ??
Thank you
My code:
pic=imread('lena.jpg');
pic1=rgb2gray(pic);
pic11=im2double(pic1);
pic2 = imnoise(pic1,'gaussian',0.0001);
pic3=im2double(pic2);
%%%%%%Symlet%%%%%%%%%%%%
wavename='sym2';
[LoD,HiD]=wfilters(wavename,'d');
%First level
[cA,cH,cV,cD]=dwt2(pic3,LoD,HiD,'mode','per');
%Second level
[cAA,cAH,cAV,cAD]=dwt2(cA,LoD,HiD,'mode','per');
Level1=[Norm(cAA),Norm(cAH);Norm(cAV),Norm(cAD)];
pic4=([Level1,Norm(cH);Norm(cV),Norm(cD)]);
%%%%%%%%Inverse%%%%%%%%%%
Tr=0.3;
cAH1=cAH;cAH1(abs(cAH1)<Tr)=0;
cAV1=cAV;cAV1(abs(cAV1)<Tr)=0;
cAD1=cAD;cAD1(abs(cAD1)<Tr)=0;
cH1=cH;cH1(abs(cH1)<Tr)=0;
cV1=cV;cV1(abs(cV1)<Tr)=0;
cD1=cD;cD1(abs(cD1)<Tr)=0;
cAr=idwt2(cAA,cAH1,cAV1,cAD1,wavename,size(cA));
pic5=idwt2(cAr,cH1,cV1,cD1,wavename,size(pic3));
Level2=[Norm(cAA),Norm(cAH1);Norm(cAV1),Norm(cAD1)];
pic6=([Level2,Norm(cH1);Norm(cV1),Norm(cD1)]);
%%%%%%Soft Thresholding%%%%%%%
cAH2=abs(cAH1-Tr);
cAV2=abs(cAV1-Tr);
cAD2=abs(cAD1-Tr);
cH2=abs(cH1-Tr);
cV2=abs(cV1-Tr);
cD2=abs (cD1-Tr);
cAr2=idwt2(cAA,cAH2,cAV2,cAD2,wavename,size(cA));
pic7=idwt2(cAr2,cH1,cV1,cD1,wavename,size(pic3));
Level2=[Norm(cAA),Norm(cAH2);Norm(cAV2),Norm(cAD2)];
pic8=([Level2,Norm(cH2);Norm(cV2),Norm(cD2)]);

답변 (1개)

Suraj Kumar
Suraj Kumar 2025년 4월 3일
Hi Lech,
To extend your 2D wavelet denoising approach to 3D using 'dwt3' and 'idwt3', we will need to adjust the code to handle 3D data. The 'dwt3' and 'idwt3' functions in MATLAB are used for 3D discrete wavelet transforms.So to extend the approach to 3D case, we have to go through the following modifications:
1. We can create a simple 3D structure by stacking the image using the 'repmat' function. Then we can use the 'dwt3'function to perform a 3D wavelet transform which will provide us with the approximation and detailed coefficients.
volData = repmat(pic3, [1, 1, 3]);
[dec, sizes] = dwt3(volData, 'sym2', 'mode', 'per');
2. Then we can apply a threshold to the detail coefficients to suppress noise and use 'idwt3' function to reconstruct the denoised 3D volume.
Tr = 0.3;
dec.dec{2}(abs(dec.dec{2}) < Tr) = 0;
dec.dec{3}(abs(dec.dec{3}) < Tr) = 0;
dec.dec{4}(abs(dec.dec{4}) < Tr) = 0;
volDataDenoised = idwt3(dec);
imshow(volDataDenoised(:, :, 1), []);
For more information on the functions used above, please refer to the following documentation links:

카테고리

Help CenterFile Exchange에서 Wavelet Toolbox에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by