Comprender la función de filtro de Gabor


9

Necesito implementar un script para generar características a partir de una imagen de entrada utilizando el filtro Gabor. No tengo experiencia previa en wavelets y solo estoy aprendiendo el análisis de Fourier (entiendo la idea básica detrás del análisis y la transformación de Fourier), por lo que no pueden ayudarme a comprender el filtro de Gabor, porque necesito hacer una implementación en una semana . No necesito entender los fundamentos de la función de filtro de Gabor, pero me gustaría entender en cierta medida qué es y qué hace. ¿Cuáles son los parámetros? ¿Qué quieren decir? ¿Cuál es la salida de la función? Por ejemplo, esta es la fórmula que copié de Wikipedia :

g(x,y;λ,θ,ψ,σ,γ)=exp(x2+γ2y22σ2)exp(i(2πxλ+ψ))

Ahora mi pregunta obvia es: ¿Qué significa esto? ¿Qué significan las variables? De acuerdo con Wikipedia:

x,y: Supongo que estas coordenadas especifican el valor de píxel de una imagen en las coordenadas (x,y)( 2. Esto está bien, entendido )

λ: representa la longitud de onda del factor sinusoidal ( Factor sinusoidal, ¿eh? 3a. ¿Cómo se selecciona? 3b. ¿De dónde viene? 3c. ¿Es un número arbitrario o qué? ¿Libremente elegido?)

θ: representa la orientación de las rayas normales a paralelas de una función de Gabor (4. ¿Qué significa eso?)

ψ: ¿es el desplazamiento de fase (5. desplazamiento de qué? ¿Cómo se determina este valor? ¿Se elige libremente?)

σ: es la desviación sigma / estándar de la envoltura gaussiana (6. Necesita más explicación ...)

γ: es la relación de aspecto espacial, y especifica la elipticidad del soporte de la función Gabor (7. Nuevamente se necesitan más detalles y más explicaciones)

Y más importante:

g(x,y;λ,θ,ψ,σ,γ)=X
  1. ¿Cuál es el valor de salida? X? Qué significa eso?

Como mencioné, no necesito una explicación exhaustiva de la teoría, porque apuesto a que es larga y leer un libro de 1000 páginas sobre un tema desconocido no es una opción para mí en este momento. Necesito tener una comprensión de caja negra de esta función para poder implementarla en código y lo más importante, comprender qué es la entrada y cuál es la salida .

¡¡Gracias por cualquier ayuda!! =)

PD

Leí esta publicación:

/math/259877/value-of-xy-in-computing-gabor-filter-function

pero no responde a mi pregunta lo suficientemente completo :)


1
Parece que estás tratando de aprender mucho sobre el procesamiento de imágenes en solo una semana. Tal vez deberías comenzar con un filtro más simple primero como la wavelet de Haar.
Aaron

Hola @anónimo! ¿Puedes enumerar qué parámetros no se explican correctamente?
visoft

@visoft, su respuesta no es clara. Implica muchas discusiones extrañas. He agregado mi respuesta. Creo que ahora está claro.

Usted comenzó una recompensa porque "En la respuesta actual, los significados de varios parámetros se describen en forma mal redactada. Se necesita una respuesta directa". Tenía curiosidad sobre qué explicaciones necesitan reformularse.
visoft

@visoft, su respuesta no es clara. Implica muchas discusiones extrañas. He agregado mi respuesta. Creo que ahora está claro.

Respuestas:


7

Una implementación de matlab está en esta respuesta: https://dsp.stackexchange.com/a/14201/5737

1) La fórmula de Wikipedia es un poco demasiado general.

2) Si conoce los conceptos básicos de la transformación de Fourier, entonces sabrá empíricamente que: La imagen se ve como formada al superponer una serie de ondas sinusoidales de varias frecuencias orientadas en todo tipo de direcciones. Cada "píxel" en la transformación nos dice la "intensidad" de dicha onda. La posición del "píxel" nos dice la frecuencia y orientación de la onda. En la práctica, uno quiere seleccionar solo ciertas ondas, que tengan una frecuencia específica y una orientación específica.

Así que ahí lo tiene: la transformación de Gabor es uno de los llamados filtros de paso de banda que le permite "cortar" la transformación de Fourier y aislar solo información específica. Otra información importante es que cada "píxel" de Fourier es un valor complejo (parte real e imaginaria)

3) Parámetros: ya se muestran dos parámetros:

3.a) La frecuencia de sintonización f0o período de sintonía P0o λestablezca a qué tipo de onda sinusal responderá mejor el filtro. (f=1/P0=1/λ o f=π/λ dependiendo de la implementación específica) Básicamente, un más pequeño P0significa una onda sinusal más densa. Un mayorP0 significa olas más grandes. P0 está en píxeles (3, 5, 30, etc. píxeles) No vaya a menos de 3 píxeles o más W/2 o obtienes efectos desagradables. Wes el ancho de la imagen, si la imagen es cuadrada. Usted especifica esto usando el parámetro P0 en el código matlab.

3.b) Ángulo central. Estas ondas pueden tener cualquier dirección. Desea seleccionar solo ondas en un ángulo específico. Entonces, el segundo parámetro es el ángulo de sintonización,θ0 o θen tu formula Por lo general, en radianes. Oriente en código matlab.

Uno no puede aislar solo una cierta frecuencia o una cierta orientación. (Busque el principio de incertidumbre en los libros de texto. Sí, es similar al de la física) Pero se puede ajustar la cantidad de frecuencias cercanas que se filtrarán. Los siguientes dos parámetros especifican que:

3.c) ΔF, ancho de banda de frecuencia expresado en octavas. Valores útiles, 1.5, 2, 3. Valores mayores significa capturar un rango más amplio de frecuencias. Hay un precio por un paso de banda más ajustado, una localización espacial más pobre. Por qué, de nuevo, libro de texto. FBW en código matlab.

3.d) ΔθEl ancho de banda del ángulo. Expresado en radianes.π/3 o π/2funciona bien ABW en código matlab.

La relación entre Δf, Δθ del código matlab y σ,γ de Wikipedia tienen una fórmula pero no es esencial para entender a Gabor. ψ De nuevo, no es importante para la comprensión básica.

Entonces lo tienes: Xde Wikipedia es una matriz 2D de números que contiene una máscara de convolución. Toma la imagen original, la filtra con la máscara de convolución y obtiene otra imagen. Esta nueva imagen es la "respuesta de Gabor" para la imagen original.

El código matlab realiza estos dos pasos juntos. Construye el filtro Gabor con los parámetros especificados y realiza convolución. Los resultados ReConv, ImConv son las respuestas. Cada respuesta "píxel" tiene una parte real e imaginaria. Si desea utilizar este código, generalmente debe calcular la energía para la respuesta:E=a2+b2 dónde a es la parte real de la respuesta (ReConv) y b es la parte imaginaria (ImConv), para cada píxel.

Ahí lo tienes: 1) Construye un filtro Gabor especificando P0,θ0,Δf,Δθ 2) Convoluciona tu imagen con el filtro. Obtendrá dos valores por cada píxel. 3) Calcular la energíaE y obtener la intensidad de la respuesta para cada píxel en la imagen original

Otra intuición: suponga que desea seleccionar bordes que se extienden en una orientación perpendicular a π/6y un cierto ancho de 20 píxeles. Puedes construir un filtro Gabor conP020,θ0=π/6,Δf=2,Δθ=pi/2. TENGA CUIDADO de que no hay una relación igual entre la dimensión de su borde y laP0parámetro. Debe probar varios valores y ver qué funciona mejor. Los otros parámetros (Δf,Δθ) tóquelos cuando tenga experiencia ajustando los dos primeros.

¡Espero eso ayude!

Cristi

Actualizar

Aquí hay un sitio que le permite jugar un poco con los parámetros de Gabor y observar los resultados: http://www.cogsci.nl/pages/gabor-generator.php

Después de una mirada rápida, los anchos de banda de frecuencia y ángulo se unen como "Desviación estándar en píxeles ... al sobre de Gauss". El resto de los parámetros se identifican fácilmente. Sin embargo, tenga en cuenta que hay diferencias numéricas. P.ej. la fase puede expresarse en intervalo 0-1 o 0-π intervalo.


¿Cómo depende el tamaño del núcleo de esos parámetros? Parece que la mayoría de las implementaciones solo usan un tamaño arbitrario.
jiggunjer

Tl; dr: los anchos de banda controlan los anchos del núcleo. Es una relación inversa proporcional. P.ej. ancho de banda más estrecho -> filtro más grande. También la frecuencia central también tiene un papel.
visoft

Cuando uso filtros Gabor, primero pienso en cuáles son mis parámetros (anchos de banda, frecuencia central, etc.) y luego "dejo" que las fórmulas calculen las dimensiones.
visoft

Puede resolverlo al revés, ingresar las dimensiones y calcular los parámetros de trabajo del filtro.
visoft

En realidad, veo que la relación de tamaño es directamente proporcional a lambda (al menos en la implementación gabor de matlab). Su fórmula es un poco extraña porque tiene un término (2^BW+1)/(2^BW-1)que siempre es igual a 4. Usan 7 * sigma (donde sigma ~ lambda), el ejemplo de wikipedia gabor usa 3 * sigma.
jiggunjer

6

Si vemos la definición del filtro de Gabor, sabremos que su respuesta al impulso es producto de una función sinusoidal y una función gaussiana , que es esencialmente lo que vemos en la fórmula.

ingrese la descripción de la imagen aquí

Los parámetros λ, θ, ψ son parámetros para la parte sinusoidal (o factor).

λ y ψ son parámetros básicos de una onda sinusoidal.

λ : controla la longitud de onda ( https://en.wikipedia.org/wiki/Wavelength ) de esta sinusoide. Un λ más alto "ensanchará" las elipses que ve en la imagen de arriba, mientras que un λ más bajo tendría lo contrario.

θ : controla la rotación de las elipses que ves en la imagen de arriba. Estas elipses son las "franjas paralelas". Un valor de θ = 0 indica que no hay rotación y haría que las elipses sean verticales.

ψ - es el desplazamiento de fase de la sinusoide, es decir, cuánto deben desplazarse las elipses con respecto al centro. Es un parámetro que debe especificarse.

σ - es la desviación estándar (es decir, la extensión) de la parte gaussiana.

γ : controla la relación de aspecto de las elipses (aproximadamente, qué tan alargadas deben ser las elipses).

Los diversos parámetros especificados anteriormente son las entradas.

El valor de salida del cálculo es simplemente el coeficiente (o peso) del filtro en la ubicación (x, y).

Este es el significado, y es el mismo en el contexto de cualquier otro filtro lineal utilizado en el procesamiento de imágenes.


0

Alguien hizo un video sobresaliente explicando los efectos de diferentes parámetros del filtro Gabor. Puedes encontrar el video aquí .

Espero que esto ayude.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.