tp 4

19
Bioingeniería, Facultad de ingeniería-Universidad de Mendoza, 2013 Procesamiento de imágenes - Guía de trabajos prácticos 4 Filtrado en el dominio de las frecuencias Contenido: Filtrado en el dominio frecuencial Materiales y métodos: Imágenes en formato “raw” suministradas por la cátedra. Software para la manipulación de imágenes Introducción En la presente práctica se pretende que el alumno aplique propiedades de transformada de Fourier bidimensional (Transformada rápida de Fourier sobre imágenes digitales, particularmente). Debe además ser capaz de diseñar distintos filtros en el dominio frecuencial a partir de especificaciones, y aplicarlos a imágenes a las que se les haya realizado anteriormente la transformación, finalmente antitransformarla a fin de obtener la imagen ya filtrada en el dominio espacial. Se debe relacionar además con los resultados obtenidos por medio de filtros espaciales analíticos, anteriormente estudiados. Por último deben reconocerse y utilizarse herramientas que permitan la caracterización de la respuesta de un sistema en el dominio frecuencial y relacionarla con el comportamiento en el dominio espacial. 1) Haciendo uso del teorema de convolución, aplicar los siguientes filtros a una imagen con distintas frecuencias de corte: a) Pasabajos ideal a=imread ('imagenF.tif'); A=fft2(double(a),256,256); acent=fftshift(A); figure;imshow(a); figure;imshow(log(abs(A)),[1.2 15]); Alonso, Maria Josefina Legajo Nº: 5491 Página 1

Upload: leonel-aguirre

Post on 11-Jul-2016

213 views

Category:

Documents


1 download

DESCRIPTION

trabajo de procesamiento de imagenes

TRANSCRIPT

Bioingeniería, Facultad de ingeniería-Universidad de Mendoza, 2013

Procesamiento de imágenes - Guía de trabajos prácticos 4

Filtrado en el dominio de las frecuencias

Contenido:Filtrado en el dominio frecuencial

Materiales y métodos:Imágenes en formato “raw” suministradas por la cátedra. Software para la manipulación de imágenes

IntroducciónEn la presente práctica se pretende que el alumno aplique propiedades de transformada de Fourier bidimensional (Transformada rápida de Fourier sobre imágenes digitales, particularmente). Debe además ser capaz de diseñar distintos filtros en el dominio frecuencial a partir de especificaciones, y aplicarlos a imágenes a las que se les haya realizado anteriormente la transformación, finalmente antitransformarla a fin de obtener la imagen ya filtrada en el dominio espacial. Se debe relacionar además con los resultados obtenidos por medio de filtros espaciales analíticos, anteriormente estudiados.Por último deben reconocerse y utilizarse herramientas que permitan la caracterización de la respuesta de un sistema en el dominio frecuencial y relacionarla con el comportamiento en el dominio espacial.

1) Haciendo uso del teorema de convolución, aplicar los siguientes filtros a una imagen con distintas frecuencias de corte:a) Pasabajos ideal

a=imread ('imagenF.tif');A=fft2(double(a),256,256);acent=fftshift(A);figure;imshow(a);figure;imshow(log(abs(A)),[1.2 15]);figure;imshow(log(abs(acent)),[1.2 15]);

h=fspecial('disk',30);y=h*(1/max(max(h)));Z=padarray(y,[98 98]);fpbajo = imresize(Z,[256 256]);figure;imshow(fpbajo);figure;plot(fpbajo(128,:));

aconv=(acent.*fpbajo);figure;imshow(log(abs(acent)),[1.2 15]);figure;imshow(log(abs(aconv)),[1.2 15]);

afilt=real(ifft2(aconv));figure;imshow(log(afilt),[1.2 15]);

Alonso, Maria JosefinaLegajo Nº: 5491 Página 1

