Comprendre la fonction de filtre Gabor


9

J'ai besoin d'implémenter un script pour générer des fonctionnalités à partir d'une image d'entrée en utilisant le filtre Gabor. Je n'ai aucune expérience passée des ondelettes et j'apprends juste l'analyse de Fourier (je comprends l'idée de base derrière l'analyse et la transformation de Fourier) donc ils ne peuvent pas m'aider à comprendre le filtre de Gabor, parce que j'ai besoin d'avoir une implémentation faite en une semaine . Je n'ai pas besoin de comprendre les fondements de la fonction de filtre de Gabor, mais je voudrais comprendre dans une certaine mesure ce qu'elle est et ce qu'elle fait. Quels sont les paramètres? Que signifient-ils? Quelle est la sortie de la fonction? Par exemple, voici la formule que j'ai copiée de Wikipedia :

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

Maintenant, ma question évidente est: qu'est-ce que cela signifie? Que signifient les variables? Selon Wikipedia:

x,y : je suppose que ces coordonnées spécifient la valeur en pixels d'une image aux coordonnées ( 2. C'est OK, compris )(x,y)

λ : représente la longueur d'onde du facteur sinusoïdal ( facteur sinusoïdal, hein? 3a. Comment le sélectionnez-vous? 3b. D'où vient-il? 3c. S'agit-il d'un nombre arbitraire ou quoi? Choisi librement?)

θ : représente l'orientation de la normale aux bandes parallèles d'une fonction de Gabor (4. Qu'est-ce que cela signifie?)

ψ : le décalage de phase (5. décalage de quoi? Comment cette valeur est-elle déterminée? Est-elle librement choisie?)

σ : est le sigma / écart-type de l'enveloppe gaussienne (6. Besoin de plus d'explications ...)

γ : est le rapport d'aspect spatial, et spécifie l'ellipticité du support de la fonction Gabor (7. Encore une fois besoin de plus de détails et plus d'explications)

Et, surtout:

g(x,y;λ,θ,ψ,σ,γ)=X
  1. Quelle est la valeur de sortie ? Qu'est-ce que ça veut dire?X

Comme je l'ai mentionné, je n'ai pas besoin d'explications approfondies sur la théorie, car je parie qu'elle est longue et que lire un livre de 1000 pages sur un sujet inconnu n'est pas une option pour moi en ce moment. J'ai besoin d'avoir une compréhension de la boîte noire de cette fonction pour pouvoir l'implémenter dans le code et surtout comprendre ce qu'est l'entrée et ce qui est la sortie .

Merci pour toute aide !! =)

PS

J'ai lu ce post:

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

mais cela ne répond pas à ma question de manière assez approfondie :)


1
On dirait que vous essayez d'en apprendre beaucoup sur le traitement d'image en seulement une semaine. Vous devriez peut-être commencer par un filtre plus simple comme l'ondelette Haar.
Aaron

Salut @anonymous! Pouvez-vous énumérer les paramètres qui ne sont pas correctement expliqués?
visoft

@visoft, votre réponse n'est pas nette. Cela implique beaucoup de discussions superflues. J'ai ajouté ma réponse. Je pense que maintenant c'est clair.

Vous avez commencé une prime parce que "Dans la réponse actuelle, les significations de divers paramètres sont décrites sous une forme mal formulée. Une réponse précise est nécessaire." J'étais curieux de savoir quelles explications devaient être reformulées.
visoft

@visoft, votre réponse n'est pas nette. Cela implique beaucoup de discussions superflues. J'ai ajouté ma réponse. Je pense que maintenant c'est clair.

Réponses:


7

Une implémentation matlab se trouve dans cette réponse: https://dsp.stackexchange.com/a/14201/5737

1) La formule wikipedia est un peu trop générale.

