comparativa de filtros para imagenes en matlab

13
 Análisis de Imágenes Digitales Guión de prácticas nº 3 ) S F, FFT.  S FFT , : . P , FFT . P FFT , ( ).

Upload: ivan-ivenian

Post on 21-Jul-2015

563 views

Category:

Documents


10 download

TRANSCRIPT

Anlisis de Imgenes DigitalesGuin de prcticas n 3A) Clculo y visualizacin de la Transformada de FourierSiguiendo el guin de prcticas leemos una imagen y la representamos en el dominio de la transformada rpida de Fourier, FFT.

Imagen 1

Si mostramos los valores del mdulo de la FFT en valor absoluto, tan solo observamos una estrecha componente en la componente de ms baja frecuencia: el valor constante. Por ello es necesario aplicar el logaritmo, a fin de que la imagen de la FFT sea representativa. Podemos comentar de esta FFT una gran cantidad de componentes en vertical, dadas por una importante horizontalidad en la imagen (todo el csped sigue ciertas lneas horizontales).

B) Filtros frecuenciales de alisamiento y realceFiltro ideal Copiamos la funcin de filtrado paso bajo de la prctica en un script de MATLAB y realizamos el filtrado de la imagen tal y como se propone en el guin.

Imagen 2

Visualizamos, de izquierda a derecha y empezando por arriba, la imagen, su representacin en FFT, la representacin en FFT del filtro paso bajo, la convolucin del filtro paso bajo con la imagen calculada como producto de FFTs, la imagen convolucionada, la representacin en FFT del filtro paso alto, la convolucin del filtro paso alto con la imagen calculada como producto de FFTs y la imagen convolucionada con este segundo filtro. Las FFTs representadas de esta forma tienen en las esquinas las bajas frecuencias y en el centro las altas, es por ello que el filtro paso bajo es de valor 1 (blanco) en las esquinas y al contrario el paso alto. Sin embargo, para mi gusto la representacin con las bajas frecuencias en el centro me es ms representativa. Motivo por el cual se realizar un circshift sobre todas las

imgenes de FFT que se pongan a partir de ahora. Simplemente aadimos una lnea ms de cdigo y modificaremos los plots como se ve ms abajo: [m n] = size(I); subplot(3,3,2), imagesc(circshift(Log_Magnitud,[-m/2,n/2])), axis image off, title('log(1+|F(u,v)|)') Obtenemos la siguiente representacin:

Imagen 3

Apreciamos, que el filtro paso alto elimina una parte muy pequea del dominio frecuencial (centro en negro) pero sin embargo su efecto es devastador, la imagen queda irreconocible. Esto ya nos induce la idea de que la mayor parte de la informacin est en las bajas frecuencias. El filtro paso bajo es un filtro de alisamiento, su utilidad en este caso es quitar ruido a la imagen. El resultado a priori es bueno, pues consigue su objetivo y no hay una prdida notable en sus detalles, aunque s en su contraste y luminosidad total. Intentamos mejorar estos detalles luminosos aumentando la frecuencia de corte pero entonces el ruido aumenta, y lo hace en mayor medida de lo que mejoran los detalles. Volveremos a esto ms adelante.

Hacemos un barrido para eliminar an ms las frecuencias altas y observamos que para una frecuencia de 30*2/346 la imagen comienza a emborronarse y percibimos el efecto gibs:

Imagen 4

Ahora prestamos ms atencin a la imagen obtenida eliminando la baja frecuencia. Al situar la frecuencia de corte en 15*2/346 es cuando la empezamos a reconocer la cara del mandril, pero no es hasta la frecuencia 8*2/346 cuando la apreciamos con cierta claridad. Tal y como vemos en la imagen siguiente:

Imagen 5

Y aun as no es del todo claro. La proporcin frecuencial que no vemos de la imagen, y que corresponde a las bajas frecuencias, es del 2.3%; esto nos da una idea de cun importantes son las frecuencias ms bajas. Filtro de Butterworth Realizamos un filtrado de butterworth para las frecuencias analizadas, y analizamos el comportamiento en funcin del orden del filtro. Observamos que para la frecuencia de 50*2/346 no hay mucha diferencia en la imagen resultante, pero s en el filtro cuya suavizacin es apreciable a la vista para rdenes menores a 20, como el del ejemplo con n=15. Recurdese que cuanto mayor sea el orden del filtro, ms abrupto ser.

Imagen 6

Verificamos que para rdenes menores el filtro parece ensancharse debido a su suavizacin.

Vemos lo que ocurre para un filtro de orden n=2 y frecuencia de corte igual al anterior y a la primera imagen que vimos en la prctica (50*2/346):

Imagen 7