Para filtrar en el dominio de la frecuencia, lo primero que hacemos es aplicarle la transformada rápida de Fourier a la imagen, luego centramos las bajas frecuencias (origen de frecuencias en el centro de la matriz). Luego creamos el filtro en el dominio de la frecuencia, este es un disco de radio del valor de la frecuencia de corte que queramos. Después multiplicamos la imagen en el dominio de la frecuencia con el filtro (esto equivale a hacer la convolución de la imagen con el filtro en el dominio espacial), lo que estamos haciendo es atenuar los valor altos de frecuencia (hacerlos ceros) y dejar los valores de baja frecuencia de la imagen. Por último le aplicamos la antitranfosrmada a la imagen filtrada en el dominio de la frecuencia y obtenemos la imagen filtrada en el dominio espacial. Notamos que aparecen “rebarbas” (ringing ), esto se debe a que el filtro aplicado, es un filtro ideal.

Alonso, Maria JosefinaLegajo Nº: 5491 Página 2

Imagen Imagen en el dominio de la frecuencia

Imagen en el dominio de la frecuencia con el origen de frecuencias

en el centro

Filtro pasa-bajo en el dominio de la

frecuencia

Imagen filtrada en el dominio de la

frecuencia

Imagen filtrada en el dominio espacial

Perfil del filtro pasa bajo

b) Pasaaltos ideal

a=imread ('imagenF.tif');A=fft2(double(a),256,256);acent=fftshift(A);figure;imshow(a);figure;imshow(log(abs(A)),[1.2 15]);figure;imshow(log(abs(acent)),[1.2 15]);

h=fspecial('disk',100);y=h*(1/max(max(h)));Z=padarray(y,[98 98]);X = imresize(Z,[256 256]);

[nrows,ncols]=size(X);for fila=1:nrows for columna=1:ncols if X(fila,columna)==0 fpalto(fila,columna)=1; else fpalto(fila,columna)=0; end endend

figure;imshow(fpalto);figure;plot(fpalto(128,:));

aconv=(acent.*fpalto);figure;imshow(log(abs(acent)),[1.2 15]);figure;imshow(log(abs(aconv)),[1.2 15]);

afilt=real(ifft2(aconv));figure;imshow(log(afilt),[1.2 15]);

Alonso, Maria JosefinaLegajo Nº: 5491 Página 3

Imagen Imagen en el dominio de la frecuencia

Imagen en el dominio de la frecuencia con el origen de frecuencias

en el centro

Filtro pasa-alto en el dominio de la

frecuencia

Imagen filtrada en el dominio de la

frecuencia

Imagen filtrada en el dominio espacial

En este caso se realiza un procedimiento similar al del punto anterior, con la diferencia que aquí el filtro es pasa alto ideal. Podemos notar que el filtro también está en el dominio de la frecuencia y en este caso es un disco de ceros (sus bordes determinan la frecuencia de corte) y el resto son unos. Arriba pueden observarse los pasos realizados para poder llegar a la imagen filtrada en el dominio espacial.

c) Butterworth (pasaaltos y bajos)

La función de transferencia de un filtro Butterworth pasa-bajos en el dominio de la frecuencia es la siguiente:

H (u , v )= 1

1+[ D(u ,v )D 0 ]

2 n

Siendo:D (u , v )=√ (u−N )2+ (v−M )2

D0 : frecuencia de corte

n :orden del filtro

img = imread ('imagenF.tif');

imgfft = fft2(double(img),256,256);imgfftcent = fftshift(imgfft);

figure;imshow(img);figure;imshow(log(abs(imgfft)),[1.2 15]);figure;

Alonso, Maria JosefinaLegajo Nº: 5491 Página 4

Perfil del filtro pasa alto

imshow(log(abs(imgfftcent)),[1.2 15]);

D0 = input('D0 = ');n = input('orden = ');

for u = 1 : 256 for v = 1 : 256 D(u,v) = sqrt((u - 128)^2 + (v - 128)^2); H(u,v) = 1 /(1 + (D(u,v) / D0)^(2*n)); endend

figure;imshow(H);

imgfftfilt = (imgfftcent .* H);

figure;imshow(log(abs(imgfftfilt)),[1.2 15]);

imgfilt = real(ifft2(imgfftfilt));

figure;imshow(log(abs(imgfilt)),[1.2 15]);

Alonso, Maria JosefinaLegajo Nº: 5491 Página 5

Imagen Imagen en el dominio de la frecuencia

Imagen en el dominio de la frecuencia con el origen de

frecuencias en el centro

En este ejercicio se realizó un filtrado butterworth pasa bajo. La diferencia de este filtro con el ideal es que este no produce ringing porque la transición desde la banda pasante a la banda de atenuación es progresiva, no abrupta como la del filtro ideal; pero si produce un suavizado de la imagen en sus bordes. En este caso el disco se construyó a partir de la función de transferencia de dicho filtro en el dominio de la frecuencia enunciada al principio. Se puede observar en las imágenes como se ha realizado el procedimiento.

La función de transferencia de un filtro Butterworth pasa-altos en el dominio de la frecuencia es la siguiente:

H (u , v )= 1

1+[ D 0

D(u ,v ) ]2 n

Siendo:D (u , v )=√ (u−N )2+ (v−M )2

D0 : frecuencia de corte

n :orden del filtro

img = imread ('imagenF.tif');

imgfft = fft2(double(img),256,256);imgfftcent = fftshift(imgfft);

figure;imshow(img);figure;imshow(log(abs(imgfft)),[1.2 15]);figure;imshow(log(abs(imgfftcent)),[1.2 15]);

D0 = input('D0 = ');n = input('orden = ');

for u = 1 : 256

Alonso, Maria JosefinaLegajo Nº: 5491 Página 6

Filtro butterworth pasa-bajo en el dominio de la

frecuencia

Imagen filtrada en el dominio de la

frecuencia

Imagen filtrada en el dominio espacial

for v = 1 : 256 D(u,v) = sqrt((u - 128)^2 + (v - 128)^2); H(u,v) = 1 /(1 + (D0 / D(u,v))^(2*n)); endend

figure;imshow(H);

imgfftfilt = (imgfftcent .* H);

figure;imshow(log(abs(imgfftfilt)),[1.2 15]);

imgfilt = real(ifft2(imgfftfilt));

figure;imshow(log(abs(imgfilt)),[1.2 15]);

Se ha realizado un filtro butterworth pasa alto. En comparación con el filtro ideal vemos que este filtro no produce ringing pero si produce un suavizado de la imagen en sus bordes.

Alonso, Maria JosefinaLegajo Nº: 5491 Página 7

Imagen Imagen en el dominio de la frecuencia

Imagen en el dominio de la frecuencia con el origen de

frecuencias en el centro

Filtro butterworth pasa-bajo en el dominio de la

frecuencia

Imagen filtrada en el dominio de la

frecuencia

Imagen filtrada en el dominio espacial

d) Pasabandas (de cualquier forma)

En este caso se eligió un filtro pasa banda de tipo Butterworth. La función de transferencia de un filtro Butterworth pasabanda en el dominio de la frecuencia corresponde a la multiplicación de la función de transferencia de un filtro Butterworth pasabajos por la función de transferencia de un filtro Butterworth pasaaltos. Tener en cuenta que la frecuencia de corte PB debe ser mayor a la frecuencia de corte PA.

Hpb (u , v )= 1

1+[ D(u , v)Dpb ]

2npb

Hpa (u , v )= 1

1+[ Dpa

D(u , v) ]2 npa

Hpband (u ,v )=Hpb (u , v ) ∙Hpa(u , v )

Siendo:D (u , v )=√ (u−N )2+ (v−M )2

D pb : frecuencia de corte superior ( pasabajos)

D pa : frecuencia decorte inferior ( pasaaltos)

