4.11. Debayerointi

Raaka Bayer-kehys sisältää vain yhden värikanavan pikseliä kohden. Sen muuntaminen tavalliseksi kolmikanavaiseksi RGB-kuvaksi tarkoittaa kahden puuttuvan kanavan täyttämistä jokaiseen pikseliin interpoloimalla lähellä olevista oikean värisistä pikseleistä. Tätä interpolointia kutsutaan debayeroinniksi (myös demosaicing). Muutama algoritmiperhe hallitsee kenttää.

4.11.1. Superpikseli

Halvin lähestymistapa romahduttaa jokaisen 2x2-kokoisen Bayer-ruudun – yksi punainen solu, yksi sininen solu ja kaksi vihreää solua – yhdeksi ulostulopikseliksi:

  • punainen kanava on punaisen solun arvo;

  • sininen kanava on sinisen solun arvo;

  • vihreä kanava on kahden vihreän solun keskiarvo.

Jokaisesta 2x2-syöttöruudusta tulee yksi ulostulopikseli, joten valmis kuva on puolet sensorin leveydestä ja puolet sen korkeudesta, neljänneksellä pikselimäärästä. Superpikseli on nopea eikä siinä ole interpolointivirheitä, mutta resoluutiokustannus tekee siitä viimeisen oljenkorren – sitä käytetään harvoin.

4.11.2. Bilineaarinen

Bilineaarinen interpolointi laskee oikean väristen lähimpien pikselien keskiarvon sen sijaan, että kopioisi tai tiivistäisi. Tarkka keskiarvotus riippuu siitä, minkä värin keskipikseli tallentaa, koska neljä tapausta jakavat puuttuvat kanavat 3x3-naapurustoon eri tavoin.

Vihreä pikseli punais-vihreällä rivillä. Puuttuva punainen arvo on vasemmalla ja oikealla olevien kahden punaisen naapurin keskiarvo; puuttuva sininen on ylä- ja alapuolella olevien kahden sinisen naapurin keskiarvo.

3 saraketta 3 riviä kokoinen Bayer-kuvion naapurusto, jonka keskellä on vihreä pikseli punais-vihreällä rivillä. Keskipisteen vasemmalla ja oikealla puolella olevat solut ovat punaisia; ylä- ja alapuolella olevat solut ovat sinisiä; kulmasolut ovat vihreitä. Valkoiset nuolet osoittavat sisäänpäin kahdesta punaisesta solusta ja kahdesta sinisestä solusta keskipisteeseen.

Puuttuva punainen tulee vaakasuorista punaisista naapureista; puuttuva sininen pystysuorista sinisistä naapureista.

Vihreä pikseli vihreä-sinisellä rivillä. Sama muoto punaisen ja sinisen vaihtaessa paikkaa. Puuttuva punainen arvo on ylä- ja alapuolella olevien kahden punaisen naapurin keskiarvo; puuttuva sininen on vasemmalla ja oikealla olevien kahden sinisen naapurin keskiarvo.

3 saraketta 3 riviä kokoinen Bayer-kuvion naapurusto, jonka keskellä on vihreä pikseli vihreä-sinisellä rivillä. Keskipisteen ylä- ja alapuolella olevat solut ovat punaisia; vasemmalla ja oikealla olevat solut ovat sinisiä; kulmasolut ovat vihreitä. Valkoiset nuolet osoittavat sisäänpäin kahdesta punaisesta solusta ja kahdesta sinisestä solusta keskipisteeseen.

Puuttuva punainen tulee pystysuorista punaisista naapureista; puuttuva sininen vaakasuorista sinisistä naapureista.

Punainen pikseli. Puuttuva vihreä arvo on neljän pääilmansuuntaisen vihreän naapurin (ylä, ala, vasen, oikea) keskiarvo. Puuttuva sininen on neljän diagonaalisen sinisen naapurin keskiarvo.

3 saraketta 3 riviä kokoinen Bayer-kuvion naapurusto, jonka keskellä on punainen pikseli. Neljä pääilmansuuntaista naapuria (ylä, ala, vasen, oikea) ovat vihreitä; neljä diagonaalista kulmasolua ovat sinisiä. Valkoiset nuolet osoittavat sisäänpäin kaikista kahdeksasta naapurista keskipisteeseen.

Puuttuva vihreä tulee neljästä pääilmansuuntaisesta vihreästä naapurista; puuttuva sininen neljästä diagonaalisesta sinisestä naapurista.

Sininen pikseli. Punaisen tapauksen peilikuva. Puuttuva vihreä on neljän pääilmansuuntaisen vihreän naapurin keskiarvo, ja puuttuva punainen on neljän diagonaalisen punaisen naapurin keskiarvo.

3 saraketta 3 riviä kokoinen Bayer-kuvion naapurusto, jonka keskellä on sininen pikseli. Neljä pääilmansuuntaista naapuria ovat vihreitä; neljä diagonaalista kulmasolua ovat punaisia. Valkoiset nuolet osoittavat sisäänpäin kaikista kahdeksasta naapurista keskipisteeseen.

Puuttuva vihreä tulee neljästä pääilmansuuntaisesta vihreästä naapurista; puuttuva punainen neljästä diagonaalisesta punaisesta naapurista.

Bilineaarinen säilyttää sensorin täyden resoluution ja on tarpeeksi pehmeä useimpiin käyttötarkoituksiin, mutta se näyttää silti virheitä reunoissa. Terävä siirtymä kahden värin välillä ylittää pikseliruudukon tietyssä suunnassa, ja reunan yli laskettu keskiarvo pehmentää sitä hieman. Siellä missä väri- ja luminanssireunat eivät asetu tarkalleen kohdakkain, ulostuloon ilmestyy heikkoja värillisiä reunuksia.

4.11.3. Bilineaarisen jälkeen

Olemassa on joukko parempia debayerointialgoritmeja. Jotkin käyttävät suurempia naapurustoja kuin bilineaarisen pieni samanväristen naapurien risti ja painottavat näytteet huolellisemmin valituilla kertoimilla; toiset havaitsevat paikallisten reunojen suunnan ja ohjaavat interpoloinnin tuon suunnan mukaiseksi, jolloin pikseliruudukon poikki kulkeva reuna pysyy terävänä pehmenemisen sijaan. Kumpikin lähestymistapa vähentää bilineaarisen jättämiä värireunuksia ja reunojen pehmenemistä, mutta hintana on enemmän laskentaa pikseliä kohden ja enemmän piiriä (tai enemmän laskentaa MCU:n puolella).

Debayerointilaatu, joka on saatavilla millä tahansa OpenMV Camilla, on alustakohtainen – se riippuu siitä, mitä kyseisen kameran sensori ja MCU tarjoavat.

4.11.4. Missä debayerointi suoritetaan

Kuvasignaaliprosessori (ISP) – joko itse sensorisirulla tai MCU:n puolella – debayeroi kunkin kehyksen ennen kuin se poistuu kuvantamisputkesta useimmissa tapauksissa. Käyttäjäkoodi vastaanottaa valmiin kolmikanavaisen RGB-kuvan koskematta koskaan raakaan mosaiikkiin.

ISP voidaan myös käskeä päästämään raaka Bayer-kehys läpi muuttumattomana. Raaka Bayer vie vähemmän muistia kuin debayeroitu kuva – yksi tavu pikseliä kohden kolmen sijaan – mikä tekee siitä hyödyllistä silloin, kun kehysten tallennus on pullonkaula, kun kaapataan myöhempää käsittelyä varten, tai kun projektissa halutaan soveltaa mukautettua debayerointialgoritmia ohjelmistossa.