Está en la página 1de 6

Laboratorio No.

8
Estudio de la Transformada Discreta de Fourier en el procesamiento de imágenes mediante Octave GNU
Parte B.

Prof. Ing. Fermín A. Póvaz J.

Objetivo del Laboratorio.


➢ Estudiar el efecto que desarrolla la utilización de diferentes tipos de filtros en el filtrado de imágenes y su valor
en el proceso de imágenes en televisión mediante el uso de la DFT.

Introducción

El proceso de filtrado es el conjunto de técnicas englobadas dentro del pre-procesamiento de imágenes cuyo objetivo
fundamental es obtener, a partir de una imagen origen, otra final cuyo resultado sea más adecuado para una aplicación
específica mejorando ciertas características de la misma que posibilite efectuar operaciones del procesado sobre ella.

Los principales objetivos que se persiguen con la aplicación de estos filtros son:

➢ Suavizar la imagen: reducir la cantidad de variaciones de intensidad entre píxeles vecinos


➢ Eliminar ruido: eliminar aquellos píxeles cuyo nivel de intensidad es muy diferente al de sus vecinos y cuyo
origen puede estar tanto en el proceso de adquisición de la imagen como en el de transmisión.
➢ Realzar bordes: destacar los bordes que se localizan en una imagen.
➢ Detectar bordes: detectar los píxeles donde se produce un cambio brusco en la función intensidad.

Por tanto, se consideran los filtros como operaciones que se aplican a los píxeles de una imagen digital para
optimizarla, enfatizar cierta información o conseguir un efecto especial en ella. El proceso de filtrado puede llevarse
a cabo sobre los dominios de frecuencia y/o espacio.

Para este laboratorio aplicaremos el filtrado en base a la frecuencia, los filtros de frecuencia procesan una imagen
trabajando sobre el dominio de la frecuencia en la Transformada de Fourier de la imagen, para ello:

Se aplica la Transformada de Fourier.


Se multiplica posteriormente por la función del filtro que ha sido escogido.
Para concluir re-transformándola al dominio espacial empleando la Transformada Inversa de Fourier.
Existen básicamente tres tipos distintos de filtros que pueden aplicarse:

➢ Filtro paso bajo: atenúa las frecuencias altas y mantiene sin variaciones las bajas. El resultado en el
dominio espacial es equivalente al de un filtro de suavizado, donde las altas frecuencias que son filtradas
se corresponden con los cambios fuertes de intensidad. Consigue reducir el ruido suavizando las
transiciones existentes.
➢ Filtro paso alto: atenúa las frecuencias bajas manteniendo invariables las frecuencias altas. Puesto que las
altas frecuencias corresponden en las imágenes a cambios bruscos de densidad, este tipo de filtros es
usado, porque entre otras ventajas, ofrece mejoras en la detección de bordes en el dominio espacial, ya
que estos contienen gran cantidad de dichas frecuencias. Refuerza los contrastes que se encuentran en la
imagen.
➢ Filtro paso banda: atenúa frecuencias muy altas o bajas manteniendo una banda de rango medio.
De estos utilizaremos el pasabaja y el pasaalta.

Ventajas

➢ Método simple y sencillo de implementar.


1
➢ Fácil asociación del concepto de frecuencia con ciertas características de la imagen; cambios de tonalidad
suaves implican frecuencias bajas y cambios bruscos frecuencias altas.
➢ Proporciona flexibilidad en el diseño de soluciones de filtrado.
➢ Rapidez en el filtrado al utilizar el Teorema de la Convolución.

Desventajas

➢ Se necesitan conocimientos en varios campos para desarrollar una aplicación para el procesamiento de
imágenes.
➢ El ruido no puede ser eliminado completamente.

Materiales y Equipo Utilizado


Una PC
El programa Octave GNU.
Imágenes de Pruebas.

Procedimiento A: Filtrado de imagen basado en un filtro Pasabaja.


