Plugin nejdřív detekuje škrábance, pak je odstraní.
Pracuje na každém snímku, používá prostorovou informaci jen z aktuálního snímku.
Adaptoval jsem ho pro restauraci mých starých 8 mm filmů, možná bude užitečný ještě někomu.
Použije nějaké vertikální rozmazání na kopii snímku, pro potlačení tenké struktury obrazu, šikmých čar a šumu.
Hledá lokální extrémy jasu (luma) v každé řádku, s kritériem rozdílu jasu.
Vloží tyto extrémy do nějaké mapy (snímku).
Volitelně zavře vertikální mezery v extrémech vertikálním rozšířením extrémních bodů.
Testuje mapu extrémů s kritérii délky a úhlu, a tak vybere jen skutečně dlouhé škrábance.
Škrábance mohou být buď částečně průhledné, hladké (s detaily obrazu), nebo neprůhledné (bez detailů nebo s téměř zničenými).
V prvním případě plugin může odečíst hladkou (rozmazanou) část variace jasových škrábanců od původního obrazu. Detaily obrazu tedy zůstanou zachovány.
V druhém případě plugin nahrazuje poškrábané pixely středními hodnotami jasu z některých sousedních pixelů (v některých řádcích).
Můžeme mít také prostřední případ, nastavením nějakého procenta detailů pro zachování.
Plugin má určitou adaptaci množství zachovaných hodnot (detailů) v souladu s rozdílem jasu pixelů.
Ve všech případech se pro hladší přechody mohou částečně změnit i někteří nejbližší sousedé.
Program je plugin (filtr) pro Avisynth 2.5.
Testován je s verzí 2.55beta (některé verze mají chybu při Turnleft()! ).
Verze filtru nad 0.2 už nepotřebují Avisynth C rozhraní (avithynth_c.dll) od Kevina Atkinsona.
Kompilovano v MS VC++ Toolkit 2003.
DeScratch
(int mindif, int asym, int maxgap, int maxwidth, int minlen, int maxlen, int maxangle, int blurlen, int keep, int border,
int modeY, int modeU, int modeV, int mindifUV, bool mark)
Všechny parametry jsou jmenné a volitelné.
mindif - minimální rozdíl hodnoty pixelu ve škrábanci od sousedních pixelů v jasové ploše
(od 1 do 255, výchozí 5):
asym - maximální asymetrie sousedních pixelů (od 0 do 255, výchozí 10)
maxgap - maximální uzavírací vertikální mezera (od 0 do 255, výchozí 3)
maxwidth - maximální šířka škrábance (1 nebo 3, výchozí=3)
minlen - minimální délka škrábance (výchozí = 100)
maxlen - maximální délka škrábance (výchozí = 1000)
maxangle - maximální úhel od vertikály (ve stupních, výchozí = 5)
blurlen - rádius vertikálního rozmazání pro analýzu snímku (výchozí = 15)
keep - procento zachovávaných detailů ze škrábanců (výchozí = 100)
border - tloušťka okraje kolem škrábance pro částečnou restauraci (výchozí = 2)
modeY - režim zpracování jasové (luma) plochy (0 - ne, 1 - nízké(černé), 2 - vysoké(bílé), 3 - oba, výchozí=1)
modeU - režim zpracování barevné (chroma) U plochy (0 - ne, 1 - nízké(zelené), 2 - vysoké (červené), 3 - obě, výchozí=0)
modeV - režim zpracování barevné (chroma) V plochy (0 - ne, 1 - nízké(žluté), 2 - vysoké(modré), 3 - obě, výchozí=0)
mindifUV - minimlní rozdíl hodnoty pixelu ve škrábanci od sousedních pixelů pro barevnostní (chroma) plochy
(od 0 do 255, výchozí 0):
pokud je = 0, pak vnitřní hodnota mindifUV je stejná jako mindif.
mark - označí škrábanec v ladícím (debug) režimu (true nebo false, výchozí = false)
(nastavuje vyloučené extrémní pixely na šedé, nastavuje pixely škrábanců na bílé nebo černé)
maxgap, maxwidth, minlen, blurlen, border by měli být zadány v pixelech.
MUSÍTE vyladit parametry pro vaše konkrétní video.
Použijte příkazy AviSynthu Greyscale(), UtoY(), VtoY()
, a parametr mark pro vyladění a nastavení.
Starý poškrábaný 8 mm film. Horní polovina snímku - před filtrem, spodní polovina snímku - po filtru
AviSource("input.avi") LoadPlugin("descratch.dll") ConvertToYV12() DeScratch(mindif=2)
Takové dlouhé šumové čáry se občas objeví v analogovém zachytávaném materiálu (vypuštění TV nebo VHS řádků, atd). Tento problém byl diskutovaný na Doom9, viz. článek Removal of clicks and scratches (July 10-31, 2004). Ale ve článku se nejdříve používal plugin DeSpot, což pro toto není nejvhodnější nástroj, kvůli velmi slabé úrovni šumu. DeScratch by mohl být efektivnější, nicméně také není ideální (staré verze mohou zpracovávat jen jasovou plochu). Samozřejmě musíte pro zpracování pomocí Descratch otočit (rotovat) klip (a nezapomenout po vyčištění otočit zpět :-).
Podívejte se na výsledky v některých VHS zdrojích (od Ivo).
Horní polovina snímku - před zpracováním , spodní polovina snímku - po zpracování:
LoadPlugin("descratch.dll") AviSource("drop-outs_.avi") ConvertToYV12() Crop(0,0,-0,288) # vybere horní část snímku pro ušetření plochy motitoru input=last AssumeTFF() SeparateFields() # pro analogový prokládaný zdroj TurnLeft() DeScratch(mindif=4, maxgap=20, minlen=300, blurlen=50, keep=100, border=0, maxangle=0) TurnRight() Weave() # obnoví pole StackVertical(input, last) # Porovná zdrojový snímek a snímek po odstranění škrábanců
Byly použité optimální parametry Descratch - velké minlen, nulový maxangle):
Pro odstranění šumu po vypuštěných barevných řádcích můžete použít režimy modeU, modeV a mindifUV.
Podívejte se na doom9 Avisynth fórum, vlákno http://forum.doom9.org/showthread.php?s=&threadid=67794
Tento program je FREE software, pod GNU GPL licence v2.
Maximální šířka škrábance je fixována na 1 nebo 3.
Plugin pracuje jen v YV12.
$English Date: 2006/12/15 19:29:25 $
Český překlad:26.4.2009