Categories
Älykästä tuotantoa Pulssi

Kohinat kohilleen: Syvyys­kuvan jälki­kä­sit­telyä FFMpeg-ohjelmalla

Base Camp – Opiske­li­jay­rit­tä­jyy­sa­lus­tojen kehit­tä­minen -hankkeen etätek­no­lo­gia­ko­keilua virtu­aa­li­ho­lo­grammien parissa on viety eteenpäin inten­sii­vi­val­men­nuksen hologram­mi­tal­lenteen tekemi­sellä Intel Realsense-kameroita hyödyntäen (ks. artikkeli tässä julkai­sussa). Seuraa­vaksi vuorossa on tallenteen siisti­minen ja hologram­mi­vi­sua­li­soinnin luominen Microsoft Hololen­sille Unity-sovel­lus­ke­hit­ti­mellä, että voimme testata hologrammia käytän­nössä. Tässä artik­ke­lissa keski­tytään tallenteen syvyys­kuvan jälkikäsittelyyn.

Miksi tallenteen syvyys­kuvan jälki­kä­sittely voi olla tarpeen?

Tallenteen syvyys­tietoa tallen­net­taessa mittausar­voihin on voinut jäädä huojuntaa, joita syntyy elekt­ro­ni­sessa jaksol­lisen signaalin mittauk­sessa. Ne johtuvat mittauk­sessa käytet­tyjen senso­reiden ominai­suuk­sista ja raken­teesta. Niitä voidaan vähentää mittaus­datan jälki­kä­sit­telyn avulla, ja tässä tapauk­sessa jälki­kä­sit­te­lyllä tarkoi­tetaan video­kuvan jälki­kä­sit­telyä ja huojun­nalla kuvan kohinaa. Esimer­kiksi kuvassa 1 on nähtä­vissä kohinan vaikutus proji­soituun piste­pilveen – sivusta katsottuna kohde ei näytä kovin edustavalta.

Kuva 1. Alkupe­räinen tallenne Unity-sovel­lus­ke­hit­ti­messä 3d-malliksi proji­soituna. Syvyys­tie­dossa havait­ta­vissa paljon kohinaa.

Käytössä olevat kamera­tyyppi (D435) itsessään ei ole paras mahdol­linen ehdokas kaukana olevien kohteiden kuvaa­miseen, ja Intelin oman kuvauksen mukaan sen kuvassa esiintyyy enemmän kohinaa suhteessa muihin. Mutta vastaa­vasti tarkkuus on parempi kuvat­taessa kohteita, jotka voivat olla vain 17 cm päässä kamerasta. Tämän perus­teella parempi laitteisto pilotissa olevan tallen­nuksen toteut­ta­miseen olisi Intel Realsense D415, joilla syvyys­ko­hinan määrä on korkeinaan 2% neljään metriin saakka. Laitteis­tolla on siis rajoit­teita, mutta epätark­kuuksien aiheut­tamia kuvavir­heitä voidaan koettaa poistaa suodat­timien avulla.

 Mistä ja millaiset suodattimet?

Tallenteen jälki­kä­sit­te­lyssä hyödyn­nettiin FFmpeg-ohjel­mistoa, jonka avulla on mahdol­lista ohjel­mal­li­sesti muokata video­tal­len­netta. Syvyys­kuvan kohinaa voi muokata niin sanotuilla tempo­raa­li­suo­dat­ti­milla, jotka seuraavat kuvapis­teiden arvoja peräk­käisten ruutujen osalta. Myös muita yksit­täisten ruutujen kuvapis­teiden suodat­timia on mahdol­lista käyttää. Jälki­kä­sit­te­lyaika riippuu koneen tehosta, tallenteen pituu­desta, käsitel­tävän kuva-alueen koosta sekä käyte­tyistä kuvanparannusalgoritmeista.

Keskiarvoon perus­tuvan tempo­raa­li­suo­dat­timen toimintaa havain­nol­lis­tetaan kuvassa 2. Siinä video­kuvan ruudulle kolme lasketaan kuvapis­teille arvo, perustuen nykyisen ja kahden edeltävän ruudun kuvapis­teiden keskiar­vosta. Kuvapis­teiden arvot haetaan aina samoista koordi­naa­teista jokai­selle ruudulle. Kuvassa 1 ruudun yksi vasemman yläkulman kuvapisteen arvo on 52, ruudun kaksi vastaava arvo on 128, ja ruudun kolme arvo on 42. Esimerk­ki­suo­datin laskee keskiarvon kolmesta ruudusta kullekin kuvapis­teelle oikean­puo­lei­simpaan tulos­kuvaan, jolloin lasku­toi­mitus (52 + 128 + 42) / 3 tuottaa arvon 74. Muiden kuvapis­teiden arvot ovat 0, joten suodatin tuottaa niille arvoksi 0.

Kuva 2. Keskiarvoon perus­tuvan tempo­raa­li­suo­dat­timen toiminta kolmen video­ruudun avulla havainnollistettuna. 

Jälki­kä­sit­telyä varten ehdolla olevat suodattimet

FFmpeg-ohjel­misto tukee varsin monipuo­lista valikoimaa erilaisia suodat­timia video­kuvan käsit­telyyn. FFmpeg-ohjelman dokumen­taa­tio­si­vuston kuvausten perus­teella hyödyn­net­tä­väksi kokeiluun valikoi­tuivat hqdn3d, deflicker, ja avgblur.

Hqdn3d on kuvauksen perus­teella korkea­tark­kuuk­sinen 3d-kohinan­pois­to­suo­datin. Kolman­nella ulottu­vuu­della tarkoi­tetaan aikaa, joka tekee tästä suodat­ti­mesta tempo­raa­li­suo­dat­timen. Sen pääasial­linen tavoite on tehdä kuvista vakaita, jolloin niiden pakkaa­minen on tehok­kaampaa. Tässä tapauk­sessa se pyrkii silot­tamaan harmaa­sä­vy­ar­vojen poikkeamia peräk­käisten ruutujen välillä.

deflicker puolestaan on tempo­raa­li­suo­datin kuvan luminans­siar­vojen tasoit­ta­miseen. Luminans­silla tarkoi­tetaan pinnalta lähtevän valon kirkkautta.  Koska kyseessä oleva syvyyskuva on harmaa­sä­vykuva, jossa kirkkaus tarkoittaa kauempaa etäisyyttä kamerasta, tällä suodat­ti­mella voidaan tasoittaa myös eroja syvyydessä.

avgblur puolestaan on normaali video­ku­va­suo­datin, joka hyödyntää ainoastaan käsitel­tävän video­kuvan ruudun arvoja. Sen toiminta on sumentaa kuvaa, jonka sinällään ei luulisi paran­tavan yhtään mitään. Tarkoi­tuksena on piilottaa pieniä epätark­kuuksia pinnan muodoissa, jolloin pintojen vierek­käisten kuvapis­teiden arvojen pitäisi olla lähempänä toisiaan, jolloin voimme ainakin teoriassa tasoittaa pitäisi tasoittaa kuopat ja ulkonemat virtu­aa­li­ho­lo­grammin syvyys­kar­tasta. Kuvan tarkkuus toki kärsii, mutta kohinan poiston ollessa pääasial­linen tehtävä se voi olla hyödyl­linen. Kuvassa 3 nähdään kuitenkin paran­nusta alkupe­räiseen tallen­teeseen nähden (kuva 2), joten suodat­timen on hyvä olla vertai­lussa mukana varsi­naisiin tempo­raa­li­suo­dat­timiin nähden.

Kuva 3. Tallenne Unity-sovel­lus­ke­hit­ti­messä 3d-malliksi proji­soituna, kun se on käsitelty pelkällä avgblur-suodat­ti­mella . Kohina on vähen­tynyt selvästi.

Suodat­timien visuaa­liset testit

Suodat­timien vaiku­tusta testasin erikseen, kahden ja kolmen suodat­timen kesken erilaisine permu­taa­tioineen. Laatua arvion silmä­mää­räi­sesti kohinan perus­teella samasta kohtauk­sesta Unity-sovel­lus­ke­hit­timen avulla. Hqdn3d-suodatin ajettiin oletus­a­se­tuk­silla. Avgblur-suodat­timen arvonäyt­teis­tyksen kooksi määri­teltiin 5×5 kuvapis­tettä. Deflicker-suodat­ti­mella analy­soitiin 15 peräk­käistä ruutua, ja laskettiin kuvapis­teille aritmeet­tinen keskiarvo. Suodat­ti­milla käsiteltiin kahden tunnin tallen­teesta ensim­mäinen minuutti, jonka tulosta käytettiin vertailussa.

