SMErec: Virtuaalihologrammien tallentamisesta ja visualisoinnista

Aiemmissa blogimerkinnöissäni olen käsitellyt yleisesti syvyyskameroita, sekä niiden avulla rakennettavaa testiympäristöä virtuaalihologrammien tallennukseen. Sittemmin kiinnostusta hologrammiteknologian hyödyntämiseen on tullut esille myös opetusteknologian puolella (Hyttinen & Hatakka, 2019). Tässä blogimerkinnässäni käsittelen teknisestä näkökulmasta, miten virtuaalihologrammeja on mahdollista tallentaa ja esittää, kun käytettynä menetelmänä on jokaisen kameran erilliseen syvyystietoon perustuvien pistepilvien piirtäminen.  

Virtuaalihologrammeilla tarkoitetaan tässä yhteydessä kolmiulotteista, animoitua esitystä kohteesta, jota voi tarkastella monesta eri suunnasta. Virtuaalihologrammi tehdään tallentamalla useammalla syvyyskameralla kuva- ja syvyystieto esityksestä, joka puolestaan toistetaan erityisen sovelluksen avulla. Sovellus siirtää datan visualisointisovellukselle, josta voi tarkastella tallennettua kohdetta. Sinällään holotallenteen tekeminen ei eroa normaalin videon tekemisestä. Kamerat kytketään päälle, ja esiintyjä pääsee vauhtiin. Ero onkin lähinnä tekninen – kohteesta tallentuu samalla useampi kuvakulma syvyystietoineen.  

Miten tallennus tapahtuu?

Wärtsilä-kampuksen fyysisten laboratoriotilojen rajoitteiden vuoksi käytämme toistaiseksi virtuaalihologrammien kuvaamiseen pelkästään kahta Intel Realsense-syvyyskameraa. Intel Realsensekirjaston mukana tulevat apuohjelmat mahdollistavat kunkin kameran tuottaman pistepilven tallentamisen ROS bag-muotoon. Valitettavasti bag-muoto on optimoimaton, ja tallennettu pistepilvitieto pelkästään yhden kameran osalta vaatii noin 100 megatavua  / sekunti, joka tuottaa varsin reippaan kokoisia tiedostoja. Mikäli kameroita käytetäisiin useampia, vaadittu tallennustila kerrotaan kameroiden lukumäärällä.

Mikäli tallennustilavaatimus tuntuu hankalalta hahmottaa, niin kaksituntinen elokuva HD 1080p-tarkkuudella vie noin kaksi gigatavua pakattuna h264-koodekilla. Kaksituntinen holotallenne kahdella kameralla bag-muodossa veisi puolestaan 1440 gigatavua, eli 1.4 teratavua.

Kokovaatimusten takia kehitin uuden ratkaisun pistepilvitiedon tallentamiseen. Rajoitin tallennettavan metatiedon määrää, sekä sovelsin pakkausalgoritmeja siten, että saamme pienennettyä tallennettavan tilan määrää kahdessadasosaan alkuperäiseen nähden. Tällöin kolmen minuutin esitys pakattuna vie noin 65-90 megatavua, mikä voi todeta olevan hyvä tulos, sillä kaksituntinen holotallenne veisi enää noin 2.4 gigatavua. Ratkaisun osaltaan mahdollisti myös syvyyssuunnassa kuvattavan alueen sekä syvyystiedon tarkkuuden rajoittaminen, sillä tallenteilla kuvattavien kohteiden vaatima alue ei ole kovin suuri.

Tallennus tapahtuu kahdessa vaiheessa. Ensimmäisessä vaiheessa ohjelmisto tallentaa kameroiden tuottaman tiedon, sekä mikrofonin kaappaaman äänen levylle. Toisessa vaiheessa yhdistetään ääni-, kuva- ja syvyystieto yhdeksi virtuaalihologrammivideoksi. Sen jälkeen video onkin mahdollista toistaa 3D-mallina sitä tukevan erityisen visualisointiohjelmiston avulla.  