Aunque sea difcil de apreciar para este tamao de imagen, el problema de contraste y luminosidad que comentamos al principio mejora mucho con este filtro y este orden, sin aumentar por ello el ruido de la imagen en absoluto. Por lo que podemos hacer una diferenciacin importante entre la calidad de ambos, siendo mejor la del filtro de butterworth. Ahora bien, segn para qu aplicacin un orden tan bajo puede resultar o no adecuado. Para realizar una imagen JPEG nos dar una compresin muy pequea ya que no conseguiremos muchos ceros. Analizamos el comportamiento del filtro para la frecuencia 30*2/346. Recordemos que con el filtro ideal tenamos un emborronamiento patente y un efecto gibs bastante acusado. Tericamente al usar un filtro ms suave se eliminar el efecto gibs, adems de la luminosidad y contraste antes mencionados, el quid de la cuestin es hallar el punto ms ptimo. Para nuestra imagen, por ensayo y error hemos determinado que no hay mejora para un orden del 3 al 9, por lo que usar un orden inferior al 9 ser bajo el compromiso facilidad-de-cmputo/compresin-requerida. El efecto gibs empieza a ser apreciable a partir del orden 12, en la siguiente imagen.

Imagen 8

Realizar el experimento de antes relativo a las altas frecuencias no parece muy productivo, pues lo que quera demostrar (la importancia de las bajas frecuencias) ya est demostrado. Sin embargo es interesante apuntar que para una frecuencia tan baja (8*2/346) la variacin en el orden del filtro no tiene prcticamente ningn efecto salvo para n=1 2. A continuacin muestro las parejas de imgenes resultantes de la convolucin con los filtros paso alto y paso bajo para ambos rdenes:

Imagen 9

La suavidad del filtro de orden 1 es tal que an puede diferenciarse bien la cara del mandril, creando incluso un efecto estticamente interesante. Filtro gaussiano Aplicando el filtro gaussiano vemos que su comportamiento es parecido a uno de butterworth sin la posibilidad de cambiar su nivel de suavizado y con una pendiente de bajada ms abrupta. Vemos las distintas realizaciones del filtro para las frecuencias de antes:

Imagen 10

Imagen 11

Imagen 12

C) Espacios de colorRepresentamos las bandas de color tal y como indica el guin. Comprobamos el uso del comando imcomplement(I);, el cul sirve para cambiar una imagen I de un espacio en RGB a otro CMY. Comprobamos el uso del comando rgb2ycbcr(I);, el cul sirve para cambiar una imagen I de un espacio en RGB a otro YCbCr. No hay una funcin predeterminada para convertir una imagen de un espacio RGB al espacio YUV por lo que tenemos que aplicar la matriz de transformacin: T(YUV) = [0.299 0.587 0.114; al vector de valores RGB. -0.147 -0.289 0.437; 0.615 -0.515 -0.100]

Se puede observar que esta transformacin da el mismo peso a cada valor de color que la YCbCr para hallar la luminancia Y, es decir, los valores de Y coincidirn (como es lgico); pero los valores UV tienen otros pesos distintos. T(YCbCr) = [0.299 0.587 0.114; -0.169 -0.331 0.500; 0.555 -0.418 -0.081]

Vemos que numricamente la diferencia de pesos es mnima, para la vista es casi inexistente. De hecho, comparando muy profundamente ambos conjuntos de imgenes, tan solo he conseguido hallar diferencias muy pequeas en muy pocos pxeles. Para transformar la imagen a HSV introducimos los siguientes comandos: I_hsv = rgb2hsv(I); figure('Name', 'Bandas hsv'), colormap(gray) subplot(1,3,1), imagesc(I_hsv(:,:,1)), axis off image, title('Banda H') subplot(1,3,2), imagesc(I_hsv(:,:,2)), axis off image, title('Banda S') subplot(1,3,3), imagesc(I_hsv(:,:,3)), axis off image, title('Banda V')

Para transformar la imagen a NTSC (espacio de color propio de la televisin propio de la televisin americana y japonesa) introducimos los siguientes comandos: I_ntsc = rgb2ntsc(I); figure('Name', 'Bandas NTSC'), colormap(gray) subplot(1,3,1), imagesc(I_ntsc(:,:,1)), axis off image, title('Banda Y') subplot(1,3,2), imagesc(I_ntsc(:,:,2)), axis off image, title('Banda I') subplot(1,3,3), imagesc(I_ntsc(:,:,3)), axis off image, title('Banda Q') La funcin makecform crea una estructura de transformacin entre colores mientras que applycform implementa la transformacin creada.

D) Transformaciones de colorProblemas no resueltos con la funcin ice.m

E) Segmentacin de texturas.