slady

Pozor! Nějak se mi někam z této stránky zatoulaly anebo poztrácely obrázky a odkazy, takže na ně prosím neklikejte a mějte strpení, než je zase najdu a vrátím na stránku...

Antishake

Software Antishake je určen pro stabilizaci obrazu digitálního videa, tzn. třese se vám ruka, když něco natáčíte kamerou, stáhnete si video do počítače, pustíte na to program Antishake a obraz už se netřese.

Antishake byl vyvíjen v zimě, na jaře a v létě roku 2006 jako moje diplomová práce, ale počítám s tím, že ho do budoucna budu ještě rozšiřovat. Teď když už vím jak na to, nevypadají vylepšení složitě. :-)

Program Antishake Je možné stáhnout ve formě tzv. pluginu pro nástroj VirtualDub, který je také zdarma pro Windows.

Narozdíl od všech ostatních existujících filtrů pro stabilizaci, které znám, umožňuje uživateli určit bod, který je důležité ustabilizovat. Ostatní filtry určují tyto body automaticky, aniž by nám dovolili zvolit si oblast, která je pro nás důležitá. Často pak výsledek stabilizace nevypadá podle našich přání.

Můj filtr nechává volbu bodů na uživateli se všemi klady i zápory, co to přináší: metoda sice umožňuje uživateli vytvořit výsledek podle svých představ, ale o to větší klade nároky na přesnost zadání na uživatele.

Metoda funguje v režimu zvaném prediktor-korektor, kde prediktor zjišťuje co je s videem v nepořádku a korektor potom video opravuje. Musíme tedy video spustit alespoň dvakrát od začátku do konce, čemuž se říká průchod videem.

Filtr funguje ve dvou průchodech: v prvním průchodu se ve videu vysleduje třes podle sledovaného bodu, ve druhém průchodu se video upravuje, aby odpovídalo našim požadavkům. Tento návod podrobně ukáže jak na to.

Obsah

Návod na instalaci

Protože je Antishake plugin, tvoří součást jiného programu, a není možné ho používat samostatně. Pro provoz Antishaku je potřeba mít na počítači program VirtualDub.

Pokud ještě nemáte VirtalDub na svém počítači, je potřeba ho stáhnout a nainstalovat. Otevřete si stránku pro stažení VirtualDubu a z odkazu download si jej stáhněte. Nedostanete program .exe, ale pouze zabalený soubor .zip, který můžete rozbalit kam chcete. Dobrá praxe je rozbalit ho do C:\Program Files\VirtualDub-1.6.16\ (případně nějaké novější číslo verze). Pokud ale do tohoto adresáře nemáte právo přístupu, rozbalte si ZIP kamkoli jinam.

Předpokládejme, že už máte VirtualDub nainstalovaný. Instalace pluginu Antishake je stejně jednoduchá. Na úplném konci této stránky je odkaz pro stažení pluginu. Klikněte na odkaz pro stáhnutí a jako cíl pro uložení souboru si vyberte adresář plugins\, který je podadresář VirtualDubu, tedy například C:\Program Files\VirtualDub-1.6.16\plugins\, pokud jste si ho nainstalovali na standardní místo.

Teď je plugin úspěšně nainstalovaný. Můžeme ho konečně zkusit!

Návod na použití

Program VirtualDub pro zpracování videa může být pro začátečníka zpočátku poměrně hodně nepřehledný. Pokusím se jej vysvětlit co možná nejpřehledněji za použití obrázků. Po spouštění se objeví okno, nahoře je menu, dole jsou ikonky pro ovládání videa. Z menu vybereme File > Open video file...

VirtualDub: File : Open video file...

V celém návodu budu používat soubor auto.avi jako příklad roztřeseného videa.

VirtualDub: auto.avi

VirtualDub má ve své podstatě velmi jednoduchou strukturu: nahoře máme lištu menu, který ovládáme celý program, dole jsou lištu ikonek, kterými ovládáme video, mezi těmito lištami jsou dvě okna. V levém máme okně vstupní video a v pravém okně výstupní video, tedy to, které jsme upravili a zpracovali.

Z menu Video > Filters... stiskneme tlačítko Add...

VirtualDub: filters
VirtualDub: add filter

