TP 4

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

Bioingeniera, Facultad de ingeniera-Universidad de Mendoza, 2013

Procesamiento de imgenes - Gua de trabajos prcticos 4


Filtrado en el dominio de las frecuencias
Contenido:
Filtrado en el dominio frecuencial
Materiales y mtodos:
Imgenes en formato raw suministradas por la ctedra. Software para la manipulacin de
imgenes
Introduccin
En la presente prctica se pretende que el alumno aplique propiedades de transformada de Fourier
bidimensional (Transformada rpida de Fourier sobre imgenes digitales, particularmente).
Debe adems ser capaz de disear distintos filtros en el dominio frecuencial a partir de
especificaciones, y aplicarlos a imgenes a las que se les haya realizado anteriormente la
transformacin, finalmente antitransformarla a fin de obtener la imagen ya filtrada en el dominio
espacial. Se debe relacionar adems con los resultados obtenidos por medio de filtros espaciales
analticos, anteriormente estudiados.
Por ltimo deben reconocerse y utilizarse herramientas que permitan la caracterizacin 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 convolucin, 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 Josefina
Legajo N: 5491

Pgina 1

Imagen

Filtro pasa-bajo en el
dominio de la
frecuencia

Imagen en el dominio
de la frecuencia

Imagen filtrada en el
dominio de la
frecuencia

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

Imagen filtrada en el
dominio espacial

Perfil del filtro pasa bajo

Para filtrar en el dominio de la frecuencia, lo primero que hacemos es aplicarle la transformada


rpida 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. Despus multiplicamos la imagen en el
dominio de la frecuencia con el filtro (esto equivale a hacer la convolucin 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 Josefina
Legajo N: 5491

Pgina 2

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
end
end
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]);

Imagen

Filtro pasa-alto en el
Alonso, Maria
dominioJosefina
de la
Legajo N:
5491
frecuencia

Imagen en el dominio de
la frecuencia

Imagen filtrada en el
dominio de la
Pgina 3
frecuencia

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

Imagen filtrada en el
dominio espacial

Perfil del filtro pasa alto

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 tambin 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 funcin de transferencia de un filtro Butterworth pasa-bajos en el dominio de la
frecuencia es la siguiente:
H (u , v )=

D(u , v)
1+
D0

2n

Siendo:
2
2
D (u , v )= ( uN ) + ( vM )
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]);
Alonso, Maria Josefina
Legajo N: 5491

Pgina 4

figure;
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));
end
end
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]);

Imagen

Alonso, Maria Josefina


Legajo N: 5491

Imagen en el dominio de
la frecuencia

Pgina 5

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

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 transicin desde la banda pasante a la banda
de atenuacin 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 funcin de transferencia de
dicho filtro en el dominio de la frecuencia enunciada al principio. Se puede observar en las
imgenes como se ha realizado el procedimiento.
La funcin de transferencia de un filtro Butterworth pasa-altos en el dominio de la
frecuencia es la siguiente:
H (u , v )=

1
D0
1+
D(u , v)

2n

Siendo:
2
2
D (u , v )= ( uN ) + ( vM )
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 Josefina
Legajo N: 5491

Pgina 6

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));
end
end
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]);

Imagen

Filtro butterworth pasa-bajo


en el dominio de la
frecuencia

Imagen en el dominio de
la frecuencia

Imagen filtrada en el
dominio de la
frecuencia

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

Imagen filtrada en el
dominio espacial

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

Alonso, Maria Josefina


Legajo N: 5491

Pgina 7

d) Pasabandas (de cualquier forma)


En este caso se eligi un filtro pasa banda de tipo Butterworth. La funcin de transferencia
de un filtro Butterworth pasabanda en el dominio de la frecuencia corresponde a la multiplicacin
de la funcin de transferencia de un filtro Butterworth pasabajos por la funcin 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.
1

Hpb ( u , v ) =
1+

Hpa ( u , v )=

