# Decomb Plugin pro Avisynth 2.5
(Verze 5.2.3)
Příručka

## od Donald A. Graft

## Obsah

- Úvod
- Přehled funkcí
- Vstupní požadavky
- Důležité tipy pro rychlost
- Typické scénáře
- Poznámky k uspořádávání polí (Field Matching)
- Obecná syntaxe funkcí
- Uživatelské výchozí hodnoty parametrů
- Nadřazená rozhodnutí Decomb
- Podrobná syntaxe funkcí

- Telecide()

- Běžně užívané parametry
- Pokročilé parametry

- FieldDeinterlace()
- Decimate()
- IsCombed()

- PŘÍLOHA A. Telecide() teorie operace
- PŘÍLOHA B. Zacházení s hybridními klipy
- Poděkování

## Úvod

Tento balík plugin funkcí pro Avisynth poskytuje prostředky pro odstranění artefaktů roztřepení (combing) z původně progresivních streamů podrobených procesu telecine, prokládaných (interlaced) streamů, a jejich mixů. Funkce mohou být kombinovány pro implementování inverze telecine (IVTC) jak pro NTSC tak i PAL streamy.

Termín "combing" se používá jako obecnější termín proti "interlacing" (prokládání), protože prokládání je obvykle spojováno s neprogresivními streamy. To co vypadá jako artefakty prokládání lze vidět i v progresivních streamech zpracovaných pomocí telecine, takže používám termín roztřepení (combing) pro popis všech takových artefaktů, bez ohledu na typ streamu.

Balík se automaticky přizpůsobuje jakýmkoliv telecine/zachytávacím šablonám, a jejich mixům, ačkoliv pokud chcete decimovat obnovený progresivní stream, musíte zadat žádaný decimační poměr pokud se liší od výchozího 1-z-5 použitého pro NTSC 3:2 telecining. Žádná z funkcí neuvádí zpoždění v audio nebo video streamech.

