Grundlegendes zur Gabor-Filterfunktion


8

Ich muss ein Skript zum Generieren von Features aus einem Eingabebild mithilfe des Gabor-Filters implementieren. Ich habe keine Erfahrung mit Wavelets in der Vergangenheit und lerne gerade die Fourier-Analyse (ich verstehe die Grundidee hinter der Fourier-Analyse und -Transformation), daher können sie mir nicht helfen, den Gabor-Filter zu verstehen, da ich in einer Woche eine Implementierung durchführen muss . Ich muss die Grundlagen der Gabor-Filterfunktion nicht verstehen, aber ich möchte bis zu einem gewissen Grad verstehen, was es ist und was es tut. Was sind die Parameter? Was meinen sie? Was ist die Ausgabe der Funktion? Zum Beispiel ist dies die Formel, die ich aus Wikipedia kopiert habe :

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

Meine offensichtliche Frage lautet nun: Was bedeutet das? Was bedeuten die Variablen? Laut Wikipedia:

x,y : Ich gehe davon aus, dass diese Koordinaten den Pixelwert eines Bildes an den Koordinaten angeben ( 2. Dies ist in Ordnung, verstanden ).(x,y)

λ : repräsentiert die Wellenlänge des Sinusfaktors (Sinusfaktor, huh? 3a. Wie wählst du ihn aus? 3b. Woher kommt er? 3c. Ist es eine beliebige Zahl oder was? Frei gewählt?)

θ : repräsentiert die Ausrichtung der Normalen zu den parallelen Streifen einer Gabor-Funktion (4. Was bedeutet das?)

ψ : ist der Phasenversatz (5. Versatz von was? Wie wird dieser Wert bestimmt? Ist er frei gewählt?)

σ : ist das Sigma / die Standardabweichung der Gaußschen Hüllkurve (6. Benötigen Sie weitere Erklärungen ...)

γ : ist das räumliche Seitenverhältnis und gibt die Elliptizität der Unterstützung der Gabor-Funktion an (7. Benötigen Sie erneut weitere Details und Erläuterungen).

Und am wichtigsten:

g(x,y;λ,θ,ψ,σ,γ)=X
  1. Was ist der Ausgabewert ? Was bedeutet das?X

Wie ich bereits erwähnt habe, brauche ich keine gründliche Erklärung der Theorie, da ich wette, dass sie lang ist und das Lesen eines 1000-seitigen Buches zu einem unbekannten Thema für mich derzeit keine Option ist. Ich muss ein Black-Box-Verständnis für diese Funktion haben, damit ich sie in Code implementieren und vor allem verstehen kann, was die Eingabe und was die Ausgabe ist .

Vielen Dank für jede Hilfe! =)

PS

Ich habe diesen Beitrag gelesen:

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

aber es beantwortet meine Frage nicht gründlich genug :)


1
Sieht so aus, als würden Sie in nur einer Woche viel über die Bildverarbeitung lernen. Vielleicht sollten Sie zuerst mit einem einfacheren Filter wie dem Haar-Wavelet beginnen.
Aaron

Hallo @anonymous! Können Sie aufzählen, welche Parameter nicht richtig erklärt werden?
Visoft

@visoft, Ihre Antwort ist nicht ordentlich. Es beinhaltet viele irrelevante Diskussionen. Ich habe meine Antwort hinzugefügt. Ich denke jetzt ist es klar.

Sie haben ein Kopfgeld gestartet, weil "In der aktuellen Antwort werden die Bedeutungen verschiedener Parameter in schlecht formulierter Form beschrieben. Eine punktgenaue Antwort ist erforderlich." Ich war gespannt, welche Erklärungen umformuliert werden müssen.
Visoft

@visoft, Ihre Antwort ist nicht ordentlich. Es beinhaltet viele irrelevante Diskussionen. Ich habe meine Antwort hinzugefügt. Ich denke jetzt ist es klar.

Antworten:


7

Eine Matlab-Implementierung finden Sie in dieser Antwort: https://dsp.stackexchange.com/a/14201/5737

1) Die Wikipedia-Formel ist etwas zu allgemein.

2) Wenn Sie die Grundlagen der Fourier-Transformation kennen, wissen Sie empirisch Folgendes: Das Bild wird als durch Überlagerung einer Reihe von Sinuswellen verschiedener Frequenzen in alle Richtungen orientiert betrachtet. Jedes "Pixel" in der Transformation gibt die "Intensität" einer solchen Welle an. Die Position des "Pixels" gibt Auskunft über die Frequenz und Ausrichtung der Welle. In der Praxis möchte man nur bestimmte Wellen mit einer bestimmten Frequenz und einer bestimmten Ausrichtung auswählen.

