how to apply dwt and inverse dwt for an image
이전 댓글 표시
hi all..im writing a code for getting an image and perform dwt for one level to get 4 sub bands and apply inverse dwt to reconstruct the image. The LL band should contain the intensity imformation of the image but for me the figure for LL is plain white and when tried for reconstructing image iam getting same white screen image. i am not sure what was the mistake i have done.. the code i have written is shown below,
clear all;
close all;
i=imread('image22.jpg');
sX=size(i);
[LL,LH,HL,HH]=dwt2(i,'db1');
figure(1)
subplot(2,2,1);imshow(LL);title('LL band of image');
subplot(2,2,2);imshow(LH);title('LH band of image');
subplot(2,2,3);imshow(HL);title('HL band of image');
subplot(2,2,4);imshow(HH);title('HH band of image');
X = idwt2(LL,LH,HL,HH,'db1',sX);
figure(2)
imshow(X);
kindly help me to fix the same.
댓글 수: 6
Arnab Banerjee
2016년 12월 4일
편집: Arnab Banerjee
2016년 12월 4일
YEPDIA LEE
2018년 11월 12일
please sir,can you Dme the code mentionned above on decomposition and reconstruction of an image with 2D wavelet transform! you can send it at yepdiamariel26@gmail.com tanks.
Kaviarasi Ezhumalai
2019년 2월 7일
send me the correct code for the above code u have mentioned .
send it at srinivasareddy878@gmail.com
omer hussain
2019년 3월 2일
Dear Dr.,
I am a scholar and i am trying to implement a paper and i stuck in implementing the 3 Level DWT of an grayscale image.
I will be very thankful to you if you can send me the code at ohosain@kku.edu.sa
mariena aloor
2019년 4월 10일
Hai Sir
I want to take the features from blood smear image.So how i will use discrete wavelet transform for feature extraction.
I want the code for second level dwt only for the LL band.Kindly give me the matlab code for feature extraction using discrete wavelet transform my mail id is : aloormariena@gmail.com
Walter Roberson
2019년 4월 10일
채택된 답변
추가 답변 (9개)
chaitanya goteti
2015년 9월 8일
3 개 추천
Use uint8 while displaying the bands, like imshow(uint8(LL)). Hope this helps
댓글 수: 1
Afeza Ajirah
2017년 3월 10일
i tried this and it appears like this

