Digitaalne pilditöötlus

**Digitaalne pilditöötlus** on digitaalsete piltide töötlemine arvuti abil.

Pilti võib defineerida kahemõõtmelise funktsioonina f(x, y), kus x ja y on piksli koordinaadid ning funktsioon f määrab vastava piksli värvuse. Kui x ja y ning funktsioon f on lõplikud ja diskreetsed, siis on tegu digitaalse pildiga.

## Ajalugu

Esimesi digitaalpilte kasutati ajakirjanduses, kus pilte saadeti Londoni ja New Yorgi vahel merealuse kaabli kaudu.

Tol ajal lahendati enamik probleeme piltide kvaliteediga trükkimisprotseduuride ja tintide värviintensiivsuse valikuga.

Digitaalne pilditöötlus sai alguse 1960. aastatel, kui töötati välja esimesi arvuteid, mis suudaksid parandada satelliidifotode kvaliteeti. 1964 hakati töötlema Kuust tehtud pilte, mida saadi kätte kosmosesondilt Ranger 7.

Saadud kogemusi sai arendada teistes valdkondades. Varsti hakati pilte töötlema lisaks astronoomiale ka maaressursside uurimises ja meditsiinis. Näiteks 1970. aastatel leiutati kompuutertomograafia.

## Pilditöötlus
Pilte töödeldakse, et neid ilusamaks teha või et masinal oleks pilti lihtsam analüüsida. Pilditöötluse (kui varasema fotode retušeerimise tänapäevase variandi) eesmärk ei ole kindlate objektide säilitamine, nagu tehakse pildi restaureerimisel.

Üldlevinud pilditöötluse tehnikad on
*kontrasti muutmine;
*histogrammi muutmine;
*müra eemaldamine;
*piiride rõhutamine;
*värvide täiustamine.

### Kontrasti manipuleerimine

Üks väga tavaline probleem piltidega on halb kontrast, mida on põhjustanud vähendatud või mittelineaarne pildi amplituudi ulatus. Kontrasti saab seega parandada sellega, et suurendada iga piksli amplituudi väärtust.

Seda saab teha mitmel viisil. Käsitleme näitena kaht viisi.

Esimene on amplituudi skaleerimine.
Igal pikslil pildis on oma värvi väärtus. Iga pildil on värviväärtuste ulatus ehk millisel väärtusel on piksli värv võrdne mustaga ning millisel valgega ja ka kõik vahepealsed väärtused. Üks väga lihtne viis kontrasti muuta on nihutada neid maksimumpunkte. Näiteks, kui tavaliselt on musta väärtus "0" ja valge väärtus "1", siis iga piksel, millel on värviväärtus 1, on valge. Kui muudame ulatust "0"st "2"ni, siis on valge väärtus hoopis "2". See tähendab, et piksel, millel on värvi väärtus "1" enam ei ole valge, vaid hoopis värv, mis on täpselt musta ja valge vahel, antud värvitabelis.
Amplituude skaleerimine ei muuda piksli värviväärtust, vaid muudab, kuidas neid väärtusi tõlgendatakse.

Teine viis on muuta iga piksli värviväärtust, jäädes samasse värviulatusse. Selleks võivad olla mitmed erinevad funktsioonid, mis on erinevate eesmärkidele kohandatud.

### Histogrammi muutmine
Pildi histogramm näitab pikslite arvu iga värvuse kohta. Selle graafikult on näha värvuste jaotumist. Värvuste jaotused mängivad suurt rolli: kui pildil on liiga palju tumedaid või heledaid toone, on see esteetiliselt halb ning detaile mingis ekstreemumis on raskesti nähtavad.

Histogrammi muutes on võimalik jaotust muuta nii, et element või objekt, mis muidu oleks tagapõhjast mitteeristatav, oleks eristatav.

Seda on võimalik rakendata tervele pildile, muutes histogrammi, kas suurendades või vähendades selle tulpasid ning pikslite väärtusi hinnata ühtlaselt, vastavalt uuele histogrammile, või võib hinnata piksleid erinevalt, vastavalt nende tähtsusest terviklikus pildis.