Da haben Sie es also: Die Gabor-Transformation ist einer von vielen sogenannten Bandpassfiltern, mit denen Sie die Fourier-Transformation "schneiden" und nur bestimmte Informationen isolieren können. Eine weitere wichtige Information ist, dass jedes Fourier- "Pixel" ein komplexer Wert ist (Real- und Imaginärteil).

3) Parameter: Zwei Parameter werden bereits angezeigt:

3.a) Die Abstimmfrequenz oder die Abstimmperiode oder legen fest, auf welche Art von Sinuswelle das Filter am besten reagiert. ( oder abhängig von der spezifischen Implementierung) Grundsätzlich bedeutet ein kleineres eine dichtere Sinuswelle. Ein größeres bedeutet größere Wellen. ist in Pixel (3, 5, 30 usw. Pixel) angegeben. Gehen Sie nicht unter 3 Pixel oder über , da sonst böse Effekte auftreten. ist die Breite des Bildes, wenn das Bild quadratisch ist. Sie geben dies mit dem Parameter P0 im Matlab-Code an.f0P0λf=1/P0=1/λf=π/λP0P0P0W/2W

3.b) Zentralwinkel. Diese Wellen können beliebige Richtungen haben. Sie möchten nur Wellen in einem bestimmten Winkel auswählen. Der zweite Parameter ist also der Abstimmungswinkel oder in Ihrer Formel. Normalerweise im Bogenmaß. Orientieren Sie sich im Matlab-Code.θ0θ

Man kann nicht nur eine bestimmte Frequenz oder eine bestimmte Ausrichtung isolieren. (Suche nach dem Unsicherheitsprinzip in den Lehrbüchern. Ja, ähnelt dem in der Physik.) Man kann jedoch einstellen, wie viel der nahegelegenen Frequenzen auslaufen wird. Die nächsten beiden Parameter geben Folgendes an:

3.c) , Frequenzbandbreite ausgedrückt in Oktaven. Nützliche Werte, 1,5, 2, 3. Größere Werte bedeuten, dass ein breiterer Frequenzbereich erfasst wird. Es gibt einen Preis für einen engeren Bandpass, eine schlechtere räumliche Lokalisierung. Warum wieder Lehrbuch. FBW im Matlab-Code.ΔF

3.d) die Winkelbandbreite. Im Bogenmaß ausgedrückt. oder funktioniert einwandfrei. ABW im Matlab-Code.Δθπ/3π/2

Die Beziehung zwischen , aus dem Matlab-Code und aus Wikipedia hat eine Formel, ist aber für das Verständnis von Gabor nicht wesentlich. ist wiederum nicht wichtig für das Grundverständnis.ΔfΔθσ,γψ

Sie haben es also: aus Wikipedia ist eine 2D-Zahlenmatrix mit einer Faltungsmaske. Sie nehmen das Originalbild auf, filtern es mit der Faltungsmaske und erhalten ein weiteres Bild. Dieses neue Bild ist die "Gabor-Antwort" für das Originalbild.X

Der Matlab-Code führt diese beiden Schritte zusammen aus. Konstruiert den Gabor-Filter mit den angegebenen Parametern und führt die Faltung durch. Die Ergebnisse ReConv, ImConv sind die Antworten. Jedes Antwort- "Pixel" hat einen Real- und einen Imaginärteil. Wenn Sie diesen Code verwenden möchten, müssen Sie normalerweise die Energie für die Antwort berechnen: wobei der Realteil der Antwort (ReConv) und der Imaginärteil (ImConv) ist ) für jedes Pixel.E=a2+b2ab

Dort haben Sie es: 1) Erstellen Sie einen Gabor-Filter, der angibt. 2) Falten Sie Ihr Bild mit dem Filter. Sie erhalten zwei Werte pro Pixel. 3) Berechnen Sie die Energie und erhalten Sie die Intensität der Antwort für jedes Pixel im Originalbild; & thgr; E.P0,θ0,Δf,ΔθE