Pro mnohé aplikace existuje několik nastavitelných parametrů, ale nejlepší výsledky jsou dosaženy s opatrným nastavením parametrů. Decomb umožňuje uživateli definovat jeho vlastní výchozí hodnoty parametrů, pokud si to přeje (Výchozí hodnoty jsou předpokládané pokud parametr není zadán explicitně (konkrétně).

Mnohá rozhodnutí Decomb lze ručně přepsat podle přání použitím textových nadřazovacích souborů. To umožní puntičkářským uživatelům dosáhnout nejlepší možné kvality pro jejich enkódování.

Toto je příručka pro Decomb. Podívejte se do Decomb Tutorialu na uživatelsky příjemné procedury k použití Decomb, a do Decomb FAQ na odpovědi na často kladené otázky.

## Přehled funkcí

Balík se skládá z následujících funkcí:

- Telecide(): Obnovuje progresivní snímky (nalezením a srovnáním uspořádávaných polí) ale neodstraňuje výsledné duplikáty a nemění frekvenci snímků nebo počet snímků. Nepoužívejte Telecide na streamy, které neobsahují původně progresivní snímky podrobené telecine, takové jako prokládané video. Všimněte si, že stream PAL progresivních snímků, které jsou posunuty o jedno pole je vzorovou ukázkou roztřepení (combing) a pro účel obnovení ho lze považovat za stream podrobený telecine; Telecide tuto situaci snadnou vyřeší.

  Ve výchozím stavu Telecide provádí na obnovovaných snímcích postprocessing - doplňkové zpracování. Tento postprocessing kontroluje každý snímek aby viděl jestli je roztřepený (některé roztřepené snímky se mohou objevit při procesu porovnávání polí [viz níže]), a pokud je snímek roztřepený, je v něm provedeno odstranění prokládání, jinak zůstane nedotčený. Algoritmus odstranění prokládání je prostorově adaptivní, což je, že je odstraňováno prokládání jen v těch částech snímku, kde se nachází roztřepení. To znamená, že ve statických oblastech obrazu jsou zachovány plné detaily. Algoritmus pro rozlišení roztřepených a progresivních snímků je efektivní, ale ne dokonalý.

  Pro dosažení inverzního telecine, použijte funkci Telecide následovanou funkcí Decimate. Příloha A vysvětluje proč to funguje.

  Telecide podporuje volitelný pattern guidance mode - režim řízení šablony. Zapnutí této možnosti umožní Telecide to pozměnit vypočtený sled polí jeho předpovězeným sledem, založeným na blízké historii a budoucnosti klipu. Prahová hodnota může být definována tak, že dost velký nesoulad mezi předpovězeným a vypočteným sledem resetuje šablonu.

- FieldDeinterlace(): Tento filtr poskytuje podobnou funkcionalitu jako postprocessingová funkce v Telecide. Můžete ho použít pro čistě prokládané streamy (to je, takové které neobsahují progresivní snímky podrobené telecine). (Jméno odkazuje na skutečnost, že je použit režim rozdílnosti polí.) Nepoužívejte FieldDeinterlace po Telecide protože stejná funkctionalita je vestavěná v Telecide.

  FieldDeinterlace poskytuje možnost, která vám umožní zadat, zda mají být odstraňování prokládání podrobeny všechny snímky, nebo jen snímky u kterých je detekováno roztřepení.

- Decimate(): Decimuje (tzn. odstraňuje) 1 snímek z každých N snímků, kde N je parametr a může být v rozsahu 2 až 25. Decimate odstraňuje duplikovaný snímek v každé skupině N snímků. Frekvence snímků a jejich počet jsou pak příslušně upraveny. Decimate řádně podporuje náhodný přístup VirtualDubu (navigaci po časové ose).

  Decimate poskytuje několik speciálních režimů, které jsou užitečné pro práci s film/video hybridním materiálem.

- IsCombed(): Toto je filtr užitečný pro Avisynth skriptování. Zapíná ve skriptu rozlišení progresivních a prokládaných snímků. Je navržen pro použití uvnitř ConditionalFilter().

## Vstupní požadavky

Telecide vyžaduje, aby vstupní šířka byla násobkem 2. Nedodržení tohoto způsobí, že Telecide zahlásí chybu.

Neměňte vertikální velikost před použitím Decomb. Decomb potřebuje vidět původní rozmístění řádků, aby správně detekoval roztřepení.

Telecide vyžaduje barevné formáty YUY2 nebo YV12 na vstupu. DLL soubor v této verzi Decomb bude pracovat jen s Avisynthem verze 2.5 a novějšími.

Je lepší nedělat převody mezi YV12 a YUY2 (oběma směry) před použitím Decomb. Použijte Decomb v nativním barevném prostředí. Takové převody mohou způsobit artefakty kvůli nesprávnému nadvzorkování/podvzorkování barevnosti.

Pro operace v YV12 je podporována jen verze "mpeg2dec" od MarcFD tedy mpeg2dec3 (verze 0.94 a novější). Jiné verze mohou vytvářet nesprávný výstup.

## Důležité tipy pro rychlost

Vyhněte se převodům barevného prostředí Uvědomte si, že převod do YUY2 z RGB je časově značně náročný, takže neukládejte vaše AVI v RGB. Populární kodek HUFYUV má možnost převést RGB na YUY2 a vy by jste ji měli zapnout, když generujete pomocí HUFYUV taková AVI, která jsou určena pro zpracování v Decomb.

Zbytečně nepoužívejte postprocessing Zkuste Telecide bez postprocessingu, pokud si myslíte, že je šance, že máte pěkně čistý vstupní stream. Pokud máte takový stream, uvidíte, že zpracování bude rychlejší bez postprocessingu.

Nevyvolávejte neobvyklosti Avisynthu Toto je velmi důležité a může vás to snadno stát 25% zpomalení! Projevuje se to tak, že neobvyklost Avisynthu způsobí enormní plýtvání času, když nejsou u příkazů žádné závorky. Například, tento skript:

Telecide
Decimate

…poběží mnohem pomaleji než tento:

Telecide()
Decimate()

Pokud o tom pochybujete, vyzkoušejte oba způsoby a uvidíte. Je to kritické, proto tedy vždy zahrnujte minimálně jeden parametr nebo sadu prázdných závorek. To je důvod proč jsou všechny scénáře níže zapsány takovým způsobem.

Používejte rychlou rekompresi pokud je to možné. Pokud předáváte snímky do VirtualDubu pro transkódování, a nepotřebujete dělat žádné filtrování nebo jiné zpracování ve VirtualDubu, pak použijte řežim VirtualDubu Rychlá rekomprese (Fast Recompress).

Vypněte zobrazování snímků Když se posílá výstup z Decomb do VirtualDubu (a podobných aplikací), vypněte zobrazení vstupního i výstupního snímku při zpracování. To citelně sníží dobu zpracování.

## Typické scénáře

Tyto příklady jsou použity pouze pro ilustraci hlavních funkcí Decomb. Podívejte se do uživatelského manuálu na podrobné procedury k určení správného nastavení pro použití, protože nejlepší výsledky dosáhnete pečlivou úpravou parametrů.

Jednoduché odstranění prokládání Pokud máte nějaký nefilmový (prokládaný) zdroj, jednoduše odstraňte prokládání takto:

LoadPlugin("decomb.dll")
AVISource("nonfilm.avi")
FieldDeinterlace()

Obnovení progresivních snímků Pokud máte film (původně progresivní zdroj), který byl podroben procesu telecine a chcete obnovit progresivní snímky ale nechcete měnit frekvenci snímků pomocí decimování, postupujte následovně:

LoadPlugin("decomb.dll")
AVISource("film.avi")
AssumeTFF()
Telecide()

AssumeTFF() nastavuje pořadí polí na TFF aby bylo zadané pořadí polí v klipu. Všimněte si, že zde Telecide provádí postprocessing obnovených snímků, aby vyčistil jakékoliv roztřepené snímky, které by se mohli objevit při procesu uspořádání polí (viz "Poznámky k Uspořádávání polí" níže).

Můžete využít možnosti zobrazení, nebo možnosti ladění ve spojení s utilitou DebugView, aby jste viděli metriky a rozhodnutí, která Telecide generuje. To vám bude pomáhat při nastavování parametrů.

Inverze Telecine (IVTC) Pokud chcete udělat stejnou věc ale decimovat výsledek pro odstranění duplikovaných snímků (jejich množství pro provedení operace inverze telecine [IVTC] ), postupujte následovně [u NTSC 3:2 použijeme Decimate(cycle=5)]:

LoadPlugin("decomb.dll")
AVISource("film.avi")
AssumeTFF()
Telecide()
Decimate(cycle=5)

Vypnutí postprocessingu Pokud váš zdroj (zpracovaný dříve pomocí telecine) je velmi čistý, můžete chtít vypnut postprocessing, aby jste zkrátili čas zpracování. Postupujte následovně:

LoadPlugin("decomb.dll")
AVISource("mixed.avi")
AssumeTFF()
Telecide(post=0)
Decimate(cycle=5)

Zde třetí parametr, post, je nastaven na 0 pro vypnutí postprocessingu.

Inverze 3:2 Telecine s Pattern Guidance Pokud je váš zdroj (zpracovaný dříve pomocí telecine) NTSC 3:2 pulldown, můžete zapnout patern guidance - řízení šablony, které může, pro některé klipy, provést uspořádání polí přesněji. Postupujete následovně:

LoadPlugin("decomb.dll")
AVISource("mixed.avi")
AssumeTFF()
Telecide(post=0)
Decimate(cycle=5)

Podívejte se na popis syntaxe pro Telecide() níže pro více detailů.

Zpracování Hybridního Materiálu Pokud máte klip, který obsahuje jak 3:2 pulldown (film) tak i čisté video, můžete s tím udělat dobrou práci, jako zde:

LoadPlugin("decomb.dll")
AVISource("hybrid.avi")
AssumeTFF()
Telecide(guide=1)
Decimate(mode=3,threshold=2.0)

Podívejte se do PŘÍLOHY B na další detaily o zpracování hybridního materiálu.

## Poznámky k uspořádávání polí

Telecide normálně dělá výbornou práci při obnovování progresivních snímků uspořádáváním polí, za předpokladu, že máte nastavené správné pořadí polí. Existují čtyři známé podmínky zdrojového streamu, které mohou způsobit, že Telecide předá roztřepené snímky:

- Chybějící pole. Pokud pole chybí kvůli špatné editaci, pak jeho partnerské pole ve zdroji nemá vhodné pole pro dorovnání. Použijte výchozí postprocessing pro vyčištění výstupního streamu.

- Smíchaná (blended) pole. Některé streamy mají pole, která jsou smíchaná ze dvou původních (progresivních) filmových obrázků! Například některé NTSC/PAL převody to mohou způsobit. Obvykle mají takové streamy těchto smíchaných polí hodně a řešením je použít postprocessing blend=true pro vyčištění výstupního streamu. Použití režimu blend=true znamená nejlepší práci a smíchaná pole se objeví jako smíchané snímky, což poskytuje druh rozmazání pohybu a odráží "význam" vstupního streamu.

  V případech kdy je mnoho smíchaných snímků, není místo pro použití Telecide vůbec. Prostě použijte FieldDeinterlace() a zacházejte s klipem jako s prokládaným videem.

  Nakonec, jak poznáte, že má váš stream smíchaná pole? Jednoduše použijte funkci Avisynthu SeparateFields aby jste oddělili pole a pak otevřete výsledek ve VirtualDubu. Krokujte po polích a uvidíte jestli jsou mezi nimi pole, která jsou smíchaná z více než jednoho obrázku (mají dvojitý obraz).

- Nefilmové snímky (hybridní klipy). Některé streamy, obzvláště ty zachycené z živého vysílání, mají periody filmové a periody nefilmové. Pro takové streamy můžete použít buď Decimate() s mode=1 nebo mode=3 jak je popsáno v kapitole scénářů výše. Mode=1 zanechá klip s 30fps zatímco mode=3 ho zanechá s 24fps. Je na vás (obtížně) rozhodnout o tom jestli chcete konečný stream s 24fps nebo 30fps.

- Hybridní snímky. Občas budou grafiky, poděkování (titulky), atd., rendrovány na konečnou frekvenci snímků a pak položeny na obsah podrobený telecine, což vede ke snímkům, které mají jak progresivní tak neprogresivní obsah. Nebo ještě řidčeji, se setkáte s klipy, které mají různé vrstvy, které byly podrobeny telecine s různými fázemi a pak složeny. Pro streamy s hybridními snímky se obvykle musíte spolehnout na postprocesing z Telecide aby vyčistil výstupní stream.

  Nyní by jste měli získat představu, že postprocessing je obecně dobrá věc pro zajištění toho, že se do výstupu neproplíží roztřepené snímky.

## Obecná syntaxe funkcí

Funkce z Decomb používají jmenné parametry. To znamená, že nemusíte mít obavy o pořadí parametrů. Můžete jednoduše na ně poukazovat pomocí názvů a vkládat je v jakémkoliv pořadí do seznamu parametrů. Když vynecháte parametr tak bere své výchozí hodnoty. Například, pokud chcete použít Telecide s postprocessingem, a se zapnutým laděním, můžete jednoduše říci:

Telecide(post=2,debug=true)

Je povolena jakákoliv kombinace a pořadí parametrů. Nicméně pamatujte, že by jste měli vždy vkládat prázdné závorky, pokud nespecifikujete žádné parametry.

## Uživatelské výchozí hodnoty parametrů

Pokud se vám nelíbí výchozí hodnoty popsané níže, můžete si nastavit svoje vlastní standartní výchozí hodnoty. Pro přepsání výchozích hodnot, vytvořte soubory výchozích hodnot tak jak je vyžadováno ve složce pluginů Avisynthu. Například nastavte výchozí post=4 pro Telecide(), vytvořte soubor pojmenovaný Telecide.def a vložte do něj tento řádek:

post=4

Můžete uvést tolik záznamů parametrů kolik budete chtít, na každý řádek jeden. Ty, které nebudou zadané budou brát výchozí hodnoty takové, jaké jsou uvedeny níže. Samozřejmě vždy můžete přepsat výchozí hodnoty ve vašich skriptech, když vyzvete funkci. Poznámka: Řádky v souboru výchozích hodnot nesmí obsahovat žádné mezery nebo tabulátory.

## Nadřazená rozhodnutí Decomb

Příležitostně můžete mít perfektní výsledek kromě několika snímků, o kterých Decomb chybně rozhodne. V takových případech můžete použít ruční přepsání funkcionality Decomb. Je to pokročilá vymoženost, která by měla být použita jen experty kteří potřebují nejvyšší možnou kvalitu.

Nadřazení pro Telecide() Předpokládejme například, že najdeme, že ve snímku 100 není uspořádání polí správné. Prozkoumáme ladící (debug) výstup z Telecide() a zjistíme že je to uspořádání z předchozího snímku ("[použití p]"). Chceme zkusit vynutit uspořádání aktuálního a následujícího, abychom viděli zda lze najít správné uspořádání (viz. PŘÍLOHA A pro vysvětlení terminologie). Nejdříve vytvoříme soubor ve stejné složce, kde je skriptový soubor a nazveme ho "tango.tel" (můžete použít jakékoliv jméno). Pak umístíme do tohoto souboru tento řádek:

100 c

To deklaruje, že snímek 100 je uspořádán na aktuální - current (použijte místo "c" např. "p" pro předchozí snímek a "n" pro následující next).

Nyní nasměrujeme Telecide k použití tohoto nadřazeného souboru:

Telecide(ovr="tango.tel")

Nyní zpracujte skript jako obvykle; Zadané nadřazené údaje budou použity jako aktuální. Pokud toto uspořádání selže, můžeme zkusit nahradit "c" písmenem "n" abychom vyzkoušeli následující.

Také může být použit rozsah snímků, jako zde:

100,500 c

Můžeme přidat doplňkové řádky určující jakékoliv další nadřazené údaje podle požadavků. Všimněte si, že počet snímků musí být v rostoucím pořadí (od nejnižšího po nejvyšší).

Do vašeho nadřazovacího souboru můžete také zadat úplné šablony pro vaše uspořádání v Telecide. Například předpokládejme, že jste chtěli vynutit šablonu ncccn pro snímky 100 až 185. Řádek ve vašem nadřazovacím souboru by byl:

100,185 ncccn

Můžete do šablony vložit tolik specifikátorů kolik chcete. Například tento by byl také legální:

100,185 nc

Zadaná šablona bude opakována počínaje na úvodním snímku a konče na posledním snímku rozsahu.

Tato schopnost umožňuje pružné a pohodlné ruční ovládání uspořádání polí. Můžete tak udělat celý film ručně, pokud chcete!

Rozhodnutí postprocessingu Telecide() lze také nadřadit. Pro vynucení toho, aby byl snímek považovaný za roztřepený, použijte řádek s '+' jako jeden z těchto:

100 +
100,500 +

Pro vynucení toho, aby byl snímek považovaný za NEroztřepený, použijte takovéto řádky:

100 -
100,500 -

Můžete nastavit různé hodnoty vthresh pro různé části vašeho klipu. Například, pro nastavení vthresh na 25 pro snímky 200 až 500 použijte:

200,500 v 25

Všimněte si, že 'v' nadřazuje (přepisuje) požadovaný rozsah snímků. Pro zadání jednoho snímku nastavte oba, tedy úvodní i konečný snímek rozsahu na požadované číslo snímku.

Můžete zadat režim uspořádání (back=0/1/2) pro snímek nebo rozsah snímků:

100 b 2
200,500 b 1

První řádek nahoře zapíná trojité uspořádání pro snímek 100. Druhý řádek zapíná zpětné uspořádání roztřepení pro snímky 200 až 500.

Řádky pro nadřazené uspořádání polí a pro nadřazený postprocessing mohou být použity společně ve stejném nadřazovacím souboru tak dlouho, dokud se nenajde požadavek rostoucího čísla snímku.

Nadřazení pro FieldDeinterlace() FieldDeinterlace() podporuje '+' a '-' nadřazení tak jak je popsáno pro Telecide(). Samozřejmě nadřazení uspořádání polí nepoužívá a nemělo by být používáno. Mohli by jste vyzývat nadřazovací soubor "tango.fd".

Nadřazení pro Decimate() Pro Decimate() provádíme vše stejným způsobem, ale používáme řádky následující formy, kde čísla jsou čísla snímků klipu vstupujícího do Decimate() , které budou vynuceny pro decimaci:

150
175

V příkladu výše budou snímky 150 a 175 vynuceny pro decimaci. Znovu, vhodným jménem pro nadřazovací soubor by bylo "tango.dec".

## Podrobná syntaxe funkcí

Následující je syntaxe pro funkce Decomb (nahraďte parameter_list vaším čárkou odděleným seznamem jmenných parametrů):

## Telecide(parameter_list)

Běžně užívané parametry

Pořadí polí 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í.

Nakonec, všimněte si, že jestliže je volání AssumeTFF() nebo AssumeBFF() vynecháno, Telecide() získá aktuální informaci o pořadí polí z Avisynthu. Často je to správné, jako když Telecide() následuje MPEG2Source() z DGMPGDec, ale občas je to chybné, takže buďte opatrní s vynecháváním zadání pořadí polí.

guide (0-3, výchozí 0) lze použít k vylepšení uspořádání polí, když je známo, že zdrojový klip je PAL nebo NTSC materiál podrobený telecine. Pro vypnutí této možnosti (slepé uspořádání polí), nastavte guide=0. Pro řízení NTSC 24fps->30fps telecine, nastavte guide=1. Pro jednoduché řízení PAL (snaží se udržet zámek na fázi polí), nastavte guide=2. Pro řízení NTSC 25fps->30fps telecine, nastavte guide=3.

Když je tato možnost zapnuta, Telecide() může změnit rozhodnutí o uspořádání polí a použít předpovězené uspořádání založené na blízkém okolí v klipu před a za daným místem. Parametr gthresh (níže) je použit pro definování, jak malý nesoulad mezi předpovězeným a vypočteným uspořádáním polí je vyžadován pro přijetí a použití předpovědi. Nezapínejte tuto možnost kromě případu kdy víte, že zdrojový klip odpovídá vybranému režimu řízení. Pokud si nejste jisti, ponechte guide=0.

Všimněte si, že tato funkce využívá náhodného přístupu Avisynthu ke snímku, takže to pracuje dobře, když uživatel používá náhodnou navigaci po časové ose.

gthresh (0.0-100.0, výchozí 10.0) definuje jak velký nesoulad (v procentech) mezi předpovězeným a vypočteným uspořádáním je vyžadován pro resetování šablony. Použijte možnost zobrazení - show, pokud to vyžaduje vhodné nastavení této prahové hodnoty. Výstup zobrazení (show) a/nebo ladění (debug) bude indikovat, která uspořádání mají být nadřazená (přepsána). Nadřazená uspořádání jsou označená hvězdičkou, např., "in-pattern*".

Nenastavujte gthresh příliš vysoko, protože to může vytvořit špatné uspořádání. Cokoli přes 10-15 je počátkem nebezpečí.

post (0-5, výchozí 2) ovládá jestli a jak Telecide provádí postprocessing pro vyčištění snímků, které jsou i po uspořádání snímků stále roztřepené:

- post=0: Použijte toto pro úplné vypnutí postprocessingu.
- post=1: Použijte toto pro zapnutí metrik kalkulace a k zobrazení hodnot vmetric, ale ne vykonání odstranění prokládání.
- post=2: Použijte ho pro zapnutí odstraňování prokládání. Všimněte si, že v tomto režimu probíhá uspořádání polí normálně a nejlépe uspořádaný snímek je podroben odstranění prokládání a doručení.
- post=3: Toto je stejné jako post=2 kromě toho, že je na deinterlovaných snímcích bíle zobrazena pohybová mapa odstraňování prokládání.
- post=4: Toto je stejné jako post=2 kromě toho, že místo použití nejlépe uspořádaných polí pro snímek je odstraněno prokládání v původním snímku. Použili by jste to pro minutí sekvencí videa v hybridním klipu.
- post=5: Toto je stejné jako post=4 kromě toho, že je na deinterlovaném snímku zobrazena bílá pohybová mapa.

vthresh (0.0-255.0, výchozí 50.0) nastavuje prahovou hodnotu detekce roztřepení snímku pro postprocessing. Můžete chtít zvýšit tuto hodnotu pokud je odstraňováno prokládání z příliš velkého počtu dobrých (neroztřepených) snímků, nebo ji snížit, když nejsou podchyceny některé roztřepené snímky. Výchozí je rozumná obecně účelová hodnota. Všimněte si, že tato prahová hodnota určuje, zda je snímek považován za roztřepený a potřebuje být odstraněno prokládání; není to prahová hodnota kterou znáte ze Smart Deinterlaceru. Tato prahová hodnota je určena parametrem dthresh (níže); je to prahová hodnota pro odstranění prokládání ve snímku detekovaném jako roztřepený.

dthresh (0.0-255.0, výchozí 7.0) nastavuje prahovou hodnotu odstranění prokládání ve snímcích detekovaných jako roztřepených. Všimněte si, že tato prahová hodnota je prahovou hodnotou, kterou důvěrně znáte ze Smart Deinterlaceru.

blend (true/false, výchozí false) zapíná v roztřepených oblastech smíchání (blending) namísto interpolace. Interpolace je rychlejší.

show (true/false, výchozí false) umožňuje zobrazit metriky ve snímku jako pomoc pro nastavení prahových hodnot. Také zobrazuje verzi softwaru.

Pokročilé parametry

chroma (true/false, výchozí true) určuje zda je roztřepení barevnosti zahrnuto do rozhodování, dělaného při postprocessingu o tom, zda je snímek roztřepený nebo ne. Pokud je chroma=true, pak je roztřepení barevnosti zahrnuto, jinak není zahrnuto. Všimněte si, že u barevnosti je vždy odstraňováno prokládání; tento parametr ovlivní pouze rozhodování o tom, jestli je snímek prokládaný. Je to užitečné u klipů, které mají velké množství interference jasu/barevnosti, jako možné důsledky ze slabých hřebenových (comb) filtrů. Interference může způsobit, že takové snímky, které nejsou roztřepené jsou detekovány jako roztřepené při chroma=true. Nastavením chroma=false, lze efekt interference eliminovat.

back (0-2, výchozí 0) volí režim uspořádání. Když je back=0, není nikdy vyzkoušeno zpětné uspořádání. To znamená, že při špatném střihu nemusí být nalezen progresivní snímek a ve výsledném snímku musí být odstraněno prokládání pomocí postprocessingnu. Když je back=1 a pokud je snímek stále roztřepený po uspořádání snímků (v souladu s testem oproti 'bthresh' -- viz níže), pak dojde k pokusu o zpětné uspořádání. To vyžaduje post > 0 a může pomoci nalézt dobrý progresivní snímek při špatném střihu. Když je back=2, je zpětné uspořádání vždy uvažováno. Některé klipy, obzvláště ty s mnoha smíchanými (blended) poli, lze lépe zpracovat pomocí back=2, který testuje uspořádání s předchozím, aktuálním, a následujícím snímkem. Ale používejte ho s opatrností, protože může vytvářet zadrhávající klipy.

bthresh (0.0-255.0, výchozí 50) nastavuje prahovou hodnotu detekce roztřepení pro podmíněné zpětné uspořádání (back=1). Zpětné uspořádání bude použito když kandidát uspořádání má roztřepení větší než 'bthresh'. Typicky nastavte vysoké 'vthresh' pro zachycení zbloudilých roztřepených snímků, spolu s nižší 'bthresh' pro podchycení špatných střihů.

nt (integer, výchozí 10) definuje prahovou hodnotu tolerance šumu. Tento parametr by obvykle nemělo být třeba upravovat. Nicméně pokud máte zašumělou nahrávku a setkáváte se s chybami uspořádání, můžete ho úspěšně použít pro vylepšení takové situace.

y0 a y1 (integer, výchozí 0) definuje skupinu vyloučení pro uspořádání polí. Pokud se y0 nerovná y1 je tato funkce zapnuta. Řádky v obrazu mezi řádky y0 a y1 (včetně) jsou vyloučeny ze zpracování, když je rozhodnuto o uspořádání polí. Tato funkce je typicky použita pro ignorování titulků, které mohou jinak odstartovat přeuspořádání. y0 a y1 musí být oba kladná celá čísla a y0 musí být menší nebo rovno y1; pokud tomu tak není, vyskočí chybová zpráva.

hints (true/false, výchozí true) zapíná předávání údajů (hints) z Telecide() do Decimate(). Decimate používá tyto údaje pro optimalizaci svého chování v režimech 1 a 3.

ovr (string, výchozí "") zapíná specifikaci nadřazovacího souboru (viz kapitola výše, nazvaná "Nadřazená rozhodnutí Decomb"). Soubor musí být ve stejné složce jako skriptový soubor (aktuální složka Avisynthu) a jméno souboru musí být uzavřeno v uvozovkách, např., ovr="tango.tel".

debug (true/false, výchozí false) zapíná logovací/ladící informaci o rozhodnutích filtru pro jejich vytištění přes OutputDebugString(). Pro zachycení těchto řetězců je dostupná Utilita zvaná DebugView.

## FieldDeinterlace(parameter_list)

full (true/false, výchozí true) volí zda zpracovat všechny snímky nebo prostě jen snímky, které jsou detekovány jako roztřepené. Použijte full=true pro zpracování všech snímků.

threshold (0-255, výchozí 20) nastavuje prahovou hodnotu detekce roztřepení. Při práci s full=false, můžete chtít zvýšit tuto hodnotu pokud je odstraňování prokládání podrobeno příliš mnoho dobrých snímků, nebo snížit pokud se nepodchytily malé oblasti s roztřepením. Výchozí je dobrá obecně účelná hodnota. Všimněte si, že tato prahová hodnota určuje zda je snímek považován za roztřepený a potřebuje odstranit prokládání; není to prahová hodnota, kterou dobře znáte ze Smart Deinterlaceru. Tato prahová hodnota je určena pomocí dthreshold (níže); je to prahová hodnota pro odstraňování prokládání ve snímku detekovaném jako roztřepený. Když je full=true, threshold je ignorována, ale dthreshold zůstává funkční.

dthreshold (0-255, výchozí 7) nastavuje prahovou hodnotu pro odstranění prokládání ze snímků detekovaných jako roztřepené. Všimněte si, že tuto prahovou hodnotu možná dobře znáte ze Smart Deinterlaceru.

blend (true/false, výchozí true) zapíná smíchání (blending) místo interpolace v roztřepených oblastech.

map (true/false, výchozí false) zapíná zobrazení mapy detekce roztřepení (mapa pohybu). Pokud full=true, pak je mapa zobrazována pro všechny snímky. Pokud full=false, pak je mapa zobrazována jen pro snímky detekované jako roztřepené; neroztřepené snímky jsou zobrazeny normálně. Mapa zobrazuje roztřepené oblasti světle azurově; neroztřepené oblasti jsou kopírovány ze zdrojového snímku a smíchány se šedou.

chroma (true/false, výchozí false) určuje zda je roztřepení barevnosti zahrnuto do rozhodování, dělaného při postprocessingu o tom, zda je snímek roztřepený nebo ne. Pokud je chroma=true, pak je roztřepení barevnosti zahrnuto, jinak není zahrnuto. Všimněte si, že u barevnosti je vždy odstraňováno prokládání; tento parametr ovlivní pouze rozhodování o tom jestli je snímek prokládaný. Je to užitečné u klipů, které mají velké množství interference jasu/barevnosti, jako možné výsledky ze slabých comb filtrů. Interference může způsobit, že takové snímky, které nejsou roztřepené, jsou detekovány jako roztřepené při chroma=true. Nastavením chroma=false, lze efekt interference eliminovat. Tato možnost nemá žádný efekt při full=true, protože všechny snímky jsou považovány za roztřepené.

ovr (string, výchozí "") zapíná specifikaci nadřazovacího souboru (viz kapitola výše nazvaná "Nadřazená rozhodnutí Decomb"). Soubor musí být ve stejné složce jako skriptový soubor (aktuální složka Avisynthu) a jméno souboru musí být uzavřeno v uvozovkách, např., ovr="tango.fd".

show (true/false, výchozí false) umožňuje zobrazit metriky ve snímku pro pomoc při nastavování prahových hodnot. Také zobrazuje verzi softwaru.

debug je stejný jako u Telecide.

## Decimate(parameter_list)

cycle (2-25, výchozí 5) volí decimační poměr, to je, decimuje (odstraňuje) 1 snímek v každém cyklu snímků.

mode (0-3, výchozí 0) určuje jak Decimate() zachází se zvláštním snímkem v cyklu.

Při mode=0, Decimate zahazuje takový snímek z cyklu, který je nejpodobnější jeho předchůdci.

Při mode=1, místo zahození nejpodobnějšího snímku, ho Decimate() buď nahradí snímkem interpolovaným z aktuálního snímku (obvykle duplikát předchozího snímku) a následujícího snímku, nebo snímek předá tak jak je. Volba mezi těmito dvěma režimy závisí na dvou věcech: 1) zda je cyklus snímků z 3:2 pulldown materiálu nebo z čistého videa, a 2) nastavení parametru threshold a jak se snímek liší od předchozího snímku (viz níže). První vyžaduje guide=1 pro Telecide (pro deklarování šablony pulldown).