### Müra eemaldamine
Müra võib tulla erinevatest allikatest, näiteks andurilt, kanali vead, jne. Pildimüra, mis on tekitatud sensori või kanali veast esinevad pikslites, mille värvus on tunduvalt erinevad ümbrusest. Enamasti on müra tulnud kõrgsagedusallikast. Seega on kõige lihtsam viis sellest lahti saada kasutades madalpääsfiltrit, mis eraldab kõik kõrgsagedussignaalid pildist.

Võib ka kasutada Fourier' teisendust, et eraldada kõrge-sageduslik müra. Et seda ühtlasemaks teha, võib seda siluda, näiteks Butterworthi filtriga.

Ülaltoodud lineaarsete filtreerimisvahenditega on oht, et filtreeritakse vajalikke informatsiooni (pikslid), kui see on sarnane müraga, mida tuleks eraldada. Et säilitada pildi detaile ja omapärasusi, tuleks kasutada filtreerimiseks mittelineaarseid funktsioone.

Üks lihtne filtreerimisfunktsioon kannab ingliskeelset nime *Outlier*. Siin, võrreldakse iga piksli väärtust kõrvalolevate pikslite keskmise väärtusega. Kui antud piksli väärtus on liiga erinev, seda asendatakse naabrite keskmise väärtusega.

Veel on ka mediaani filter, mis võtab pikslitest järjendi ja asendab keskel oleva piksli järjendi mediaaniga. Näiteks, kui on tuleks sisendiks järjendi, 0.1, 0.2, 0.9, 0.4, 0.5, siis keskmist väärtust, 0.9, asendatakse järjendi mediaaniga, mis oleks 0.4.

### Piiride rõhutamine
Psühholoogilised katsed on näidanud, et pildid, millel on korralikud, silmapaistvad piirid, on ilusamad, kui täpsed fotomeetrilised jäljendid.

Üks lineaarne lähendusviis on kasutada sama foto kaht eksemplari: üks õige lahutusega ja üks veidi väiksema lahutusega. Kui need kokku panna, tekivad kattuvused pildis, mis meenutavad täpseid piire. Seda nimetatakse mitteteravaks maskiks. Kahjuks on see aga väga müratundlik.

Lineaarset piiri rõhutamist on ka võimalik Fourier' teisenduste abil.

Veel üks viis piire rõhutada on kasutades "statistilist eristamist". Iga piksli väärtust jagatakse selle standardhälbega. Saadud väärtusi suurendatakse kohtades, kus piksli värvused erinevad originaalist mingi teatud piiri võrra ja vähendatakse kohti, kus on sarnased originaaliga.

## Pildianalüüs
Kuna pilte peavad arvuteid tihti töötlema, et nendelt andmeid kätte saada, on välja töötatud mitmeid algoritme, millega saab piltidelt tuvastada erinevaid elemente, näiteks nägusid ja piire.

### Piltide võrdlus SIFT algoritmi abil
Üks väga levinud pildivõrdlusalgoritm kannab nimetust *Scale Invariant Feature Transform*, lühidalt: *SIFT*. SIFT on robustne, kuna algoritmi järgi on võimeline tuvastama sarnaseid objekte, teatud piirides, olenemata müratasemest või kontrastimuutusest ja ka olenemata sellest, kas ala, mida pildistatakse on muutunud kahe pildi tegemise vahel, või isegi sellest, et pildid on tehtud erinevate nurkade alt.

SIFT teisaldab pildi deskriptoriteks, kus iga deskriptor on invariant pildi teisalduse, rotatsiooni ja suumimises. Algoritmil on, kokkuleppeliselt, kaks osa: tähtsate objektide tuvastus pildid ja deskriptori genereerimine objektide asukohast. Neid deskriptoreid kasutatakse võrdluseks.

Et saavutada seda, et skaala oleks invariant, SIFT kasutab Gaussi skaala-ruumi, mis, sel juhul, on, lihtsalt öeldes, massiiv uduste piltidega. Pilte tehakse uduseks, et simuleerida seda, et pilt on fookusest ära läinud seetõttu, et see on pildistatud kaugemalt.

