A continuación paso a describir la rutina <strong>WIDec</strong> que he programado en MATLAB y se encarga de realizar una descomposición de una de imagen en una wavelet dada.
En realidad el usuario realiza un input de una colección de imágenes, la rutina busca el archivo wtype (que es un listado de nombres de wavelets) y realiza la descomposición de todas y cada una de las imágenes en todas y cada una de las wavelet. Los resultados los almacena en una carpeta con el nombre de la wavelet (carpeta que tiene que estar creada previamente).
El archivo de resultados contiene la imagen original, la imagen reconstruida y todos los coeficientes wavelet.
xA=double(I);% convertimos los valores de la imagen en double
for t=1:nlevel;% nlevel es el número de niveles en que se puede descomponer la imagen, en función de su tamaño (es decir si el tamaño de I es 2^n x 2^n entonces nlevel = n-1)
[A{t},H{t},V{t},D{t}]=dwt2(xA,wtype{nw},'mode','per'); %hacemos la transformación wavelet para cada nivel (wtype{nw}: es una de las wavelet del fichero)
xA=A{t};
end
%%%%% 4 - the image and the details are saved to a file
[iI]=iImage(H,V,D,wtype{nw});%reconstructed image. Realiza una transformada wavelet inversa.
Imágenes sintéticas
Voy a comprobar el funcionamiento de la rutina WIDec, que se encarga de hacer la descomposición en una wavelet definida por el usuario, de una imagen 2<sup>n</sup> x 2<sup>n</sup> dada.
Para ello, además de revisar el código, aplicaré la rutina a una imagen sintética* y analizaré las diferencias entre sus coeficientes wavelet y los que se utilizaron para la construcción de la imagen sintética.
*evidentemente la wavelet ha de ser la misma tanto para la construcción como para la descomposición.
El resultado es que tanto la imagen original como la reconstruida son iguales. Lo mismo se puede decir de los coeficientes wavelet hasta orden 10<sup>-9</sup> aproximadamente.
Imágenes naturales
La rutina también funciona con imágenes naturales.
He realizado una descomposición de un recorte de 512 x 512 sobre la imagen natural imk00327 de la base de imágenes de Van Hateren con la wavelet db2 y calculado la suma sobre el valor absoluto de la diferencia entre la imagen original y la reconstruida, que da cero.
Para poder comparar las imágenes ha sido necesario normalizar las matrices que las describen, lo que he hecho llevando los valores de cada una de ellas al correspondiente valor de la paleta de grises 0 – 255.
Conclusión
La rutina de descomposición de imágenes WIDec funciona correctamente, lo cual era de esperar teniendo en cuenta que me he apoyado directamente en la biblioteca de funciones de MATLAB.
No hay comentarios:
Publicar un comentario