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 :
Ahora mi pregunta obvia es: ¿Qué significa esto? ¿Qué significan las variables? De acuerdo con Wikipedia:
: Supongo que estas coordenadas especifican el valor de píxel de una imagen en las coordenadas ( 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:
- ¿Cuál es el valor de salida? ? 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 :)
fuente
Respuestas:
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ónf0 o período de sintonía P0 o λ 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 P0 significa 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. W es 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 π/2 funciona 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:X de 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 especificandoP0,θ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π/6 y un cierto ancho de 20 píxeles. Puedes construir un filtro Gabor conP0≈20,θ0=π/6,Δf=2,Δθ=pi/2 . TENGA CUIDADO de que no hay una relación igual entre la dimensión de su borde y laP0 pará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.
fuente
(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.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.
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.
fuente
Alguien hizo un video sobresaliente explicando los efectos de diferentes parámetros del filtro Gabor. Puedes encontrar el video aquí .
Espero que esto ayude.
fuente