Laskennallisen tekniikan koulutusohjelma Kandidaatintyö
Amanda Metsämäki
Tukin kokonaiskuvan yhdistäminen osakuvista
Ohjaaja: Yliopisto-opettaja, TkT Jouni Sampo
Lappeenrannan-Lahden teknillinen yliopisto LUT School of Engineering Science
Laskennallisen tekniikan koulutusohjelma Amanda Metsämäki
Tukin kokonaiskuvan yhdistäminen osakuvista
Kandidaatintyö 2021
80 sivua, 53 kuvaa
Ohjaaja: Yliopisto-opettaja, TkT Jouni Sampo
Avainsanat: osakuvien yhdistäminen; perspektiivivirheen poistaminen; valaistuksen tasoitta- minen; panoraama;
Kandidaatintyön tavoitteena on parantaa alkuperäisiä osakuvista muodostettuja tukkikuvia erilaisten matemaattisten algoritmien avulla siten, että tukkikuvasta saadaan visuaalisesti pa- remman näköinen. Tarkoituksena on saada tukkikuvien valaistusta muokattua tasaisemmak- si, kuvissa oleva perspektiivistä aiheutuva vääristymä korjattua sekä vierekkäisten osaku- vien sisältämä päällekkäisyys poistettua. Tukkikuvia tarkastellaan aluksi silmämääräisesti, jotta saadaan tietoa kuvan alkuperäisistä ominaisuuksista. Tehtyjen havaintojen perusteella rakennetaan algoritmit alkuperäisen tukkikuvan parantamiseksi.
Työssä kehitettyjen algoritmien avulla tukkikuvien valaistus saatiin muokattua alkuperäistä tasaisemmaksi ja tukkikuvista saatiin korjattua perspektiivistä aiheutuva vääristymä. Pääl- lekkäisyyden suuruuden selvittämiseen kehitetyllä algoritmilla saatiin selvitettyä, että tukin yläreunassa osakuvat sisältävät päällekkäisyyttä useamman pikselin verran. Sen sijaan tukin alareunassa osakuvien välistä puuttuu informaatiota muutaman pikselin verran. Kuvista saa- tiin poistettua päällekkäiset pikselit ja laskettiin interpoloinnin avulla puuttuville pikseleille väriarvot. Työssä esitellyissä menetelmissä on vielä tilaa jatkokehitykselle, mutta jo tällaise- naan tukkikuvasta saadaan algoritmeilla käsiteltyä paljon alkuperäistä tukkikuva tasaisempi ja yhtenäisempi.
Symboli- ja lyhenneluettelo 6
1 JOHDANTO 7
1.1 Tausta . . . 7
1.2 Tavoitteet ja rajaus . . . 8
1.3 Työn rakenne . . . 9
2 TEORIA 9 2.1 Tukin yläreunan tunnistaminen . . . 9
2.2 Tukin alareunan tunnistaminen . . . 10
2.3 Perspektiivivirheen poistaminen . . . 11
2.4 Valaistuksen korjaus . . . 21
2.4.1 Sarakkeittainen valaistuksenkorjaus . . . 24
2.4.2 Sarake- ja rivikohtainen valaistuksenkorjaus . . . 34
2.5 Päällekkäisyyden poistaminen osakuvista . . . 40
2.5.1 Päällekkäisyyden suuruuden selvittäminen alueen M avulla . . . 41
2.5.2 Päällekkäisyyden poistamiseen käytettävä malli päällekkäisyyden ar- von muuttuessa osakuvan rivien välillä . . . 43
2.5.3 Osakuvien välissä olevien pikselien venyttäminen ja tiivistäminen . 49 2.5.4 Päällekkäisyyden suuruuden vaihtelun huomioiminen suoran vakio- termin optimoinnilla . . . 52
2.5.5 Osakuvien välistä puuttuvien pikselien arvojen interpolointi . . . . 54
2.5.6 Osakuvien rajojen häivyttäminen liukuvan keskiarvon avulla . . . . 56
2.6 Erillisten algoritmien yhdistäminen . . . 57
4 TULOKSET 58
4.1 Perspektiivivirheen poistaminen . . . 58
4.2 Valaistuksen tasoittaminen . . . 62
4.3 Päällekkäisyyden poistaminen osakuvien rajalta . . . 66
4.4 Algoritmien yhdistäminen . . . 67
5 JOHTOPÄÄTÖKSET 69 5.1 Perspektiivistä johtuvan vääristymän poistaminen . . . 69
5.2 Valaistuksen korjaaminen tukkikuvista . . . 70
5.3 Päällekkäisyyden suuruuden selvittäminen . . . 71
5.4 Kaikkien kehitettyjen algoritmien käyttäminen tukkikuvien parantamiseen . 72 6 POHDINTA 73 6.1 Perspektiivistä johtuvan vääristymän poistaminen . . . 73
6.2 Valaistuksen korjaaminen tukkikuvista . . . 74
6.3 Päällekkäisyyden suuruuden selvittäminen . . . 76
6.4 Kuvaamisolosuhteet . . . 76
6.5 Yleisiä huomioita . . . 77
7 YHTEENVETO 78
LÄHTEET 80
KUVAT 81
LIITTEET 85
Liite 2. Sinisten väriarvojen suuruudet ja niihin sovitetut neljännen asteen polyno- mit tukkikuvan ylä- ja alareunassa. . . 86 Liite 3. valaistuksen korjaamiseen tarvittavat korjauskertoimet tukkikuvan ylä- ja
alareunassa vihreille väripikseleille. . . 87 Liite 4. valaistuksen korjaamiseen tarvittavat korjauskertoimet tukkikuvan ylä- ja
alareunassa sinisille väripikseleille. . . 88
b Päällekkäisyyden poistamiseen käytettävän suoran vakiotermi c1 Perspektiivin korjaamiseen käytettävät kertoimet tukin yläosalle c2 Perspektiivin korjaamiseen käytettävät kertoimet tukin alaosalle coordvanha Ennen päällekkäisyyden poistamista matriisin alkion sijainti
coorduusi Päällekkäisyyden poistamisen jälkeen muodostettavan matriisin alkion sijainti d1,max Perspektiivivirheen suuruus tukin yläreunassa (pikseleinä)
d2,max Perspektiivivirheen suuruus tukin alareunassa (pikseleinä)
Ialkup Pikselin indeksi alkuperäisen tukkikuvan matriisissa
Iuusi Pikselin indeksi käsitellyn tukkikuvan matriisissa
k Päällekkäisyyden poistamiseen käytettävän suoran kulmakerroin
K Matriisi johon verrataan selvittäessä pällekkäisyyden määrää matriisinM avulla kk valaistuksen tasoittamiseen käytettävät korjauskertoimet osakuvan sarakkeille l Puolet tukin korkeudesta (pikseleinä)
M Matriisi, jonka avulla selvitetään päällekkäisyyden suuruutta Mr Rivien lukumäärä matriisissaM
Ms Sarakkeiden lukumäärä matriisissaM n Tarkasteltavan osakuvan järjestysnumero N Osakuvien lukumäärä yhdessä tukkikuvassa Nr Rivien lukumäärä yhdessä osakuvassa Ns Sarakkeiden lukumäärä yhdessä osakuvassa
Nx Liukuvan keskiarvon laskemiseen käytettävien pikselien lukumäärä pc Pikseli, jolle lasketaan uusi väriarvo liukuvan keskiarvon avulla xc Liukuvalla keskiarvolla ratkaistu uusi väriarvo kuvan pikselille xp Päällekkäisyyden suuruus (pikseleinä)
yopt Optimoitu päällekkäisyyden suuruus tukkikuvan eri riveillä (pikseleinä) Osakuva Tukkikuvan 52 pikselin levyinen osa
PNS-menetelmä Pienimmän neliösumman menetelmä
1 JOHDANTO
1.1 Tausta
Valokuvauksessa yleisenä ongelmana suuria kohteita kuvatessa on kuvien liian alhainen re- soluutio. Tarkentaessa kuvan yksityiskohtiin, ei niitä eroteta riittävän hyvin, sillä kuvan tark- kuus ei ole riittävä [1]. Tarvitaan siis jokin menetelmä, jonka avulla kuvien resoluutiota saa- daan parannettua, jotta pienetkin yksityiskohdat olisi erotettavissa kuvista.
Toinen mahdollinen ongelma suuria kohteita kuvattaessa on se, että kohdetta ei välttämättä saada kuvattua kerralla, vaikka kuviin ei korkeaa resoluutiota tarvittaisikaan. Tällainen ti- lanne saattaa aiheutua esimerkiksi silloin, jos kameraa ei saada asetettua sopivaan paikkaan kuvattavaan kohteeseen nähden. Sahateollisuudessa tämä on hyvin tyypillinen ongelma, kun kuvattavat tukit ovat hyvin pitkiä, ja kamerat sijaitsevat lähellä tukkeja.
Panoraamakuvausta käytetään nykyään paljon esimerkiksi maisemakuvissa (Kuva 1), kun halutaan kuvan sisältävän informaatiota laajalta alueelta. Panoraamakuvauksen yksi tärkeä sovelluskohde on esimerkiksi mikroskopia, jossa erilliset mikroskoopilla otetut korkeareso- luutioiset kuvat voidaan yhdistää isommaksi tarkaksi kuvaksi. Tämän avulla saadaan tarkas- teltua hyvin laajaa aluetta kuvan resoluution pysyessä edelleen riittävän suurena. [2]
Kuva 1.Panoraamakuvauksella otettu maisemakuva.
Panoraamakuvaus toimii yhdistämällä useita erikseen otettuja osakuvia yhdeksi yhtenäiseksi kuvaksi. Yksittäiset osakuvat ovat korkearesoluutioisia, sillä ne kattavat yleensä vain melko pienen alueen kuvattavasta kohteesta. Resoluutiota pystytään siis parantamaan ottamalla yh- den kuvan sijaan useampia hieman päällekkäisiä osakuvia ja yhdistämällä ne matemaattisten menetelmien avulla yhdeksi kokonaiseksi kuvaksi.
Tukkeja kuvatessa halutaan, että vierekkäiset osakuvat sisältävät hieman päällekkäisyyttä,
jotta mikään kohta tukista ei jäisi kuvaamatta. Linjastossa ja kamerassa saattaa kuitenkin tapahtua odottamattomia häiriöitä, jonka seurauksena pieni pala tukkia saattaa jäädä kuvaa- matta kokonaan. Tukkilinjastolla kulkevia tukkeja kuvatessa on haastavaa saada valaistuso- losuhteista täysin tasaiset ja muuttumattomat, jonka seurauksena yhdistetyssä tukkikuvassa valaistus on tilkkutäkkimäinen, jos sitä ei korjata tasaisemmaksi. Lopputuloksena saatavan käsitellyn kuvan halutaan näyttävän siltä, kuin se olisi otettu yhdellä kertaa, eikä yhdistelty useammista eri kuvista.
1.2 Tavoitteet ja rajaus
Työn tavoitteena on saada paranneltua osakuvista yhdistettyjä tukkikuvia siten, että tukki- kuvista saadaan visuaalisesti mahdollisimman hyvän näköisiä. Tukkikuvien parantamiseen kehitetään algoritmit, joiden avulla tukkikuvista saadaan poistettua vierekkäisten osakuvien sisältämä päällekkäisyys, saadaan tasoitettua tukkikuvien sisältämiä valaistuseroja sekä saa- daan korjattua perspektiivistä aiheutuva vääristymä.
Työn yhtenä tavoitteena on kehittää algoritmi, jonka avulla pystytään tukkeja kuvatessa sel- vittämään vierekkäisten osakuvien sisältämän päällekkäisyyden suuruus ja poistamaan yh- tenäinen osuus kuvien välistä siten, että valokuvasta saadaan yhtenäinen. Tilanteissa, joissa osakuvien välistä jää puuttumaan informaatiota, yritetään kuvaan lisätä puuttuvat pikselit parhaan mahdollisen visuaalisen lopputuloksen saavuttamiseksi.
Lisäksi tavoitteena on saada tukkikuvan valaistusta korjattua siten, että se näyttäisi tasaisessa valaistuksessa kuvatulta.
Tukista otetut osakuvat sisältävät myös kameran linssistä sekä tukin geometriasta aiheutu- vaa vääristymää perspektiivissä. Tämä perspektiivin vääristymä halutaan poistaa kuvista, jotta tukin ylä- ja alareuna saadaan näyttämään jatkuvilta osakuvien rajalla. Lisäksi korjat- taessa perspektiivin aiheuttama vääristymä kuvista, saadaan tukeissa olevat yksityiskohdat täsmäämään toisiinsa paremmin osakuvien rajalla.
Tukin geometrian vaikutus rajattiin nyt myös työn ulkopuolelle. Geometrian tutkimisen li- sääminen työhön olisi ollut nyt erityisen haastavaa, kun kameraa ei ole kalibroitu. Tämän vuoksi ei pystytä selkeästi erottamaan minkä verran vääristymää aiheutuu kameran linssin vuoksi ja kuinka paljon itse tukin geometria vääristää kuvaa.
Kehitettyjen menetelmien on tarkoitus toimia olemassa olevissa kuvausjärjestelmissä ilman kameran kalibrointitietoja. Algoritmien ei tarvitse toimia täysin automaattisesti, vaan niille
voidaan syöttää joitakin parametrejä manuaalisesti.
1.3 Työn rakenne
Työn ensimmäisessä luvussa kerrotaan työn taustaa sekä esitellään työn tavoitteet. Toisessa luvussa esitellään tarkemmin työn teoria ja kuvien parantamiseen käytettävät menetelmät.
Työn kolmannessa luvussa esitellään työssä käytettävät aineistot sekä ohjelmistot.
Neljännessä luvussa esitellään saadut työn tulokset. Luvussa viisi kerrotaan saaduista tulok- sista tehdyt johtopäätökset, ja luvussa kuusi pohditaan tuloksia ja niistä tehtyjä johtopäätök- siä tarkemmin. Seitsemäs luku on yhteenveto koko työstä.
2 TEORIA
Tässä luvussa käsitellään tukkikuvien muokkaamiseen kehitettyjen algoritmien teoriaa. Tuk- kikuvan valaistuksen tasoittamiseen, perspektiivivirheen poistamiseen sekä vierekkäisten osa- kuvien sisältämän päällekkäisyyden selvittämiseen tarvittavat kaavat johdetaan omissa ala- luvuissaan.
Valokuvat voidaan ajatella matriiseina, jotka sisältävät jokaiselle pikselille eri värikanavien väriarvot. Hyödyntämällä kuvien matriisirakennetta saadaan muodostettua tarvittavat algo- ritmit kuvien parantamista varten.
2.1 Tukin yläreunan tunnistaminen
Eri kuvankorjausalgoritmien kannalta on tärkeää tietää tukin korkeus kuvassa sekä tukin ylä- ja alareunojen sijainti tukkikuvan eri kohdissa. Tukin yläreunan tunnistamista varten kehite- tään algoritmi, jonka avulla saadaan selville tukin yläreunan sijainti jokaisessa yksittäisessä osakuvassa.
Tukin yläreunaa etsittäessä tarkastellaan tukkikuvaa yksi osakuva kerrallaan. Osakuvista et- sitään se rivi, jossa kuvassa on mustien pikselien sijaan tarpeeksi useita mustasta poikkeavia pikseleitä. Osakuvia käydään läpi rivi kerrallaan ylhäältä alaspäin, ja jokaisella rivillä laske- taan mustasta poikkeavien pikselien lukumäärä. Kun yksittäisen rivin sisältämistä pikseleis-
tä vähintään 50% on mustasta poikkeavia, voidaan tukin yläreunan olettaa sijaitsevan tällä rivillä. Kuvassa 2 on piirretynä osakuviin laskemalla selvitetyt tukin yläreunat valkoisella.
Kuva 2.Tukin yläreunan laskennallinen sijainti merkattuna valkoisella viivalla eri osakuviin.
Tukin yläreunassa saatta joissakin kohdissa olla pieniä tikkuja tai roskia, jotka saattavat vai- kuttaa tukin yläreunan tunnistamisen oikeellisuuteen. Tälläisten poikkeamien vaikutus on pyritty minimoimaan sillä, että tukin yläreunan ei oleteta löytyneen heti, kun löytyy ensim- mäinen mustasta poikkeva pikseli, vaan vaaditaan, että rivin pikseleistä vähintään puolet täytyy olla mustasta poikkeavia. Usein yksittäiset roskat ovat kuvassa kuitenkinkin melko pienellä alueella, joten tämän määritelmän pitäisi jättää huomoimatta suuri osa tällaisista on- gelmakohdista. Kuvassa 2 on esimerkki tällaisesta tilanteesta, missä viidennessä osakuvassa tukin yläreunassa on jonkinlainen roska.
2.2 Tukin alareunan tunnistaminen
Tukin alareunan tunnistaminen tukkikuvasta on paljon haastavampaa kuin yläreunan tun- nistaminen. Kuvassa 3 on näkyvissä tukin alareuna, joka on koko tukin matkalta todella epätasainen. Tukin alareunalle on tämän vuoksi hyvin haastavaa tehdä toimivaa alareunan tunnistusalgoritmia, joka osaisi löytää tukin alareunan oikein. Työssä on tämän vuoksi ole- tettu tukin alareunan sijaitsevan koko tukin pituudella vakiokorkeudella, joka on määritetty tukin alareunasta silmämääräisesti. Tukin ollessa melko suora tämä oletus pitää paikkansa varsin hyvin, sillä tukki lepää koko matkalta kuljettimien päällä. Tällöin tukin alareuna on kuljettimien suuntainen ja sijaitsee vakiokorkeudella jopa koko tukin matkalta. Tukin ollessa kaareva tai esimerkiksi tyven ollessa hyvin paksu, ei tilanne enää ole näin yksinkertainen, jolloin tukin alareunan määrittäminen vaikeutuu huomattavasti.
Kuva 3.Tukin epätasainen alareuna.
2.3 Perspektiivivirheen poistaminen
Tukkikuvat sisältävät sekä kameran linssistä että tukin geometriasta aiheutuvaa perspektiivin vääristymää. Kuvassa 4 on pieni osa alkuperäisen tukkikuvan yläreunasta. Osakuvien rajalle muodostuu muutaman pikselin korkuinen pykälä tukin yläreunaan, joka aiheutuu perspektii- vin aiheuttamista vääristymistä kuvassa. Lisäksi tukissa näkyvät tummemmat yksityiskohdat näyttävät osakuvien rajalla olevan vierekkäisissä osakuvissa hieman eri korkeudella. Tukin alareunassa on selkeästi havaittavissa samat perspektiivin vääristymästä aiheutuneet ilmiöt.
Yksittäisten osakuvien vasemmassa reunassa tukin ylä- ja alaosa sijaitsevat kauempana tukin keskikohdasta kuin reunat osakuvan oikeassa laidassa. Tämän vuoksi osakuvien rajalla tukin reuna näyttää katkonaiselta, vaikka todellisuudessa tukin reuna on jatkuva ja yhtenäinen.
Kuva 4.Perspektiivivirheen vaikutus tukin yläreunaan.
Alkuperäisten tukkikuvien ottamisessa käytettyä kameraa ei ole ollenkaan kalibroitu, jon- ka vuoksi kalibrointitietoa ei ole tässä työssä käytettävissä. Kalibrointitietojen puuttumisen vuoksi kuvien perspektiivin korjaamista joudutaan suorittamaan pelkän heuristiikan avulla.
Tukin pyöreän muodon vuoksi tukin keskikohta sijaitsee lähempänä kameran linssiä kuin tu- kin ylä- ja alareuna. Tämä aiheuttaa tukista otettuihin valokuviin tukin geometriasta johtuvaa perspektiivin vääristymää.
Matemaattisen mallin rakentamiseksi alkuperäisestä tukkikuvasta arvioidaan silmämääräi- sesti, kuinka paljon osakuvat sisältävät vääristymää tukin ylä- ja alareunassa. Vääristymän suuruutta pystytään arvioimaan helpoiten tutkimalla vierekkäisten osakuvien välisiä saumo- ja, jotka näkyvät kuvassa 5. Osakuvien rajapintojen vasemmalla puolella tukin reuna on alempana kuin rajan oikealla puolella, joten selvittämällä tukin reunan korkeuseron osaku- vien rajalla saadaan selville oletettu perspektiivivirheen aiheuttama vääristymä. Tukin ylä- reunan oikeaa sijaintia ei tiedetä, joten tukin yläreuna korjataan nyt sille tasolle, jolla se on osakuvien oikeassa reunassa. Tämän oletuksen seurauksena vääristymän arvo on suurim- millaan osakuvien vasemmassa reunassa ja oikeassa reunassa vääristymää ei ole ollenkaan havaittavissa.
Kuva 5.Perspektiivistä aiheutuva vääristymä on havaittavissa selkeästi tukin yläreunasta. Osakuvien välille tukin yläreunaan muodostuu muutaman pikselin korkuinen pykälä.
Tukin alareunassa osakuvien välinen pykälä ei ole yhtä selkeästi näkyvillä kuin tukin yläreu- nassa. Kuvasta 6 nähdään hieman tukin hyvin epätasaista alareunaa, josta alareunan pykälän suuruutta osakuvien rajalla on melko haastavaa arvioida. Perspektiivin vääristymän suuruutta voidaan sen sijaan tarkastella metallisten tukkikuljettimien avulla. Kuvassa näkyvästä tukki- kuljettimesta on paljon selkeämmin havaittavissa osakuvien rajalle muodostuva pykälä. Täs- tä pykälästä voidaan nyt arvioida, kuinka paljon perspektiivivirheen suuruus mahdollisesti
voisi olla tukin alareunassa. Tukin alareunassa todellisen alareunan oletetaan sijaitsevan vas- taavasti tasolla, jolla tukin oikea reuna sijaitsee muokkaamattomassa kuvassa.
Kuva 6.Perspektiivivirheen vaikutus tukin alareunaan.
Tukin yläreunassa perspektiivistä aiheutuvan vääristymän suuruus on noin kahden pikselin verran, kun tukin alareunassa perspektiivistä aiheutuvaa vääristymää on vain noin yhden pik- selin verran. Tukin yläreunassa perspektiivin vääristymä on siis hieman suurempi kuin tukin alaosassa. Kuvan sisältämän perspektiivivirheen korjaaminen täytyy tämän vuoksi suorit- taa kahdessa osassa, tukin ylä- ja alaosalle erikseen. Tukin yläosaa täytyy korjata hieman enemmän kuin alaosaa, jotta molemmat tukin reunat saadaan muokattua vaakasuoriksi ja yhtenäisiksi.
Kuvien kalibrointitietojen puutteen vuoksi kuvien sisältämän vääristymän käyttäytymistä on mahdotonta selvittää tarkasti, jonka vuoksi tilannetta joudutaan hieman yksinkertaistamaan.
Todellisuudessa tukkien reunat ovat melko epätasaisia, eivätkä oikeastaan koskaan näytä täy- sin vaakasuorilta. Lisäksi kameran linssistä sekä asennosta aiheutuvien virheiden vuoksi tu- kin reunat eivät kuvaudu täysin vaakasuoriksi, vaan vääristyvät hieman. Mallin rakentamisen helpottamiseksi tukin reunojen voidaan nyt yksittäisissä osakuvissa ajatella olevan likimain lineaarisia.
Vääristymän poistamiseksi osakuvien jokaisen sarakkeen pikseleitä täytyy saada tiivistet- tyä hieman, jotta tukin reuna saadaan korjattua vaakasuoraksi. Osakuvien vasemman reunan
pikseleitä täytyy tiivistää kaikista eniten, ja tarkastellessa sarakkeita vasemmalta oikealle, tii- vistämistä täytyy aina tehdä hieman edellistä vähemmän. Osakuvien oikeassa reunassa tukin reunat sijaitsevat valmiiksi halutulla korkeudella, joten oikean reunan pikseleitä ei tarvitse tiivistää ollenkaan.
Kuvassa 7 on havainnollistettu perspektiivistä aiheutuvan virheen ilmenemistä yksittäisessä osakuvassa. Kuvissa x-akselin ajatellaan kulkevan tukin keskikohdassa, jolloin muuttujalon suuruudeltaan puolet tukin korkeudesta. Tukin todellisia ylä- ja alareunoja kuvassa esittävät vaakasuorat katkoviivat. Kuvassa muuttujat d1(x) ja d2(x) kertovat tukin ylä- ja alareunan korkeuden poikkeamaa todellisista tukin reunoista. Leveydetd1jad2muuttuvat x:n funktio- na siten, että osakuvien vasemmassa reunassa muuttujien arvot ovat määritetyn perspektiii- virheen suuruisia ja oikeassa reunassa ne saavat arvon nolla.
Kuva 7.Perspektiivivirheen havainnollistaminen yksittäisen osakuvan eri sarakkeilla.
Alkuperäisten osakuvien vasen reuna on kuvassa oikeaa reunaa muutaman pikselin verran korkeammalla. Reunan suoristamiseen käytettävää kaavaa varten täytyy määrittää taso, jolle tukin reunan halutaan korjauksen jälkeen asettuvan. Nyt halutuksi tukin reunan sijainnik- si on valittu tukin korkeus osakuvan oikeassa laidassa. Korjauskertoimien laskennassa tämä tarkoittaa käytännössä sitä, että osakuvien oikeanpuolimmaisen sarakkeen pikseleitä ei muu- teta ollenkaan. Vasemmanpuoleisen reunan pikseleitä täytyy kertoa lukua yksi pienemmällä luvulla, jolloin pikselit saadaan tiivistettyä haluttuun korkeuteen.
Perspektiivistä aiheutuvan vääristymän vuoksi osakuvissa tukin ylä- ja alareunaan muodos- tuu eräänlaiset kolmiot. Kuvaan 8 on piirretty yksittäisen osakuvan yläreunan kolmio, jonka pidempi kateetti kuvaa tasoa, jolle tukin yläreuna halutaan korjata ja hypotenuusa kuvaa al- kuperäisessä tukkikuvassa näkyvää tukin yläreunaa (Kuva 4). Tukin yläreunan haluttaisiin siis kulkevan likimain vaakasuoraan, mutta tukkikuvien osakuvissa yläreuna on hyvin kalte- va. Kuvassa Ns:llä merkitään sarakkeiden lukumäärää yhdessä osakuvassa, eli toisaalta yh- den osakuvan leveyttä pikseleinä. Vakiod1,maxmääritetään tukkikuvista silmämääräisesti, ja se kuvaa tukin sisältämän perspektiivivirheen suuruutta tukin yläosassa. Tässä työssä vakion d1,max arvona on käytetty kahta pikseliä, mutta arvo voidaan määrittää erikseen tapauskoh- taisesti. Kuvassa x:llä merkitään muuttujaa, joka kertoo osakuvan tarkasteltavan sarakkeen järjestysnumeron. Tämä muuttuja voi saada arvoja välilläx∈[1, 2, ...,Ns]. Muuttujallad1(x) kuvataan kolmion korkeutta (d1(x) ∈[0,d1,max]), eli perspektiivistä johtuvan vääristymän määrää, kolmion eri sarakkeillax.
Kuva 8.Osakuvien yläreunaan perspektiivin vääristymän vuoksi muodostuva kolmio.
Kuvaan 9 on piirretty tukin alareunaan muodostuva kolmio. Kuvassa olevat merkinnät ovat muuten vastaavia kuin kuvassa 8 näkyvät merkinnät, mutta nyt vakiolla d2,max tarkoitetaan perspektiivin vääristymän suuruutta tukin alareunassa. Tässä työssä kuvassa 6 näkyvässä tukin alareunassa oli havaittavissa vääristymää ainoastaan yhden pikselin verran. Muuttuja d2(x) kertoo kolmion korkeuden osakuvan sarakkeilla x, ja se saa arvoja välillä d2(x) ∈ [0,d2,max].
Kuva 9.Osakuvien alareunaan perspektiivin vääristymän vuoksi muodostuva kolmio.
Matemaattisen mallin rakentamiseksi muodostetaan aluksi yhtälöt edellä esitettyjen tukin ylä- ja alareunaan muodostuvien kolmioiden korkeuksilled1(x) jad2(x). Muuttujat saavat suurimman arvonsa kolmioiden vasemmassa reunassa, jolloin muuttujan x arvo on nolla.
Muuttujat saavat pienimmän arvonsa kolmioiden aivan oikeassa reunassa, silloin kunx=Ns. Tällöin muuttujiend1(x)jad2(x)arvoksi saadaan nolla.
Kuvissa 8 ja 9 esitettyjen kolmioiden avulla saadaan muodostettua verrantoyhtälöt, joiden avulla saadaan ratkaistua lausekkeet muuttujilled1(x) ja d2(x). Kaavassa (1) on näkyvissä muodostetut yhtälöt, joista ylempi on tukin yläreunan kolmiosta muodostettu ja alempi on tukin alareunan kolmiosta muodostettu verrantoyhtälö.
d1(x)
d1,max = Ns−x Ns d2(x)
d2,max = Ns−x Ns
(1)
Edellä esitetyistä verrantoyhtälöistä saadaan nyt ratkaistua muuttujilled1(x)jad2(x)lausek- keet kertomalla ylempää yhtälöäd1,max:llä ja alempaad2,max:lla. Kaavassa (2) on ratkaistuna lausekkeet kyseisille muuttujilled1(x)jad2(x). Lausekkeet siis riippuvat ainoastaan muut- tujastax, sillä muut termit ovat tunnettuja vakioita.
d1(x) =d1,max(Ns−x Ns ) d2(x) =d2,max(Ns−x
Ns )
(2)
Edellä esitettyä yhtälöparia saadaan muokattua vielä hieman sievempään muotoon jakamalla
suluissa oleva lauseke erikseen vakiollaNs. Näin saadut lausekkeet on esitetty kaavassa (3).
d1(x) =d1,max(1− x Ns) d2(x) =d2,max(1− x
Ns)
(3)
Perspektiivivirheen poistamiseksi täytyisi saada selvitettyä korjauskertoimet, joilla jokaisen sarakkeen pikseleitä tiivistetään siten, että ne mahtuvat alkuperäistä kapeammalle alueelle pystysuunnassa. Kuvan 7 havainnollistuksen avulla muodostetaan yhtälöpari, josta saadaan ratkaistua korjauskertoimet sisältävät vektoritc1jac2.
Kuvassa 7 tukin keskikohta sijaitsee x-akselilla, joten tukin keskikohdan yläpuolelle jäävän tukin korkeuden pitäisi olla yhtä suuri kuin keskikohdan alapuolelle jäävän tukin korkeus.
Tästä saadaan muodostettua kaavassa (4) olevaan yhtälöpariin ensimmäinen ehto, jonka täy- tyy pitää paikkansa. Yhtälöpariin toiseksi ehdoksi saadaan se, että laskettaessa tukin korkeu- den puolikkaan ja perspektiivin vääristymän summa ja kerrottaessa tätä kyseisen sarakkeen korjauskertoimellac1(x), pitäisi lopputuloksena saada tukin korkeuden puolikas. Eli jokai- sella sarakkeella pikseleitä halutaan tiivistää vääristymän verran, jotta tukin korkeudeksi saa- taisiin aina vakioluku.
c1(x) (l+d1(x)) =c1(x) (l+d2(x)) c1(x) (l+d1(x)) =l
(4)
Edellä muodostettuun yhtälöpariin voidaan muuttujiend1(x)jad2(x) paikalle sijoittaa kaa- vassa (3) ratkaistut lausekkeet kyseisille muuttujille. Tällöin yhtälö saadaan muotoon
c1(x) (l+ (d1,max(1− x
Ns))) =c2(x) (l+ (d2,max(1− x Ns))) c1(x) (l+ (d1,max(1− x
Ns))) =l
(5)
Yhtälöä saadaan edelleen sievennettyä hieman kertomalla lausekkeista sulut auki. Tällöin yhtälöpari saadaan muokattua kaavassa (6) esitettyyn muotoon.
c1(x) (l+d1,max−d1,max x
Ns) =c2(x) (l+d2,max−d2,max x Ns) c1(x) (l+d1,max−d1,max x
Ns) =l
(6)
Lopulliseen muotoonsa yhtälöpari saadaan siirtämällä ylemmässä yhtälössä oikealla puolella oleva termi yhtälön toiselle puolelle. Kaavassa (7) on lopullinen, perspektiivistä aiheutuvan vääristymän poistamiseen käyettävä yhtälöpari. Ratkasemalla yhtälöparista korjauskertoimet sisältävien vektorienc1jac2alkioiden arvot, saadaan perspektiivivirhe poistettua osakuvien sarakkeilta.
c1(x)(l+d1,max−d1,maxx
Ns )−c2(x)(l+d2,max+d2,maxx
Ns ) =0 c1(x)(l+d1,max−d1,maxx
Ns ) =l,
(7)
missä c1(x) ja c2(x) ovat perspektiivin korjaamiseen käytettävät kertoimet osakuvien eri sarakkeilla,lon puolet tukin korkeudesta pikseleinä,d1,maxon tukin yläreunan jad2,maxtukin alareunan sisältämän vääristymän suuruus pikseleinä, Ns on osakuvan leveys pikseleinä ja x:llä (x∈[1, 2, ...,Ns]) merkitään tarkasteltavaa osakuvan saraketta.
Kuvassa 10 on piirrettynä tukin perspektiivin korjaamiseen tarvittavat edellä lasketut kertoi- met. Tukin yläosan korjaamiseen käytetään mustalla piirrettyjä kertoimia, joiden arvot saa- tiin ratkaistua kaavan (7) avulla vektoriin c1. Tukin alaosalle käytetään sinisellä piirrettyjä kertoimia, jotka löytyy ratkaistuna vektorista c2. Tukin alareunassa perspektiivin vääristy- mää on havaittavissa vähemmän, jonka vuoksi korjauskertoimet ovat suuruudeltaan lähem- pänä lukua yksi kuin tukin yläosan korjaamiseen käytettävät kertoimet.
Kuva 10.Perspektiivivirheen korjaamiseen tarvittavat kertoimet osakuvien eri sarakkeilla.
Osakuvan sisältämien sarakkeiden pikseleitä tiivistetään edellä laskettujen kertoimien avul- la, jotta perspektiivistä aiheutuva vääristymä saadaan poistettua kuvista. Kertoimien avulla saadaan laskettua alkuperäisen tukkikuvan pikseleille uudet sijainnit matriisissa kaavan (8) avulla. Poistaessa perspektiivistä aiheutuvaa vääristymää tukkikuvista, tulee korjaamisessa käyttää yhtälöparin ylempää yhtälöä. Vääristymän poistamiseen tukin alareunasta käytetään alempaa yhtälöä.
Ialkup= Iuusi c1(x) Ialkup= Iuusi
c2(x),
(8)
missä vektorienc1jac2alkiotc1(x)jac2(x)sisältävät edellä lasketut korjauskertoimet osa- kuvien eri sarakkeilla, Ialkup tarkoittaa pikseleiden sijaintia alkuperäisessä tukkikuvan mat- riisissa jaIuusi tarkoittaa indeksien sijaintia uudessa kuvassa, josta on nyt poistettu perspek- tiivistä aiheutuva vääristymä
Uuteen kuvamatriisiin tallennetaan pikseleitä edellä esitetyn kaavan (8) osoittamista sijain-
neista. Uuden matriisin indeksit käydään siis läpi yksi kerrallaan, ja jokaiseen matriisin in- deksiin poimitaan alkuperäisestä matriisista väriarvot indeksinIalkuposoittamasta sijainnista matriisissa.
Sarakkeen pikseliarvojen korjaaminen lasketuilla suhdeluvuilla ei suju kuitenkaan täysin on- gelmitta. Etsittäessä uuteen halutun korkuiseen matriisiin pikseliarvoja vanhasta korkeam- masta matriisista, laskettujen vanhojen matriisi-indeksien arvot eivät ole kokonaislukuja.
Kaavalla (8) ratkaistut matriisi-indeksit voidaan pyöristää lähimpään kokonaislukuun ja etsiä tätä lukua vastaavasta alkiosta väripikselien arvot. Tukkikuvien osakuviin muodostuu pyö- ristämisestä aiheutuvia epäjatkuvuuksia, jotka ovat näkyvissa kuvassa 11.
Kuva 11.Perspektiivivirheen korjaamisessa osakuviin muodostuu ei-toivottuja viivoja indeksien pyö- ristämisestä johtuen.
Pyöristämisen sijaan parempi vaihtoehto on selvittää kyseisen matriisin indeksiä parhaiten vastaava väriarvo interpolointia apuna käyttäen. Lineaarisella interpoloinnilla saadaan rat- kaistua matriisi-indeksejä vastaavat väriarvot riittävän tarkasti tätä sovellusta varten. Kaavan (8) avulla ratkaistua indeksiä Ialkup ei nyt pyöristetä, vaan etsitään murtolukua molemmil- ta puolilta lähimpänä olevat kokonaisluvut. Alkuperäisestä tukkikuvasta etsitään nyt näitä kahta kokonaislukuindeksiä vastaavat pikselien väriarvot. Löydettyjen väriarvojen välille so- vitetaan suora, jonka yhtälöstä saadaan ratkaistua approksimaatiot väriarvojen suuruuksille myös kokonaisluvuista poikkeaville matriisi-indekseille.
Selvittämällä matriisin indeksejä vastaavat väriarvot interpoloinnin avulla, saadaan kutakin
indeksiä vastaavaan kohtaan paljon lähempänä todellisuutta olevat väriarvot. Tällöin kor- jattuun kuvaan ei muodostu enää pyöristämisestä aiheutuvia epäjatkuvuuksia, vaan korjattu kuva näyttää tasaiselta ja yhtänäiseltä.
2.4 Valaistuksen korjaus
Alkuperäisissä tukkikuvissa valaistus on hyvin epätasainen, mikä aiheuttaa kokonaiskuvaan selkeästi havaittavia pystysuuntaisia epäjatkuvuuksia erityisesti osakuvien rajapinnoilla. va- laistus vaihtelee yksittäisten osakuvien välillä siten, että osakuvien vasen reuna on oikeaa reunaa vaaleampi.
Kuvassa 12 näkyy alkuperäisen tukkikuvan yläreunasta pieni osa. Tarkastellessa tukin ylä- reunan kohdalla kuvan valaistusta, huomataan sen olevan hyvin epätasainen. valaistus vaih- telee merkittävän paljon osakuvien eri sarakkeiden välillä. Tämän vuoksi tukki ei näytä ta- saisen väriseltä, vaan jotkin kohdat tukista ovat huomattavasti tummempia ja jotkin vaaleam- pia kuin muut. Lisäksi valaistuksen epätasaisuuden vuoksi osakuvien rajat ovat selkeästi ha- vaittavissa erityisesti tukin yläreunasta. Alkuperäisen tukkikuvan valaistusta on siis tarvetta korjata paremmaksi, jotta valaistuserot osakuvien eri sarakkeiden välillä saadaan poistettua.
Kuva 12.Pieni osa alkuperäisen tukkikuvan yläosasta, jossa valaistus on melko epätasainen.
Kuvassa 13 näkyy tarkemmin valaistuserot osakuvien sarakkeiden välillä tukin yläreunassa.
Jokaisen osakuvan vasemmassa laidassa tukki näyttää kirkkaalta, mutta mitä lähemmäs osa- kuvien oikeaa reunaa mennään sitä tummemmaksi valaistus kuvissa muuttuu. Tavoitteena on siis saada tasoitettua osakuvien sarakkeiden välisiä valaistuseroja, jonka seurauksena myös osakuvien rajojen pitäisi sulautua yhteen paremmin.
Kuva 13.Pieni pala tukkikuvasta, jossa näkyy selkeästi osakuvien eri sarakkeiden väliset valaistuse- rot
Kuvassa 14 on pieni osa alkuperäisen tukkikuvan alareunasta. Tarkastellessa valaistusta tu- kin alareunan korkeudella voidaan huomata, että osakuvien rajat eivät erotu läheskään yhtä selvästi kuin tukin yläreunan korkeudella (Kuva 12). Tukin alareuna näyttää alkuperäises- sä kuvassa valaistukseltaan jo hyvin tasaiselta, jonka vuoksi tukin alareunasta valaistusta ei tarvitse juurikaan korjata.
Kuva 14.Pieni osa alkuperäisen tukkikuvan alaosasta, jossa valaistus on ilman mitään muutoksia jo hyvin tasainen.
Tukkikuvat sisältävät kolmen eri värikanavan väriarvot kuvan jokaiselle pikselille. Väriarvot määrittävät pelkkien värien lisäksi myös kuvan kirkkauden ja tummuuden, sillä mitä pie- nempi väriarvo on, sitä tummempi kyseinen pikseli on. Tämän tiedon avulla voidaan nyt tarkkailla eri alueiden pikseleiden väriarvoja, ja verrata arvojen suuruuksia keskenään. Täl- löin saadaan selville, mitkä kohdat ovat tummempia ja mitkä vaaleampia kuin toiset.
Kuvissa 15 ja 16 on havainnollistettu samaa ilmiötä, joka on havaittavissa alkuperäisessä
tukkikuvassa. Kuvassa 15 valaistus on tasainen läpi koko kuvan, joten minkäänlaisia epäjat- kuvuuksia ei ole havaittavissa.
Kuva 15.Esimerkkikuva, jossa valaistus on tasainen.
Kuvassa 16 alkuperäinen valokuva on jaettu kymmeneen eri osakuvaan. Osakuvien valais- tusta on muokattu siten, että valaistus muuttuu yksittäisten osakuvien sisällä lineaarisesti.
Jokaisen osakuvan vasen reuna on valaistukseltaan kaikkein vaalein, ja kuva tummenee line- aarisesti lähestyessä osakuvien oikeaa reunaa. Tämä sama ilmiö on havaittavissa alkuperäi- sessä tukkikuvassa, jossa osakuvien valaistus vaihtelee osakuvien eri sarakkeilla aiheuttaen kuvaan selkeitä pystysuuntaisia viivoja.
Kuva 16.Esimerkkikuva, jonka valaistus on muutettu epätasaiseksi.
2.4.1 Sarakkeittainen valaistuksenkorjaus
Valaistuksen muokkaamisessa halutaan löytää osakuvien eri sarakkeiden välillä tapahtuvat muutokset kuvien valaistuksessa, ja tämän tiedon avulla muokata valaistus tasaisemmaksi.
Jokaisella eri osakuvien pystysarakkeella valoitus on hieman erilainen, joten halutaan löytää sellainen polynomi, joka kuvaa valaistuksen muutosta osakuvien eri sarakkeissa.
Polynomia lähdetään rakentamaan tukkikuvan eri osakuvien sisältämien pikselien väriarvo- jen avulla. Jotta sovitettavasta polynomista saataisiin luotettavampi, tarkastellaan yksittäisen osakuvan sijaan kaikkia yhden tukin sisältämiä osakuvia. Tällöin polynomin kertoimien sel- vittämisessä on käytettävissä huomattavasti enemmän dataa, jolloin myös mallin luotettavuu- den voidaan olettaa kasvavan. Otettaessa kaikki tukkikuvan sisältämät osakuvat huomioon, täytyy niiden sisältämä informaatio saada yhdistettyä. Tämä toteutetaan kaavan (9) mukai- sesti summaamalla osakuvat yhteen ja jakamalla matriisin alkiot summattujen osakuvien lukumäärällä. Tällöin osakuvista saadaan muodostettua summamatriisiS, joka on kooltaan tarkalleen yhden osakuvan kokoinen.
S= 1 N
N
∑
n=1
On, (9)
missänkertoo tarkasteltavan osakuvan järjestysnumeron (n∈[1, 2, ...,N]),N on tukkikuvan sisältämien osakuvien lukumäärä,S on lopputuloksena saatava summamatriisi jaOnon ky- seisen osakuvan nmatriisi. Käsiteltävät matriisit ovatNr×Ns kokoisia, missä Nr on yhden osakuvan rivien lukumäärä jaNson osakuvan sarakkeiden lukumäärä.
Tarkasteltavana on nyt valaistuksen muutos saadun summamatriisin eri sarakkeiden välillä.
Tässä mallissa valaistuksen oletetaan olevan vakio jokaisen sarakkeen eri rivillä, eli valais- tuksen oletetaan muuttuvan vain, kun tarkastellaan eri sarakkeita. Tilannetta saadaan yksin- kertaistettua siten, että lasketaan kaavan (10) mukaisesti jokaisen sarakevektorin alkioiden summa. Lasketut sarakkeiden alkioiden summat muodostavat vektorinv, joka sisältää osa- kuvan sarakkeiden verran alkioita.
vs=
Ns
∑
s=1
S, (10)
missä alkiotvs muodostavat vektorin v, joka sisältää sarakkeiden alkioiden summat jaSon aiemmin ratkaistu summamatriisi.
Saadun vektorinvalkiot piirretään kuvaajaan, ja lasketaan, minkälainen polynomi datapistei- siin sopisi parhaiten. Datapisteisiin sovitetaan nyt neljännen asteen polynomia (11) pienim-
män neliösumman menetelmällä. Sovitettavan polynomin asteluku voidaan valita sen mu- kaan, kuinka tarkka sovituksesta halutaan. Polynomin asteluvun kasvaessa sovitus paranee, mutta ratkaistavien kertoimien määrä kasvaa. Lisäksi polynomin asteluvun kasvattaminen li- sää vaaraa ylisovittamiselle, jolloin selitetään kohinaa. Yleisesti käytetty toisen asteen poly- nomi rajaisi mallin symmetriseksi, joka ei tässä sovelluskohteessa ole kovin lähellä totuutta.
Neljännen asteen polynomi mahdollistaa sovitukselle monipuolisemman käyttäytymisen.
y=ax4+bx3+cx2+dx+e (11)
Käytettäessä polynomin sovitukseen pienimmän neliösumman menetelmää, minimoitavaksi funktioksi (12) saadaan
Y(a,b,c,d,e) =
leveys i
∑
=1(yi−(ax4i +bx3i +cx2i +dxi+e))2
=
leveys
∑
i=1
(yi−ax4i −bx3i −cx2i −dxi−e)2.
(12)
FunktionY(a,b,c,d,e) minimit löytyvät sen gradientin nollakohdista, joten lasketaan funk- tion osittaisderivaatat. Osittaisderivaatoiksi muuttujiena,b,c,djaesuhteen saadaan:
Ya(a,b,c,d,e) =
leveys i
∑
=12(yi−ax4i −bx3i −cxi2−dxi−e)(−x4i)
=
leveys
∑
i=1
(−2x4iyi+2ax8i +2bx7i +2cx6i +2dx5i +2ex4i)
=−2
leveys
∑
i=1
x4iyi+2a
leveys
∑
i=1
x8i +2b
leveys
∑
i=1
x7i +2c
leveys
∑
i=1
x6i
+2d
leveys
∑
i=1
x5i +2e
leveys
∑
i=1
x4i
(13)
Yb(a,b,c,d,e) =
leveys
∑
i=1
2(yi−ax4i −bx3i −cx2i −dxi−e)(−x3i)
=−2
leveys
∑
i=1
x3iyi+2a
leveys
∑
i=1
x7i +2b
leveys
∑
i=1
x6i +2c
leveys
∑
i=1
xi5
+2d
leveys i
∑
=1x4i +2e
leveys i
∑
=1x3i
(14)
Yc(a,b,c,d,e) =
leveys
∑
i=1
2(yi−ax4i −bx3i −cx2i −dxi−e)(−x2i)
=−2
leveys
∑
i=1
x2iyi+2a
leveys
∑
i=1
xi6+2b
leveys
∑
i=1
x5i +2c
leveys
∑
i=1
x4i
+2d
leveys
∑
i=1
x3i +2e
leveys
∑
i=1
x2i
(15)
Yd(a,b,c,d,e) =
leveys
∑
i=1
2(yi−ax4i −bxi3−cx2i −dxi−e)(−xi)
=−2
leveys
∑
i=1
xiyi+2a
leveys
∑
i=1
x5i +2b
leveys
∑
i=1
x4i +2c
leveys
∑
i=1
x3i
+2d
leveys
∑
i=1
x2i +2e
leveys
∑
i=1
xi
(16)
Ye(a,b,c,d,e) =
leveys
∑
i=1
2(yi−ax4i −bx3i −cx2i −dxi−e)(−1)
=−2
leveys i
∑
=1yi+2a
leveys i
∑
=1x4i +2b
leveys i
∑
=1x3i +2c
leveys i
∑
=1x2i
+2d
leveys i
∑
=1xi+2e
leveys i
∑
=11
(17)
Osittaisderivaattojen avulla saadaan laskettua funktion gradientin nollakohdat:
∂Y
∂a =0
∂Y
∂b =0
∂Y
∂c =0
∂Y
∂d =0
∂Y
∂e =0
(18)
Muodostettu yhtälöryhmä voidaan kirjoittaa matriisimuotoon
∑x8i ∑x7i ∑x6i ∑x5i ∑xi4
∑x7i ∑x6i ∑x5i ∑x4i ∑xi3
∑x6i ∑x5i ∑x4i ∑x3i ∑xi2
∑x5i ∑x4i ∑x3i ∑x2i ∑xi
∑x4i ∑x3i ∑x2i ∑xi ∑1
a b c d e
=
∑x4iyi
∑x3iyi
∑x2iyi
∑xiyi
∑yi
, (19)
josta saadaan ratkaistua neljännen asteen polynomin kertoimet
a b c d e
=
∑x8i ∑x7i ∑x6i ∑x5i ∑x4i
∑x7i ∑x6i ∑x5i ∑x4i ∑x3i
∑x6i ∑x5i ∑x4i ∑x3i ∑x2i
∑x5i ∑x4i ∑x3i ∑x2i ∑xi
∑x4i ∑x3i ∑x2i ∑xi ∑1
−1
∑x4iyi
∑x3iyi
∑x2iyi
∑xiyi
∑yi
. (20)
Saadut kertoimet voidaan nyt sijoittaa alkuperäiseen neljännen asteen yhtälöön (11), jolloin selvillä on datapisteisiin sovitetun käyrän yhtälö. Kuvassa 17 on piirrettynä punaisilla ympy- röillä jokaisen osakuvan sarakkeen alkioiden punaisten väriarvojen keskiarvot sekä mustalla viivalla piirrettynä näihin datapisteisiin PNS-menetelmällä sovitettu neljännen asteen poly- nomi.
Kuva 17.PNS-menetelmällä punaisen värikanavan datapisteisiin sovitettu neljännen asteen polyno- mi.
Jokaiselle kolmelle eri värikanavalle suoritetaan edellä esitetyt laskutoimitukset, jolloin väri- kanaville saadaan omat PNS-menelelmällä sovitetut polynomit. Alkuperäisessä tukkikuvassa eri värikanavien väriarvojen suuruudet poikkeavat toisistaan, jonka vuoksi jokaiselle värille täytyy sovittaa oma polynomi, jota myöhemmin käytetään valaistuksen tasoittamiseen.
Kuvissa 18 ja 19 on piirrettynä vastaavasti vihreän ja sinisten värikanavien datapisteet ym- pyröillä sekä näihin datapisteisiin PNS-menetelmällä sovitetut neljännen asteen polynomien kuvaajat mustalla viivalla. Vertaamalla kuvia 17, 18 ja 19 huomataan, että eri värikanavien datapisteet sijoittuvat vastaavanlaisten polynomien käyrille.
Kuva 18.PNS-menetelmällä vihreän värikanavan datapisteisiin sovitettu neljännen asteen polynomi.
Kuva 19.PNS-menetelmällä sinisen värikanavan datapisteisiin sovitettu neljännen asteen polynomi.
Piirretyistä kuvaajista (Kuvat 17, 18 ja 19) huomataan, että kaikkien kolmen eri värikana- vien pikselien perusteella valaistus on kaikista kirkkain sarakkeen 15 läheisyydessä. Osaku- van oikeassa reunassa pikselit sen sijaan saavat kaikista pienimpiä arvoja, joten osakuvien oikea reuna näkyy kuvassa tummimpana. Tarkoituksena on muokata kuviin ympyröillä piir- rettyjä erivärisiä datapisteitä siten, että ne asettuisivat katkoviivalla piirretylle vaakasuoralle suoralle, jolloin valaistus olisi yksittäisessä osakuvassa tasainen. valaistuksen vaakasuoran kuvaajan korkeus voidaan itse määrittää halutulle korkeudelle. Tässä työssä vaakasuoran korkeutena on käytetty PNS-menetelmällä sovitetun neljännen asteen polynomin vakioter- miä, eli väriarvoa, jossa sovitettu käyrä leikkaa y-akselin. Halutun vaakasuoran korkeuden ollessa tiedossa, voidaan sarakkeiden pikseleille laskea sovitetun polynomin avulla korjaus- kertoimet, joiden avulla datapisteet saadaan siirrettyä halutulle suoralle.
Datapisteisiin sovitetun neljännen asteen polynomin avulla voidaan nyt laskea jokaisella osa- kuvan sarakkeellai kyseisen käyrän korkeus yi ja verrata sitä kuviin katkoviivalla merkat- tuun vaakasuoraan yvaakasuora. valaistuksen tasoittamiseksi tarvittavat korjauskertoimet voi- daan ratkaista seuraavasti
kki=yvaakasuora
yi , (21)
missäi∈[1, 2, ..., 52],kkion yhtälön ratkaisuna saatava korjauskerroin sarakkeenivalaistuk- sen korjaamiseen, yi on PNS-menetelmällä sovitetun neljännen asteen polynomin korkeus tutkittavalla sarakkeellaijayvaakasuoraon katkoviivalla merkityn vaakasuoran korkeus.
Kuvassa 20 on piirrettynä kaikkien kolmen eri värikanavan datapisteiden tasoittamiseen vaa- dittavat korjauskertoimet osakuvien eri sarakkeilla. Kaikki kolme kuvan käyrää näyttävät käyttäytyvät melko vastaavalla tavalla. Tämän perusteella voidaan olettaa, että jokaisen vä- rikanavan valaistus vaihtelee sarakkeiden välillä lähes samalla tavalla. Korjauskertoimien kuvaajat poikkeavat kuitenkin toisistaan hieman, joten parhaan mahdollisen lopputuloksen kannalta kannattaa laskennassa käyttää kaikille kolmelle värikanavalle omaa korjauskerroin- funktiota.
Kuva 20.Kaikkien kolmen värikanavan väriarvojen tasoittamiseen tarvittavat korjauskertoimet.
Kuvissa 21, 22 ja 23 on piirrettynä kaikkien kolmen eri värikanavan alkuperäiset datapis- teet ympyröillä sekä näihin pisteisiin PNS-menetelmällä sovitettu käyrä mustalla. Kuviin on lisäksi piirretty edellä lasketuilla korjauskertoimilla muokatut datapisteet tähdillä sekä tavoi- teltu valaistustaso mustalla katkoviivalla. Kuvista voidaan huomata, että kun kuviin ympy- röillä merkattuja sarakkeiden alkioiden keskiarvoja on nyt muokattu aiemmin ratkaistuilla korjauskertoimilla, saadaan datapisteet sijoittumaan halutun vaakasuoran katkoviivan lähei- syyteen. Tähdillä merkatut muokatut sarakkeiden alkioiden keskiarvot poikkeavat ainoastaan hieman määritetystä vaakasuorasta. Pieni poikkeama aiheutuu siitä, että jokaiselle sarakkeel- le korjauskertoimen määrittämiseksi käytetiin sarakkeen alkioiden keskiarvoa. Tällöin kor- jauskerroin ei ole jokaiselle alkiolle optimi, mutta tarkastellessa isompaa alkioiden joukkoa mahdolliset virheet keskiarvoistuvat melko hyvin pois. Tämä huomataan siitä, että korjattu- jen väriarvojen datapisteet kulkevat kuitenkin likimain vaakasuoralla suoralla.
Kuva 21.Samaan kuvaan piirrettynä punaisen värikanavan alkuperäiset datapisteet ja niihin sovitettu PNS-käyrä sekä korjauskertoimilla korjatut datapisteet.
Kuviin tähdillä merkityt korjatut datapisteet sijaitsevat nyt siis hyvin lähellä tavoiteltua kat- koviivalla kuviin piirrettyä vaakasuoraa suoraa, mutta eivät täysin vaakasuoralla. valaistuk- sen korjauksen näkökulmasta tarkasteltuna ei datapisteitä tarvitse saada tämän lähemmäksi tavoiteltua vaakasuoraa. Verrattuna alkuperäisiin ympyröillä piirrettyihin datapisteisiin ovat korjatut väriarvot asettuneet nyt huomattavasti tasaisemmin eri sarakkeiden välillä.
Kuva 22.Samaan kuvaan piirrettynä vihreän värikanavan alkuperäiset datapisteet ja niihin sovitettu PNS-käyrä sekä korjauskertoimilla korjatut datapisteet.
Kuva 23.Samaan kuvaan piirrettynä sinisen värikanavan alkuperäiset datapisteet ja niihin sovitettu PNS-käyrä sekä korjauskertoimilla korjatut datapisteet.
2.4.2 Sarake- ja rivikohtainen valaistuksenkorjaus
Aiemmin esitetty malli huomioi ainoastaan valaistuksen muutokset osakuvien eri sarakkei- den välillä. valaistuksen oletetaan siis pysyvän osakuvien eri riveillä muuttumattomana. Tar- kastellessa tukkikuvia hieman tarkemmin voidaan kuitenkin huomata, että valaistusolosuh- teet eivät pysy täysin vakioina tukin ylä- ja alareunaa verratessa. Tukin yläreunassa osaku- vien sarakkeiden välillä valaistus vaihtelee hyvin paljon, kun taas tukin alareunassa valaistus on valmiiksi jo suhteellisen tasainen.
Edellä tehdyt havainnot valaistuksen tasaisuuden poikkeavuuksista tukin ylä- ja alareunassa tehtiin ainoastaan tarkastelemalla alkuperäistä tukkikuvaa silmämääräisesti. Tehdyn tarkas- telun ja saatujen havaintojen tueksi voidaan kuitenkin piirtää näkyviin pikseleiden väriarvo- jen keskiarvot tukin ylä- ja alareunasta ja verrata näitä keskenään. Tarkastellaan kuvaan 24 valkoisella merkittyjä alueita ja verrataan, miten valaistus poikkeaa näiden alueiden välillä.
Kuva 24.Pieni osa alkuperäisestä tukkikuvasta, johon on merkattu ylä- ja alaosasta valkoisella alueet, joille selvitetään valaistuksen parantamiseen tarvittavat korjauskertoimet.
Valaistuksen käyttäytymisen selvittämiseksi täytyy ensin laskea kaavan (9) mukaisesti eri osakuvien pikselit yhteen ja jakaa saadun matriisin alkiot summattavien osakuvien määräl- lä. Tämän jälkeen lasketaan matriisin sarakkeiden alkioiden keskiarvot kaavan (10) avulla.
Nämä saadut pikseleiden punaisten väriarvojen keskiarvot osakuvien eri sarakkeilla on nyt piirrettynä kuvaan 25. Tukin yläreunaan merkatulta alueelta lasketut väriarvojen keskiarvot
on kuvassa merkattuna punaisilla ympyröillä ja tukkikuvan alareunaan piirretyltä alueelta lasketut arvot punaisilla tähdillä. Kuten kuvasta voidaan huomata, muodostavat tukin ylä- ja alaosien datapisteet hyvin erilaisen polynomin. Tukin yläosassa pikselien arvot vaihtelevat eri sarakkeiden välillä merkittävän paljon, jonka vuoksi valaistus näyttää kuvissa hyvin epä- tasaiselta. Sen sijaan tukkikuvan alareunan eri sarakkeiden pikselien arvojen välillä ei ole kovinkaan suurta vaihtelua, jonka vuoksi valaistus näyttää alun perin jo tasaiselta.
Kuva 25.Punaisten väriarvojen suuruudet ja niihin sovitetut neljännen asteen polynomit tukkikuvan ylä- ja alareunassa.
Edellä kuvattuihin datapisteisiin sovitetun neljännen asteen polynomin ja määritetyn pik- seleiden väriarvojen suuruuden avulla voidaan laskea valaistuksen korjaamiseksi tarvittavat korjauskertoimet kaavan (21) osoittamalla tavalla. Kuvaan 26 on piiretty punaisella käyräl- lä tukin yläosan ja pinkillä tukin alaosan valaistuksen korjaamiseksi tarvittavien kertoimien kuvaajat. Kuten kuvasta nähdään, yläosan valaistuksen tasoittamiseksi käytettävät kertoimet poikkeavat enemmän luvusta yksi kuin alaosan kertoimet.
Kuva 26.Valaistuksen korjaamiseen tarvittavat korjauskertoimet tukkikuvan ylä- ja alareunassa.
Aiemmin esiteltyä valaistuksen korjaamiseen käytettävää mallia tulee muokata siten, että se ottaa huomioon myös osakuvien eri riveillä tapahtuvat muutokset valaistuksessa.
Otettaessa huomioon myös valaistuksen muutokset tukkikuvan eri riveillä, voidaan tapaus- kohtaisesti miettiä, kuinka tarkasti valaistuksen vaihteluita eri rivien välillä halutaan tarkas- tella. valaistuskorjaus huomioisi parhaiten valaistuksen vaihtelut rivien välillä silloin, kun tarkasteltaisiin aina yhtä riviä kerrallaan ja vain tämän yhden rivin eri sarakkeiden väriarvoi- hin sovitettaisiin esimerkiksi aiemmin esitetty neljännen asteen polynomi (11). Polynomin sovittamisen jälkeen voitaisiin laskea jokaiselle rivin eri sarakkeelle korjauskertoimet (21) ja näiden avulla kyseisen rivin pikselien väriarvot saataisiin muokattua tasaiseksi.
Yksittäisten rivien tarkastelun sijaan on kuitenkin parempi tarkastella useampaa riviä kerral- laan. Tarkasteltavien rivien määrän ollessa hieman suurempi, on polynomin sovittamiseen käytössä enemmän dataa ja todennäköisesti sovitettu polynomi myös approksimoi datapis- teiden arvoja paremmin. Yksittäisiä rivejä tarkastellessa tukissa olevat tummemmat kohdat, esimerkiksi oksat tai tukkiin jääneet kuorenpalat saattavat vaikuttaa saatuun lopputulokseen liian paljon, jolloin valaistusta ei saada korjattua tarpeeksi hyvin. Tässä työssä lopullisten
tuloksien saamiseksi on käsitelty aina kymmentä tukkikuvan riviä kerrallaan.
Alkuperäiset leikkaamattomat tukkikuvat sisältävät pelkän tukin lisäksi myös jonkin verran tummaa taustaa tukin ympärillä. Tukkikuvissa tärkeintä on saada korjattua valaistus tukin alueelta, eikä tummalla taustalla ole niinkään merkitystä. Tämän vuoksi valaistuksen kor- jausta tehtäessä laskutoimituksiin otetaan huomioon tukkikuvista vain sellaiset kohdat, jotka sisältävät ainoastaan pelkkää tukkia. Alkuperäisistä tukkikuvista jätetään kuvien alusta ja lopusta huomioimatta ne alueet, jotka eivät sisällä vielä ollenkaan tukkia. Lisäksi huomioi- matta jätetään tummat alueet tukin ylä- ja alapuolelta. Tätä varten täytyy tukkikuvista saada selville, millä rivillä tukin ylä- ja alareuna sijaitsevat kuvan eri kohdissa.
Tukin ylä- ja alareunan tunnistamiseen käytetään luvuissa 2.1 ja 2.2 esitettyjä menetelmiä.
valaistuksen korjaamista varten selvitetyistä tukin yläreunan sijainneista tukkikuvan eri osa- kuvissa valitaan se tapaus, jossa tukin yläreuna sijaitsee kauimpana kuvan yläreunasta. Tätä alinta osakuvissa olevaa tukin yläreunan sijaintia käytetään laskemisessa tarkasteltavan alu- een yläreunana. Tukin alareunan oletetaan sijaitsevan vakiokorkeudella jokaisessa osakuvas- sa.
Tukkikuvan alkuperäistä valaistusta täytyy tarkastella sellaisen suorakaiteen muotoiselta alu- eelta, joka sisältää ainoastaa tukkia. Tämän suorakaiteen yläreunana toimii siis löydetty tu- kin osakuvien yläreunan alin kohta. Alueen alareunana voitaisiin käyttää joko määritettyä tukin alareunaa tai sen sijaan tukkikuvan kohtaa, jossa sijaitsee metallisten tukkikuljettimien yläreuna. Tässä työssä alueen alareunaksi on määritetty tukkikuljettimien yläreuna, jotta tu- kin värityksestä poikkeavat metalliset kuljettimet eivät vaikuttaisi tehtävään valaistuksenkor- jaukseen. Alueen vasen ja oikea reuna on määritetty tukkikuvan ensimmäisen ja viimeisen tukkia sisältävän osakuvan kohdalle.
Kuvassa 27 näkyy kyseiselle tukkikuvalle määritetty kuvassa valkoisella merkattu alue, jolta valaistuksen korjauskertoimet lasketaan kuvan eri riveille.
Kuva 27.Kuvaan on merkattu valkoisella alue, jolta valaistuksen korjaamiseen käytettävät kertoimet lasketaan.
Laskettaessa kuvassa 27 valkoisella rajatulle alueelle valaistuksen korjaamiseen tarvittavat kertoimet, saadaan niiden avulla korjattua tämän alueen valaistus tasaiseksi. Tukki jatkuu kuitenkin tämän määritetyn valkoisella rajatun alueen ylä- ja alapuolella, ja tämänkin alu- een valaistus tulisi saada tasoitettua. Näiden puuttuvien alueiden valaistuksen tasoittamisen toteuttamiseen on useampia eri vaihtoehtoja. Valkoisella rajatulta alueelta laskettujen kor- jauskertoimien avulla voitaisiin suorittaa ekstrapolointia, jolloin tunnettujen arvojen avul- la saataisiin ratkaistua alueiden ulkopuolisille riveille kertoimet valaistuksen korjaamiseen.
Toinen vaihtoehto on käyttää tukin yläreunassa sijaitseville alueille niitä korjauskertoimia, joilla korjattiin kuvan valaistusta valkoisella rajatun alueen aivan yläosassa. Alareunan va- laistuksen tasoittamiseen käytetäisiin tässä tapauksessa valkoisella rajatun alueen alimmalta riviltä ratkaistuja korjauskertoimia.
Tapauksissa, joissa valkoisen alueen ylä- ja alapuolisilla alueilla ei ole erityisen paljon tuk- kia, ei valaistuksessakaan kerkeä tapahtua erityisen suuria muutoksia. Tällöin saadaan luulta- vasti riittävän hyviä tuloksia käyttämällä vain valkoisen alueen ensimmäiselle ja viimeiselle riville laskettuja kertoimia puuttuvien alueiden valaistuksen tasoittamiseen.
Kuvatuissa tukeissa on edelleen jäljellä jonkin verran kuorta, joka aiheuttaa kuviin tummem- pia kohtia. Tällaisissa kohdissa pikseleiden väriarvot ovat mahdollisesti muihin osakuviin verrattuna huomattavasti pienempiä. Laskettaessa tukkikuvan osakuvia yhteen on syytä käyt- tää keskiarvo-osakuvan laskennassa kaikkia osakuvia, jolloin satunnaiset muista osakuvista poikkeavat osakuvat eivät aiheuta merkittävää virhettä mallin rakentamisessa. Tämän vuoksi tukin alareunasta on rajattu metalliset tukkikuljettimet käsiteltävien alueiden ulkopuolelle, sillä ne saattaisivat aiheuttaa virhettä valaistusta tarkastellessa.
Lisäksi keskiarvoistusta käyttämällä saadaan valaistuksen korjauksesta laskennan kannalta tehokkaampaa, koska tällöin ei tarvitse laskea jokaiselle tukkikuvan sisältämälle osakuval- le omia valaistuksen tasoittamiseen tarvittavia korjauskertoimia, vaan tarkasteltavilla riveillä jokaista osakuvaa korjataan samoilla korjauskertoimilla. Keskiarvoistuksesta saadaan lisäksi hyvin toimiva tapa tällöin, kun huomioidaan tukkikuvan jokainen osakuva mallin muodos- tamisessa. Tällöin yksittäiset poikkeavat osakuvat keskiarvoistuvat sopivasti pois siten, että malli toimii suurimmalle osalle tukkikuvan osakuvista riittävän hyvin.
Kuvassa 28 on piirrettynä valaistuskorjauksen parannellun version korjauskertoimet eri koh- dissa tukkia. Kuten kuvasta voidaan huomata, valaistuksen korjaamiseen tarvittavat kertoi- met vaihtelevat tukin eri kohdissa todella paljon. Tukin alareunassa taso näyttää lähes vaa- kasuoralta, eikä kertoimet poikkea juurikaan luvusta yksi. Sen sijaan tukin yläreunassa osa- kuvien eri sarakkeiden korjauskertoimien arvoissa on hyvin paljon poikkeavuuksia.
Kuva 28.Kertoimet, joilla tukkikuvan valaistusta saadaan tasoitettua.