Gaborův filtr

Gaborův filtr  je lineární elektronický filtr , jehož impulsní odezva je definována jako harmonická funkce násobená Gaussiánem . Při digitálním zpracování obrazu se tento filtr používá k rozpoznání hranic objektů.

Díky vlastnosti přizpůsobení konvoluce v časové oblasti násobení ve frekvenční oblasti je Fourierova transformace impulsní odezvy Gaborova filtru konvolucí Fourierových transformací harmonické funkce a Gaussovy funkce.

kde

V této rovnici představuje vlnovou délku kosinusového multiplikátoru, určuje orientaci normály rovnoběžných proužků Gaborovy funkce ve stupních,  je fázový posun ve stupních a  je kompresním faktorem, který charakterizuje elipticitu Gaborovy funkce.

Gaborovy filtry přímo souvisejí s Gaborovými vlnkami , protože je lze konstruovat pomocí řady kompresí a rotací. Gaborův prostor (konvoluce filtru se signálem) se často používá v různých zobrazovacích aplikacích , zejména pro rozpoznávání duhovky v biometrických bezpečnostních systémech a v systémech automatizované kontroly přístupu založených na rozpoznávání otisků prstů.

Algoritmus pro konstrukci jednorozměrného Gaborova filtru

Pro konstrukci jednorozměrného Gaborova filtru se používá následující vzorec: ,

kde:

Čím větší , tím plošší bude funkce. Čím menší , tím ostřejší bude vrchol v důsledku vykreslení funkce.

Výše uvedená exponenciální funkce má vlastnosti normálního rozdělení náhodné veličiny. Podle pravidla tři sigma leží téměř všechny hodnoty exponentu v intervalu . Pro analýzu signálu se funkční hodnoty počítají v rámci specifikovaných limitů.

Zpracování jednorozměrného signálu Gaborovým filtrem

Každý bod vstupního signálu je transformován na odpovídající bod výstupního signálu zprůměrováním hodnot vstupního signálu na ploše s přihlédnutím k váhovým koeficientům vzorce Gabor.


kde:  je vstupní hodnota signálu v bodě ,  je výstupní hodnota signálu v bodě ,  je hodnota Gaborovy funkce, .

Algoritmus pro konstrukci dvourozměrného Gaborova filtru

Pro konstrukci dvourozměrného Gaborova filtru se používá následující vzorec:

kde:  jsou standardní odchylky Gaussova jádra podél os a , které určují prodloužení filtru podél os,  je frekvenční modulace filtru,
 — prostorová orientace filtru, která určuje jeho orientaci vzhledem k hlavním osám.

Zpracování 2D obrazu pomocí Gaborova filtru


Zpracování obrazu Gaborovým filtrem je dosaženo zprůměrováním hodnot zpracovávaného obrazu přes určitou oblast v každém bodě. V souladu s tím má umístění Gaborova filtru na obrázek tvar: kde:  je intenzita původního obrázku v bodě ,  je intenzita nového obrázku v bodě ,  je hodnota Gaborovy funkce, . Pokud zahodíme sinusovou složku funkce v Gaborově filtru, zvrhne se do filtru Gaussian Blur (Gaussian Blur) . Je tedy zřejmé, že tyto dva filtry mají téměř stejný aplikační algoritmus, který se v některých detailech liší. Z Gaborova vzorce je vidět, že filtr závisí na frekvenci a směru kvaziperiodické struktury obrazu. Před aplikací filtru je proto nutné zkonstruovat pole frekvence a orientace pro aktuální snímek. Obvykle se pro zjednodušení úlohy vypočítá průměrná frekvence obrazu, která se v každém bodě považuje za nezměněnou. Ke konstrukci směrového pole lze použít několik metod, z nichž nejrychlejší je diferenciální metoda, která umožňuje sestavit čtyřstupňové směrové pole. S frekvencí a 4 směry jsou tedy předem vytvořeny 4 Gaborovy filtry, jeden pro každý směr. Poté je v každém bodě obrázku filtr konvolvován s obrázkem přes určitou oblast, což dává výstupní hodnotu nového obrázku. Gaborův filtr je účinný při zpracování snímků se strukturální redundancí, která má kvaziperiodickou strukturu. Patří mezi ně snímky otisků prstů, snímky krystalogramů a interferrogramy. Ve volné přírodě se podobné zbarvení často vyskytuje u zeber, různých kočkovitých šelem (tygři, rysi, kouřové kočky), ptáků (tetřev obecný), ryb (leporinus pruhovaný) a dalších zástupců flóry a fauny.









Příklad implementace

Zde je příklad implementace filtru Gabor pro balíček Matlab :

funkce gb = gabor_fn ( sigma_x, theta, lambda, psi, gama ) sz_x = oprava ( 6 * sigma_x ); % na základě hodnoty sigma získalo velikost jádra sz_x = sz_x - mod ( sz_x , 2 ) + 1 ; % pokud sudé - liché sz_y = oprava ( 6 * sigma_x / gama ); % na základě hodnoty sigma a koeficientu. komprese získala druhou velikost jádra sz_y = sz_y - mod ( sz_y , 2 ) + 1 ; % pokud sudé - liché [ x y ] = mřížka ( - opravit ( sz_x / 2 ): opravit ( sz_x / 2 ), opravit ( - sz_y / 2 ): opravit ( sz_y / 2 )); % rozsahu % Točit se x_theta = x * cos ( theta ) + y * sin ( theta ); y_theta = - x * sin ( theta ) + y * cos ( theta ); gb = exp ( - 0,5 * ( x_theta .^ 2 / sigma_x ^ 2 + gamma ^ 2 * y_theta .^ 2 / sigma_x ^ 2 )) * cos ( 2 * pi * x_theta ./ lambda + psi ); % jádra

Viz také

Literatura