Kernel (pilditöötlus)

Pilditöötluses nimetatakse kernelit ehk konvolutsioonimaatriksit väikesemõõduliseks maatriksiks, mida kasutatakse erinevateks pilditöötlusvõteteks nagu udustamine, teravustamine, serva leidmine jpm.
Soovitud tulemuse saavutamiseks konvoleeritakse omavahel pilti ja kernelit.
Üksikasjad.
Matemaatiline kuju.
Konvolutsiooni võib valemina lahti kirjutada järgmiselt:
Rumptf (def.7)
formula_1
kus formula_2 on filtreeritud pilt ehk lõpptulemus, formula_3 on esialgne pilt, formula_4 on kernel. Kerneli elementide tähistuseks on formula_5 ja formula_6.
Kasutusnäiteid.
Sõltuvalt kerneli väärtustest on võimalik luua pildil laia vahemikuga efekte.
Kerneli suurus.
Konvolutsiooniga kaasneb üks suur probleem – vajaminevate arvutustehete hulk, mis kasvab koos sisendi suuruse kasvuga. Näiteks kui tahta konvoleerida 512x512 piksli suurust pilti 64x64 piksli suuruse kerneliga, siis kuluks selleks rohkem kui miljard korrutus- ja liitmistehet. Liiga pikk täitmisaeg võib muuta arvutustehnika kasutuks. Selle tõttu on väga laialt levinud väikesed 3x3 piksli suurused kernelid, mida libistatakse üle originaalpildi. Sellise suurusega kernel võimaldab tegelikult üllatavalt häid tulemusi, sest ta on samas piisavalt suurte mõõtmetega, et mõjutada pildi servasid.
Indekseerimine.
Pilditöötluses indekseeritakse kerneleid niimoodi, et indeksil h[0,0] oleks kerneli keskpunkt, selle tõttu on pilditöötluses kerneli negatiivsed indeksid normiks.
Implementeerimine.
Rakendades kernelit pildil viiakse läbi korrutiste summeerimise operatsioon originaalpildi ja kerneli peal. Kernel on massiiv, mille suurus määrab ära operatsiooni toimimise piirkonna ning kerneli elementide osakaalud määravad, kuidas mõjutab kernel väljundpilti. Kõigepealt keeratakse kernelit 180 kraadi ning seejärel üle originaalpildi libistades korrutatakse kõik originaalpildi väärtused läbi kohakuti oleva kerneli väärtustega ning summeeritakse maatriks, saades efektiivselt kerneli keskpunktiga kohakuti olnud iga originaalpildi punkti kohta väljundis vastava filtreeritud väärtuse. Tuleb tähele panna, et kerneli keskpunkt on protsessi käigus kohakuti originaalpildi piksliga, kuna enamustes pilditöötluse rakendustes tahame, et kernel mõjutaks pikslit sümmeetriliselt tema ümbruskonnas. Sümmeetrilise kerneli puhul ei muuda 180 kraadi keeramine tegelikult tulemust, kuid ebasümmeetrilise kerneli puhul on see vajalik – muidu poleks tegemist konvolutsiooniga, vaid ristkorrelatsiooniga.
Kernel pildi servades.
Kuna kerneli keskpunkt on alati kohakuti originaalpildi punktiga, siis on vaja, et ka originaalpildi piiridest väljaspool olevatel pikslitel oleks väärtused. Selleks on olemas mitmeid meetodeid.
Laiendamine.
Kõige äärmiste pikslite väärtusi kopeeritakse väljapoole serva nii palju, et oleks kattuvus kerneliga.
Voltimine.
Pilt volditakse ning väärtused võetakse vastasäärest või -nurgast.
Peegeldus.
Pildi äärtes kasutatakse peegeldust. Näiteks antakse servast 3 ühiku kaugusele olevale pikslile väärtus, mis asub pildi sees kaugusel 3 ühikut servast.
Kerneli suuruse vähendamine.
Ühtegi kerneli pikslit, mis jääb originaalpildi servadest väljapoole, ei kasutata – kompenseerimiseks kasutatakse normaliseerimist.
Konstantne väärtus.
Originaalpildi mõõtmeid suurendatakse, näiteks luuakse pildi ümbrusse regioon, mille piksli väärtusteks antakse näiteks nullid.
Ülekattuvuse vältimine.
Kernelit libistatakse originaalpildil niimoodi, et see ei läheks kunagi üle originaalpildi servade.
Kernelite tüübid.
Silumis (ühtlustamis) kernelid.
Kasutatakse, et vähendada järske üleminekuid intensiivsuses. Kuna juhuslik müra koosneb enamasti järskudest üleminekutest intensiivsuses, siis oleks mürasummutus loogiline lahendus ühtlustamiseks. Konvoleerides ühtlustamiskernelit pildiga, saame tulemuseks udustatud pildi, mille udustamise ulatus sõltub kerneli suurusest ja tema kaaludest. Nimetatakse ka madalpääsufiltriteks.
Kasti tüüpi kernel ("box kernel").
Kõige lihtsam udustamise kernel – tema kaalud on kõik tüüpiliselt võrdsed ühega. "m x n" mõõtudega kernel on maatriks ühtedest, mille ees kasutatakse korrutisena normaliseerimise konstanti. Normaliseerimist tehakse kõigi madalpääsu kernelite puhul kahel põhjusel: 
Gaussi kernel.
Isotroopiline kernel – filtreerimise väljund ei sõltu originaalpildi orientatsioonist. Gaussi kernelitega on hea teha konvolutsiooni, samuti nagu kastkernelitega, kuid omavad veel lisaks ka muid häid omadusi. Näiteks kahe Gaussi kerneli konvolutsiooni ning korrutise tulemusena saame samuti Gaussi kerneli. Gaussi kerneli keskväärtus on null ning standardhälve üks.
Teravustamise kernelid.
Nimetatakse ka kõrgpääsufiltriteks. Teravustamine võimendab muutusi intensiivsuses ning saavutatakse ruumilise diferentseerimise teel. Pildi diferentseerimine võimendab servi ja suurendab müra ning võtab ära rõhku pildi aladelt, kus toimub intensiivsuse madal muutus. Kuna tegemist on digitaalse filtriga (digitaalsetel hulkadel lõplikud väärtused), siis on maksimaalne võimalik intensiivsuse muutus lõplik ehk lõpmatuseni pole võimalik teravustada.
1. järgu tuletise kernelid.
Sobilikud servade tuvastamiseks, kuna servad piltidel on tihtipeale hästi järsud muutused kõrvuti asuvate pikslite intensiivsuses.
2. järgu tuletise kernelid.
Sobilikud piltide teravustamiseks. Võimendab peenemaid detaile pildil.