Suodat­timien vaiku­tusta syvyy­sar­vo­vaih­te­luiden tasoit­ta­miseen tutkittiin ensim­mäi­sellä kierrok­sella aina projek­tioiden kesken, joissa ensim­mäisen suodatin on kaikille sama. Kierrok­sella analy­soitiin kolmen eri joukon alkioista jatkoon ne, joissa kohina oli vähäi­sintä. Jatkoon pääsivät taulukon 1 toisessa sarak­keessa X:llä merkityt suoda­ti­nyh­dis­telmät. Toisella kierrok­sella oli helpompi tehdä valintoja syvyys­tiedon muutosten ollessa pienempiä, mutta muutokset erottuessa selvemmin vertai­lu­joukon vaihtoeh­tojen kesken. Näistä tuottivat silmä­mää­räi­sesti arvioiden parhaat tulokset vakauden kannalta kolme suoda­ti­nyh­dis­telmää, eli hqdn3d, avgblur_hqdn3d sekä deflicker_avgblur_hqdn3d.

Kaikki suoda­ti­nyh­dis­telmät1. vertailun jälkeen2. vertailun jälkeen
avgblur  
avgblur_deflicker  
avgblur_deflicker_hqdn3d  
avgblur_hqdn3dXX
avgblur_hqdn3d_deflickerX 
deflicker  
deflicker_avgblurX 
deflicker_avgblur_hqdn3dXX
deflicker_hqdn3d  
deflicker_hqdn3d_avgblur  
Hqdn3dXX
hqdn3d_avgblurX 
hqdn3d_avgblur_deflicker  
hqdn3d_deflicker  
hqdn3d_deflicker_avgblur  

Taulukko 1. Suoda­ti­nyh­dis­telmät ja vertai­lu­ker­tojen jatkoon päässeet suodattimet.

Näiden kolmen välillä yksise­lit­tei­sesti parasta ei käytössä olleen materi­aalin avulla voinut valita. Mutta laadun säilyt­tä­mi­sessä on selkeä järjestys kolmen vaihtoeh­toina olevan suodat­timen kesken –  paras yksit­täinen käytettävä suodatin on hqdn3d. Kahden suodat­timen osalta suodat­timet ja järjestys on avgblur_hqdn3d, ja kolmen osalta puolestaan deflicker_avgblur_hqdn3d.

Yhteen­vetona suodat­timien hyödyn­tä­mi­sestä syvyyskuvaan

Suodat­timien hyödyn­tä­minen on varsin suosi­tel­tavaa kohinan poista­mi­seksi syvyys­tie­dosta, ja suodat­timien suori­tus­jär­jes­tyk­sellä on merki­tystä ainakin testeissä käytettyyn lähde­ma­te­ri­aaliin. Suodat­timien avulla saa proji­soitua mallia vakaam­maksi, ja siten paran­netaan osaltaan loppu­tu­loksen laatua, mutta niillä ei kuitenkaan voi poistaa kohinan vaiku­tusta kokonaan. Mikäli kameraa vaihta­malla syvyys­ka­meran kohina tallen­nuse­täi­syy­deltä saa pienen­nettyä jo tallen­nus­vai­heessa, suodat­timet voivat toimia paremmin.

Suodat­timien testauk­sessa käytettiin varsin suppeata joukkoa säädettyjä parametreja, joten mahdol­li­suuksia syvyys­kuvan laadun paran­ta­mi­seksi on vielä tutki­matta. Testissä käytetty projekti, käytetty materiaali sekä FFmpeg-ohjelman suoda­tus­käskyt ovat tarvit­taessa saata­vissa artik­kelin kirjoittajalta.


Kirjoittaja:

Anssi Gröhn, tieto­jen­kä­sit­telyn lehtori, Basecamp-hanke, Karelia-ammattikorkeakoulu