Tento dokument je tutorial pro Decomb. Nabízí kuchařku procedur pro správné použití Telecide() a Decimate() ke zpracování daného klipu. Nezahrnuje FieldDeinterlace() protože je celkem jednoduché ho pochopit z příručky Decomb.
Podívejte se prosím do průvodní příručky Decomb na podrobný popis Decomb a jeho parametrů.
Telecide() obnovuje progresivní snímky (nalezením a uspořádáním (spárováním) polí). Nepoužívejte Telecide() na streamy, které neobsahují progresivní snímky podrobené telecine, jako např. prokládané video.
Pro správné rendrování je zásadní správné nastavení pořadí polí. Pořadí polí je získáno z Avisynthu a může být nastaveno funkcemi AssumeTFF() nebo AssumeBFF() ve vašem skriptu před výzvou Telecide(). Nastavte AssumeTFF() pro horní pole první; použijte AssumeBFF() pro spodní pole první (bottom field first). Protože správné nastavení je tak důležité, důrazně se vám doporučuje nedělat domněnky o pořadí polí v klipu, ale raději si pořadí polí ověřit pomocí následující procedury.
Pro určení pořadí polí, vytvořte skript Avisynthu, který předává syrový klip bez jakéhokoli zpracování. Pokud to je AVI, tak prostě použijte AviSource(). Pro naše příklady budeme používat AviSource(). Přidejte skriptový řádek pro oddělení polí s použitím horního pole jako prvního, jako zde:
AviSource("your_clip.avi") AssumeTFF().SeparateFields()
Nyní předejte skript do VirtualDubu a najděte oblast s pohybem. Krokujte vpřed podle pohybu. Všímejte si zda jde pohyb vždy vpřed jak by měl jít, nebo zda skáče zpět a vpřed. Například, pokud je pořadí polí nesprávné, objekt pohybující se trvale zleva doprava by se pohnul doprava, pak by trochu skočil zpět doleva, pak by se hnul zase doprava, atd. Pokud je pořadí polí správné, hýbe se trvale doprava.
Pokud je pohyb správný při AssumeTFF().SeparateFields(), pak je vaše pořadí polí s horními poli prvními a musíte použít AssumeTFF(). Pokud není pohyb správný, pak je vaše pořadí polí se spodními poli prvními a musíte použít AssumeBFF(). Pokud chcete dvojitou kontrolu, můžete ještě použít AssumeBFF.SeparateFields() pro kontrolu správné operace pro spodní pole první.
Předpokládejme, že v následujících krocích máme klip s horními poli prvními. Samozřejmě by jste použili správné pořadí polí pro váš klip. Tedy, náš skript je následující:
AviSource("your_clip.avi") AssumeTFF() Telecide()
Často víte z povahy klipu jaká šablona pro telecine (pokud je nějaká) je použita a tedy jaká by měla být šablona pro uspořádání polí. Funkce řízení šablony Telecide() používá takovou informaci pro zlepšení uspořádání polí. Řízení šablony je ovládáno volitelným parametrem guide. Má 4 možné hodnoty: guide=0 znamená vypnuté řízení šablony; guide=1 znamená použití 3:2 pulldown řízení (24fps->30fps); guide=2 znamená použití řízení 2:2 (PAL); a guide=3 znamená použití řízení 3:2:3:2:2 (25fps->30fps).
Nejdříve rozhodněte, jestli je váš zdrojový klip PAL. Pokud je a pokud má progresivní obsah, můžete téměř vždy nastavit guide=2 pro použití řízení šablony PAL. Jistě pokud váš klip nemá progresivní obsah, nepomůže vám to, a vůbec by jste neměli použít Telecide() ! Tedy pro PAL, můžeme přistoupit ke Kroku 3 se skriptem vypadajícím takto:
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=2)
Pokud máme NTSC 29.97fps nebo 30fps zdrojový klip, práce bude ošidnější. Nejdříve musíme určit zda klip obsahuje 3:2 pulldown materiál. Existuje několik zkoušek, které můžeme použít. Nejdříve předejme syrový klip (žádné zpracování v Decomb nebo jiné) do VirtualDubu. Pak krokujme po snímcích v pohybových pasážích. Pokud vidíte opakující se šablonu 3 čistých snímků následovaných 2 prokládanými snímky, tak je to 3:2 pulldown. Obvykle budou filmy používat 3:2 pulldown.
Hledání šablony 3:2 podle popisu výše, není zcela spolehlivé, protože u animací bývají duplikované snímky, které mohou ztížit vidět čistou šablonu 3:2.
Za druhé, můžete předávat do VirtualDubu následující skript a sledovat co o něm Telecide() říká (pamatujte na použití správného pořadí polí, jak je popsáno výše).
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1,post=0,show=true)Předávejte to do VirtualDubu a krokujte po několika typických částech vašeho klipu. Pokud Telecide() hlásí "in-pattern", nebo "in-pattern*", pak je to uzamčeno do šablony 3:2 pulldown. Pokud hlásí "out-of-pattern" nebo soustavně skáče do (in) a mimo (out) šablonu, pak to není uzamčeno do souvislé šablony 3:2.
Pokud určíte, že váš klip má hodně obsahu 3:2 , pak by jste měli jít vpřed a nastavit guide=1. Pokud nemá hodně obsahu 3:2 , nebo máte jakékoliv pochybnosti o podstatě klipu, pak by jste měli nastavit guide=0. Budeme předpokládat, že máme hodně obsahu 3:2 pro další kroky. Proto, náš skript zatím vypadá takto:
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1)
Postprocessing je proces, kterým snímky vycházející z uspořádání polí stále roztřepené, mohou být detekovány a je v nich odstraněno prokládání. Režimy postprocessingu jsou řízeny parametrem post : post=0 znamená vypnutý postprocessing; post=1 znamená výpočet metrik, ale bez odstraňování prokládání; post=2 znamená výpočet metrik a jim odpovídající odstraňování prokládání; a post=3 znamená znamená výpočet metrik a jim odpovídající odstraňování prokládání a zobrazení pohybové mapy odstraňování prokládání pro snímky které jsou detekovány jako roztřepené. Existují také dva pokročilejší režimy; podívejte se prosím do příručky na více podrobností.
Použijeme standardní proceduru pro nastavení postprocessingu. Nejdříve zapneme metriky a zobrazíme je následovně (všimněte si, že sem přenášíme dříve stanovená nastavení -- použili by jste dříve určené order a guide):
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1,post=3,vthresh=25,show=true)Předávejte to VirtualDubu, přehrávejte klip a testujte při tom snímky a zobrazované hodnoty vmetric . Hodnota, která se použije na snímek jako uspořádání je ta, která je v hranatých závorkách a začíná "chosen=", např., "[chosen=27]". Prostě vyvolejme hodnotu vmetric . Každá hodnota vmetric větší než vthresh definuje snímek jako prokládaný. Chcete najít hodnotu vthresh , která správně rozliší roztřepené snímky od neroztřepených snímků vašeho klipu. Snadno budete moci identifikovat snímky uvažované jako roztřepené protože a) hodnota vmetric bude větší než vthresh, b) indikátor progresivnosti/prokládání řekne prokládaný, a c) snímek bude překrytý bílou pohybovou mapou odstraňování prokládání. Není možnost, že by jste si jich nevšimli!
Vámi zvolený vthresh nemusí být dokonalý a pokud není, měli by jste mít chybu na stranu bezpečnosti. Je lepší zachytit i některé progresivní snímky, než minout některé roztřepené.
Předpokládejme, že naše hodnota vthresh , která rozlišuje roztřepené od neroztřepených snímků je 30. Nyní vytvořte následující skript s post=2 (jako vždy, přeneste vaše dříve stanovená nastavení):
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1,post=2,vthresh=30,show=true)Předejte a přehrávejte to ve VirtualDubu. Jak krokujete v klipu, měli by jste vidět progresivní snímky ponechané bez zásahu a (dříve) roztřepené snímky s odstraněným prokládáním.
Pokud nejste spokojeni s odstraněním prokládání z roztřepených snímků a chcete je "zpracovat trochu tvrději", můžete snížit paramet dthresh . Také, pokud upřednostňujete interpolaci před smícháním (blending) pro roztřepené oblasti, můžete změnit parametr blend . Podívejte se do příručky na správné použití těchto parametrů.
Náš skript tedy zatím vypadá takto:
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1,post=2,vthresh=30)
Existují ještě dvě důležitější věci o kterých si řekneme k postprocessingu před tím než půjdeme dál. Za prvé, je drobný rozdíl mezi post=2 a post=4 který vás může ovlivnit. Příručka popisuje rozdíly podrobně. Nastavení post=2 často zabrání tvorbě hrubých smíchání snímků při změně scény, ale může vytvářet trhavé video sekvence po odstranění prokládání. Nastavení post=4 udrží plynulost sekvencí s odstraněným prokládáním, ale může vytvářet smíchané snímky při změně scény.
Za druhé, můžete zjistit, že potřebujete různé hodnoty vthresh pro různé části vašeho klipu. Pokud je to tak, použijte ruční přepsání (nadřazení) Telecide pro zadání hodnot pro různé rozsahy snímků podle potřeby. Na podrobnosti s podívejte do příručky.
Jako postranní efekt provádění uspořádání polí pro 3:2 pulldown, Telecide() vysílá duplikované snímky a ponechává klip s jeho původní frekvencí snímků. Decimate() detekuje a odstraňuje tyto duplikáty a nastavuje frekvenci snímků odpovídajícím způsobem níže.
Pokud je váš klip PAL, nevyžadujete decimaci a jste u konce!
Pokud má váš klip 3:2 pulldown, budete potřebovat decimovat klip. Jednoduše přidejte výzvu Decimate(). Váš konečný skript pak bude vypadat jako tento:
AviSource("your_clip.avi") AssumeTFF() Telecide(guide=1,post=2,vthresh=30) Decimate()Jedna věc, které by jste si měli být vědomi je, že nemůžete vždy chtít decimovat 30fps materiál. Například, pokud je váš klip hybridem z 3:2 progresivního a normálního prokládaného videa, a pokud ho decimujete vytvoříte části videa trhavé. Často je u takových klipů lepší, nechat je s jejich původní frekvencí snímků vynecháním Decimate().
Tento manuál byl napsán jen se základními parametry a procedurami vyžadovanými pro rychlé zvládnutí Decomb. Existuje mnohem více parametrů, které můžete použít na neobvyklé a obtížné situace. Podívejte se prosím do příručky Decomb pro začátek průzkumu těchto přídavných funkcí.
Zde je jeden příklad doladění, aby jste pochopili o čem zde mluvím: Dejme tomu, že máte zašumělou nahrávku a právě prožíváte selhávání uspořádání polí. Můžete přidat nějakou zvláštní toleranci šumu do Telecide() zvýšením hodnoty parametru nt. V příručce najdete řadu takových malých perel. Je velkou zásobárnou čtiva.
Copyright © 2003-2008, Donald A. Graft, All Rights Reserved.
Pro aktualizace a jiné filtry/nástroje, navštivte mou webovou stránku:
http://neuron2.net/
$English Date: 2004/08/13 21:57:25 $
Český překlad:19.3.2009