1. Lo primero que debemos realizar es instalar el software libre Octave GNU, para ello lo debemos descargar
del sitio https://www.gnu.org/software/octave/
2. Debe crear una carpeta con el nombre laboratorio y las iniciales de los integrantes del grupo, allí debe contener
tanto el paquete y una imagen que usted seleccione con extensión JPG. (Estas imágenes deberán ser en blanco y
negro). Ejecute el programa, el mismo debe tener cargado el paquete IMAGE preinstalado.
3. Coloque una captura de la imagen que utilizará para el laboratorio y de la ventana del Octave GNU ya
instalado.
4. Escriba el siguiente comando en el prompt de Octave:
>>pkg load image
5. Luego descargue dos imágenes las cuales va a llamar imagen 1 e imagen 2, las mismas deben contener detalles
como por ejemplo un paisaje (No utilice imágenes de animes, ya que en este tipo de casos los resultados de los
espectros de frecuencias y su filtrado no son tan amplios). ¿Podría decir por qué?
6. Como vamos hacer uso del script del laboratorio anterior paddedsize el mismo debe estar en la carpeta de
trabajo. El siguiente paso escribir las funciones que vamos aplicar a la imagen. Primero iniciaremos por el
procesamiento de un filtro pasabaja, el script lo llamará lpfilter. Escriba en el editor las siguientes instrucciones:

function H = lpfilter(type, M, N, D0, n)


%LPFILTER Calcula el dominio de la frecuencia del filtro pasabaja.
% H = LPFILTER(TYPE, M, N, D0, n) crea la función de transferencia
% un filtro pasabaja, H, especificada por TYPE y size (MxN). Para
% visualizar la gráfica del filtro en una imagen o malla, para luego centrarlo
% usando H = fftshift(H).
%
% Valida los valores para TYPE, D0, y n son:
%
% 'ideal' Filtro pasabaja ideal
%
% 'btw' Filtro pasabaja Butterworth
%
% 'gaussian' Filtro pasabaja Gaussian lowpass filter

[U, V] = dftuv(M, N);


2
% Calcula las distancias D(U, V).
D = sqrt(U.^2 + V.^2);

% Inicia los calculos del filtro.


switch type
case 'ideal'
H = double(D <=D0);
case 'btw'
if nargin == 4
n = 1;
end
H = 1./(1 + (D./D0).^(2*n));
case 'gaussian'
H = exp(-(D.^2)./(2*(D0^2)));
otherwise
error('Tipo de Filtro desconocido.')
end

7. Guárdelo, pero no lo ejecute, recuerde que lo debe guardar con el nombre anteriormente mencionado.
8. A continuación requerimos de un script que nos permita determinar la ponderación de los puntos dentro del filtro
la cual llamaremos dftuv. Escriba las siguientes instrucciones en el editor:

function [U, V] = dftuv(M, N)


%DFTUV calcula las matrices de frecuencia tipo malla.
% [U, V] = DFTUV(M, N) Calcula las matrices de frecuencias U y
% V. U y V son utilies paar calcular la respuesta de frecuencia del filtro en el dominio de la frecuencia
% U and V son ambos tipo MxN.

% Ajusta el rango de las variables.


u = 0:(M-1);
v = 0:(N-1);

% Calcula los indices i utilizados en las mallas.


idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;

% Calcula los arreglos de las mallas.


[V, U] = meshgrid(v, u);

9. Guárdelo, pero no lo ejecute. Ahora debemos escribir el script principal, a este script lo va a nombrar dftimag1LP,
a continuación, escriba las siguientes instrucciones:

imagdft=imread('Imagen1.jpg');

%Convierte a escala de grises


imagdft=rgb2gray(imagdft);
imshow(imagdft)

3
%Determina las buenas expansiones para la Transformada de Fourier
PQ = paddedsize(size(imagdft));

%Crea un filtro Gaussian pasabaja de 5% de ancho de la transformada de Fourier


D0 = 0.05*PQ(1); H = lpfilter('gaussian', PQ(1), PQ(2), D0);

% Calcula la DFT de la imagen


F=fft2(double(imagdft),size(H,1),size(H,2));

% Aplica el filtro pasabaja compensado pra determinar el espectro de la imagen


LPFS_imagdft = H.*F;

% Convierte el resultado en el dominio espacial.


LPF_imagdft=real(ifft2(LPFS_imagdft));

% Recorta la imagen de la imagen expandida


LPF_imagdft=LPF_imagdft(1:size(imagdft,1), 1:size(imagdft,2));

%Despliega la imagen desenfocada


figure, imshow(LPF_imagdft, [ ])

% Despliega el espectro de Fourier


