Tratamiento de imágenes
en el dominio de la
frecuencia
Transformada de Fourier
Transformada: Representación alternativa de una
imagen
Transformada de Fourier: Cualquier señal
periódica puede representarse por una suma de
señales basadas en senos y cosenos con
diferente amplitud, frecuencia y fase
Transformada de Fourier (II)
Analogía: Prisma, separa la luz
blanca en sus componentes de
colores dependiendo de su longitud de
onda (frecuencia)
Transformada de Fourier (III)
1
0
/2)(1
)(M
x
MuxjexfM
uF
La transformada discreta de Fourier de una variable:
[x, f(x)][dominio del tiempo,
amplitud]
[ u, F(u) ][ dominio de la frecuencia,
componente de frecuencia]
Argumentos x y u: [0.. M-1]
Se calcula: Se sustituye primero u=0 y se evalúa para todas las x,
después u=1 y se evalúa todas las x …
Transformada de Fourier (IV)
012 xUn sistema en el cual tenga solución: 1j
Forma
binómica
x
y
x+jy
Eje real
Eje imaginario Sea la transformada:
1
0
/2)(1
)(M
x
MuxjexfM
uF
Al aplicar la fórmula de Euler:
sincos je j
Sumas de senos y cosenos con
diferente amplitud, frecuencia y fase :
1
0
)]/2()/2)[cos((1
)(M
x
MuxjsenMuxxfM
uF
Transformada de Fourier (V)
Representación de la transformada de Fourier
en coordenadas polares
)()()( ujeuFuF
22)( uIuRuF Amplitud o Espectro
uR
uIu 1tan Espectro de fase
222)( uIuRuF Espectro de potencia
Transformada de Fourier (VI)
Fs = 1000; % Frecuencia de muestreo: 1KHz
T = 1/Fs; % Período de muestreo
L = 1000; % Número de unidades
x = (0:L-1)*T; x=x’; % Vector de tiempo (x)
K=500; % Amplitud (unos)
a=ones(K,1); b=zeros(L-K,1); fx=[a; b]; plot(x,fx,’*’)
Gráfico de la transformada de Fourier
A=1
L=1000
K=500[x, f(x)]
Transformada de Fourier (VII)
[ u, |F(u)| ]
Media sección del espectro de fx
>>abs(fft(fx))
Detalles del
gráfico
Transformada de Fourier (VIII)
Reconstrucción de la señal original
[x, f(x)][dominio del tiempo,
amplitud]
[ u, F(u) ][ dominio de la frecuencia,
componente de frecuencia]
1
0
/2)(1
)(M
u
MuxjeuFM
xf
Se calcula: Se sustituye primero x=0 y se evalúa para todas las u,
después x=1 y se evalúa todas las u …
Argumentos x y u: [0.. M-1]
Transformada de Fourier (IX)
La transformada de Fourier de una función
dependiente de dos variables
1
0
1
0
)//(2),(1
),(M
x
N
y
NvyMuxjeyxfMN
vuF
donde: (x = 0,1, ..M-1) e (y = 0,1, ..N-1)
(u = 0,1, ..M-1) y (v = 0,1, ..N-1)
1
0
)//(21
0
),(1
),(M
u
NvyMuxjN
v
evuFMN
yxf
La cual puede reconstruirse a su valor original
Espacio Frecuencia
Funciones de interés de MATLAB
% Crea figura
f = zeros(30,30);
f(5:24,13:17) = 1;
% Aplica la transformada de Fourier
F = fft2(f,256,256);
% Mueve el origen de la transformada al centro del gráfico de frecuencias
F1 = fftshift(F);
%Visualiza
imshow(log(abs(F1)),[-1 5]); colormap(jet); colorbar
Fuente: Fourier Transform. Matlab
1
0
)//(21
0
),(),(M
x
NvyMuxjN
y
eyxfvuF
Colormap
-1
0
1
2
3
4
5
imshow(F2,[-1 5],'notruesize'); colormap(jet); colorbar
Detalle filas
figure; plot(F2(2,:)); figure; plot(F2(128,:));
0 50 100 150 200 250-6
-5
-4
-3
-2
-1
0
1Fila 2
0 50 100 150 200 250-1
0
1
2
3
4
5Fila 128
-1
0
1
2
3
4
5
Detalle columnas
figure; plot(F2(:,2)); figure; plot(F2(:,128));
-1
0
1
2
3
4
5
0 50 100 150 200 250-4
-3
-2
-1
0
1
2
3Columna 2
0 50 100 150 200 250-2
-1
0
1
2
3
4
5Columna 128
Imagen y transformadas
-1
0
1
2
3
4
5
-1
0
1
2
3
4
5
Imagen y transformadas (II)
-1
0
1
2
3
4
5
-1
0
1
2
3
4
5
Filtros en el dominio de la frecuencia
Componente de alta frecuencia en una imagen: Transiciones
bruscas en niveles de gris
Suavizado: Eliminar las componentes de alta frecuencia
Filtro en el dominio de la frecuencia
),(),(),( vuFvuHvuG
donde:
F(u,v): transformada de Fourier de la imagen original
H(u,v): Filtro atenuador de frecuencias
Producto: Se realiza el producto de cada componente de H(u,v)F(u,v).
Cuando F(u,v) es imaginario se multiplica H(u,v) por ambos componentes
Filtro en el dominio de la frecuencia (II)
Imagen de
entradaf(x,y)
Transfor-mada de FourierF(u,v)
Filtro
H(u,v)* F(u,v)
Transfor-mada
inversa de Fourier
Imagen filtrada
Pasos para filtrar la imagen
Figura original Figura resultante
Transformada de Fourier
2
3
4
5
6
7
8
9
10
11
12Filtro
-1
0
1
2
3
4
5
Filtro pasobajo ideal
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
Tamaño del filtro
(M, N) = (5, 5)
Centro
(u, v)=(3, 3)
])2/()2/[(),( 22NvMuvuD
Distancia al centro de matriz de frecuencias
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
0
0
),(0
),(1),(
DvuDsi
DvuDsivuH
),(0 vuDD
Frecuencia de corte
Función
Todas las frecuencias que no estén
dentro del círculo son atenuadas
%Representación en el dominio de la frecuencia
[f1, f2]=freqspace(25, 'meshgrid');
Hd=zeros(25,25); d=sqrt(f1.^2+f2.^2)<.75;
Hd(d)=1;
mesh(f1,f2,Hd);
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
Filtro pasobajo ideal (II)
Filtros pasobajo
nDvuD
vuH2
0/),(1
1),(
Filtro de Butterworth de orden nCae al 50% de su máximo en la frecuencia de corte (D(u,v)=D0)
donde
Característica
Las transiciones a la frecuencia
de corte D0 no son bruscas
])2/()2/[(),( 22NvMuvuD
Cae al 50% de su máximo en la frecuencia de corte (D(u,v)=D0)
Filtros pasobajo (II)
Representación del filtro de Butterworth lpfilter(tipo, M, N, D0, n)
Gonzalez,R.; Woods, R.; Eddins, S.: Digital Image Processing using Matlab. Prentice Hall.2004.
>>H=fftshift(lpfilter('btw', 500, 500, 50, 1))
>>mesh(H(1:10:500, 1:10:500))
n=1 n=2.5 n=10
Filtros pasobajo (III)
Representación del filtro de Butterworth lpfilter(tipo, M, N, D0, n)
Gonzalez,R.; Woods, R.; Eddins, S.: Digital Image Processing using Matlab. Prentice Hall.2004.
>>H=fftshift(lpfilter('btw', 500, 500, 50, 1))
>>mesh(H(1:10:500, 1:10:500))
D0 =50 D0 =100 D0 =300
Filtros pasobajo (IV)
20
2 2/),(),(
DvuDevuH
Filtro pasobajo Gausiano
donde
Característica
Las transiciones a la frecuencia
de corte D0 no son bruscas
])2/()2/[(),( 22NvMuvuD
Cae al 60.7% de su máximo valor cuando (D(u,v)=D0)
Filtros pasobajo (V)
Representación del filtro Gausianolpfilter(tipo, M, N, D0, n)
Gonzalez,R.; Woods, R.; Eddins, S.: Digital Image Processing using Matlab. Prentice Hall.2004.
>>H=fftshift(lpfilter(‘gaussian', 500, 500, 50))
>>mesh(H(1:10:500, 1:10:500))
D0 =50 D0 =100 D0 =250
El tamaño de las matrices
Cuando se aplica un algoritmo de filtrado digital basado
en la transformada de Fourier puede existir interferencia
entre períodos adyacentes si los períodos están muy
próximos con respecto a la duración de la parte de la
función que adquiere valores diferentes de cero
f(x,y) y h(x,y) tienen el tamaño AxB y CxD
El tamaño de las funciones resultantes serán PxQ:
1 CAP 1 DBQ
Los píxeles de la extensión se rellenan con ceros
Filtro en el dominio de la
frecuencia: DIPUM%Redefine el tamaño de las matrices F(u) y H(u)
PQ=paddedsize(size(f)); % f, imagen
% Se obtiene la transformada
F=fft2(f, PQ(1), PQ(2));
% Se define el filtro
H=lpfilter(‘tipo', PQ(1), PQ(2), D0, n);
% Se multiplica la transformada por el filtro
G=H.*F;
% Se obtiene parte real de la Transformada inversa
g=real(ifft2(G));
% Se restituye tamaño original de la imagen
g=g(1:size(f,1), 1:size(f,2));
% Se ajustan los niveles de gris
gg=gscale(g);
% Se ecualiza el histograma
g=histeq(gg); % Opcional
Aplicación del
Filtro de Butterworth
D0 =0.01*PQ(2); % 1% del ancho de la imagen rellenada
n=1
Aplicación del
Filtro de Butterworth (II)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
n=1
Aplicación del
Filtro de Butterworth (III)
D0 =0.1*PQ(2); % 10% del ancho de la imagen rellenada
n=1
Aplicación del
Filtro de Butterworth (IV)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
n=2.5
Aplicación del
Filtro de Butterworth (V)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
n=5
Aplicación del
Filtro de Butterworth (VI)D0 =0.05*PQ(2); n=1D0 =0.01*PQ(2); n=1 D0 =0.1*PQ(2); n=1
D0 =0.05*PQ(2); n=2.5 D0 =0.05*PQ(2); n=5
Aplicación del Filtro Gausiano
D0 =0.01*PQ(2); % 1% del ancho de la imagen rellenada
Aplicación del Filtro Gausiano (II)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
Aplicación del Filtro Gausiano (III)
D0 =0.1*PQ(2); % 10% del ancho de la imagen rellenada
Filtros pasoalto
pbpa vuHvuH ),(1),(
Inversa de los filtros pasobajo
donde:
pavuH ),(
Filtro pasobajo
Filtro pasoalto
pbvuH ),(
Los pasos para aplicar el filtro
son los mismos que los pasobajo
hpfilter(tipo, M, N, D0, n)
Filtros pasoalto (II)
Ideal
Butterworth
Gausiano
Filtros pasoalto (III)
D0 =0.009*PQ(2); % .9% del ancho de la imagen rellenada
Filtro Ideal
Filtros pasoalto (IV)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
n=1
Filtro de Butterworth
Filtros pasoalto (V)
D0 =0.05*PQ(2); % 5% del ancho de la imagen rellenada
Filtro Gausiano
Filtros pasoalto enfatizado
papa vubHavuH ),(),(
1+3*hpfilter(‘gaussian’, M, N, D0)
a: Incorpora componente de directa (H(0,0) ≠ 0)
b: Enfatiza el filtro de alta frecuencia
D0 =0.05*PQ(2); Filtro Gausiano
Filtros pasoalto enfatizado (II)
Filtro Gausiano enfatizado
papa vuHvuH ),(25.0),(
Filtros: Diferentes tiposPromedio Disco
Laplaciano Prewitt
Filtros: Diferentes tipos (II)
Movimiento Laplaciano del filtro Gaussiano
Prewitt