tp 4
DESCRIPTION
trabajo de procesamiento de imagenesTRANSCRIPT
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