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 :
Meine offensichtliche Frage lautet nun: Was bedeutet das? Was bedeuten die Variablen? Laut Wikipedia:
: Ich gehe davon aus, dass diese Koordinaten den Pixelwert eines Bildes an den Koordinaten angeben ( 2. Dies ist in Ordnung, verstanden ).
: 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:
- Was ist der Ausgabewert ? Was bedeutet das?
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 :)
quelle
Antworten:
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.f0 P0 λ f=1/P0=1/λ f=π/λ P0 P0 P0 W/2 W
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+b2−−−−−−√ a b
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 0 ≈ 20 , θ 0 = π / 6 , Δ f = 2 , Δ θ = p i / 2 P 0 Δ f , Δ θπ/6 P0≈20,θ0=π/6,Δf=2,Δθ=pi/2 P0 Δ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.π
quelle
(2^BW+1)/(2^BW-1)
der immer gleich 4 ist. Sie verwenden 7 * Sigma (wobei Sigma ~ Lambda), Wikipedia Gabor Beispiel verwendet 3 * Sigma.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.
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.
quelle
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.
quelle