Transformada Daubechies-4 em MATLAB
-
27-09-2019 - |
Pergunta
Eu tenho uma matriz 4x4 que desejo decompor em 4 bandas de frequência (LL, HL, LH, HH onde L = baixo, H = alto) usando uma transformada wavelet Daubechies-4 de um nível.Como resultado da transformação, cada banda deverá conter coeficientes 2x2.Como posso fazer isso no MATLAB?Eu sei que o MATLAB tem dbaux
e dbwavf
funções.No entanto, não tenho certeza de como usá-los e também não tenho a caixa de ferramentas wavelet.
Qualquer ajuda é muito apreciada.
Obrigado.
Solução
Você tentou isso?
N = length(S);
S = transpose(S);
s1 = S(1:2:N-1) + sqrt(3)*S(2:2:N);
d1 = S(2:2:N) - sqrt(3)/4*s1 - (sqrt(3)-2)/4*[s1(N/2) s1(1:N/2-1)];
s2 = s1 - [d1(2:N/2) d1(1)];
s = (sqrt(3)-1)/sqrt(2) * s2;
d = (sqrt(3)+1)/sqrt(2) * d1;
Cortesia http://en.wikipedia.org/wiki/daubechies_wavelet#implementation
Outras dicas
Eu acho que Ivan Selesnick pacote de software wavelet aperta todos os botões certos para você.Abrange os casos separáveis 1D, 2D e 3D...implementação e tutorial do matlab!Não requer a caixa de ferramentas Wavelet, mas provavelmente requer a caixa de ferramentas de processamento de sinal (não tenho certeza sobre a caixa de ferramentas de processamento de imagem).Ele também fornece código para transformações wavelet mais avançadas, para que você possa explorar técnicas alternativas.