Filtro gabor

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Filtro lineal utilizado para análisis de texturas
Ejemplo de un filtro bidimensional de Gabor

En el procesamiento de imágenes, un filtro Gabor, llamado así en honor a Dennis Gabor, quien lo propuso por primera vez como filtro 1D. El filtro Gabor fue generalizado por primera vez a 2D por Gösta Granlund, añadiendo una dirección de referencia. El filtro Gabor es un filtro lineal utilizado para el análisis de textura, lo que esencialmente significa que analiza si hay algún contenido de frecuencia específico en la imagen en direcciones específicas en una región localizada alrededor del punto o región de análisis. Muchos científicos de la visión contemporáneos afirman que las representaciones de frecuencia y orientación de los filtros de Gabor son similares a las del sistema visual humano. Se ha descubierto que son particularmente apropiados para la representación y discriminación de texturas. En el dominio espacial, un filtro de Gabor 2D es una función del núcleo gaussiano modulada por una onda plana sinusoidal (ver Transformada de Gabor).

Algunos autores afirman que las células simples de la corteza visual del cerebro de los mamíferos pueden modelarse mediante funciones de Gabor. Por lo tanto, algunos piensan que el análisis de imágenes con filtros Gabor es similar a la percepción en el sistema visual humano.

Definición

Su respuesta de impulso está definida por una onda sinusoidal (una onda plana para filtros Gabor 2D) multiplicada por una función gaussiana. Debido a la propiedad de multiplicación-convolución (teorema de convolución), la transformada de Fourier de la respuesta impulsiva de un filtro de Gabor es la convolución de la transformada de Fourier de la función armónica (función sinusoidal) y la transformada de Fourier de la función gaussiana. El filtro tiene un componente real y otro imaginario que representan direcciones ortogonales. Los dos componentes pueden formarse en un número complejo o usarse individualmente.

Complejo

