1D DWT unwanted color shift.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello. I would like to ask you for a help. I'm writing a script for 1D dwt and idwt. Input data are spectral values on one pixel of a 3D image (300x300x224). My scripts are finally working but there is some unwanted shift in color. I can't figure out where it happens. I tried matlab's built-in functions and they work fine but I don't want to use them - I want to do the proces "manually".
In my opinion the convolution part is correct. The shifting is probably a result of a bad subtraction of the convolved signal (which is otherwise too long - I think (1,240)).
Please help me. I really don't know how to correct it.
Encoder script
INPUT=(1,224)
[LoD,HiD] = wfilters('db9','d');
L=length(input);
F=length(LoD);
x_l = conv(input,LoD); %Convolving
x_l = x_l(F:2:(F+L-2)); %Decimation and subtracting the wavelet length
x_h = conv(input,HiD); %Covolving
x_h = x_h(F:2:(F+L-2)); %Decimation and subtracting the wavelet length
% final output is [x_l x_h]
OUTPUT=2x(1,112)
Decoder script
INPUT=(1,224)
[LoR,HiR] = wfilters('db9','d');
L=length(input);
F=length(LoR);
mid_val=ceil((length(input))/2); %selecting middle value
x_l=input(1:mid_val); %dividing signal to LP and HP parts
x_h=input(mid_val+1:L);
x_l=upsample(x_l,2); %inserting 0 at even indexes
x_h=upsample(x_h,2);
x_l=conv(x_l,LoR);
x_h=conv(x_h,HiR);
x_l=x_l(F:F+L-1);
x_h=x_h(F:F+L-1);
% final output is [x_l + x_h]
OUTPUT=2x(1,112)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/196052/image.jpeg)
0 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Discrete Multiresolution Analysis dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!