Eine andere Intuition: Angenommen, Sie möchten Kanten auswählen, die sich in einer Ausrichtung senkrecht zu und einer bestimmten Breite von 20 Pixeln erstrecken. Sie können einen Gabor-Filter mit . Achten Sie darauf, dass zwischen der Abmessung Ihrer Kante und dem Parameter keine gleiche Beziehung besteht . Sie sollten verschiedene Werte ausprobieren und sehen, was am besten funktioniert. Die anderen Parameter ( ) berühren sie, wenn Sie Erfahrung mit der Abstimmung der ersten beiden haben.P 020 , θ 0 = π / 6 , Δ f = 2 , Δ θ = p i / 2 P 0 Δ f , Δ θπ/6P020,θ0=π/6,Δf=2,Δθ=pi/2P0Δf,Δθ

Ich hoffe es hilft!

Cristi

Aktualisieren

Hier ist eine Seite, auf der Sie ein bisschen mit Gabor-Parametern spielen und die Ergebnisse notieren können: http://www.cogsci.nl/pages/gabor-generator.php

Nach einem kurzen Blick werden sowohl Frequenz- als auch Winkelbandbreiten als "Standardabweichung in Pixel ... an die Gauß-Hüllkurve" miteinander verknüpft. Der Rest der Parameter ist leicht zu identifizieren. Beachten Sie jedoch, dass es numerische Unterschiede gibt! Z.B. Die Phase kann in Intervallen von 0-1 oder 0- ausgedrückt werden.π


Wie hängt die Kernelgröße von diesen Parametern ab? Es scheint, dass die meisten Implementierungen nur eine beliebige Größe verwenden.
Jiggunjer

Tl; dr: Bandbreiten steuern die Breiten des Kernels. Es ist eine inverse proportionale Beziehung. Z.B. schmalere Bandbreite -> größerer Filter. Auch die Mittenfrequenz spielt eine Rolle.
Visoft

Wenn ich Gabor-Filter verwende, denke ich zuerst über meine Parameter nach (Bandbreiten, Mittenfrequenz usw.) und lasse dann die Formeln die Dimensionen berechnen.
Visoft

Sie können es umgekehrt ausarbeiten, die Abmessungen eingeben und die Filterarbeitsparameter berechnen.
Visoft

Eigentlich sehe ich, dass das Größenverhältnis direkt proportional zu Lambda ist (zumindest in Matlabs Gabor-Implementierung). Ihre Formel ist etwas seltsam, weil sie einen Begriff hat, (2^BW+1)/(2^BW-1)der immer gleich 4 ist. Sie verwenden 7 * Sigma (wobei Sigma ~ Lambda), Wikipedia Gabor Beispiel verwendet 3 * Sigma.
Jiggunjer

6

Wenn wir die Definition des Gabor-Filters sehen, werden wir wissen, dass seine Impulsantwort ein Produkt einer Sinusfunktion und einer Gaußschen Funktion ist , was im Wesentlichen das ist, was wir in der Formel sehen.

Geben Sie hier die Bildbeschreibung ein

Die Parameter λ, θ, ψ sind Parameter für den sinusförmigen Teil (oder Faktor).

λ und ψ sind Grundparameter einer Sinuswelle.

λ - steuert die Wellenlänge ( https://en.wikipedia.org/wiki/Wavelength ) dieser Sinuskurve. Ein höheres λ würde die Ellipsen, die Sie im Bild oben sehen, „verbreitern“, während ein niedrigeres λ das Gegenteil hätte.

θ - steuert die Drehung der Ellipsen, die Sie im obigen Bild sehen. Diese Ellipsen sind die "parallelen Streifen". Ein Wert von θ = 0 zeigt keine Drehung an und würde die Ellipsen vertikal machen.

ψ - ist die Phasenverschiebung der Sinuskurve, dh wie stark die Ellipsen gegenüber dem Zentrum verschoben werden müssen. Es ist ein Parameter, der angegeben werden muss.

σ - ist die Standardabweichung (dh die Streuung) des Gaußschen Teils.

γ - steuert das Seitenverhältnis der Ellipsen (ungefähr, wie lang die Ellipsen sein müssen).

Die verschiedenen oben angegebenen Parameter sind die Eingänge.

Der Ausgabewert der Berechnung ist einfach der Koeffizient (oder das Gewicht) des Filters an der Stelle (x, y).

Dies ist die Bedeutung und gilt auch für alle anderen in der Bildverarbeitung verwendeten linearen Filter.


0

Jemand hat ein hervorragendes Video gemacht, in dem die Auswirkungen verschiedener Parameter des Gabor-Filters erklärt werden. Das Video finden Sie hier .

Hoffe das hilft.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.