Decimate(mode=1) je užitečný pro hybridní klipy obsahující hlavně video. Umožní vám zachovat frekvenci snímků na video frekvenci (aby jste získali hladké video sekvence), ale také pro zlepšení efektu duplikovaných snímků, které jsou vysílané z Telecide() pro filmové sekvence (snímky, které jsou normálně odstraněny pomocí mode=0).

Podívejte se do PŘÍLOHY B na více podrobností a ukázání zpracování hybridního materiálu.

Při mode=2, Decimate() smaže snímek z nejdelšího sledu duplikátů. Tento režim je nejspolehlivější u animovaných filmů a jiných materiálů kde se může objevit pohyb jen v každém druhém, třetím, nebo čtvrtém (atd.) snímku. pokud použijete mode=0 na takové klipy, je nebezpečí, že se objeví nesprávná decimace, způsobující zadrhávání. Klipy jako ty zde popsané, obvykle pochází z 8fps nebo 12fps animací, stejně jako normálních 24fps animací, kde pomalý pohyb vede k opakování duplikátů. Mode=2 je schopen mazat správné duplikáty ve všech případech.

Při mode=3, použije Decimate() místo zahození nejpodobnějšího duplikátu rozdílné decimační strategie pro 3:2 pulldown materiál (film) a pro čisté video (nefilm) cykly. Filmové cykly jsou decimovány normálním způsobem. Nefilmové cykly jsou decimovány použitím decimace se smícháním snímků cyklu z 5 snímků na 4 snímky. Výsledná frekvence snímků je filmová rychlost (decimovaná o 1/5).

