Inteligentný rotoscoping
Inteligentný rotoscoping
24. februára 2013 Žiadne komentáre na Inteligentný rotoscopingProgram pre inteligentný rotoscoping videa.
Cieľom je zdokonaliť metódy rotoscopingu. Aj keď už určite sú dosť rozvinuté, naším cieľom je možno túto prácu viac zefektívniť. Pod inteligentným rotoscopingom možno chápať program, ktorý sa “naučí” rozoznávať niektoré objekty, bude vedieť predpokladať ich pohyb a deformáciu hrany. Napríklad chodiaci človek podstatne mení svoju hranicu, keď pri chôdzi aj hýbe rukami a my ho natáčame zboku. Takisto môže byť problémom, ak prejde popred objekt rovnakej farby ako je on sám a hranica sa úplne stratí. Tieto problémy chcem riešiť vrámci tohto projektu. To sú však veľmi vzdialené cieľe, a najmä nie sú pevne dané. Kam presne projekt dospeje, sa uvidí časom. Pre začiatok sa začnem zaoberať známymi metódami v oblasti, pokúsim sa ich aplikovať v praxi, popritom sa možno podarí príjsť na isté vylepšenia.
Výstupom z programu budú rôzne dáta, určite aj čiernobiela sekvencia snímkov, ktorá sa dá v strihových programoch použiť ako opacity mapa, na základe ktorej je iné video priehľadné. Takto vďaka rotoscopingu vieme umiestniť digitálne predmety “za” predmety vo videu, prípadne vymeniť nejedloliate pozadie za digitálne pozadie, alebo robiť rôzne retuše vo videu. Rotoscoping sa takisto používa aj pri konverzii z 2D do 3D. Ak spravíme rotoscoping pre všetky objekty na scéne, vieme potom každej oblasti priradiť “hĺbku” a takto video skonvertovať na 3D. Všetky tieto schopnosti by mohol mať výsledný produkt neskôr naimplementované.
Na obrázku vidíme príklad výstupu z programu, tj čierno-biele video ako opacity mapu pre následné spracovanie. Výsledné video si môžete pozrieť tu: Letné kino upútavka (avšak rotoscoping tu nebol robený našim softwareom)
Špecifikácia softwaru
Pracovné prostredie, kde si užívateľ môže naimportovať videosekvenciu (ľubovoľná dĺžka a rozlíšenie), s ktorou bude následne pracovať. Video sa bude zobrazovať po jednotlivých snímkach posúvaním sa po časovej osi. Vo vrstvách si užívateľ bude môcť pridať krivky pre rotoscoping.
Uzavretú krivku užívateľ pridá naklikaním riadiacich bodov rotoscopingu na prvom snímku videa. Každý bod sa bude môcť po pridaní ručne posúvať a doladiť jeho pozícia. Medzi každými dvoma riadiacimi bodmi rotoscopingu bude Beziérova (prípadne iná) krivka so 4 riadiacimi bodmi, ktorej dva ostatné riadiace body sa budú dať taktiež doladiť. Vzájomne susedné krivky budú môcť byť C0, C1 alebo C2 spojité. To sa určí vo vlastnostiach každého z riadiacich bodov rotoscopingu.
Pri tvorení masky ide aj o to aká jemná je jej hrana. To sa bude dať nastaviť nie len globálne pre celú masku, ale aj pre jednotlivé krivky medzi dvomi riadiacimi bodmi. Pretože často môže byť časť hrany napríklad okolo stola a časť okolo vlasov, kde je hrana jemnejšia a prechod plynulejší.
Riadiace body určené pre prvý snímok budú takto určené aj pre všetky nasledujúce snímky sekvencie. Ich pohyb sa bude dať nastaviť rôznymi spôsobmi. Určite aj plne automaticky sledovaním hranice určenej na prvom snímku. Ale takisto aj plne manuálne posúvaním jednotlivých bodov na jednotlivých snímkoch. Nie každý snímok bude musieť byť kľúčový. Ak napríklad niektorému riadiacemu bodu určíme kľúčovú pozíciu na každom piatom snímku, tak jeho pozícia na ostatných snímkoch sa doráta sama. Jednou z možností bude aj poloautomatické sledovanie, tj sledovanie určenej hranice iba medzi niektorými riadiacimi bodmi rotoscopingu.
Možné bude počas animácie riadiace body pridávať aj odoberať a takisto v čase meniť vlastnosti jednotlivých bodov.
Objektov vo videosekvencii, ktoré potrebujeme samostatne rotoscopovať môže byť viac, preto bude možné pridať viac vrstiev rotoscopingu.
Samotný názov ‘inteligentný’ spočíva až v druhej fáze vývoja softwaru. Tu by sme chceli naimplementovať predvolené objekty, ktoré užívatelia zvyknú často používať. Napríklad ak užívateľ určí na prvom snímku celú krivku a určí, že ide o chodiacu postavu, tak automatický rotoscoping bude držať hranu aj keď ju na niektorých miestach stratí splynutím s pozadím (napríklad ak bude na niektorých snímkoch časť pozadia splývať s postavou). Takisto bude možné určiť, aby daný začiatočný tvar bol zachovaný počas celej videoskevencie, tj bude sa udržiavať jeho celkový tvar a žiadna hrana nevybehne príliš mimo, aj keby podľa farebnej hranice vo videu mala vybehnúť. To bude vhodné napríklad na rotoscoping balónu priviazeného vo vetre. Hranica bude zachovaná aj keď časť balónu bude na niektorých snímkoch splývať s pozadím.
Jednotlivé vrstvy rotoscopingu sa budú môcť aj rôzne spájať, tj. napríklad ak má byť časť videa polopriesvitná (v opacity mape akási sivá farba), tak túto polopriesvitnú časť užívateľ vyrotoscopuje samostatne a určí jej vlastnosť ako polopriesvitná časť vrstvy pod ňou.
Export z programu bude mať viacero možností. Základnou bude export čiernobieleho videa (užívateľ si určí, ktoré vrstvy rotoscopingu sa majú exportovať). ďalej bude možné video exportovať jednotlivé vyrotoscopované vrstvy videa ako PNG sekvencie s priesvitným pozadím.
Bonusom bude export do stereo 3D formátu, kde si užívateľ určí hĺbku jednotlivých vrstiev rotoscopingu a program vytvorí stereoskopické video poposúvaním vrstiev doľava a doprava pre jednotlivé oči. Chýbajúce pixle v pozadí sa doplnia jednoduchým opakovaním.
Samozrejmosťou softwaru je uloženie projektu, možnosť vrátiť sa o niekoľko krokov naspäť, automatické ukladanie a podobne.
Software bude vytvorený v jazuku C# použitím knižnice OpenCV.
Pozrite si príkladné video priebehu tvorby masky a jej použitie v praxi (nie je použitý náš software!):
Komentáre
Musíte byť prihlásenýpre komentovanie.