Blender Motion Tracker Sledování předmětů ve videu Adam Dominec, listopad 2012 Creative Commons BY-NC
Motion Tracking ● ●
Výpočet pohybu kamery z natočeného videa Též matchmoving, camera reconstruction, camera/object tracking
Tears of Steel – záběr z kamery
– doplněný o umělé objekty
Osnova přednášky ●
Seznámení s programem Blender
●
Návod na trackování ukázkové scény
●
Pohled pod kapotu
●
Srovnání s jiným software
Blender ● ●
●
●
GPL, uvolněný v roce 2002 Sdružení Blender Foundation, BDFL je Ton Roosendaal Vydání po dvou měsících, nedělní IRC diskuze programátorů
Ton Roosendaal
Tři placení programátoři a jedna skladnice, sídlo v Amsterdamu
Elephants Dream (2006)
Big Buck Bunny (2008)
Sintel (2010)
Uživatelské rozhraní ●
Pohodlí a rychlost hodně závisí na klávesových zkratkách
●
Vnitřní správce nepřekrývajících se oken
●
Několik samostatných editorů pro různé účely •
●
3D modelování, animace, UV mapping, kreslení, compositing, programování v Pythonu, výroba her, motion tracking, stříhání videa...
UI je napříč editory konzistentní
První zrady ●
●
●
Položky se vybírají pravým tlačítkem •
Z historických důvodů
•
Levé tlačítko většinou přesouvá kurzor – ukazatel
Klávesy se musí mačkat, když je myš nad správným oknem Při zavírání programu se Blender neptá
Popis problému ●
Máme: video a trochu času nazbyt •
●
Video je ostré a málo komprimované
Chceme: zjistit, jak se pohybovala kamera během natáčení •
Aby to fungovalo, musí být pohyb výrazný
Postup řešení 1) Vybereme si několik výrazných předmětů a označíme jejich polohu na snímcích 2) Na základě jejich umístění na snímcích dopočítáme pohyb kamery ∗Jako odpadní produkt získáme i polohu sledovaných předmětů
Hledání významných bodů ●
Označíme ručně v jednom snímku a necháme ho sledovat (track) v ostatních snímcích, dokud to jde
●
Funguje čistě ve 2D
●
Každý bod hledáme nezávisle na ostatních
●
Pokud bod na některém snímku není vidět, musí na něm být zakázaný •
Často potřeba zakázat ručně
Klávesové zkratky – Clip Editor Vyrobit značku Vybrat značku Přesunout Pro jemnější posuv Jít na sousední snímek Track jeden snímek Track dokud to jde Skok na konec animace Skok na konec trasy Smazat vše následující
Ctrl + levý klik pravý klik G podržet Shift dopředná varianta → Alt + → Ctrl + T Shift + → Ctrl + Shift + → Alt + T
zpětná varianta ← Alt + ← Ctrl + Shift + T Shift + ← Ctrl + Shift + ← Shift + T
Řešení kamery ●
●
●
Náročný a nestabilní výpočet Poloha se počítá snímek po snímku, kamera nemá setrvačnost Nezjistíme měřítko, polohu a natočení ve 3D scéně •
●
Potřeba zadat ručně později
Během natáčení se nesmí měnit zoom •
Některý jiný software se s tím srovnat dokáže
Chyba řešení ●
●
●
●
Počítá se odchylka předpovědi podle výpočtu oproti skutečným datům Promítneme body zpět do kamery a měříme vzdálenost Chyba bodu: průměrná vzdálenost ve všech snímcích Chyba kamery: průměr z chyb všech bodů
Značka (Marker) ●
Označuje jeden bod v prostoru Barevné kanály pro sledování Povolené změny vzorku
Vzorek Bod Madlo pro otáčení Prohledávaný obdélník (Search Area) Rychlost přehrávání
Hledání vzorku ●
●
●
Celá značka musí být v předchozím Search obdélníku Funguje jen černobíle nebo na průměru vybraných barevných kanálů Možno hledat na všech snímcích vzorek z prvního keyframe, nebo vždy z předchozího snímku
Doplnění předmětů do videa ●
Potřebujeme do počítače naklikat i natáčenou scénu – kvůli zákryvům a stínům → Scénu rozdělíme na pozadí (už existující) a popředí (doplněné) Přepínání vrstev
Rendering ●
●
Každý snímek vykreslujeme samostatně, bude to trvat dlouho Node Editor nastavuje, jak upravit výstup •
Podobný jako knihovna GEGL
Modely transformací
Loc Vzdálené kruhové předměty
LocRot Vzdálené předměty
LocScale Kruhové předměty
Modely transformací
LocRotScale Při kolmém pohledu
Affine Většina obvyklých případů
Perspective Velmi blízké plochy
Algoritmus pro hledání vzorku ●
●
●
Umí účinně najít malé posuvy (i subpixelové) Rozloží prohledávanou oblast na pyramidu různě detailních obrázků Postupně se zkouší strefit co nejblíž
Detailová pyramida
Možnosti hledání ●
●
Correlation: požadovaná podobnost nalezené značky se vzorem (jinak se bod zakáže) Normalize: dovolí, aby se lišila světlost celého vzorku •
●
Užitečné, když se mění závěrka kamery nebo osvětlení
Prepass: projít při výpočtu celou prohledávanou plochu
Geometrie v prostoru
Promítání na snímek bod na snímku
w⋅
●
⏞ x'
() y' 1
bod v prostoru
kamera
⏞ t 11 t 12 t 13 t 14
(
⏞ x
) ()
= t 21 t 22 t 23 t 24 ⋅ t 31 t 32 t 33 t 34
y z 1
Jen lineární rovnice → přímka v prostoru se promítne jako přímka na snímku
Řešitelné úlohy ●
Představa: každý snímek videa pořídila jedna samostatná kamera
A) Známe 8 bodů na snímcích dvou kamer → spočítáme obě kamery B) Známe dvě kamery a bod na jejich snímcích → spočítáme bod v prostoru C) Známe 5 bodů v prostoru i na snímku → spočítáme kameru
Celý výpočet kamery ●
Pomocí A) a osmi viditelných bodů na dvou snímcích získáme první dvě kamery Pomocí B) dopočítáme na známých kamerách prostorové souřadnice bodů Pomocí C) dopočítáme kamery, které vidí dostatek už známých bodů
●
Nakonec necháme získané řešení automaticky doladit (bundle adjustment)
Nevýhody ●
Pokud zvolíme špatně první dva snímky, celý výpočet ošklivě selže → Je potřeba, aby se poloha kamer výrazně lišila
●
●
Pokud jsou všechny body v jedné rovině, selže výpočet vždycky Někdy selže jen prostě kvůli erupcím na Slunci → Získaný čas strávit přidáváním nových bodů
Chyby kamery – geometrie ●
●
Ohnisková vzdálenost udaná výrobcem bývá docela vedle, potřebujeme přesně Nekvalitní čočky způsobují radiální zkreslení: barrel (soudek) nebo pincushion → Proženeme vzdálenost od středu snímku vhodnou křivkou
Opravy chyb kamery ●
●
Blender může doladit ohniskovou vzdálenost tak, aby body co nejlépe pasovaly Totéž možné i pro křivku radiálního zkreslení → Křivku odhadneme funkcí r' = r + K1 ∙ r2 + K2 ∙ r4
Chyby kamery – barvy, snímač ●
Blender neumí opravit
●
Aberace a vinětace •
●
Nemají velký vliv
Rolling shutter •
Aberace
Vinětace
Při rychlém pohybu kamery může způsobit výraznou chybu
Rolling shutter schematicky
Chyby videa ●
Lidský zrak je málo citlivý na modrou, proto na ní kamera šetří → Modrý kanál je lepší pro sledování používat spolu se zeleným nebo červeným
●
Interlacing •
Může naprosto rozbít vzorek → Odstranit předem jiným programem (například FFMpeg)
●
Komprese pohybu •
Interlacing
Složitější kodeky odstraní právě to, co nás zajímá
Řešení pohybu objektu
●
●
Týž problém, ale upevníme kameru a necháme hýbat svět Sledovaný objekt musí být tuhý a dostatečně detailní
Řešení kamery na stativu ●
Kamera se jen otáčí •
●
●
Na stativu musí být upevněna ve správném místě
Rychlé a přesné, stačí dva viditelné body Nástroji Stabilize 2D lze narychlo zafixovat video pomocí jednoho a půl bodu (posun + otočení)
Historie 2007: David Escrivá a Keir Mierle napsali nástroje pro motion tracking pomocí OpenCV pro Blender 2.43 2008: Keir Mierle ten kód přepracoval do samostatné knihovny libmv jakožto svoji magisterskou práci 2011: V rámci GSoC napsal Sergey Sharybin použitelné uživatelské rozhraní Letos v září vyšel film Tears of Steel založený na doplněném videu
Keir Mierle
Srovnání: Hugin ●
●
●
Sada programů na lepení panoramat, ale také hledá významné body Má vynikající nástroje na odhad a opravy geometrických a barevných chyb GPL
Automatické hledání bodů ●
Postup: najdeme hodně zajímavých bodů nezávisle na každém obrázku a pak zkusíme některé z nich spárovat → Bez zásahu uživatele → Zvládá nahodile zamíchané fotografie → Obvykle pomalejší, může vést k chybám (potřeba dodatečně promazávat, lze také automaticky)
Voodoo Camera Tracker ● ●
●
●
Jednoúčelový program pro motion tracking Vyvíjený původně na univerzitě v Hannoveru, nyní spravovaný společností Viscoda Zdarma pro nekomerční použítí, nativní linux32 verze Neumí číst video, jen sekvence obrázků
VisualSFM ●
Kromě kamery podrobně určí i plochy scény
●
Ovládá programy siftGPU, pba, cmvs, pmvs2 •
•
Podivné rozhraní a formáty souborů, některé součásti se mi nepovedlo zkompilovat Různé licence, otevřený kód
SynthEyes ●
●
Jednoúčelový program pro camera tracking Spustitelný pod Wine, dostupná demo verze
Adobe After Effects® CS6 ● ●
●
Software pro střih videa a efekty Nástroje na automatické sledování kamery, možno vkládat objekty Dostupný jen pro Windows 7 a výše
Autodesk Maya ●
●
3D editor se zabudovanými nástroji na camera tracking Nástroje pochazejí ze samostatného programu Autodesk MatchMover
Trik: zakryté body ●
● ●
Body bývají zakryté dočasně a znovu se objevují, chtěli bychom navázat sledování Když bod umístíme ručně, ztratíme přesnost Možno obejít například zvětšením Search obdélníku a snížením Correlation na nulu •
•
Bod se bude volně toulat po snímku a vrátí se na místo, až bude předmět znovu vidět Nesmíme při tom nastavit keyframe
Odbočka: Cycles ●
Render engine programu Blender bližší fyzikální skutečnosti → Mnohem přesvědčivější osvětlení
●
Zabudování objektu do scény je potřeba naklikat ručně a dá to práci
Zelené plátno ●
●
V Blenderu se dá poměrně snadno naklikat odstranění zeleného plátna z videa Pomocí masek je možné ručně zakrýt další části scény •
Maska může být přichycená na některém ze sledovaných bodů a může mít animovaný tvar
Uplatnění: 3D skener ●
Schůdné, ale nepohodlné, musíme nasledovat obrovské množství bodů → Lepší je objekt dobře vyfotit a vymodelovat ručně
Uplatnění: měření budov ●
●
Když je z videa patrné měřítko, můžeme určit vzdálenost libovolných natočených bodů Šlo by použít například pro mapy do her