Zobrazí se nám seznam filtrů, které VirtualDub rozeznal. Mezi nimi bude i stabilizační filtr Antishake, pokud jsme jej umístili do správného adresáře. Vybereme filtr Antishake tím, že na něj poklepeme myší.

VirtualDub: Antishake filter

První průchod: Vybrání polohy sledovaného bodu

Tím se nám otevře malý konfigurační dialog.

Antishake: dialog 1

Stiskem tlačítka Show preview se zobrazí dvě pracovní plochy.

Antishake: dialog preview

V pravé pracovní ploše se dole zobrazuje časová osa. V levé pracovní ploše je možné kliknutím zadat souřadnice bodu. Bohužel, konstrukce programu VirtualDub neumožňuje tyto dvě vlastnosti sloučit do jednoho okna, takže si budeme muset vystačit s tím, že se této konstrukci podřídíme: místo na obrazovce vybíráme vlevo, čas ve videu vybíráme vpravo.

Kliknutím do levé pracovní plochy vybereme bod, který se bude v prvním průchodu sledovat. Důležité je vybrat bod se správnými vlastnostmi -- nějaký dobře rozeznatelný objekt, který má kontrastní okolí. Podle literatury selhává moje metoda v těchto případech:

Vybereme tedy okno u stromu, protože je snadno rozpoznatelné od okolních oken, a navíc není rozmazané pohybem. Poté zaškrtneme políčko Start tracking.

Antishake: tracking point

Máme ještě možnost dalších voleb. Položka Region určuje, jak velká oblast se okolo bodu bude sledovat. Položka Distance zase určuje, jak daleko bod může "ujet" mezi jednotlivými snímky videa. Pro první pokusy necháme tyto položky být. Když jsme s volbou bodů hotovi, stiskneme tlačítko OK. Dalším tlačítkem OK ukončíme výběr filtrů.

Antishake: submit tracking point

Nyní jsme opět v hlavním okně programu VirtualDub, ale už máme aktivní filtr Antishake. Tlačítkem >O spustíme první průchod videem.

Antishake: submit tracking point

Tentokrát máme v levém okně vstupní video a v pravém okně výstupní video. Můžeme si všimnout, že v pravém výstupním okně se nahoře zobrazuje drobný čtverec, ve kterém je námi vybraný bod. Ať se video jakkoli třese, stabilizátor sleduje námi vybraný bod.

Přibližně v polovině videa se ale stane to, že námi vybrané okno vyjede mimo záběr. Stabilizátor už nemá co sledovat a sledování se jakoby "utrhne" -- další projíždění videem je potom rychlejší.

To musíme napravit tím, že vybereme různé body pro sledování v různých časových okamžicích videa. V menu Video > Filters... už máme filtr Antishake, poklepeme tedy na něj.

VirtualDub: Antishake filter

Zobrazilo se nám jiné menu, které nabízí, co s videem chceme provádět dál. Nám se nelíbí volba bodů, kterou jsme posledně provedli, proto tentokrát stiskneme Clear all tracking, čímž vyčistíme předchozí sledovaný bod.

Antishake: clear all tracking

Znovu poklepeme na filtr a můžeme zadat více bodů. Filtr funguje tak, že když narazí na bod pro sledování, přestane sledovat předchozí bod a začne sledovat nový bod. Pohybujeme se tedy v časové ose a vybíráme postupně okno u stromu, semafor, billboard, druhý billboard a další semafor. To všechno jsou jasné body ve videu, které se nachází v různých časových okamžicích videa.

Antishake: timeline

Poté zaškrtneme políčko Start tracking a potvrdíme tlačítkem OK. Opět jsme v hlavním okně programu VirtualDub s aktivním filtrem Antishake. Tlačítkem >O spustíme první průchod videem. Tentokrát již filtr sleduje video po celou dobu.

Druhý průchod poprvé: Filtrování trajektorie

Další fází je úprava videa. Pokud nám bod nevyjíždí mimo záběr, je možné použít funkci zvanou Filtrování. Nám body postupně vyjíždějí mimo záběr, proto není tato metoda vhodná, protože u každého nově zvoleného bodu "poskočí" obraz při přechodu na nový bod. Přesto si výsledek této metody ukážeme.