Udustest piltidest on väga lihtne leida põhielemente, mida pildistati ning võrreldes mõne teise pildiga samast objektist, leidub sarnasusi ka udustes piltides.

### Piirituvastus
Põhitegevus piiride tuvastamises on otsida järske muudatusi pildi intensiivsuses. Seda on võimalik leida kasutades esimest või teist järku tuletist.

#### Esimest järku tuletise kasutamist
Esimest järku tuletist leides on võimalik leida kohti, kus pildi intensiivsus muutub järsult. Tuletise väärtusi võib kasutada maskina, millega filtreerida pilti. Sellega on võimalik ära jätta kohti, kus intensiivsus sujuvalt muutub ja pildile jäävad vaid kontuurid. Algoritmid, mis kasutavad esimest järku tuletised, on näiteks Robertsi operaatorid, Prewitti operaatorid ja Sobeli operaatorid.

#### Teist järku tuletise kasutamist
Üks häda ülevalmainitud operaatoritega on, et nad ei võta arvesse piiride omapärad, ega ka mürataset pildis. Järgmine algoritm võtab arvesse mürataset ja asub piire tuvastama alles pärast müra eemaldamist.

**Marri-Hildrethi algoritm** otsib punkte, mille teist järku tuletis on 0.
Algoritmi järgi kõigepealt rakendatakse Gaussi madalpääsfiltrit ning alles pärast seda asutakse tuletist leidma, kasutades Laplace'i võrrandit. Leides punkti, mille tuletis on 0, tuleks leida, millises suunas see on, kuna olemas on neli varianti: horisontaaltelg, vertikaaltelg ja kaks diagonaali, ning kui suund on leitud, tuleks rakendada saadud maski pildiga.

### Näotuvastus
Näotuvastuse valdkond on lai ning eesmärke selleks on erinevaid, näitaks näoilme tuvastamine, näoeristamine teistest jne.
Et nägu tuvastada pildist, otsitakse mingeid tunnusmärke, näiteks silmi, suud, nina, lõug, kõrvu, kulmud jne. Kõige rohkem kasutatud näoelemendid on silmanurgad ja nina ots, kuna on leitud, et need muutuvad kõige vähem. Kõikide teiste näoelementide asendid muutuvad sõltuvalt näoilmest.

Võib öelda, et näoelementide tuvastuseks on kaks erinevat tuvastusviisi: mudelibaasil ja struktuuribaasil tuvastamine. Mudelibaasil näotuvastus toimib nii, et töötlusmasinale antakse mudeleid ette, millega ta võrdleb pilti ning nende abil tuvastab pildi. Struktuuribaasil tuvastamiseks ei pea olema mudeleid, et nägu tuvastada, kuigi mudeleid võib pärastpoole kasutada, et kinnitada tuvastust.

### Pildi segmentatsioon
Pilti tuleb mõnikord jagada osadeks, et lihtsamini töödelda seda, või eraldada erilisi elemente pildil. Selleks ei ole mingit üldtuntud viisi, vaid kasutatakse funktsioone, mis mingis teatud olukorras kasuks tuleb.
Et eraldada pildi osi, võib kasutada mitmeid parameetreid ja meetodeid, näiteks
*amplituudi järgi segmenteerimine, kus eraldatakse elemente, millel on erinevad amplituudiväärtusi teiste elementidega võrreldes.
*regiooni järgi segmenteerimine, kus piksleid pannakse kokku regioonideks, mida pannakse kokku et elementi koostada.
*piiri kaudu segmenteerimine, üritatakse tuvastada kahe erineva elemendi vahelt piiri.
*tekstuuripõhine segmenteerimine.

Selle viimase realiseerimine on oluliselt raskem, kui teistega, kuna see nõuab võimalust tuvastada ja eristada pildil olevate elementide tekstuuri ning leida nende üleminekuid.

## Viited

## Kirjandus
*
*