Gabor-filtret är ett linjärt elektroniskt filter vars impulssvar definieras som en harmonisk funktion multiplicerad med en Gauss . Vid digital bildbehandling används detta filter för att känna igen objektens gränser.
På grund av egenskapen att matcha tidsdomänfaltningen med frekvensdomänmultiplikationen är Fouriertransformen av Gabor-filtrets impulssvar faltningen av Fouriertransformerna av den harmoniska funktionen och Gaussian.
var
I denna ekvation representerar våglängden för cosinusmultiplikatorn, bestämmer orienteringen av normalen för de parallella remsorna i Gabor-funktionen i grader, är fasförskjutningen i grader, och är den kompressionsfaktor som kännetecknar Gabor-funktionens ellipticitet .
Gabor-filter är direkt relaterade till Gabor -vågor , eftersom de kan konstrueras genom en serie av kompressioner och rotationer. Gabor-utrymme (falsning av ett filter med en signal) används ofta i olika bildbehandlingstillämpningar , särskilt för irisigenkänning i biometriska säkerhetssystem och i automatiserade åtkomstkontrollsystem baserade på fingeravtrycksigenkänning.
För att konstruera ett endimensionellt Gabor-filter används följande formel: ,
Ju större , desto plattare blir funktionen. Ju mindre , desto skarpare blir toppen som ett resultat av att plotta funktionen.
Ovanstående exponentialfunktion har egenskaperna hos en normalfördelning av en slumpvariabel. Enligt tre sigma-regeln ligger nästan alla värden på exponenten i intervallet . För signalanalys beräknas funktionsvärden inom de angivna gränserna.
Cosinus, exponent och deras sammansättning till en Gabor-funktion
Funktionsberoende på
Funktionsberoende på
Varje punkt i insignalen omvandlas till motsvarande punkt i utsignalen genom att medelvärdena för insignalens värde över området , med hänsyn till viktkoefficienterna för Gabor-formeln.
För att konstruera ett tvådimensionellt Gabor-filter används följande formel:
var: är standardavvikelserna för den Gaussiska kärnan, längs axlarna och , som bestämmer filtrets förlängning längs axlarna, är filtrets frekvensmodulering,
Bildbehandling med Gabor-filtret uppnås genom att medelvärdena för den bearbetade bilden beräknas över ett visst område vid varje punkt. Följaktligen har inläggningen av Gabor-filtret på bilden formen:
där: är intensiteten för den ursprungliga bilden vid punkten , är intensiteten för den nya bilden vid punkten , är värdet på Gabor-funktionen, .
Om vi kasserar den sinusformade komponenten av funktionen i Gabor-filtret, kommer den att urarta till ett Gaussiskt oskärpafilter (Gaussiskt oskärpa) . Därför är det uppenbart att dessa två filter har nästan samma applikationsalgoritm, vilket skiljer sig åt i vissa detaljer.
Det kan ses från Gabor-formeln att filtret beror på frekvensen och riktningen för bildens kvasi-periodiska struktur. Innan filtret appliceras är det därför nödvändigt att konstruera frekvens- och orienteringsfälten för den aktuella bilden. Vanligtvis, för att förenkla uppgiften, beräknas bildens genomsnittliga frekvens, som anses vara oförändrad vid varje punkt.
För att konstruera riktningsfältet kan flera metoder användas, varav den snabbaste är differentialmetoden, som låter dig bygga ett fyrgradigt riktningsfält.
Med en frekvens och 4 riktningar är 4 Gabor-filter förbyggda, ett för varje riktning. Därefter, vid varje punkt i bilden, viks filtret med bilden över ett visst område, vilket ger utdatavärdet för den nya bilden.
Gabor-filtret är effektivt för att bearbeta bilder med strukturell redundans som har en kvasi-periodisk struktur. Dessa inkluderar fingeravtrycksbilder, bilder av kristallogram och interferrogram. I vilda djur finns en liknande färg ofta i zebror, olika kattdjur (tigrar, lodjur, rökiga katter), fåglar (orre), fiskar (randig leporinus) och andra representanter för flora och fauna.
Här är ett exempel på implementering av Gabor-filtret för Matlab -paketet :
funktion gb = gabor_fn ( sigma_x, theta, lambda, psi, gamma ) sz_x = fix ( 6 * sigma_x ); % baserat på värdet på sigma fick storleken på kärnan sz_x = sz_x - mod ( sz_x , 2 ) + 1 ; % om jämnt - gör det udda sz_y = fix ( 6 * sigma_x / gamma ); % baserat på värdet av sigma och koefficient. komprimering fick den andra kärnstorleken sz_y = sz_y - mod ( sz_y , 2 ) + 1 ; % om jämnt - gör det udda [ x y ] = meshgrid ( - fix ( sz_x / 2 ): fix ( sz_x / 2 ), fix ( - sz_y / 2 ): fix ( sz_y / 2 )); % omfattning % Rotera x_theta = x * cos ( theta ) + y * sin ( theta ); y_theta = - x * sin ( theta ) + y * cos ( theta ); gb = exp ( - .5 * ( x_theta .^ 2 / sigma_x ^ 2 + gamma ^ 2 * y_theta .^ 2 / sigma_x ^ 2 )) * cos ( 2 * pi * x_theta ./ lambda + psi ); % kärna