Está en la página 1de 13

Análisis de Imágenes Digitales

Guión de prácticas nº 3

A) Cálculo y visualización de la Transformada de Fourier


Siguiendo el guión de prácticas leemos una imagen y la representamos en el dominio
de la transformada rápida de Fourier, FFT.

Imagen 1

Si mostramos los valores del módulo de la FFT en valor absoluto, tan solo observamos
una estrecha componente en la componente de más 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 césped sigue ciertas líneas
horizontales).
B) Filtros frecuenciales de alisamiento y realce
Filtro ideal

Copiamos la función de filtrado paso bajo de la práctica en un script de MATLAB y


realizamos el filtrado de la imagen tal y como se propone en el guión.

Imagen 2

Visualizamos, de izquierda a derecha y empezando por arriba, la imagen, su


representación en FFT, la representación en FFT del filtro paso bajo, la convolución del
filtro paso bajo con la imagen calculada como producto de FFTs, la imagen
convolucionada, la representación en FFT del filtro paso alto, la convolución 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 representación con las bajas frecuencias en el centro me
es más representativa. Motivo por el cual se realizará un “circshift” sobre todas las
imágenes de FFT que se pongan a partir de ahora. Simplemente añadimos una línea
más de código y modificaremos los plots como se ve más 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 representación:

Imagen 3

Apreciamos, que el filtro paso alto elimina una parte muy pequeña 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
información 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
pérdida 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 más adelante.
Hacemos un barrido para eliminar aún más 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 más atención 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 proporción frecuencial que no vemos de la imagen, y
que corresponde a las bajas frecuencias, es del 2.3%; esto nos da una idea de cuán
importantes son las frecuencias más bajas.

Filtro de Butterworth

Realizamos un filtrado de butterworth para las frecuencias analizadas, y analizamos el


comportamiento en función 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 suavización es apreciable a la vista para
órdenes menores a 20, como el del ejemplo con n=15. Recuérdese que cuanto mayor
sea el orden del filtro, más abrupto será.
Imagen 6

Verificamos que para órdenes menores el filtro parece “ensancharse” debido a su


suavización.
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 práctica (50*2π/346):

Imagen 7

Aunque sea difícil de apreciar para este tamaño 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
diferenciación importante entre la calidad de ambos, siendo mejor la del filtro de
butterworth.

Ahora bien, según para qué aplicación un orden tan bajo puede resultar o no
adecuado. Para realizar una imagen JPEG nos dará una compresión muy pequeña ya
que no conseguiremos muchos ceros.

Analizamos el comportamiento del filtro para la frecuencia 30*2π/346. Recordemos


que con el filtro ideal teníamos un emborronamiento patente y un efecto gibs bastante
acusado. Teóricamente al usar un filtro más suave se eliminará el efecto gibs, además
de la luminosidad y contraste antes mencionados, el quid de la cuestión es hallar el
punto más óptimo. Para nuestra imagen, por ensayo y error hemos determinado que
no hay mejoría para un orden del 3 al 9, por lo que usar un orden inferior al 9 será bajo
el compromiso facilidad-de-cómputo/compresión-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 quería 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 variación en el orden del filtro no tiene prácticamente ningún
efecto salvo para n=1 ó 2. A continuación muestro las parejas de imágenes resultantes
de la convolución con los filtros paso alto y paso bajo para ambos órdenes:
Imagen 9

La suavidad del filtro de orden 1 es tal que aún puede diferenciarse bien la cara del
mandril, creando incluso un efecto estéticamente 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 más abrupta.

Vemos las distintas realizaciones del filtro para las frecuencias de antes:
Imagen 10

Imagen 11
Imagen 12
C) Espacios de color
Representamos las bandas de color tal y como indica el guión.

Comprobamos el uso del comando “imcomplement(I);”, el cuál sirve para cambiar una
imagen I de un espacio en RGB a otro CMY.

Comprobamos el uso del comando “rgb2ycbcr(I);”, el cuál sirve para cambiar una
imagen I de un espacio en RGB a otro YCbCr.

No hay una función predeterminada para convertir una imagen de un espacio RGB al
espacio YUV por lo que tenemos que aplicar la matriz de transformación:

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 transformación da el mismo peso a cada valor de color
que la YCbCr para hallar la luminancia Y, es decir, los valores de Y coincidirán (como es
lógico); 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 numéricamente la diferencia de pesos es mínima, para la vista es casi


inexistente. De hecho, comparando muy profundamente ambos conjuntos de
imágenes, tan solo he conseguido hallar diferencias muy pequeñas en muy pocos
píxeles.

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 televisión propio de


la televisión 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 función “makecform” crea una estructura de transformación entre colores mientras


que “applycform” implementa la transformación creada.
D) Transformaciones de color
Problemas no resueltos con la función “ice.m”

E) Segmentación de texturas.

También podría gustarte