# LeakKernelDeint

## Přehled

autor: Leak
verze: 1.5.4 (založen na filtru KernelDeint 1.4.0 od Donalda Grafta)
stáhnout: http://leak.no-ip.org/AviSynth/LeakKernelDeint/, http://www.avisynth.org/warpenterprises/
kategorie: Odstraňování prokládání & pulldown
požadavky: YV12 & YUY2 & RGB Barevné prostředí
licence: GPL

### Úvod

Tento filtr odstraňuje prokládání (deinterlace) použitím jádrového (kernel) přístupu. Dává značné zlepšení vertikálního rozlišení v deinterlovaných oblastech ve srovnání s jednoduchým zahozením pole.

Jestliže nastavíte prahovou hodnotu (threshold) na 0, můžete obdržet výsledky zcela bez artefaktů (díky nedostatku mezí), ale s mnohem menší ztrátou vertikálního rozlišení než jednoduché zahození pole. Pro optimální rozlišení však nastavte pohybovou prahovou hodnotu, která umožní, aby statické oblasti obrazu nebyly dotčeny. V takovém režimu, na jádře založené odstranění prokládání pohyblivých oblastí zachová jejich vertikální rozlišení ve srovnání s jednoduchou interpolací.

Navíc tato verze obsahuje funkci zvanou LeakKernelBob() (adaptovanou ze Scharfis_brainova skriptu stejného jména), která odstraňuje prokládání s plnou frekvencí snímků, t.j. převrací 50 polí za sekundu na 50 snímků za sekundu.

Filtr přijímá RGB, YUY2, nebo YV12 vstup.

Pro použití tohoto filtru jako post-processoru pro Telecide(), použijte následující skript:

    Telecide(..., post=1, hints=true)
    LeakKernelDeint(...)

### Syntaxe funkce

LeakKernelDeint() a LeakKernelBob() berou následující jmenné parametry:

order (0-1, výchozí není!) Tento parametr definuje pořadí polí v klipu. Je velmi důležité nastavit ho správně. Použijte order=0 pro spodní pole první (bottom field first - bff). Použijte order=1 pro horní pole první (top field first - tff). Musíte zadat pořadí; LeakKernelDeint hodí výjimku, když vynecháte tento parametr.

Pro správné rendrování je zásadní nastavit správně pořadí polí. Protože správné nastavení je tak důležité, důrazně se vám doporučuje nedělat jen doměnky o pořadí polí v klipu, ale raději ověřit pořadí polí použitím následující procedury.

Pro určení pořadí polí, vytvořte skript Avisynthu, který předá syrový klip bez jakéhokoliv zpracování. Pokud to bylo AVI, tak by bylo použito prostě AviSource(). Pro vaše příklady, použijeme AviSource(). Přidejte do skriptu řádek k oddělení polí s použitím horního pole jako prvního, následovně:

    AviSource("your_clip.avi")
    AssumeTFF().SeparateFields()

Nyní předejte skript VirtualDubu a najděte nějakou oblast s pohybem. Jednoduše krokujte vpřed podle pohybu. Všímejte si jestli pohyb postupuje stále vpřed jak by měl, nebo jestli skáče zpět a vpřed. Například, jestliže je pořadí polí špatné, objekt pohybující se stále zleva doprava by se pohnul doprava, pak by skočil trochu zpět doleva, pak znovu doprava, atd. Jestliže je pořadí polí správné, pohybuje se neustále doprava.

Jestliže je pohyb správný při AssumeTFF().SeparateFields(), pak vaše pořadí polí má horní pole první a vy musíte nastavit order=1. Pokud je pohyb nesprávný, pak vaše pořadí polí má spodní pole první a vy musíte nastavit order=0. Jestliže chcete dvojitou kontrolu, můžete použít AssumeBFF.SeparateFields() pro kontrolu správné operace pro spodní pole první.

threshold (0-255, výchozí 10) Tento parametr definuje prahovou hodnotu "pohybu" . Pohyblivé oblasti jsou jádrově deinterlovány zatímco nepohyblivé oblasti jsou nedotčeny. Použijte parametr map k upravení parametru threshold tak, že právě jen prokládané oblasti snímku jsou deinterlovány.