Miten visualisointi tapahtuu?

Virtuaalihologrammeja toistava visualisointiohjelmisto rakentaa katsojalle näkyvän 3D-pistepilven hologrammivideoon tallennetun datan perusteella. Virtuaalihologrammien tarkastelua varten käytämme Meta 2 AR–laseja, joille kehitetään sovelluksia Unity-pelimoottorilla. Virtuaalihologrammeja on toki mahdollista tarkastella myös VR-lasien avulla. 

Pistepilvien osien kalibrointi ja visualisointiparametrien asettaminen tehdään Unityssä.

Pistepilven tehokas renderöinti vaatii erikseen kehitetyn ratkaisun. Tätä varten olen rakentanut GPU-kiihdytetyn version Intel Realsense2-kirjaston visualisointilogiikasta. Realsense2-kirjasto on julkaistu avoimena lähdekoodina Apache License 2.0:n alla, joten siinä käytetyt ratkaisut ovat kehittäjien hyödynnettävissä. 

Visualisointitoteutusta tehdessä on kuitenkin huomioita muutamia seikkoja.  Jokaisen kameran tuottama syvyystieto on riippuvainen laitteen tallennuskomponenttien ominaisuuksista. Tämä tarkoittaa käytännössä sitä, että kukin hologrammitallenne vaatii myös tietyt ulkoiset kamerakohtaiset parametrit 3D-pistepilven tuottamiseen. Tallenteen tekemisen yhteydessä on siis ladattavia metatietoa laitteesta, jotta hologrammit piirtyvät oikein, ja nämä arvot on ladattava visualisointiohjelmistoon. 

Myös kameroiden sijoittelu ja orientaatio vaikuttaa hologrammien piirtämiseen. Tämän vuoksi visualisointiohjelmisto on kalibroitava kameroiden fyysisen sijoittelun mukaiseksi, että kaikki hologrammin osat toistuvat oikein suhteessa toisiinsa. Kalibrointi on toistaiseksi vielä tehtävä käsin, ja se on varsin aikaa vievää. Kun jatkossa käytämme useampaa kameraa, kalibrointi on rakennettava siten, että se on mahdollista tehdä vastaavilla menetelmillä, kuin mitä useamman kameran liikkeenkaappauslaitteistojen yhteydessäkin.  

Miten tästä eteenpäin?

Hologrammi ei ole täydellinen 3D-malli kohteesta, sillä yksinkertaistetun 3D-mallin muodostaminen pistepilvestä vaatisi enemmän kuva- ja syvyystiedon ohjelmallista käsittelyä. Esimerkiksi Microsoftin Holoportaatio-teknologia todennäköisesti tekee kuvanlaadun parantamiseksi vaativampaa laskentaa, mutta meidän tapauksessamme siihen ei ole syytä ryhtyä. Ratkaisumme on kuvanlaadultaan ehkä heikompi, sillä tuotetussa 3D-mallissa on vielä aukkoja joissain kohdin. Mutta toisaalta, ratkaisu on varsin suorituskykyinen ja toteuttavissa pienemmilläkin laitteistopanostuksilla, sekä lopputulos onnistuu välittämään esiintyjän kehonkielen katsojalle 3D-mallin puutteista huolimatta. 

Koska vaativimmat tekniset ongelmat tallennuksen ja visualisoinnin osalta on ratkaistu, pääsemmekin SMErec-hankkeen puitteissa esittelemään uutta teknologiaa Taitaja 2019-messuilla Joensuu Areenalla toukokuussa 2019. Lisäksi virtuaalihologrammien soveltamiselle opetusteknologian parissa on luotu pohjatyö, joten tuloksilla on mahdollisuus jäädä henkiin Kareliassa myös SMErec-hankkeen päättymisen jälkeen.

Kirjoittaja Anssi Gröhn, tietojenkäsittelyn lehtori

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *