Gabor-filteret er et lineært elektronisk filter, hvis impulsrespons er defineret som en harmonisk funktion ganget med en Gauss . I digital billedbehandling bruges dette filter til at genkende grænserne for objekter.
På grund af egenskaben ved at matche tidsdomæne- foldning til frekvensdomæne-multiplikation, er Fourier-transformationen af Gabor-filterets impulsrespons foldningen af Fourier-transformationerne af den harmoniske funktion og Gauss.
hvor
I denne ligning repræsenterer bølgelængden af cosinusmultiplikatoren, bestemmer orienteringen af normalen af de parallelle strimler af Gabor-funktionen i grader, er faseforskydningen i grader og er den kompressionsfaktor, der karakteriserer ellipticiteten af Gabor-funktionen.
Gabor-filtre er direkte relateret til Gabor wavelets , da de kan konstrueres gennem en række kompressioner og rotationer. Gabor space (foldning af et filter med et signal) bruges ofte i forskellige billedbehandlingsapplikationer , især til irisgenkendelse i biometriske sikkerhedssystemer og i automatiserede adgangskontrolsystemer baseret på fingeraftryksgenkendelse.
For at konstruere et endimensionelt Gabor-filter bruges følgende formel: ,
Jo større , jo fladere vil funktionen tage. Jo mindre , jo skarpere bliver toppen som et resultat af at plotte funktionen.
Ovenstående eksponentielle funktion har egenskaberne som en normalfordeling af en stokastisk variabel. Ifølge tre sigma-reglen ligger næsten alle værdier af eksponenten i intervallet . Til signalanalyse beregnes funktionsværdier inden for de angivne grænser.
Cosinus, eksponent og deres sammensætning til en Gabor-funktion
Funktion afhængig af
Funktion afhængig af
Hvert punkt i indgangssignalet omdannes til det tilsvarende punkt i udgangssignalet ved at tage et gennemsnit af værdierne af indgangssignalet over området under hensyntagen til vægtkoefficienterne i Gabor-formlen.
For at konstruere et todimensionelt Gabor-filter bruges følgende formel:
hvor: er standardafvigelserne for Gauss-kernen langs akserne og , som bestemmer filterets forlængelse langs akserne, er filterets frekvensmodulation,
Billedbehandling ved hjælp af Gabor-filteret opnås ved at tage et gennemsnit af værdierne af det behandlede billede over et bestemt område på hvert punkt. Følgelig har påsætningen af Gabor-filteret på billedet formen:
hvor: er intensiteten af det originale billede ved punktet , er intensiteten af det nye billede ved punktet , er værdien af Gabor-funktionen, .
Hvis vi kasserer den sinusformede komponent af funktionen i Gabor-filteret, vil den degenerere til et Gaussisk sløringsfilter (Gaussisk sløring) . Derfor er det indlysende, at disse to filtre har næsten den samme applikationsalgoritme, som adskiller sig i nogle detaljer.
Det kan ses af Gabor-formlen, at filteret afhænger af frekvensen og retningen af billedets kvasi-periodiske struktur. Derfor, før du anvender filteret, er det nødvendigt at konstruere frekvens- og orienteringsfelterne for det aktuelle billede. Normalt, for at forenkle opgaven, beregnes den gennemsnitlige frekvens af billedet, som betragtes som uændret på hvert punkt.
For at konstruere retningsfeltet kan der bruges flere metoder, hvoraf den hurtigste er differentialmetoden, som giver dig mulighed for at bygge et firegradationsretningsfelt.
Med en frekvens og 4 retninger er 4 Gabor-filtre således præbygget, et for hver retning. Derefter vikles filteret ved hvert punkt af billedet med billedet over et bestemt område, hvilket giver outputværdien af det nye billede.
Gabor-filteret er effektivt til at behandle billeder med strukturel redundans med en kvasi-periodisk struktur. Disse omfatter fingeraftryksbilleder, billeder af krystallogrammer og interferrogrammer. I dyrelivet findes en lignende farve ofte i zebraer, forskellige kattedyr (tigre, loser, røgkatte), fugle (sorte ryper), fisk (stribet leporinus) og andre repræsentanter for flora og fauna.
Her er et eksempel på implementering af Gabor-filteret til Matlab -pakken :
funktion gb = gabor_fn ( sigma_x, theta, lambda, psi, gamma ) sz_x = fix ( 6 * sigma_x ); % baseret på værdien af sigma fik kernens størrelse sz_x = sz_x - mod ( sz_x , 2 ) + 1 ; % hvis lige - gør det ulige sz_y = fix ( 6 * sigma_x / gamma ); % baseret på værdien af sigma og koefficient. komprimering fik den anden kernestørrelse sz_y = sz_y - mod ( sz_y , 2 ) + 1 ; % hvis lige - gør det ulige [ x y ] = meshgrid ( - fix ( sz_x / 2 ): fix ( sz_x / 2 ), fix ( - sz_y / 2 ): fix ( sz_y / 2 )); % omfang % Roter 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 ); % kerne