sharp (true/false, výchozí false) Když je tento parametr nastaven na true, vybere jádro, které poskytne lepší vertikální rozlišení a provede určité zostření videa. Pro mírnější zostření, ale také menší vertikální rozlišení nastavte tento parametr na false.

twoway (true/false, výchozí false) Když je tento parametr nastaven na true, vybere jádro, které zahrnuje jak předchozí tak následující pole pro odstranění prokládání. Když je nastaven na false, jádro zahrnuje jen předchozí pole. Posledně zmíněné one-way (jednoprůchodové) jádro je rychlejší, jiskrnější, a dává méně smíchání (tato poslední výhoda dělá výkon filtru lepší na animovaném materiálu). Parametr twoway je zahrnut v případě, kdy chce uživatel dosáhnout chování dřívějších verzí.

map (true/false, výchozí false) Když je tento parametr nastaven na true, zobrazí se oblasti, které jsou "pohybové" určené pomocí parametu threshold a které budou jádrově-deinterlovány. Použijte tento parametr pro asistenci při nastavování parametru threshold

linked (true/false, výchozí false; jen YV12/YUY2) Když je tento parametr nastaven na true, propojuje masku pohybu barevnostní a jasové plochy, takže odstraňování prokládání bere stejná místa v obou plochách. Použijte ho, když stále dostáváte zbytkové artefakty jen v částečně deinterlovaných oblastech, ale většina barevnostních artefaktů verze 1.4.0 byla eliminována použitím kombinované mapy pohybu pro obě plochy barevnosti, a proto je výchozí false. Pravděpodobně také nechcete nastavit tento parametr na true, pokud má vaše video nějaké duhy, protože odstraňování prokládání v jasové ploše v takových bodech degraduje kvalitu videa více než by to mohli degradovat jakékoli (jiné) artefakty barevnosti.

debug (true/false, výchozí false) Když je tento parametr nastaven na true, zapíná ladící (debug) výstup přes DebugView utilitu. V současnosti ukazuje číslo verze filtru a jestliže jsou z Telecide() přítomné údaje hints, jestli jsou snímky označené jako progresivní nebo prokládané. Pokud hints chybí, ladící výstup zobrazí všechny snímky jako prokládané. Také získáte údaje hints, jestliže vaše snímky mají různé výšky, což vypne MMX optimalizace, dokonce i když si nejsem jistý, jestli to může v AviSynthu nastat.

forceCPU (0-5, výchozí 0) Tento parametr donutí filtr použít jen zadané optimalizace:
* 0 ... autodetekce
* 1 ... jen kód C++
* 2 ... Použít MMX kód, kde je to dostupné
* 3 ... Použít MMX & Integer SSE kód, kde je to dostupné
* 4 ... Použít MMX & SSE kód, kde je to dostupné
* 5 ... Použít MMX & SSE & SSE2 kód, kde je to dostupné

NB: protože kód v současnosti používá jen MMX, použití hodnot vyšších než 2 nepovede k urychlení.

### Seznam změn

1.5.0

- Initial release

1.5.1

- Fixed: don't read beyond the end of frames
- Changed: Small speedup by reading coefficients from memory

1.5.2

- Fixed: motion mask was b0rked due to field order being swapped when building it
- Fixed: threshold was off by one
- Fixed: map=true Y-values clamped to 235

1.5.3

- Changed: renamed the plugin to LeakKernelDeint on neuron2's request
- Fixed: implicit "AssumeFrameBased" when using LeakKernelBob

1.5.4

- Fixed: LeakKernelBob's cache range was too low, which slowed it down considerably

Copyright © 2004-2005 Kurt B. Prünner

Mé webové stránky:
http://leak.no-ip.org/AviSynth/
Stránky Donalda Grafta:
http://neuron2.net/

`$English Date: 2005/10/01 23:09:51 $`

`Český překlad:29.4.2009`