V menu Video > Filters... poklepeme na filtr Antishake, vybereme položku Filter a potvrdíme OK.

VirtualDub: Antishake filter
Antishake: filtering

Opět se nacházíme v hlavním okně VirtualDubu a tlačítkem >O spustíme druhý průchod videem.

Výsledek skutečně není ideální. Po částech je sice video stabilnější, ale mezi jednotlivými body vždy poskočí. Výsledek si můžeme prohlédnout ve videu auto-filtr.avi, které je pro ukázku upraveno filtrováním.

Pokud ale budeme mít příště video bez "švenku", tedy kde nějaký bod za celou dobu "nevyjede" z obrazovky, můžeme filtrování s úspěchem použít.

Druhý průchod podruhé: Editování trajektorie

Mnohem lepší je pro naše účely metoda filtrování. V menu Video > Filters... poklepeme na filtr Antishake, vybereme položku Make editable, čímž trajektorii z prvního průchodu převedeme na editovatelné body. Parametr u tohoto políčka říká, po kolika snímcích videa se má umístit editovatelný bod. Hodnota dvacet tedy znamená, že editovatelný bod bude každý dvacátý snímek videa. Ale s volbou hodnoty si nedělejte starosti body můžeme později libovolně přidávat i ubírat. Pro editování znovu poklepeme na filtr Antishake.

VirtualDub: Antishake filter
Antishake: make editable

Nacházíme se v okně editoru křivek. Pro zobrazení náhledu stiskneme známé tlačítko Show preview. Tentokrát se nám však nabízejí jiná tlačítka na ostatních pozicích. Tlačítko Delete key odstraní klíčový bod v aktuálně vybraném čase. Tlačítko Add key nám přidá nový klíč do videa.

Jak vlastně klíče fungují? Na snímku je červený křížek, který označuje sledovaný bod. My si můžeme přidat klíčový bod, který říká, kam se sledovaný bod posune. Tím vlastně upravujeme výstupní video.

A co když jsme ve snímku, ve kterém není klíčový bod? Mezi klíčovými body se pozice dopočítává podle vzorce pro Hermitovu křivku. Každý klíč má svou pozici, navíc má ještě dva směry: směr, ze kterého se "přijede", a směr, kterým se "vyrazí". Názorněji je to vidět na obrázku. V čase t je bod, který má tail a lead, v čase t+1 je další takový bod.

Antishake: Hermite curve

Mezi takto nastavenými body je potom podobná výsledná oblouková trajektorie. Při editování bodů se můžeme přepínat, mezi tím, který bod chceme umístit tlačítky Tail, Key a Lead. Kliknutím do okna se tento bod umístí. Vybraný bod je zelený, ostatní dva se zobrazují žlutě. Pokud mají body shodnou polohu, vykreslí se samozřejmě přes sebe a je vidět pouze jeden.

Tato metoda na nás klade vysoké nároky pro přesnost umístění polohy bodu v místech, kde se začal sledovat nový bod. Video tedy musíme ručně "spasovat". Také volba Hermitovské báze pro výpočet křivky není ideální, protože jen velmi málo reaguje na body Tail a Lead. V příští verzi ji pravděpodobně nahradím Bézierovou bází, která tyto body zohledňuje třikrát více.

Po skončení editace potvrdíme stiskem tlačítka OK. Opět se nacházíme v hlavním okně VirtualDubu a tlačítkem >O spustíme druhý průchod videem. Naše video už je mnohem lepší. Výsledek si můžeme prohlédnout ve videu auto-edit.avi, které je pro ukázku připravené.

Editování bodů v čase tímto způsobem není ideální, ale v softwaru neexistuje precedent, podle kterého bych se mohl řídit. Pokud vás při zkoušení programu napadá, jak editaci bodů vylepšit, rozhodně mi o tom napište! :-)

Download -- stáhnout program

Plugin Antishake si můžete zdarma stáhnout na svůj počítač: Antishake.vdf

Doufám, že se můj filtr pro stabilizaci líbil, že je použitelný a k něčemu dobrý. Pokud by se vyskytly nějaké problémy, nebo pokud byste něčemu z tohoto návodu nerozuměli, neváhejte mi napsat.

Copyright © 2006 Petr Sládek alias slady