npb :orden del filtro pasabajos

npa :orden del filtro pasaaltos

Si especificamos 2 órdenes distintos para el filtro pasabajos y pasaaltos, obtenemos un filtro más selectivo, pero si especificamos los órdenes iguales obtenemos el típico filtro pasabanda al cual le especificamos una frecuencia de corte superior e inferior y un único orden (habiendo ya definido la función de aproximación - en este caso Butterworth).

img = imread ('imagenF.tif');

imgfft = fft2(double(img),256,256);imgfftcent = fftshift(imgfft);

figure;imshow(img);figure;imshow(log(abs(imgfft)),[1.2 15]);figure;imshow(log(abs(imgfftcent)),[1.2 15]);

D0pb = input('D0pb = ');npb = input('ordenpb = ');

Alonso, Maria JosefinaLegajo Nº: 5491 Página 8

D0pa = input('D0pa = ');npa = input('ordenpa = ');

for u = 1 : 256 for v = 1 : 256 Dpa(u,v) = sqrt((u - 128)^2 + (v - 128)^2); Hpa(u,v) = 1 /(1 + (D0pa / Dpa(u,v))^(2*npa)); endend

for u = 1 : 256 for v = 1 : 256 Dpb(u,v) = sqrt((u - 128)^2 + (v - 128)^2); Hpb(u,v) = 1 /(1 + (Dpb(u,v) / D0pb)^(2*npb)); endend

H = Hpa .* Hpb;

figure;imshow(H);

imgfftfilt = (imgfftcent .* H);

figure;imshow(log(abs(imgfftfilt)),[1.2 15]);

imgfilt = real(ifft2(imgfftfilt));

figure;imshow(log(abs(imgfilt)),[1.2 15]);

Alonso, Maria JosefinaLegajo Nº: 5491 Página 9

Imagen Imagen en el dominio de la frecuencia

Imagen en el dominio de la frecuencia con el origen de

frecuencias en el centro

2) Una forma de computar el gradiente en el dominio real es calculando diferencias del tipo

f(x,y) – f(x+1,y). Obtener la función H(u,v) que haga lo equivalente en el dominio de frecuencias. Mostrar que se trata de un filtro pasa-alto.

Una forma de computar el gradiente en el dominio real es calculando diferencias del tipo f(x,y) – f(x+1,y). Obtener la función H (u,v) que haga lo equivalente en el dominio de frecuencias. Mostrar que se trata de un filtro pasa-alto.Para comparar se realizó la transformación en el dominio real para así obtener el gradiente espacial.Luego de realizar el gradiente equivalente en el dominio frecuencial debemos realizar la transformada de Fourier de la imagen obtenida anteriormente.

Aplicando propiedades de transformación de Fourier, buscamos obtener la función H (u,v):g ( x , y )=f ( x , y )−f ( x+1 , y )

F [ g ( x , y ) ]=F [ f ( x , y ) ]−F [ f ( x+1, y ) ]

G (u , v )=F (u , v )−F ( x , y ) ∙ ej 2π u

N

G (u , v )=F (u , v ) ∙[1−ej 2 π u

N ]

Alonso, Maria JosefinaLegajo Nº: 5491 Página 10

Filtro butterworth pasa-bajo en el dominio de la

frecuencia

Imagen filtrada en el dominio de la

frecuencia

Imagen filtrada en el dominio espacial

H (u , v )=G(u , v )F (u , v )

=1−ej 2π u

N

La función de transferencia H (u,v) es la siguiente:

Esto es lo que corresponde a un filtro pasa altos porque elimina las bajas frecuencias por completo. Al multiplicar la función H (u,v) por la transformada de Fourier de la imagen original se obtiene:

Por último si aplicamos la anti-transformación de la imagen anteriormente adquirida obtenemos el resultado en el dominio espacial:

Alonso, Maria JosefinaLegajo Nº: 5491 Página 11

