Filtro de Gabor

El filtro de Gabor es un filtro lineal cuya respuesta de impulso es una función sinusoidal multiplicada por una función gaussiana. Son funciones casi paso banda.

Parte real de la respuesta de impulso de un filtro de Gabor bidimensional.

La principal ventaja que se obtiene al introducir la envolvente gaussiana es que las funciones de Gabor están localizadas tanto en el dominio espacial como en el de la frecuencia, a diferencia de lo que ocurre con las funciones sinusoidales, que están perfectamente localizadas en el dominio frecuencial y completamente deslocalizadas en el espacial (las funciones sinusoidales cubren todo el espacio). Por tanto, son funciones más adecuadas para representar una señal conjuntamente en ambos dominios. Ésta es la base que llevó a Gabor a introducirlas en 1946.

La transformada de Fourier de un filtro de Gabor son gaussianas centradas en la frecuencia de la función sinusoidal (siendo estas gaussianas la transformada de Fourier de la gaussiana temporal o espacial). Se puede llegar a este resultado empleando la propiedad de convolución de la Transformada de Fourier, que transforma los productos en convoluciones. Así, la transformada de la respuesta de impulso de Gabor es la convolución de la transformada de la función sinusoidal y de la transformada de la función gaussiana.

Los filtros de Gabor están directamente relacionados con los wavelets de Gabor, dado que son funciones aproximadamente pasabanda que pueden diseñarse como un banco de filtros con diferentes dilataciones y rotaciones. No obstante, uno de los requisitos de los wavelets, que los filtros sean ortogonales, presenta complicaciones en este caso, requiriendo el uso de wavelets biortogonales. Una opción alternativa consiste en trabajar con representaciones sobrecompletas y considerar que son una buena aproximación al caso ortogonal. Por ejemplo, se pueden descomponer imágenes en bancos de Gabor sobrecompletos y volver a reconstruir la imagen original simplemente sumando los diferentes canales. Esto sólo se podría hacer en modo estricto si los canales de Gabor fuesen ortogonales, pero los errores que se introducen muchas veces no son perceptibles bajo inspección visual.

El filtrado de una imagen con funciones de Gabor está relacionado con los procesos en la corteza visual. Concretamente, son un buen modelo para los campos receptivos de las células simples de la corteza cerebral si se supone que éstas poseen un comportamiento lineal. Además, los filtros de Gabor se han empleado en el procesamiento digital de imágenes, donde se han mostrado eficientes a la hora de realizar diferentes tareas, tales como segmentación de texturas, compresión, etc. El primer hecho sirvió de inspiración para el desarrollo de aplicaciones en el campo del tratamiento de imágenes, mientras que los éxitos en este último campo impulsaron la aparición de teorías acerca de lo que sucede en la corteza visual.

Ejemplo

Este es un ejemplo implementado en Matlab:

function gb=gabor_fn(sigma,theta,lambda,psi,gamma)

sigma_x = sigma;
sigma_y = sigma/gamma;

sz_x=fix(6*sigma_x);
if mod(sz_x,2)==0, sz_x=sz_x+1;end
	

sz_y=fix(6*sigma_y);
if mod(sz_y,2)==0, sz_y=sz_y+1;end

[x y]=meshgrid(-fix(sz_x/2):fix(sz_x/2),fix(-sz_y/2):fix(sz_y/2));

% Rotation 
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);

gb=exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

Enlaces de interés

Implementaciones con OpenCV de Eiichiro Moma en C++ y Python.

Referencias

  • Gabor, D. (1946). «Theory of Communication». Journal of Institute for Electrical Engineering. 93, part III (26). p. 429-457.

Véase también

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.