1 TRATAMIENTO DEL RUIDO Facultad: Ingeniería. Escuela: Biomédica Asignatura: Imágenes Médicas Objetivo General Que el estudiante sea capaz de caracterizar los principales tipos de ruido que pueden estar presentes en una imagen. Que el estudiante sea capaz de aplicar, según sea el caso, las técnicas de reducción de ruido más oportunas Recomendaciones Al finalizar la práctica, el laboratorio se debe dejar en la misma condición en que se encontró. Equipo Computadora Personal con Windows y MatLab Introducción Teórica Las imágenes se adquieren por métodos foto electrónicos o fotoquímicos. Los dispositivos sensores tienden a degradar la calidad de las imágenes al introducir ruido, deformaciones geométricas y/o borrosas debido al movimiento o desenfoque de la cámara. Una de las preocupaciones primarias del procesamiento digital de imágenes es aumentar la calidad de la imagen y moderar la degradación introducida por los sensores y dispositivos de adquisición. Las técnicas de restauración de imágenes están interesadas primariamente por reconstruir o recobrar una imagen que ha sido degradada Una discusión más detallada sobre el tratamiento de ruido en imágenes digitales se encuentra en la tesis Diseño y construcción de un sistema de captación y procesamiento de imágenes digitales. de Welmer Tomás Cruz Sosa, Néstor J.
2 Maccagno, Luis A. Marín Villanueva. pag. 78-97. Además se puede encontrar información útil en la bibliografía dada al final de esta guía. Procedimiento 1. Encienda la computadora y corra el programa MATLAB. 2. Digite en la ventana de comandos: >> nrfiltdemo 3. A continuación aparecerá la siguiente ventana la cual permite la exploración de la reducción de ruido en imágenes utilizando para ello tecnicas de filtrado lineales y no lineales aplicada a diferentes tipos de ruido. La imagen a la izquierda de la ventana es la imagen original. Puede utilizar el menú que se encuentra bajo ella para seleccionar otra imagen. La imagen al centro es la imagen original con el ruido elegido sumado. Con el menú Image Noise Type, sepuede elegir entre tres tipos de ruidos (Salt&Pepper, Gaussian, Speckle). Con el campo que se encuentra bajo este menu, se pueden variar las características del ruido seleccionado. Para aplicar el ruido seleccionado basta con dar un click en Add Noise. La imagen a la derecha muestra el resultado de la aplicación de un filtro de remoción de ruido a la imagen del centro. Use los menúes debajo de esta tercera imagen para seleccionar el filtro de reducción del ruido y el tamaño de los vecinos. Para aplicar el filtro basta con dar un click sobre Apply Filter.
3. Escriba la siguiente función que añade ruido impulsivo a una imagen bidimensional: function b=ruidoimp(a,p,imin,imax) Añade ruido impulsivo a una imagen b=ruidoimp(a,p,imin,imax) b: imagen de salida con ruido a: imagen de entrada p: probabilidad del ruido imin: valor del impulso mínimo imax: valor del impulso máximo [m,n]=size(a); a=double(a); np=ceil(p*m*n); turno=0; b=a; for inp=1:np
k=ceil(m*rand); l=ceil(n*rand); if turno==0 turno=1; b(k,l)=imax; else turno=0; b(k,l)=imin; end end b=uint8(b); 5. En la ventana de comandos digite lo siguiente:» a=imread('flowers.tif');» a=rgb2gray(a);» b=ruidoimp(a,0.1,20,256);» figure» imshow(a);» figure» imshow(b); 6. Compare ambas imagenes. 7. Cambie los parámetros de la función ruidoimp y evalue el efecto que ello causa en la imagen. 8. Ahora utilizaremos diferentes funciones que se encuentran en el Image Processing Toolbox para añadir ruido a una imagen determinada.»c=imnoise(a, salt & pepper,0.02); Ruido sal y pimienta»d=imnoise(a, speckle,0.05); Ruido multiplicativo»e=imnoise(a, gaussian,0,0.02); Ruido blanco Gaussiano 9. Estas imágenes serán utilizadas en la siguiente parte.
5 PARTE II. Tecnicas de reducción de ruido en el dominio del espacio. Implementación directa de filtros digitales FIR de dos dimensiones. 10. Los filtros digitales de dos dimensiones con respuesta al impulso finita real (FIR) son sistemas bidimensionales lineales de fase invariante. El filtro de promedio de movimiento es el más simple de los filtros digitales FIR bidimensionles pasa-bajas. Es muy efectivo en remover ruido blanco aditivo Gaussiano. Sin embargo, tiende a hacer borrosos los bordes y los detalles de la imagen (por ejemplo líneas) y degrada la calidad de la imagen. La implementación del filtro de promedio de movimiento puede realizarse usando el siguiente archivo: function b=movav(a,mw,nw) Implementa el filtro de promedio de movimiento b=movav(a,mw,nw) b: imagen de salida filtrada a: imagen de entrada mw: ancho de la ventana nw: alto de la ventana h=ones(nw,mw)/(mw*nw); b=uint8(filter2(h,a,'valid')); 11. El filtro promedio de movimiento es la convolución de una máscara con la imagen, si la máscara es de 3 3n quedaría de la siguiente forma:
6 12. También pueden usarse las siguientes máscaras: 13. Use las máscaras anteriores para filtrar las imagenes c,d y e.» h1=[1,1,1;1,2,1;1,1,1]/10;» f=uint8(filter2(h1,c,'valid'));» g=uint8(filter2(h1,d,'valid'));» h=uint8(filter2(h1,e,'valid'));» figure ()» imshow(f)» figure (5)» imshow(g)» figure (6)» imshow(h) 1. Para cual tipo de ruido funciona mejor la máscara? 15. Qué observa sobre los detalles de la imagen filtrada? 16. Repita los pasos anteriores para la siguiente máscara:» h1=[1,2,1;2,,2;1,2,1]/16; Filtro de mediana 17. El ruido en las imágenes digitales comúnmente aparece en altas frecuencias del espectro de la imagen. Por lo tanto, un filtro digital pasa bajos puede utilizarse para remover el ruido. Sin embargo, los filtros lineales pasa bajos tienden a manchar los detalles de imagen (p. ej. líneas, esquinas), que también tienen su potencia en las altas frecuencias. Se han propuesto filtros no lineales basa bajos que remueven el ruido efectivamente y preservan los bordes y detalles de la imagen. Uno de estos filtros es el filtro de mediana.
7 18. Pruebe el filtro de mediana para eliminar el ruido impulsivo de la imagen b:» h=medfilt2(b,[3,3]);» figure (7);» imshow (b);» figure (8);» imshow (h); 19. Que sucede a medida se aumenta el tamaño del filtro por ejmplo a 5 5? Filtro de mediana multietapa. 20. En el análisis teórico de los filtro de mediana, especialmente el determinístico, se asumen varias cosas, por ejemplo que la imagen consiste de vecinos y bordes constantes. En realidad la imagen tiene detalles finos, p. ej. líneas y esquinas pronunciadas, las cuales son muy valiosas para la visión humana. Estos detalles se destruyen por medianas que tienen ventanas relativamente grandes (mayores que 5 5). Es el proceso de ordenamiento el que destruye la información estructural y espacial de la vecindad. Por ello, se han hecho varios esfuerzos para tomar en cuanta la información estructural. Tal modificación de la mediana lleva a los filtros de mediana multietapas. Los filtros de mediana multietapas conservan los detalles en las direcciones horizontal, vertical y diagonal, porque usan subfiltros que son sensibles a estas direcciones. A continuación se presenta el programa que realiza el filtro de mediana multietapas. function b=muletmed(a,nw,mw) b=muletmed(a,mw,nw) a: imagen de entrada. b: imagen de salida. a=double(a); b=nlfilter(a,[5,5], median(x(3,1:3)),median(x(1:3,3)),median(x(3,3:5)),median (x(3:5,3)),x(3,3)]) ); b=uint8(b); Filtros digitales basados en estadística de ordenamiento. 21. El filtro de mediana y sus modificaciones son casos especiales de una gran clase de filtros que están basados en la estadística de ordenamiento. Tales filtros se basan es estimadores-l o son extensiones del filtro de mediana. Se
8 diseñan para lograr varios criterios, p. ej. preservación de los bordes, robustez, adaptación a la estadística del ruido o preservación de los detalles de la imagen. Un filtro de máximo puede remover efectivamente impulsos negativos (lunares negros) en la imagen, mientras que el filtro de mínimo puede remover los impulsos positivos (lunares blancos). Ambos fallan en remover el ruido impulsivo mezclado, porque los filtros de máximo y mínimo tienden a mejorar los impulsos negativos y positivos respectivamente. Sin embargo, la cascada de los filtros máx y mín puede remover el ruido impulsivo mezclado efectivamente. Aunque su rendimiento es generalmente inferior que el filtro de mediana. Los filtros de máximo y mínimo tienen buenas propiedades de preservación de bordes. Su desventaja es que tiende a intensificar las regiones brillantes y oscuras. 22. Construya un filtro de máximo para eliminar el ruido impulsivo de la imagen g function b=run_max(a,nw,mw) b=run_max(a,mw,nw) a: imagen de entrada. b: imagen de salida. mw: ancho de la ventana. nw: alto de la ventana. a=double(a); b=ordfilt2(a,nw*mw,ones(nw,mw)); b=uint8(b); 23. Pruebe el programa con la siguiente imagen:» g=ruidoimp(a,0.1,3,20);» e=run_max(g,3,3); Filtros estadísticos de ordenamiento adaptativo 2. Los filtros descritos antes están por lo común optimizados para un tipo de ruido específico y algunos para un tipo de señal específico. Sin embargo, esto no es por lo general el caso en muchas aplicaciones de filtrado no lineal, especialmente en el procesamiento de imágenes. Las imágenes pueden modelarse como un proceso estocástico bidimensional, cuya estadística varía en las diferentes regiones de la imagen. Las imágenes son procesos no estacionarios. Por lo tanto las estadísticas del ruido, es decir la desviación estándar del ruido y la función de densidad de probabilidad del ruido, varían
9 de aplicación en aplicación. Algunas veces, las características del ruido varían en la misma aplicación de una imagen a la siguiente. Tales casos son ruido del canal en la transmisión de imágenes y ruido atmosférico en las imágenes por satélite. En estos ambientes, los filtros no adaptativos no funcionan bien, porque sus características dependen de las características del ruido y la señal, las cuales son desconocidas. Por ello, los filtros adaptativos son la solución natural en tales casos. Cree un programa para realizar un filtro adaptativo de menor error cuadrado medio. function b=loc_adap(a,sn,nw,mw) rutina para el filtrado adaptativo 2-d b=loc_adap(a,sn,nw,mw) a: imagen de entrada. b: imagen de salida. sn: varianza del ruido. mw: ancho de la ventana. nw: alto de la ventana. a = double(a); s = filter2(ones(nw,mw)/(nw*mw),a,'same'); sx = nlfilter(a,[nw mw],'std2(x(:))'); snx = sn.*ones(size(a))./sx; snx = (snx>1)+snx.*(snx<=1); ime = round( (ones(size(a))-snx).* a+snx.*s).*(s~=0)+a.*(s==0); b = uint8(ime); 25. Pruebe el filtro adaptativo MMSE (minimal Mean Square Error) con la imagenes c,d y e.» e=loc_adap(c,20,3,3);»figure»imshow(e) Filtros en el dominio de la frecuencia 26. Utilice el filtro de Wiener incorporado en la caja de herramientas de procesamiento»ruido presenta el valor del ruido»[f,ruido]=wiener2(d,[3,3]);determina la potencia del ruido aditivo.»figure»imshow(f)
1 Análisis de resultados 1. Presente sus observaciones y conclusiones. 2. Escriba las características que observó en los tres tipos de ruido vistos en la práctica. 3. Que tipo de filtro recomienda usar para eliminar cada tipo de ruido y por qué?. Por qué las imágenes filtradas son más pequeñas que las originales? 5. Cómo se evita, en la mayoría de los algoritmos vistos, la pérdida de los bordes y propiedades de las imágenes? 6. Qué sucede con el filtro de máximo cuando la imagen tiene ruido sal y pimienta mezclado? Compruebe su explicación al aplicar el filtro a la imagen b. Investigación complementaria 1. Qué es el ruido granular de película y cual es el filtro adecuado para eliminarlo? 2. Investigue acerca del filtro Wiener. 3. Presente un resumen acerca del filtro de mínimo error cuadrado medio.. Investigue sobre los filtros homorfos Bibliografía Digital Image Processing Algorithms. Ioannis Pitas. Diseño y construcción de un sistema de captación y procesamiento de imágenes digitales. Tésis: Welmer Tomás Cruz Sosa, Nésto J. Maccagno, Luis A. Marín Villanueva. Análisis Numérico y visualización Gráfica con MATLAB. Shoichiro Nakamura. The MathWorks Inc. Manual del usuario de MATLAB.