% Mueve el origen del la transformada de la frecuencia al centro del rectangulo.
Fc=fftshift(F); Fcf=fftshift(LPFS_imagdft);

% Utiliza el abs para calcular la magnitud y utiliza el log para desplegar el brillo
S1=log(1+abs(Fc));
S2=log(1+abs(Fcf));
figure, imshow(S1,[ ])
figure, imshow(S2,[ ])

10. Guárdelo y ejecútelo.


11. ¿Cuántas imágenes resultantes se obtuvieron?
12. Explique que observa en cada una de ellas, los detalles específicamente.
13. Aplique el mismo procesamiento de filtrado pasabaja para la imagen2.
14. Para este caso, solo debe cambiar el nombre del archivo de la imagen 2 en el script principal.
15. Presente las respectivas capturas resultantes.
16. Compare los espectros resultantes para cada imagen e indique cual de ellos proporcionó más información.

Procedimiento B: Filtrado de imagen basado en un filtro Pasabaja.


1. Para este caso realizaremos la misma operación, pero utilizaremos una respuesta de frecuencia de un filtro pasaalta.
2. Por lo tanto los scripts de las funciones cambiaran ligeramente, para la respuesta de frecuencia del filtro pasaalta
escriba las siguientes instrucciones y guárdela como hpfilter:

function H = hpfilter(type, M, N, D0, n)


%HPFILTER calcula los tipos de filtros pasaalta
% H = HPFILTER(TYPE, M, N, D0, n) crea la función de transferencia de
% un filtro pasaalta, H, de TYPE especificado and size (MxN).
% Valida los valores para el TYPE, D0, y n are:
%
% 'ideal' Filtro pasaalta ideal
4
%
% 'btw' Filtro pasaalta Butterworth highpass
%
% 'gaussian' Filtro pasaalta Gaussian

if nargin == 4
n = 1; % Valor por defecto de n.
end

% Genera el filtro pasaalta.


Hlp = lpfilter(type, M, N, D0, n);
H = 1 - Hlp;

3. Para el script principal recuerde colocarle el nombre de la imagen1.jpg. Para este script lo va nombrar dftimagHP:

imagdft=imread('imagen1.jpg');

%Convierte a escala de grises


imagdft=rgb2gray(imagdft);
imshow(imagdft)

%Determina las buenas expansiones para la Transformada de Fourier


PQ = paddedsize(size(imagdft));

%Crea un filtro Gaussian pasaalta de 5% de ancho de la transformada de Fourier


D0 = 0.05*PQ(1);
H = hpfilter('gaussian', PQ(1), PQ(2), D0);

% Calcula la DFT de la imagen


F=fft2(double(imagdft),size(H,1),size(H,2));

% Aplica el filtro pasaalta compensado pra determinar el espectro de la imagen


HPFS_imagdft = H.*F;

% Convierte el resultado en el dominio espacial.


HPF_imagdft=real(ifft2(HPFS_imagdft));

% Recorta la imagen de la imagen expandida


HPF_imagdft=HPF_imagdft(1:size(imagdft,1), 1:size(imagdft,2));

%Despliega la imagen desenfocada


figure, imshow(HPF_imagdft, [])

% Despliega el espectro de Fourier


% Mueve el origen del la transformada de la frecuencia al centro del rectángulo.
Fc=fftshift(F); Fcf=fftshift(HPFS_imagdft);

% Utiliza el abs para calcular la magnitud y utiliza el log para desplegar el brillo
S1=log(1+abs(Fc));
5
S2=log(1+abs(Fcf));
figure, imshow(S1,[ ])
figure, imshow(S2,[ ])

4. Guarde el script y ejecútelo.


5. Proporcione las capturas de las imágenes resultantes y descríbalas.
6. ¿Ha cambiado algo con respecto al filtrado pasabaja al pasaalta? Explique.
7. Repita la misma operación para la imaen2.jpg.
8. Realice el análisis correspondiente de la información de las imágenes.
9. Concluya.

Cuestionario

1. En este laboratorio se vieron dos tipos de filtros, puede usted decir que otros filtros faltaron por detallar.
2. ¿Puede usted decir si los filtros que faltaron detallar suavizan y eliminan el ruido de una imagen? Explique.
3. Se proporciona las siguientes imágenes resultantes, indique que imagen es la original, cual es la filtrada por
pasabaja, y cual por pasaalta.

También podría gustarte