g()x,Sí.;λ λ ,Silencio Silencio ,↑ ↑ ,σ σ ,γ γ )=exp⁡ ⁡ ()− − x.2+γ γ 2Sí..22σ σ 2)exp⁡ ⁡ ()i()2π π x.λ λ +↑ ↑ )){displaystyle g(x,y;lambdathetasigmagamma)=exp left(-{frac {x'^{2}+gamma ^{2}y'^{2}{2sigma ^{2}}right)exp left(ileft(2pi {frac {x'}{lambda }+psi right)right)}

Reales

g()x,Sí.;λ λ ,Silencio Silencio ,↑ ↑ ,σ σ ,γ γ )=exp⁡ ⁡ ()− − x.2+γ γ 2Sí..22σ σ 2)#⁡ ⁡ ()2π π x.λ λ +↑ ↑ ){displaystyle g(x,y;lambdathetasigmagamma)=exp left(-{frac {x'^{2}+gamma ¿Qué?

Imaginario

g()x,Sí.;λ λ ,Silencio Silencio ,↑ ↑ ,σ σ ,γ γ )=exp⁡ ⁡ ()− − x.2+γ γ 2Sí..22σ σ 2)pecado⁡ ⁡ ()2π π x.λ λ +↑ ↑ ){displaystyle g(x,y;lambdathetasigmagamma)=exp left(-{frac {x'^{2}+gamma ¿Qué?

Donde x.=x#⁡ ⁡ Silencio Silencio +Sí.pecado⁡ ⁡ Silencio Silencio {displaystyle x'=xcos theta +ysin theta } y Sí..=− − xpecado⁡ ⁡ Silencio Silencio +Sí.#⁡ ⁡ Silencio Silencio {displaystyle Y'=-xsin theta +ycos theta }.

En esta ecuación, λ λ {displaystyle lambda } representa la longitud de onda del factor sinusoidal, Silencio Silencio {displaystyle theta } representa la orientación de lo normal a las rayas paralelas de una función Gabor, ↑ ↑ {displaystyle psi } es la fase offset, σ σ {displaystyle sigma } es el sigma / desviación estándar del sobre Gaussiano y γ γ {displaystyle gamma } es la relación de aspecto espacial, y especifica la elicidad del apoyo de la función Gabor.

Espacio wavelet

Demostración de un filtro Gabor aplicado a OCR chino. Se muestran cuatro orientaciones en la derecha 0°, 45°, 90° y 135°. La imagen original y la superposición de las cuatro orientaciones se muestran a la izquierda.

Los filtros Gabor están directamente relacionados con las wavelets de Gabor, ya que pueden diseñarse para varias dilataciones y rotaciones. Sin embargo, en general, la expansión no se aplica a las ondas de Gabor, ya que esto requiere el cálculo de ondas biortogonales, lo que puede llevar mucho tiempo. Por lo tanto, normalmente se crea un banco de filtros que consta de filtros Gabor con varias escalas y rotaciones. Los filtros convolucionan con la señal, lo que da como resultado el llamado espacio de Gabor. Este proceso está estrechamente relacionado con los procesos de la corteza visual primaria. Jones y Palmer demostraron que la parte real de la compleja función de Gabor se ajusta bien a las funciones de peso del campo receptivo que se encuentran en las células simples de la corteza estriada de un gato.

Análogo causal-temporal del filtro Gabor

Al procesar señales temporales, no se puede acceder a los datos del futuro, lo que genera problemas si se intenta utilizar las funciones de Gabor para procesar señales en tiempo real que dependen de la dimensión temporal. Se ha desarrollado un análogo causal del tiempo del filtro de Gabor basándose en la sustitución del núcleo gaussiano en la función de Gabor por un núcleo causal y recursivo en el tiempo denominado núcleo límite causal del tiempo. De este modo, el análisis tiempo-frecuencia basado en la extensión de valores complejos resultante del kernel límite causal-tiempo permite capturar transformaciones esencialmente similares de una señal temporal como puede hacerlo el filtro de Gabor y como puede ser descrito por el grupo de Heisenberg. , consulte para obtener más detalles.

Extracción de características de imágenes

Un conjunto de filtros Gabor con diferentes frecuencias y orientaciones puede resultar útil para extraer características útiles de una imagen. En el dominio discreto, los filtros de Gabor bidimensionales vienen dados por,

Gc[i,j]=Be− − ()i2+j2)2σ σ 2#⁡ ⁡ ()2π π f()i#⁡ ⁡ Silencio Silencio +jpecado⁡ ⁡ Silencio Silencio )){displaystyle G_{c}[i,j]=Be^{-{-{frac {(i^{2}+j^{2}}{2sigma ^{2}}}}cos(2pi f(icos theta +jsin theta)}}}
Gs[i,j]=Ce− − ()i2+j2)2σ σ 2pecado⁡ ⁡ ()2π π f()i#⁡ ⁡ Silencio Silencio +jpecado⁡ ⁡ Silencio Silencio )){displaystyle G_{s}[i,j]=Ce^{-{frac {(i^{2}+j^{2}}{2sigma ^{2}}}}}sin(2pi f(icos theta +jsin theta)}}}

donde B y C son factores de normalización por determinar.

2D Los filtros de Gabor tienen aplicaciones ricas en procesamiento de imágenes, especialmente en extracción de características para el análisis de texturas y segmentación. f{displaystyle f} define la frecuencia que se busca en la textura. Variando Silencio Silencio {displaystyle theta }, podemos buscar la textura orientada en una dirección particular. Variando σ σ {displaystyle sigma }, cambiamos el soporte de la base o el tamaño de la región de imagen que se analiza.

Aplicaciones de los filtros 2D Gabor en el procesamiento de imágenes

En el procesamiento de imágenes de documentos, las funciones de Gabor son ideales para identificar la escritura de una palabra en un documento multilingüe. Se han utilizado filtros Gabor con diferentes frecuencias y con orientaciones en diferentes direcciones para localizar y extraer regiones de solo texto de imágenes de documentos complejos (tanto grises como en color), ya que el texto es rico en componentes de alta frecuencia, mientras que las imágenes son de naturaleza relativamente suave. También se ha aplicado para el reconocimiento de expresiones faciales. Los filtros Gabor también se han utilizado ampliamente en aplicaciones de análisis de patrones. Por ejemplo, se ha utilizado para estudiar la distribución de direccionalidad dentro del hueso trabecular esponjoso y poroso de la columna. El espacio de Gabor es muy útil en aplicaciones de procesamiento de imágenes como el reconocimiento óptico de caracteres, el reconocimiento de iris y el reconocimiento de huellas dactilares. Las relaciones entre activaciones para una ubicación espacial específica son muy distintivas entre los objetos de una imagen. Además, se pueden extraer activaciones importantes del espacio de Gabor para crear una representación de objeto dispersa.

Implementaciones de ejemplo

Este es un ejemplo de implementación en Python:

importación numposo como npdef Gabor()sigma, theta, Lambda, psi, gamma): ""Extracción de la característica del gas."" sigma_x = sigma sigma_y = flotador()sigma) / gamma # Bounding box Nstds = 3 # Número de sigma de desviación estándar xmax = max() abdominales()Nstds * sigma_x * np.#()theta)), abdominales()Nstds * sigma_y * np.pecado()theta) ) xmax = np.ceil()max()1, xmax) ymax = max() abdominales()Nstds * sigma_x * np.pecado()theta)), abdominales()Nstds * sigma_y * np.#()theta) ) ymax = np.ceil()max()1, ymax) xmin = -xmax Ymin = -ymax ()Sí., x) = np.meshgrid()np.arange()Ymin, ymax + 1), np.arange()xmin, xmax + 1) # Rotation x_theta = x * np.#()theta) + Sí. * np.pecado()theta) Y... = -x * np.pecado()theta) + Sí. * np.#()theta) gb = np.exp() -0.5 * ()x_theta#2 / sigma_x#2 + Y...#2 / sigma_y#2) ) * np.#()2 * np.pi / Lambda * x_theta + psi) Regreso gb

Para una implementación en imágenes, consulte [1].

Este es un ejemplo de implementación en MATLAB/Octave:

función gb=gabor_fn()sigma, theta, lambda, psi, gamma)sigma_x = sigma;sigma_y = sigma / gamma;% Bounding boxNstds = 3;xmax = max()abdominales()Nstds * sigma_x * #()theta)), abdominales()Nstds * sigma_y * pecado()theta));xmax = ceil()max()1, xmax));ymax = max()abdominales()Nstds * sigma_x * pecado()theta)), abdominales()Nstds * sigma_y * #()theta));ymax = ceil()max()1, ymax));xmin = -xmax; Ymin = -ymax;[x,Sí.] = meshgrid()xmin:xmax, Ymin:ymax);% Rotación x_theta = x * #()theta) + Sí. * pecado()theta);Y... = -x * pecado()theta) + Sí. * #()theta);gb = exp()-.5*()x_theta.^2/sigma_x^2+Y....^2/sigma_y^2). *#()2*pi/lambda*x_theta+psi);

El código para la extracción de características de Gabor a partir de imágenes en MATLAB se puede encontrar en http://www.mathworks.com/matlabcentral/fileexchange/44630.

Este es otro ejemplo de implementación en Haskell:

importación Data.ComplexGabor λ Silencio  σ γ x Sí. = exp()-()x '^2 + γ^2 * Sí. '^2) / ()2*σ^2) * exp()i * ()2*pi*x '/λ + ) Donde x ' = x * # Silencio + Sí. * pecado Silencio Sí. ' = -x * pecado Silencio + Sí. * # Silencio i = 0 :+ 1
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save