Digitaalne pilditöötlus

Allikas: Vikipeedia

Digitaalne pilditöötlus on valdkond, mis tegeleb digitaalsete piltide töötlemisega arvuti abil.[1]

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[2].

Ajalugu[muuda | muuda lähteteksti]

Kosmosesond "Ranger 7"

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-ndatel, 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-ndatel leiutati kompuutertomograafia.[3]

Pildi täiustamine[muuda | muuda lähteteksti]

Pilte täiustatakse, et neid ilusamaks, või et masinal oleks pilti lihtsam analüüsida. Pilditäiustamises ei proovita aktiivselt säilitada mingit teatud objekti, nagu tehakse pildi restaureerimises.

Üldkasutatud tehnikad selleks on

  • kontrasti muutmine
  • histogrammi muutmine
  • müra eemaldamine
  • piiride rõhutamine
  • värvide täiustamine.

Kontrasti manipuleerimine[muuda | muuda lähteteksti]

Kontrasti muutmine

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

Seda saab teha mitmel erineval viisil. Hetkel käsitleme 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.[4]

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

Histogrammi muutmine[muuda | muuda lähteteksti]

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.[6]

Müra eemaldamine[muuda | muuda lähteteksti]

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.[7]

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.[8]

Ü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 mitte-lineaarseid funktsioone.[9]

Ü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.[10]

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.[11]

Piiride rõhutamine[muuda | muuda lähteteksti]

Psühholoogilised katsed on näidanud, et pildid, millel on korralikud, silmapaistvad piirid, on ilusamad, kui täpsed fotomeetrilised jäljendid.[12]

Üks lineaarne lähendusviis on kasutada kaht eksemplari samast pildist: üks õige lahutusega ja üks natukene madalama lahutusega. Kui neid kokku panna, tekkivad kattuvusi pildis, mis meenutavad täpseid piire. Seda nimetatakse mitteteravaks maskiks. Kahjuks on see aga väga müratundlik.[13]

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

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.[15]

Pildianalüüs[muuda | muuda lähteteksti]

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

Piltide võrdlus SIFT algoritmi abil[muuda | muuda lähteteksti]

Ü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, olenematta müratasemest või kontrastimuutusest ja ka olenematta 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.[16]

Piirituvastus[muuda | muuda lähteteksti]

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

Esimest järku tuletise kasutamist[muuda | muuda lähteteksti]

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 piirid. Algoritmid, mis kasutavad esimest järku tuletised on, näiteks, Roberts operaatorid, Prewitt operaatorid ja Sobel operaatorid.

Pilt enne Prewitti operaatoritega läbi korrutamist
Pilt peale Prewitti operaatoritega läbi korrutamist

Teist järku tuletise kasutamist[muuda | muuda lähteteksti]

Ü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[muuda | muuda lähteteksti]

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, otistakse 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.[18]

Pildi segmentatsioon[muuda | muuda lähteteksti]

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.[19] 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.[20]
  • regiooni järgi segmenteerimine, kus piksleid pannakse kokku regioonideks, mida pannakse kokku et elementi koostada.[21]
  • piiri kaudu segmenteerimine, üritatakse tuvastada kahe erineva elemendi vahelt piiri.[22]
  • tekstuuripõhine segmenteerimine[23].

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.[23]

Viited[muuda | muuda lähteteksti]

  1. Gonzales & Woods lk. 1
  2. Gonzales & Woods lk. 2
  3. Gonzales & Woods lk. 3–7
  4. Pratt lk. 249–252
  5. Pratt lk. 252
  6. Pratt lk. 259
  7. Pratt lk. 267–268
  8. Pratt lk. 271–272
  9. Pratt lk. 275
  10. Pratt lk. 276
  11. Pratt lk. 277
  12. Pratt lk. 284
  13. Pratt lk. 286
  14. Pratt lk. 287
  15. Pratt lk. 288–289
  16. "IPOL – The Anatomy of the SIFT Method" (PDF). Originaali (PDF) arhiivikoopia seisuga 1. veebruar 2014. Vaadatud 26. jaanuaril 2014.
  17. "IPOL – A Review of Classic Edge Detectors" (PDF). Originaali (PDF) arhiivikoopia seisuga 4. november 2014. Vaadatud 26. jaanuaril 2014.
  18. "EURASIP – A comparative study of Face landmarking techniques". Originaali arhiivikoopia seisuga 14. märts 2014. Vaadatud 26. jaanuaril 2014.
  19. Pratt lk. 579
  20. Pratt lk. 580
  21. Pratt lk. 590
  22. Pratt lk. 295
  23. 23,0 23,1 Pratt lk. 611

Kirjandus[muuda | muuda lähteteksti]

  • Gonzalez, Rafael C.; Woods, Richard E. (2008). Digital Image Processing (3 ed.). Pearson Education. ISBN 978-0-13-168728-8.
  • Pratt, William K. (2007). Digital Image Processing (4 ed.). John Wiley & Sons, Inc. ISBN 978-0-471-76777-0.