Värinseurannan selitys#
Mitä on värin seuraaminen ja kuinka CMUcam4 tekee sen?#
Värinseuranta on kyky ottaa kuva, eristää tietty väri ja poimia tietoa sen kuvan alueen sijainnista, joka sisältää juuri tuota väriä. Oletetaan esimerkkinä, että sinulle annetaan valokuva, jossa on punainen pallo hiekkatiellä. Jos joku pyytäisi sinua piirtämään laatikon kaiken kuvassa punaisen värisen ympärille, piirtäisit varsin helposti suorakulmion pallon ympärille. Tämä on värinseurannan perusidea. Sinun ei tarvinnut tietää, että kohde oli pallo. Sinun tarvitsi vain omata käsitys punaisesta väristä eristääksesi kohteen kuvasta. Alla käsittelemme lyhyesti, miten CMUcam4 todella käyttää kameran kuvan tietoja värinseurannan suorittamiseen.
Määrittääksesi värin sinun on määritettävä sallittu minimi- ja maksimiarvo kolmelle värikanavalle. Jokaista yksittäistä väriä edustaa punainen, vihreä ja sininen arvo, joka ilmaisee, kuinka paljon kutakin kanavaa on sekoitettu kyseiseen yksittäiseen väriin. Värin määrittämisessä hankalaa on se, että sinun on määritettävä sallittujen arvojen alue kaikille kolmelle värikanavalle. Koska valo ei ole täysin tasaista eikä kohteen väri ole täysin tasainen, sinun on huomioitava nämä vaihtelut. Et kuitenkaan halua löysätä näitä rajoja liikaa, tai monia ei-toivottuja värejä hyväksytään. Koska CMUcam4:n tapauksessa kukin värikanava muunnetaan luvuksi väliltä 0–255, voit rajata kunkin kanavan kahdella luvulla, ylä- ja alarajalla. Jos sinulla on kaksi rajaa kullekin kolmesta kanavasta, tämä tarkoittaa, että kuutta arvoa voidaan käyttää rajaamaan koko se väriavaruus, jota haluat seurata. Jos kuvittelet värien esittämistä kuutiona, jonka kukin sivu on eri värikanava (punainen, vihreä ja sininen), niin värisi valitsemiseen käytetyt kuusi arvoa piirtäisivät tuon kuution sisään kolmiulotteisen laatikon, joka määrittää haluamasi värijoukon.
Kun sinulla on raja seurattavalle värille, CMUcam4 ottaa nämä rajat ja käsittelee kuvan. Kuvan värejä on monia tapoja seurata, jotka voivat olla varsin monimutkaisia. CMUcam4 käyttää yksinkertaista yhden läpikäynnin algoritmia, joka käsittelee jokaisen kameran uuden kuvaruudun itsenäisesti. Se aloittaa kuvan vasemmasta yläkulmasta ja tutkii jokaisen pikselin peräkkäin rivi riviltä. Jos tutkittava pikseli osuu käyttäjän määrittämän värialueen sisään, se merkitsee tuon pikselin seuratuksi. Se tutkii myös nykyisen seuratun pikselin sijainnin nähdäkseen, onko se kaikkien tähän mennessä kuvasta löytyneiden seurattujen pikselien ylin, alin, vasemmanpuoleisin vai oikeanpuoleisin sijainti. Jos se havaitsee, että pikseli on seuratun alueen nykyisen rajaavan laatikon ulkopuolella, se kasvattaa rajaavaa laatikkoa sisältämään tämän uuden pikselin. Koska jopa yhden seuratun pikselin sijainti voi muuttaa rajaavaa laatikkoa, rajaava laatikko voi joskus vaihdella melko paljon ruudusta toiseen. Kohinansuodatusta (katso seuraava kappale) voidaan käyttää tämän vaihtelun vähentämiseen. Ainoa muu merkittävä tallennettava tieto on seurattujen pikselien vaaka- ja pystykoordinaattien summa. Kuvan lopussa CMUcam4 ottaa seurattujen pikselien vaakasumman ja pystysumman ja jakaa kummankin seurattujen pikselien kokonaismäärällä ja saa arvon, joka näyttää, missä seuratun kohteen keskikohta sijaitsee. Koska kukin seurattu pikseli vaikuttaa vain pienen osan lopullisiin vaaka- ja pystysummiin, seurattujen pikselien keskikohta (jota usein kutsutaan keskipisteeksi) on tyypillisesti paljon vakaampi mittaus kuin rajaava laatikko. Kun kaikki kuvan pikselit on tarkistettu, seurattujen pikselien kokonaismäärää voidaan käyttää myös yhdessä rajaavan laatikon pinta-alan kanssa seuratun kohteen luottamuksen ja pikselimäärän laskemiseen.
Kohinansuodatus mahdollistaa värinseuranta-alueiden suurentamisen, jotta voimme huomioida suurempia vaihteluita kuvan pikseliarvoissa aiheuttamatta muiden kuvan satunnaisten vaihteluiden seurantaa. Kohinansuodatuksen idea on, että haluamme pitää pikseliä seurattavan värisenä vain, jos se on osa värinseurannan rajojen sisällä olevaa pikseliryhmää. CMUcam4:ssä toteutamme tämän tavalla, joka vaatii vain yhden läpikäynnin kuvan yli. Kuvan pikseleitä käsitellessään CMUcam4 ylläpitää laskuria, joka pitää kirjaa siitä, kuinka moni peräkkäinen pikseli nykyisellä rivillä ennen nykyistä pikseliä oli seurattavan värin rajojen sisällä. Jos tuo arvo on suurempi kuin kohinansuodattimen arvo, nykyinen pikseli merkitään seuratuksi pikseliksi.
Mikä on histogrammi ja mihin se on hyvä?#
Histogrammi on kaaviotyyppi, joka esittää datan esiintymistiheyden ja jakauman. CMUcam4:n tapauksessa histogrammi näyttää kuvasta löytyvien väriarvojen esiintymistiheyden ja jakauman. Kukin palkki edustaa tietyn kanavan väriarvojen aluetta. CMUcam4 voi jakaa mahdolliset väriarvot väliltä 0–255 1, 2, 4, 8, 16, 32 ja 64 eri lokeroon. Kukin lokero sisältää kuvasta löytyneiden, tiettyjen värirajojen sisään osuvien pikselien lukumäärän. Suuri arvo tietyssä lokerossa tarkoittaa siis, että monia noista väreistä löytyi kuvasta. Kukin histogrammi edustaa vain yhtä valittua värikanavaa.
Histogrammit ovat tapa abstrahoida kuvan sisältö. Niillä on monia käyttötarkoituksia, kuten alkeellinen kohteentunnistus, kynnystäminen tai värien tasapainottaminen. Ne ovat erityisen hyödyllisiä eri tekstuurien erottamiseen. Kokeile suunnata CMUcam4, automaattinen vahvistus pois päältä, kahteen eri tavalla teksturoituun pintaan ja huomaa ero niiden värijakaumissa. Tätä ilmiötä voidaan käyttää lattiapintojen erottamiseen tai esteiden tunnistamiseen.