Existují dva faktory, které ovlivní rozhodnutí o tom jak decimovat: 1) jestli je cyklus snímků z 3:2 pulldown materiálu nebo z čistého videa, a 2) nastavení parametru threshold a na rozdílu metriky pro nejpodobnější snímek. První vyžaduje guide=1 pro Telecide (pro deklarování šablony pulldown).

Decimate(mode=3) je užitečný pro hybridní klipy obsahujících hlavně film. To vám umožní decimovat klip na filmové frekvence a zacházet s filmovou částí normálně a na video sekvence použít decimaci smícháním pro zachování jejich hladkého pohybu.

Podívejte se do PŘÍLOHY B na více podrobností a ukázání zpracování hybridního materiálu.

threshold (desetinný, výchozí 0.0) Při mode=1, snímky určené jako nejpodobnější jejich předchozím snímkům mohou být zpracovány dvěma možnými způsoby: 1) mohou být smíchány jak je popsáno výše, nebo 2) mohou být ponechány pokud parametr threshold je ne-nulový a rozdíl metriky překračuje threshold. Nastavením vhodné prahové hodnoty (threshold), můžete duplikáty získat smíchané a ponecháte snímky, které mají nový obsah, t.j., které se významně liší od předchozího snímku. To umožní aby byly hybridní film/nefilm klipy zpracovány inteligentně: filmové části budou smíchané a nefilmové části nebudou. Použijte show=true (nebo debug=true ve spojení s utilitou DebugView) pro prohlédnutí rozdílů metrik a tím určete vhodnou prahovou hodnotu threshold pro váš klip.