D(u , v )
D pb

1
D pa
1+
D(u , v )

2 npb

2npa

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

Siendo:
2
2
D (u , v )= ( uN ) + ( vM )
D pb : frecuencia de corte superior ( pasa bajos)
D pa : frecuencia de corte inferior ( pasa altos)
npb :orden del filtro pasabajos
npa :orden del filtro pasaaltos

Si especificamos 2 rdenes distintos para el filtro pasabajos y pasaaltos, obtenemos un


filtro ms selectivo, pero si especificamos los rdenes iguales obtenemos el tpico filtro pasabanda
al cual le especificamos una frecuencia de corte superior e inferior y un nico orden (habiendo ya
definido la funcin de aproximacin - 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 Josefina
Legajo N: 5491

Pgina 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));
end
end
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));
end
end
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]);

Imagen

Alonso, Maria Josefina


Legajo N: 5491

Imagen en el dominio de
la frecuencia

Pgina 9

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

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 funcin 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 funcin 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 transformacin 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 transformacin de Fourier, buscamos obtener la funcin 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 ) e

G ( u , v )=F ( u , v ) 1e

Alonso, Maria Josefina


Legajo N: 5491

j2

u
N

j 2

u
N

]
Pgina 10

j 2
G( u , v)
=1e N
F(u , v)
La funcin de transferencia H (u,v) es la siguiente:

H (u , v )=

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

Por ltimo si aplicamos la anti-transformacin de la imagen anteriormente adquirida obtenemos el


resultado en el dominio espacial:

Alonso, Maria Josefina


Legajo N: 5491

Pgina 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);
end
end
imgfft= 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);
end
end
H = 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 Josefina


Legajo N: 5491

Pgina 12

3) La Point Spread Function (PSF) es la respuesta de un sistema que toma imgenes


(telescopio, cmara gamma, etc) ante una fuente puntual, y la misma se puede usar para
caracterizar la resolucin del equipo, midiendo el ancho a mitad de altura. Suponiendo
que la misma tiene una forma aproximadamente Gaussiana, usar esta funcin como
kernel y calcular su convolucin con una imagen dada. Probar con distintos valores de
(sigma).
La Point Spread Function (PSF) es la respuesta de un sistema que toma imgenes
(telescopio, cmara gamma, etc.) ante una fuente puntual, y la misma se puede usar para
caracterizar la resolucin del equipo, midiendo el ancho a mitad de altura. Suponiendo que la
misma tiene una forma aproximadamente Gaussiana, usar esta funcin como kernel y calcular su
convolucin con una imagen dada. Probar con distintos valores de (sigma).
La funcin de trasferencia de una campana de Gauss bidimensional es la siguiente:
[ D (u , v)]

H (u , v )=e 2
Siendo:
2
2
D (u , v )= ( uN ) + ( vM )
Vamos a analizar la PSF con distintos valores de sigma, es decir modificando el kernel.
Para = 0,1 obtenemos las siguientes imgenes:

Se observa que el resultado obtenido con = 0,1 difiere mnimamente de la imagen


original. La resolucin no es ideal, pero es muy aceptable.

Alonso, Maria Josefina


Legajo N: 5491

Pgina 13

Para = 1 obtenemos las siguientes imgenes:

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
resolucin es muy mala.
Para = 2 obtenemos las siguientes imgenes:

Alonso, Maria Josefina


Legajo N: 5491

Pgina 14

Para = 3 obtenemos las siguientes imgenes:

A medida que aumentamos el valor de , vemos que la resolucin de la imagen decae y por
lo tanto ya no es una imagen de calidad. Entonces a mayor de la funcin gaussiana que aproxima
a la PSF, la resolucin 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 Josefina
Legajo N: 5491

Pgina 15

H(u,v)= exp(-(D(u,v)^2)/(2*sigma^2));
end
end
imgconv = 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 Josefina


Legajo N: 5491

Pgina 16

También podría gustarte