umme kulsum
2017년 3월 31일
1 개 추천
You can use imagesc instead of imshow command
Wayne King
2014년 2월 6일
편집: Wayne King
2014년 2월 6일
Are you sure it is just not the scaling of the image in imshow() that is causing you problems?
For example, note:
load woman;
sX = size(X);
[LL,LH,HL,HH]=dwt2(X,'db1');
Xrec = idwt2(LL,LH,HL,HH,'db1',sX);
max(max(abs(X-Xrec)))
The above shows perfect reconstruction. The maximum absolute value of the difference between elements in the original matrix and the reconstructed matrix is on the order of 10^{-13}
댓글 수: 4
Sathish Kumar
2014년 2월 6일
Wayne King
2014년 2월 6일
편집: Wayne King
2014년 2월 6일
I understand what imshow() is used for, but did you verify that you get perfect reconstruction with your image?
Can you attach your image?
shaghayegh alijanian
2015년 7월 23일
i get this error would you please help me? Error using - Integers can only be combined with integers of the same class, or scalar doubles.
Error in jpg4 (line 9) max(max(abs(X) - abs(Xrec)))
Walter Roberson
2017년 1월 24일
max(max(double(abs(X)) - double(abs(Xrec))))
Karbala'a Unvi. Science
2014년 5월 3일
0 개 추천
Hi every one,... I worked on your code and I did some modification on it and I made it work because I have the same project on my PHD project so if you want the modified code I can send it to you when you send me your e-mail. and give me your opinion. yours Zeyad
댓글 수: 3
lavanya valli
2020년 3월 10일
sir plz send me the code vallilavanya04@gmail.com
Tapaswini Hansdah
2020년 4월 17일
sir can you send me aswell ? tapaswinihansdah1996@gmail.com
Madhu Oruganti
2020년 5월 26일
Dear sir, I am also working for my phD course can you please share the code at oruganti.madhu@gmail.com
Sam
2014년 11월 24일
0 개 추천
At the end of the program just modify it as "imshow(X,[])", and it will work.
댓글 수: 1
Afeza Ajirah
2017년 3월 10일
I tried it, but it still display plain white. Hmm, anyone can help?
Ahmad Shaheen
2016년 12월 17일
0 개 추천
After i=imread('image22.jpg'); insert the following: i=im2double(i); and it will works.
Harmeet Kaur
2018년 1월 2일
편집: Harmeet Kaur
2018년 1월 2일
0 개 추천
hello everyone the above code is not giving the reconstructed image. the output of reconstruction is as follows:
댓글 수: 4
Walter Roberson
2018년 1월 2일
Which above code?
Fatima Munvar
2018년 3월 23일
편집: Walter Roberson
2018년 5월 2일
the following code not giving reconstructed image pls help me with this
close all;
clear all;
X=imread('Lilly_Closeup.bmp');
imshow(X);
i=imresize(X,[512 512]);
figure(1);
imshow(i);
sX=size(X);
[LL,LH,HL,HH]= dwt2(X,'db1');
figure(2)
subplot(2,2,1);imshow(LL);title('LL band of image');
subplot(2,2,2);imshow(LH);title('LH band of image');
subplot(2,2,3);imshow(HL);title('HL band of image');
subplot(2,2,4);imshow(HH);title('HH band of image');
Xrec=idwt2(LL,LH,HL,HH,'db1',sX);
% sx=size(X)
% A1=idwt2(LL,[],[],[],'db1',sX);
% H1=idwt2([],LH,[],[],'db1',sX);
% V1=idwt2(LL,[],HL,[],'db1',sX);
% D1=idwt2(LL,[],[],HH,'db1',sX);
max(max(abs(i-Xrec)));
figure(3);
imshow(Xrec);
I am getting error as below
Error using -
Integers can only be combined with integers of the same class, or scalar doubles.
Error in dwt21 (line 21)
max(max(abs(i-Xrec)));
Walter Roberson
2018년 5월 2일
The line
max(max(abs(i-Xrec)));
tries to calculate something abut then it throws away the results of the calculation. The easiest repair is to comment out the line.
Karbala'a Unvi. Science
2020년 1월 29일
Dear Sir,
Try this code and tell me is it working ornot..
clc, close all;
clear all;
X=imread('3.bmp');
imshow(X);
X= double(X);
i=imresize(X,[512 512]);
figure(1);
imshow(i);
sX=size(X);
[LL,LH,HL,HH]= dwt2(X,'db1');
figure(2)
subplot(2,2,1);imshow(LL);title('LL band of image');
subplot(2,2,2);imshow(LH);title('LH band of image');
subplot(2,2,3);imshow(HL);title('HL band of image');
subplot(2,2,4);imshow(HH);title('HH band of image');
%%
Xrec=idwt2(LL,LH,HL,HH,'db1',sX);
% sx=size(X)
% A1=idwt2(LL,[],[],[],'db1',sX);
% H1=idwt2([],LH,[],[],'db1',sX);
% V1=idwt2(LL,[],HL,[],'db1',sX);
% D1=idwt2(LL,[],[],HH,'db1',sX);
max(max(abs(X-Xrec)))
figure(3);
imshow(uint8(Xrec));
Ankita Bansal
2018년 6월 1일
편집: Ankita Bansal
2018년 6월 1일
Hi Fatima, in your code the sizes of X and i are not equal and you are using X as an input to dwt function. Hence whatever calculation will be done after [LL, LH, HL, HH] = dwt2(X,'db1'); will use X. So, when you try to calculate inverse dwt, the data you will get will be of same size as that of X. Also, the datatype of output of idwt is double whereas i is of uint8 datatype. So, the first reason of getting error is different data type and the second reason is size. To check whether the output you are getting is correct or not you can write max(max(abs(X-uint8(Xrec)))) instead of max(max(abs(i-Xrec))).
if true
% code
end
close all;
clear all;
X=imread('image.png');
imshow(X);
i=imresize(X,[512 512]);
figure;
imshow(i);
sX=size(X);
[LL,LH,HL,HH]= dwt2(X,'db1');
Figure;
subplot(2,2,1);imshow(LL);title('LL band of image');
subplot(2,2,2);imshow(LH);title('LH band of image');
subplot(2,2,3);imshow(HL);title('HL band of image');
subplot(2,2,4);imshow(HH);title('HH band of image');
Xrec=idwt2(LL,LH,HL,HH,'db1',sX);
max(max(abs(X-uint8(Xrec))));
figure;
imshow(Xrec);
Hope this helps
댓글 수: 5
Rahul Kumar Singh
2018년 10월 3일
편집: Rahul Kumar Singh
2018년 10월 3일
max(max(abs(X-uint8(Xrec))));
having problem with this still the reconstructed image is turning out to be white kindly help!
Walter Roberson
2018년 10월 3일
imshow(uint8(Xrec))
Rahul Kumar Singh
2018년 10월 4일
yeah its working now thanks!
Rahul Kumar Singh
2018년 10월 4일
hello, i am currently working on image steganography in transform domain. As i am new to this i only the theoritical part . my question is after getting the subbands LL,LH,HL,HH how do we obtain the wavelet coeffients so that we can divide them into blocks of four and then choose m\2 blocks out of it(where m is the length of the secret message(in bits) to be embedded ) so that 2 bits can be embedded in each block by pattern matrix method.
i hope you understood my question. any suggestion will help.
Karbala'a Unvi. Science
2020년 1월 29일
try this one
clc, close all;
clear all;
X=imread('3.bmp');
imshow(X);
X= double(X);
i=imresize(X,[512 512]);
figure(1);
imshow(i);
sX=size(X);
[LL,LH,HL,HH]= dwt2(X,'db1');
figure(2)
subplot(2,2,1);imshow(LL);title('LL band of image');
subplot(2,2,2);imshow(LH);title('LH band of image');
subplot(2,2,3);imshow(HL);title('HL band of image');
subplot(2,2,4);imshow(HH);title('HH band of image');
%%
Xrec=idwt2(LL,LH,HL,HH,'db1',sX);
% sx=size(X)
% A1=idwt2(LL,[],[],[],'db1',sX);
% H1=idwt2([],LH,[],[],'db1',sX);
% V1=idwt2(LL,[],HL,[],'db1',sX);
% D1=idwt2(LL,[],[],HH,'db1',sX);
max(max(abs(X-Xrec)))
figure(3);
imshow(uint8(Xrec));
pallavi singh
2020년 8월 11일
0 개 추천
SIr,
Can u tell me the code of dwt ?
댓글 수: 4
Walter Roberson
2020년 8월 12일
At the MATLAB command prompt, command
type dwt
pallavi singh
2020년 8월 12일
how can apply dwt & idwt in an image
Walter Roberson
2020년 8월 12일
You have a small number of choices:
- You can apply dwt for every row (of every color plane) independently;
- You can apply dwt for every column (of every color plane) independently;
- You can apply dwt for every row (of every color plane) independently, and transpose the result and apply dwt to every row (of every color plane) of the result. This is similar to the way that fft2() is fft(fft(IMAGE).')
- You can apply dwt for every column (of every color plane) independently, and transpose the result and apply dwt to every column (of every color plane) of the result. This is similar to the way that fft2() is fft(fft(IMAGE).'). In theory this should give the same result as #3
- You can reshape the image into a single continuous row and apply dwt to that
- You can reshape the image into a single continuous column and apply dwt to that
To be clear: dwt can only be used on one vector at a time, so you cannot just apply it to a 2D or 3D (RGB) array.
See also: dwt2()
pallavi singh
2020년 9월 8일
Sir , can u tell me the code of 2D-DWT?
카테고리
도움말 센터 및 File Exchange에서 Image Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!