Poznámka - Tato verze je pro Avisynth 2.5 (jen YUY2). Pro AviSynth 2.0x použijte dll ve složce "Older".
GreedyHMA - Greedy (High Motion for Avisynth)
GreedyHMA.dll je Avisynth filtr, který vykonává algoritmus kódu Greedy/HM z DScaleru
pro provádění uspořádání pulldown, filtrování, a odstranění prokládání z videa.
Prostě rozbalte obsah do Avisynth složky, nebo někam jinam. Jak je vidět ze skriptu,
vytvořil jsem podsložku pod Avisynthem, pro jeho oddělené uložení.
Následující je Bikes.avs, jeden ze skriptů, které jsem testoval:
LoadPlugin("d:\AVISynth\GreedyHMA\Debug\GreedyHMA.dll") clip = AviSource("c:\vcr\bikes.avi") return clip.GreedyHMA(1,0,4,0,0,0,0,0)
Zadává soubor (změňte na váš) a žádá zapnout horní pole první (TopFirst) a AutoPulldown, s decimací (vypouštěním snímků) na 24 fps. Dosud jsem ho testoval jen s Avisynth/VirtualDub.
Dříve, do V 0.4.0.0 jsem každému říkal, že TopFirst téměř vždy pracuje lépe, ale to se ukázalo, že je kvůli chybě v kódu BottomFirst GreedyHMA. Takže by jste si zde měli ověřit jakýkoli předchozí test. Někteří lidé kvůli tomu dostávali zbytečné roztřepení nebo artefakty prokládání.
V některých zdrojích jsem dostal mírně lepší výsledky s TopFirst (řekněme HDTV nahrávky), ale jiné jsou lepší když je to vypnuto. Všímám si, že je možné spustit 2 kopie Vdubu a dělat porovnání snímek po snímku. Nezdá se, že je tam velký rozdíl, ale stálé srovnávání dvou snímků (dívejte se na úhlopříčky) obvykle zobrazí jeden jako lepší. Můžete se na to prostě podívat ve vstupech VirtualDubu. Opravdu není nutné vytvářet jakékoliv soubory.
Pro verzi 0.4.0.0 jsem přidal dva nové skriptové filtry do zipu, aby jste mohli s jistotou říci jestli by jste měli použít TopFirst. Upravte skript BottomFirst.avs aby ukazoval na váš soubor a načtěte ho do VirtualDubu. Pak krokujte po několika jednotlivých snímcích. Ignorujte chvění nahoru a dolů o jeden řádek, ale sledujte jestli uvidíte, že každý snímek jde pozpátku. Pokud ano, pravděpodobně potřebujete TopFirst. Zkuste skript TopFirst.avs , aby jste si to potvrdili. Ani jeden z těchto dvou skriptů nezávisí na GreedyHMA.
Po nalezení správného nastavení TopFirst (T=0 nebo 1) aplikujte následující pokyny, dosazením TopFirst za 'T'.
Pokud si myslíte, že máte převážně filmový zdroj, nebo DVD2AVI to říká, tak použijte:
GreedyHMA(T,0,5,0,0,0,0,0) # což je vynucení Film+Decimace na 24 fps.
Pokud máte samé video, použijte:
GreedyHMA(T,0,0,0,0,0,0,0) # pro 30 FPS výstup (25 FPS PAL), nebo GreedyHMA(T,0,3,0,0,0,0,0) # pro 24 FPS výstup
a když nevíte, nezáleží vám na tom, nebo je to všechno promíchané, proveďte to automaticky:
GreedyHMA(T,0,4,0,0,0,0,0) # pro všechny účely nejvíce automatické nastavení (NTSC), nebo GreedyHMA(T,0,1,0,0,0,0,0) # pro všechny účely nejvíce automatické nastavení (PAL)
Další úpravy lze přidat následujícími parametry:
GreedyHMA
(clip, TopFirst, SwapFields, AutoPullDown,
"MedianFilter", "VerticalFilter", "EdgeEnhance",
"GoodPullDownLvl", "BadPullDownLvl")
Všechny hodnoty jsou celočíselné, 0=ne, 1=ano:
TopFirst - předpokládá, že horní pole, řádky 0,2,4,... by měla být zobrazena první. Výchozí je pravděpodobně běžnější BottomFirst, ale na ATSC nahrávkách z mé WinTV-HD karty pracuje TopFirst stále lépe.
SwapFields - pro porouchané zachytávací ovladače, které vkládají řádky 1,3,5.. nad řádky 0,2,4...
AutoPullDown - Nastavuje jaký typ zpracování pulldown je vyžadovaný. Platné hodnoty parametru jsou:
0 - Žádný pulldown, prosté odstranění prokládání (vynutit video). Nevypouští žádné
snímky, takže FPS je ponechána na 30 FPS, nebo jiných. Neprovádí decimaci
(pentimate?). Použijte pokud máte (a chcete) 30 fps video zdroj a možná 25 FPS PAL video.
1 - Auto Pulldown. Automaticky rozhoduje, které snímky by měly být podrobeny IVTC nebo odstranění prokládání, podle nastavení Good a Bad Pulldown Lvls (viz níže). Nedecimuje. Toto je nejlepší, pokud máte smíchaný film a video a nechcete 30 fps výstup. Také lepší pro PAL zdroje.
2 - Jen Pulldown (Vynutit Film). Předpokládá filmový zdroj, vždy provádí IVTC a nikdy neodstraňuje prokládání. Nedecimuje. Použijte pro PAL filmové zdroje.
Hodnoty 3-5 odpovídají těm výše uvedeným, ale s vypuštěním snímků (Decimací, pentimation?) Je prohlédnuto pět snímků v čase a ten, který se nejvíc zdá být duplikovaný je vypuštěn, takže se sníží FPS , řekněme, z 30 na 24.
3 - Odstranit prokládání (Vynutit Video), ale s vypouštěním snímků. Použijte pro NTSC video pokud přesto chcete decimovat. U video zdroje ve skutečnosti nejsou vhodná pole pro vypuštění, ale toto vypustí ty, které vypadají nejvíce jako duplikované.
4 - Auto Pulldown s vypouštěním snímků. Nejlepší (nejvíce automatické) nastavení. Pracuje ve většině případů, alespoň pokud odstraním všechny chyby.
5 - Jen Pulldown (Vynutit Film) s vypouštěním snímků. To dá nejlepší výsledky pokud máte 100% správně zpracovaný NTSC filmový zdroj bez video částí a bez velkého počtu střihů. Může se přizpůsobit většině změnám scén a změnám v kadenci pulldown, ale ne smíchaným polím.
Nepokoušel jsem se dívat co je z tohoto nejlepší. Pulldown nepracuje ještě perfektně. Ale pokud si nejste jisti, můžete často přejít na 4 (Auto). Mělo by správně zpracovat sporty s velkým pohybem. Pokud se přepne do režimu prokládání příliš často při zpracování filmu, můžete zkusit trochu zvyšovat Bad Pulldown Level.
***** POZNÁMKA! MEDIAN FILTER JE V TOMTO VYDÁNÍ VYPNUT. *****
MedianFilter (časový - temporal) - pomáhá vyčistit šum pokud je to potřeba, ale způsobuje zpoždění o 2 pole. (Jinak je zpoždění o 1 pole). Zadáním 1 se zapne použití výchozích 3 (lze změnit) ale můžete také zadat 2-255 pro přepsání tohoto nastavení. Ale hodnoty přes asi 3-5 mohou způsobit pohybové artefakty ve videu s rychlým pohybem.
Viz poznámku výše. Vyřadil jsem Median Filter přidáním vypouštění snímků tím, že běží se zpožděním 2 místo čehokoli jiného. To se zdálo méně důležité, takže jsem ho pro zatím vypnul. Parametr je v současnosti ignorován.
Median Filter je nepotřebná komplikace zatímco GreedyHMA je nový, protože mění vnitřní logiku časování, a tím mate testování některých částí specifického Avisynth kódu. Znovu ho zapnu, jakmile bude všechno ostatní pevné, ale prozatím je stále vypnut.
***** POZNÁMKA *****
VerticalFilter - Nejen pomáhá snížit šum, ale také některé artefakty odstraňování prokládání protože je vykonáván jako poslední, po odstranění prokládání. Užitečný pokud chcete zmenšovat. Použijte jen hodnoty 0,1. Také to pomáhá kompresi.
EdgeEnhance (horizontální) - Přidává malé zostření pro plné rozlišení videa. Toto může také použít hodnot 2-100. Výchozí je v současnosti 50, jestliže je zadáno 1. V budoucnu mohu také podporovat záporné hodnoty, přetvořením na horizontální filtr pro zlepšení nastavení pro zmenšování.
Good Pulldown Lvl - Toto je číslo mezi 1-255 , které musí být překročeno než GreedyHMA provede pulldown pro snímek. Tento parametr je ctěn jen když je také zapnuto Auto Pulldown (AP=1 nebo 4). Výchozí je možné změnit, ale je v současnosti nastaveno na 90. Ale výchozí hodnotu získáte zadáním 0, což je doporučeno pro většinu případů. Je to ve skutečnosti jen průměr ukládaných součinitelů poměru comb/weave několika snímků jejich správným uspořádáním.
Bad Pulldown Lvl - Toto je číslo mezi 1-255 , které NESMÍ být překročeno než GreedyHMA provede pulldown pro snímek. Tento parametr je ctěn jen když je také zapnuto Auto Pulldown (AP=1 nebo 4). Výchozí je možné změnit, ale je v současnosti nastaveno na 85. Ale výchozí hodnotu získáte zadáním 0, což je doporučeno pro většinu případů. Je to ve skutečnosti jen míra toho jak špatně by byly součinitele comb/weave zvyšovány, kdyby jsme provedli čisté uspořádání snímků.
Nově ve V 0.4.0.0 když je při Force Film zadáno (AP=2,5) Bad Pulldown level, vychází hodnoty nemožně velké. Ale to může být přepsáno na stálé odstraňování prokládání ve snímcích s extrémními artefakty prokládání. Nezkoušel jsem najít optimální hodnotu, ale je pravděpodobně menší než 150. Zadání 0 dá výchozí vždy Force Film.
Prozatím musí být přítomno všech 8 parametrů, není to kontrolováno chybou, a ani dokumentací kromě o Greedy/HM na www.dscaler.org
1) TOTO JE JEN PRO SSE STROJE!
Toto je napsáno jako pokročilá možnost DScaler Greedy/HM, částečně v assembleru jen pro SSE stroje. Až dosud nemám žádnou chybovou kontrolu, takže prostě SPADNE, pokud nemáte alespoň rychlejší Celeron, P-III, Athlon, nebo vyšší. Nejsem si jistý jestli toto bude v budoucnu opraveno, ale mohl bych pokud to čas dovolí.
2) V současnosti žádné chybové kontroly ani zprávy. Zatím jsem neřešil jak na zprávy o problémech v Avisynthu, a je hromada věcí, které bych měl kontrolovat.
3) Předpokládá se YUV (YUY2) na snímcích založený vstup. Použijte před tím AVIsynth funkci přo převod pokud je potřeba.
4) V současnosti omezeno na rozlišení snímku 1928x1088 pixelů.
5) Opraveno
6) Existuje zvláštní chyba, které vůbec nerozumím. Pokud přidáte nový nebo změněný GreedyHMA.dll do vašeho počítače, a poprvé rozběhnete VirtualDub/Avisynth/GreedyHMA, tak VirtualDub se může zastavit. Pokud pak použijete správce úloh pro přerušení VirtualDubu, běží i potom. Taková činnost se zdá být při prvním otevření jakéhokoli jiného AVI souboru ve VirtualDubu, poprvé nastane po instalaci GreedyHMA, před otevřením Avisynth skriptů. Pozdější poznámka: nezávisí to vůbec na GreedyHMA, stává se to na mém stroji, Ale já tomu stále nerozumím.
7) V současnosti pracuje správně, jen když je šířka obrazu v pixelech dělitelná 16. Jinak může vytvářet smetí v pravé části obrazu, které budete možná muset oříznout.
8) Jak je uvedeno výše, možnost Median Filter je dočasně ignorována.
Posílejte prosím komentáře Tomu Barrymu (trbarry at trbarry.com)
$English Date: 2004/08/13 21:57:25 $
Český překlad:4.5.2009