Parametr threshold také podobným způsobem ovlivní mode=3. Podívejte se do PŘÍLOHY B na podrobnosti.

threshold2 (desetinný, výchozí 3.0) Při mode=2, Decimate() smaže snímek z nejdelšího sledu duplikátů jak je popsáno výše. Parametr threshold2 ovládá jak blízké musí být dva snímky, aby byly považovány za duplikáty. Pokud je threshold2 zvýšená, toleruje se větší rozdíl, přičemž jsou snímky stále považovány za duplikáty. Výchozí nastavení pracuje dobře u většiny klipů. Použijte show=true (nebo debug=true ve spojení s utilitou DebugView pro zobrazení rozdílu metrik a tím určete vhodnou prahovou hodnotu threshold pro váš klip.

quality (0-3, výchozí 2) Tato možnost umožní uživateli vyvážit kvalitu různých detekcí s rychostí. Zde jsou možnosti:

- quality=0: Podvzorkováno pro rychlost a barevnost neuvažována (nejrychlejší).
- quality=1: Podvzorkováno pro rychlost a barevnost uvažována.
- quality=2: Plné vzorkování a barevnost neuvažována.
- quality=3: Plné vzorkování a barevnost uvažována (nejpomalejší).

ovr (string, výchozí "") zapíná specifikaci nadřazovacího souboru (viz kapitola výše nazvaná "Nadřazená rozhodnutí Decomb"). Soubor musí být ve stejné složce jako skriptový soubor (aktuální složka Avisynthu) a jméno souboru musí být uzavřeno v uvozovkách, např., ovr="tango.dec".

show (true/false, výchozí false) umožňuje zobrazit metriky ve snímku pro pomoc při nastavování prahových hodnot. Také zobrazuje verzi softwaru.

debug (true/false, výchozí false) zapíná logovací/ladící informaci o rozhodnutích filtru pro jejich vytištění přes OutputDebugString(). Pro zachycení těchto řetězců je dostupná Utilita zvaná DebugView. Zobrazená informace je stejná jako ta, která se zobrazí u možnosti show výše.

## IsCombed(parameter_list)

Tento filtr je navržen pro použití uvnitř ConditionalFilter(). Vrací logickou hodnotu pro indikování zda je snímek roztřepený (prokládaný).

threshold (0-255, výchozí 20) nastavuje množství roztřepení vyžadované pro deklarování snímku jako roztřepeného. je to analogické s parametrem threshold u FieldDeinterlace(). Měli by jste ho upravit pro nejlepší zpracování vašeho zadaného materiálu.

## PŘÍLOHA A. Telecide() Teorie operace

Zde je uvedeno co Telecide dělá ve výchozím stavu. Když obdrží požadavek na snímek přistoupí k dalšímu snímku a k požadovanému (nazývaného aktuální snímek). Zde je to co vidí (kde N=nex (následující), C=current (aktuální), t=horní pole (top field), b=spodní pole (bottom field)):

`Ct Nt
Cb Nb`

Telecide udělá 2 kombinace snímků z dostupných polí. Zde jsou kombinace:

`Nt
Cb
Ct
Cb`

Nyní jsou oba snímky kontrolovány na roztřepení. Nejméně roztřepený snímek je výstupním snímkem (nepředpokládá se žádné řízení šablony (pattern guidance)). Je to takhle jednoduché.

Pokud je zapnuté řízení šablony, rozhodnutí popsané výše lze přepsat předpovězeným uspořádáním založeným na zpozorované šabloně v okolí aktuálního snímku. Předpověď je ignorována pokud rozdíl mezi uspořádáními je příliš velký, protože toto používá možnou změnu fáze šablony, ke které by měl Telecide() resynchronizovat.

Uvažujme nyní cyklus snímků z 3:2 pulldown sekvence (horní pole první):

`a a b c d
a b c c d`

Telecide vytvoří uspořádané výstupní snímky následovně:

`a b c c d
a b c c d`

Je zde vidět, že byl vytvořen duplikovaný snímek. Decimate odstraní duplikovaný snímek nalezením a odstraněním nejpodobnějšího snímku svému předchůdci. Nyní je snadno vidět proč Telecide následovaný Decimate vytváří inverní 3:2 telecine (IVTC) funkci.

## PŘÍLOHA B. Zacházení s hybridními klipy

Většina reálných klipů v NTSC prostředí je směsí 3:2 pulldown materiálu (film) a čistého video (nefilm) materiálu. To představuje potíže při enkódování, protože náš formát vyžaduje zadat frekvenci snímků jako buď 29.97fps nebo 23.976fps. Pokud zvolíme video frekvenci, video sekvence budou OK, ale filmové sekvence nebudou decimovány a budou vysílány duplikáty, způsobující trhání.

Na druhé straně, pokud zvolíme filmovou frekvenci, filmové sekvence budou OK, ale video sekvence budou decimovány, a objeví se trhání.

Decomb poskytuje dva speciální decimační režimy pro lepší zpracování hybridních klipů.

Převážně filmové klipy (mode=3)

Nejdříve uvažujme případ, kde je klip převážně filmový. V tomto případě, chceme decimovat filmové části normálně takže budou hladké (plynulé). Pro nefilmové části, chceme snížit jejich snímkovou frekvenci pomocí (blend) decimace smícháním každého cyklu snímků z 5 na 4 snímky. Video sekvence tak rendrované se jeví plynulejší než když jsou decimovány jako film.

Zde je typický skript pro apnutí tohoto režimu práce:

Telecide(guide=1)
Decimate(mode=3,threshold=1.0)

Jsou 2 faktory, které zapínají Decimate aby vhodně zacházely s filmovými a nefilmovými částmi. Zaprvé, když Telecide deklaruje guide=1, je schopen podat informaci do Decimate o tom, které snímky jsou odvozené z filmu a které z videa. Aby tento mechanizmus pracoval, Decimate musí ihned následovat za Telecide. Přesněji, čím lepší práci uděláte s uzamčením šablony v Telecide (nastavením parametrů podle požadavků), tím lepší práci může Decimate udělat.

Druhým faktorem je prahová hodnota (threshold). Pokud je vidět cyklus snímků, který nemá duplikáty, pak je cyklus zpracován jako video. Prahová hodnota určuje jaké procento rozdílu snímků je považováno za přítomnost duplikátu. Všimněte si, že threshold=0 vypíná druhý faktor.

Převážně video klipy (mode=1)

Nyní uvažujme případ, kde je klip převážně video. V tomto případě, se chceme vyhnout decimování video částí aby zůstaly plynulé. U filmových částí chceme dosáhnout video frekvence, ale změna duplikovaného snímku na smíchaný snímek není tak zřejmá.

Zde je typický skript pro zapnutí tohoto režimu operace:

Telecide(guide=1)
Decimate(mode=1,threshold=1.0)

Jsou 2 faktory, které zapínají Decimate aby vhodně zacházely s filmovými a nefilmovými částmi. Zaprvé, když Telecide deklaruje guide=1, je schopen podat informaci do Decimate o tom, které snímky jsou odvozené z filmu a které z videa. Aby tento mechanizmus pracoval, Decimate musí ihned následovat za Telecide. Přesněji, čím lepší práci uděláte s uzamčením šablony v Telecide (nastavením parametrů podle požadavků), tím lepší práci může Decimate udělat.

Druhým faktorem je prahová hodnota (threshold). Pokud je vidět cyklus snímků, který nemá duplikáty, pak je cyklus zpracován jako video. Prahová hodnota určuje jaké procento rozdílu snímků je považováno za přítomnost duplikátu. Všimněte si, že threshold=0 vypíná druhý faktor.

## Poděkování

Rád bych poděkoval Thomasovi Danielovi ('manono') za jeho cennou pomoc během vývoje tohoto softwaru. Provedl nejen několik cenných návrhů a poukazoval na užitečné zdroje, ale provedl mučivé testování na obtížných streamech a spouštěl porovnávací testy s jinými dostupnými softwary pro odstraňování roztřepení (prokládání).

Darryl Andrews poskytl cennou pomoc ve specifikaci a testování nových funkcí ve verzi 4.00.

Klaus Post ('sh0dan') poskytl některé kódy a nápady pro nízkoúrovňovou optimalizaci YV12 kódu.

Členové fóra na doom9.org poskytly velkou pomoc a přízeň.

Copyright © 2003-2008, Donald A. Graft, All Rights Reserved.

Pro aktualizace a další filtry/nástroje, navštivte mou webovou stránku:
http://neuron2.net/

`$English Date: 2004/08/13 21:57:25 $`

`Český překlad:18.3.2009`