2) Si vous connaissez les bases de la transformée de Fourier, vous savez empiriquement que: L'image est vue comme étant formée en superposant une série d'ondes sinusoïdales de différentes fréquences orientées dans toutes sortes de directions. Chaque "pixel" de la transformation nous indique "l'intensité" d'une telle onde. La position du "pixel" nous indique la fréquence et l'orientation de l'onde. En pratique, on veut sélectionner uniquement certaines ondes, ayant une fréquence et une orientation spécifiques.

Voilà: la transformation de Gabor est l'un des nombreux filtres passe-bande qui vous permet de «couper» la transformée de Fourier et d'isoler uniquement des informations spécifiques. Une autre information importante est que chaque "pixel" de Fourier est une valeur complexe (partie réelle et imaginaire)

3) Paramètres: Deux paramètres sont déjà affichés:

3.a) La fréquence d'accord , ou la période d'accord , ou établissent à quel type d'onde sinusale le filtre répondra le mieux. ( ou selon la mise en œuvre spécifique) Fondamentalement, un plus signifie une onde sinusale plus dense. Un plus signifie des vagues plus grandes. est en pixels (3, 5, 30, etc. pixels) Ne passez pas sous 3 pixels ou au-delà de ou vous obtenez des effets désagréables. est la largeur de l'image, si l'image est carrée. Vous spécifiez cela en utilisant le paramètre P0 dans le code matlab.f0P0λf=1/P0=1/λf=π/λP0P0P0W/2W

3.b) Angle central. Ces vagues peuvent avoir toutes les directions. Vous souhaitez sélectionner uniquement les ondes à un angle spécifique. Ainsi, le deuxième paramètre est l'angle de réglage, ou dans votre formule. Habituellement, en radians. Orientez en code matlab.θ0θ

On ne peut isoler qu'une certaine fréquence ou une certaine orientation. (Rechercher le principe d'incertitude dans les manuels scolaires. Oui, c'est similaire à celui de la physique) Mais on peut régler la quantité de fréquences voisines qui fuiront. Les deux paramètres suivants spécifient que:

3.c) , largeur de bande de fréquence exprimée en octaves. Valeurs utiles, 1,5, 2, 3. Des valeurs plus élevées signifient capturer une plus large gamme de fréquences. Il y a un prix pour une bande passante plus étroite, une localisation spatiale plus pauvre. Pourquoi, encore une fois, manuel. FBW en code matlab.ΔF

3.d) la largeur de bande angulaire. Exprimé en radians. ou fonctionne très bien. ABW en code matlab.Δθπ/3π/2

La relation entre , du code matlab et de Wikipedia a une formule mais n'est pas essentielle pour comprendre Gabor. n'est pas encore important pour la compréhension de base.ΔfΔθσ,γψ

Vous l'avez donc: de Wikipedia est une matrice 2D de nombres contenant un masque de convolution. Vous prenez l'image d'origine, la filtrez avec le masque de convolution et obtenez une autre image. Cette nouvelle image est la "réponse de Gabor" pour l'image d'origine.X

Le code matlab effectue ces deux étapes ensemble. Construit le filtre de Gabor avec les paramètres spécifiés et effectue une convolution. Les résultats ReConv, ImConv sont les réponses. Chaque "pixel" de réponse a une partie réelle et une partie imaginaire. Si vous souhaitez utiliser ce code, vous devez généralement calculer l'énergie pour la réponse: où est la partie réelle de la réponse (ReConv) et est la partie imaginaire (ImConv ), pour chaque pixel.E=a2+b2ab

Voilà: 1) Construisez un filtre Gabor spécifiant 2) Alignez votre image avec le filtre. Vous obtiendrez deux valeurs par pixel. 3) Calculez l'énergie et obtenez l'intensité de la réponse pour chaque pixel de l'image d'origineP0,θ0,Δf,ΔθE

Autre intuition: supposons que vous vouliez sélectionner des bords s'étirant selon une orientation perpendiculaire à et une certaine largeur de 20 pixels. Vous pouvez créer un filtre Gabor avec . PRENEZ GARDE qu'il n'y a pas de relation égale entre la dimension de votre bord et le paramètre . Vous devriez essayer différentes valeurs et voir ce qui fonctionne le mieux. Les autres paramètres ( ) les touchent lorsque vous avez une certaine expérience de réglage des deux premiers.π/6P020,θ0=π/6,Δf=2,Δθ=pi/2P0Δf,Δθ

J'espère que cela aide!

Cristi

Mise à jour

Voici un site qui vous permet de jouer un peu avec les paramètres de Gabor et de noter les résultats: http://www.cogsci.nl/pages/gabor-generator.php

Après un rapide coup d'œil, les largeurs de bande de fréquence et d'angle sont liées ensemble comme "écart-type en pixels ... à l'enveloppe de Gauss". Les autres paramètres sont facilement identifiables. Cependant, notez qu'il existe des différences numériques! Par exemple. la phase peut être exprimée en intervalle 0-1 ou en intervalle 0- .π


Comment la taille du noyau dépend-elle de ces paramètres? Il semble que la plupart des implémentations utilisent simplement une taille arbitraire.
jiggunjer

Tl; dr: les bandes passantes contrôlent les largeurs du noyau. C'est une relation proportionnelle inverse. Par exemple. bande passante plus étroite -> filtre plus grand. La fréquence centrale a également un rôle à jouer.
visoft

Lorsque j'utilise des filtres Gabor, je pense d'abord à quels sont mes paramètres (bandes passantes, fréquence centrale, etc.), puis "laisse" les formules calculer les dimensions.
visoft

Vous pouvez le calculer dans l'autre sens, saisir les dimensions et calculer les paramètres de fonctionnement du filtre.
visoft

En fait, je vois que la relation de taille est directement proportionnelle à lambda (au moins dans l'implémentation gabor de matlab). Leur formule est un peu bizarre car elle a un terme (2^BW+1)/(2^BW-1)qui est toujours égal à 4. Ils utilisent 7 * sigma (où sigma ~ lambda), l'exemple de wikipedia gabor utilise 3 * sigma.
jiggunjer

6

Si nous voyons la définition du filtre de Gabor, nous saurons que sa réponse impulsionnelle est le produit d'une fonction sinusoïdale et d'une fonction gaussienne , qui est essentiellement ce que nous voyons dans la formule.

entrez la description de l'image ici

Les paramètres λ, θ, ψ sont des paramètres pour la partie sinusoïdale (ou facteur).

λ et ψ sont les paramètres de base d'une onde sinusoïdale.

λ - contrôle la longueur d'onde ( https://en.wikipedia.org/wiki/Wavelength ) de cette sinusoïde. Un λ supérieur «élargirait» les ellipses que vous voyez dans l'image ci-dessus, tandis qu'un λ inférieur aurait le contraire.

θ - contrôle la rotation des ellipses que vous voyez dans l'image ci-dessus. Ces ellipses sont les «bandes parallèles». Une valeur de θ = 0 indique aucune rotation et rendrait les ellipses verticales.

ψ - est le déphasage de la sinusoïde, c'est-à-dire combien les ellipses doivent être décalées par rapport au centre. C'est un paramètre qui doit être spécifié.

σ - est l'écart-type (c.-à-d. l'étalement) de la partie gaussienne.

γ - contrôle le rapport hauteur / largeur des ellipses (à peu près, comment les ellipses doivent être allongées).

Les différents paramètres spécifiés ci-dessus sont les entrées.

La valeur de sortie du calcul est simplement le coefficient (ou poids) du filtre à l'emplacement (x, y).

C'est le sens, et c'est la même chose dans le contexte de tout autre filtre linéaire utilisé dans le traitement d'image.


0

Quelqu'un a réalisé une vidéo exceptionnelle expliquant les effets des différents paramètres du filtre Gabor. Vous pouvez trouver la vidéo ici .

J'espère que cela t'aides.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.