El script realizado en MatLab es el siguiente:img=imread('imagenF.tif');imggrad = img;for x = 1 : 255 for y = 1 : 256 imggrad(x,y) = img(x,y) - img(x + 1,y); endendimgfft= fft2(double(img),256,256);imgfftcent = fftshift(imgfft);figure;imshow(img);figure;imshow(imggrad);figure;imshow(log(abs(imgfftcent)),[1.2 15]);I=eye(256);for u= 1 : 256 for v= 1 : 256 H(u,v)= 1 - exp(j*2*pi*u/256); endendH = fftshift(H);figure;imshow(abs(H));title('H(u,v)');imgfftfilt = (imgfftcent .* H);figure;imshow(log(abs(imgfftfilt)),[1.2 15]);imgfilt = real(ifft2(imgfftfilt));figure;imshow(log(abs(imgfilt)),[1.2 15])

Alonso, Maria JosefinaLegajo Nº: 5491 Página 12

3) La “Point Spread Function” (PSF) es la respuesta de un sistema que toma imágenes (telescopio, cámara gamma, etc) ante una fuente puntual, y la misma se puede usar para caracterizar la resolución del equipo, midiendo el ancho a mitad de altura. Suponiendo que la misma tiene una forma aproximadamente Gaussiana, usar esta función como kernel y calcular su convolución con una imagen dada. Probar con distintos valores de (sigma).

La “Point Spread Function” (PSF) es la respuesta de un sistema que toma imágenes (telescopio, cámara gamma, etc.) ante una fuente puntual, y la misma se puede usar para caracterizar la resolución del equipo, midiendo el ancho a mitad de altura. Suponiendo que la misma tiene una forma aproximadamente Gaussiana, usar esta función como kernel y calcular su convolución con una imagen dada. Probar con distintos valores de (sigma).

La función de trasferencia de una campana de Gauss bidimensional es la siguiente:

H (u , v )=e−[ D (u ,v) ]2

2 ∙ σ2

Siendo:D (u , v )=√ (u−N )2+ (v−M )2

Vamos a analizar la PSF con distintos valores de sigma, es decir modificando el kernel.Para σ = 0,1 obtenemos las siguientes imágenes:

Se observa que el resultado obtenido con σ = 0,1 difiere mínimamente de la imagen original. La resolución no es ideal, pero es muy aceptable.

Alonso, Maria JosefinaLegajo Nº: 5491 Página 13

Para σ = 1 obtenemos las siguientes imágenes:

Podemos observar ahora que el resultado de la imagen final es muy diferente de la imagen original. Sugiere la forma de la imagen original pero es muy distinta. Esto nos dice que la resolución es muy mala.

Para σ = 2 obtenemos las siguientes imágenes:

Alonso, Maria JosefinaLegajo Nº: 5491 Página 14

Para σ = 3 obtenemos las siguientes imágenes:

A medida que aumentamos el valor de σ, vemos que la resolución de la imagen decae y por lo tanto ya no es una imagen de calidad. Entonces a mayor σ de la función gaussiana que aproxima a la PSF, la resolución del equipo es menor.

El script elaborado en MatLab es el siguiente:img= imread ('imagenF.tif');sigma= input('sigma = ');for u= 1 : 256 for v= 1 : 256 D(u,v)= sqrt((u - 128)^2 + (v - 128)^2);

Alonso, Maria JosefinaLegajo Nº: 5491 Página 15

H(u,v)= exp(-(D(u,v)^2)/(2*sigma^2)); endendimgconv = imfilter(img,H);subplot(1,3,1),imshow(img);title('Imagen original');subplot(1,3,2),imshow(H);title('Kernel');subplot(1,3,3),imshow(imgconv);title('Imagen final');figure;surf (1 : 256, 1 : 256, H), colorbar

Alonso, Maria JosefinaLegajo Nº: 5491 Página 16