Gabori filter

Gabori filter on lineaarfilter, mida kasutatakse paljudes pilditöötlusrakendustes servade tuvastamiseks, tekstuurianalüüsiks ja tunnuste eraldamiseks. Nende filtrite abil saab ligikaudselt hinnata teatud rakkude omadusi. On leitud, et Gabori filtril on optimaalsed lokaliseerimisomadused nii ruumilises kui ka sagedusvahemikes ja seega sobivad need hästi tekstuuri eraldamiseks. Gabori filter on ribapääsfiltrite eriklass, ehk nad lubavad teatud sageduste ribasid läbi ja lükkavad teised tagasi. Gabori filtrit võib vaadelda kui kindla sageduse ja orientatsiooniga siinussignaali, mida kontrollib Gaussi laine. Gabori filtrid on orientatsioonitundlikud filtrid, mida kasutatakse serva- ja tekstuuri analüüsimiseks. See on nimetuse saanud Dénes Gábori järgi. Gabori filter on matemaatiliselt struktureeritud nii, et see suudab hallata pildi erinevaid kujusid, suuruseid ja sujuvustasemeid. Teatud suunas orienteeritud Gabori filter annab tugeva vastuse määratud suunas sihtkujutiste asukohtadele.
Parameetrid.
Gabor filtri parameetrid näitavad, kuidas ta töötab ja millistele funktsioonidele reageerib. Filtril on reaalne ja imaginaarne komponent, mis tähistavad suundasid. Neid saab kasutada koos kompleksarvuna või eraldi imaginaar ja reaalarvuna. Lainepikkus kontrollib Gabori funktsiooni ribade laiust, mida suurem lainepikkus, seda paksemad ribad. Normaali orientatsioon kontrollib Gabori funktsiooni suunda, 90 kraadine orientatsioon viitab horisontaalsele suunale, 0 kraadine, vertikaalsele suunale. Kuvashe kontrollib funktsiooni pikkust, mida suurem kuvasuhe määratakse, seda lühemana kujutatakse Gabori funktsiooni. Standardhälve kontrollib funktsiooni laialivalguvust, ehk mida väiksem on standardhälve, seda rohkem on ribad kokkusurutud, ja mida suurem, seda laiemate vahedega näeb funktsiooni ribasid. 
Pilditöötluses on Gabori funktsioonid ideaalsed mitmekeelses dokumendis oleva sõna tuvastamiseks. Komplekssetest dokumendipiltidest (nii hallidest kui ka värvilistest) on kasutatud erineva sagedusega ja eri suundadega Gabori filtreid, mis on mõeldud ainult tekstipiirkondade lokaliseerimiseks ja eraldamiseks, kuna tekst on rikas kõrgsageduskomponentide poolest. Gabori filtreid on laialdaselt kasutatud ka mustrite analüüsi rakendustes. Gabori ruum on väga kasulik pilditöötlusrakendustes, nagu optiline märgituvastus, silma iirise tuvastuseks ja sõrmejäljetuvastus.
Koodi näited.
Gabori kernelit saab ehitada Pythonis kasutades OpenCV teeki kasutades järgnevat koodirida: 
 import cv2 as cv2
 gabor_kernel = cv2.getGaborKernel(ksize, sigma, theta, lambda, gamma, psi)
Antud näites viitab "ksize" kerneli suurusele (x,z), mis tähendab, et meil oleks x * z kernel. Sigma on standardhälve, theta on orientatsioon, lambda on lainepikkus, gamma on kuvasuhe ja psi on faasinihe.
Gabori filtri saab ka üles ehitada ilma OpenCV teeki kasutamata, kasutades järgnevat Pythoni koodi.
 def gabor(sigma, theta, Lambda, psi, gamma):
 sigma_x = sigma
 sigma_y = float(sigma) / gamma
 nstds = 3
 xmax = max(abs(nstds * sigma_x * np.cos(theta)), abs(nstds * sigma_y * np.sin(theta)))
 xmax = np.ceil(max(1, xmax))
 ymax = max(abs(nstds * sigma_x * np.sin(theta)), abs(nstds * sigma_y * np.cos(theta)))
 ymax = np.ceil(max(1, ymax))
 xmin = -xmax
 ymin = -ymax
 (y, x) = np.meshgrid(np.arange(ymin, ymax + 1), np.arange(xmin, xmax + 1))
 x_theta = x * np.cos(theta) + y * np.sin(theta)
 y_theta = -x * np.sin(theta) + y * np.cos(theta)
 gb = np.exp(-.5 * (x_theta ** 2 / sigma_x ** 2 + y_theta ** 2 / sigma_y ** 2)) * np.cos(2 * np.pi / Lambda * x_theta + psi)
 return gb
Kasutusalad.
Gabori filtereid on kasutatud ja kasutatakse tänapäeval erinevates valdkondades.