NoMoSmooth

Přehled

autor: Sansgrip (Ross Thomas), verzi 0.1b pro AviSynth 2.5 zkompiloval Wilbert
verze: 0.1b
stáhnout: http://kvcd.net/sansgrip/avisynth/, http://www.avisynth.org/warpenterprises/
kategorie: Prostorově-časové odšumovače
požadavky: YUY2 Barevné prostředí

Popis

Pokud se jedná o vyhlazovače, existují dva hlavní druhy: časové (temporal) vyhlazovače a prostorové (spatial) vyhlazovače. Časové vyhlazovače pracují tak, že se dívají na snímky kolem aktuálního a průměrují odpovídající pixely dohromady, v případě, že jsou považovány za dostatečně podobné (a proto by mohly být šumem). Prostorové vyhlazovače pracují podobným způsobem, kromě toho, že se dívají na okolní pixely uvnitř toho samého snímku. Některé filtry jsou hybridy těchto dvou, včetně tohoto a výborného Convolution3D.

Každý přístup má své výhody a nevýhody. Výbornou věcí u časových vyhlazovačů je, že dělají fantastickou práci při vyčištění šumu, když je správně nastavíte, ale také mohou generovat některé velmi ošklivé artefakty, obzvláště když pracujete s pohybem. Prostorové vyhlazovače, mohou být na druhou stranu celkem destruktivní k detailům vašeho obrazu, ale jsou výborné v oblastech se silným pohybem protože ty mají málo detailů a pro zpozorování artefaktů se ostatně pohybují příliš rychle.

Ideální by pak bylo, kdyby se časový vyhlazovač použil na relativně statické oblasti a prostorový vyhlazovač na pohyblivé. To je to, co se tento filtr pokouší dělat, a cílem je dosáhnou vyšší kvality výsledku (t.j. méně viditelné vyhlazení) než u Convolution3D , ale s menším dopadem na komprimovatelnost.

Navíc k tomuto přístupu založenému na pohybu, NoMoSmooth používá další techniku ve snaze zachovat tolik existujících detailů kolik je možné: jsou vyhlazovány jen ty pixely, které jsou "fluktuační". Jinými slovy, jsou dané tři snímky v řadě s aktuálním snímkem uprostřed, prověřovaný pixel bude uvažován jen pro jeden typ vyhlazování, pokud je buď větší než oba odpovídající pixely v předchozím a následujícím snímku, nebo menší než oba. To by mohlo být považováno za velmi zjednodušený "detektor šumu" a zdá se, že pomůže snížit časové vyhlazení důležitých detailů jako ty v odstínech kůže.

Použití

NoMoSmooth (clip, int "motion_threshold", int "temporal_radius", int "temporal_threshold", int "spatial_radius", int "spatial_threshold", bool "show")

Parametr Význam Výchozí
motion_threshold

Ovládá jak má být detektor pohybu citlivý, nižší hodnoty jsou citlivější (vidí více pohybu) a vyšší jsou méně citlivé. V pozdější verzi tohoto souboru bych mohl jít do více podrobností algoritmu, ale zatím, pokud vás to zajímá, se podívejte do zdrojového kódu.

40
temporal_radius Určuje jak daleko si časový vyhlazovač v klipu troufne pracovat. Pokud je nastaven na 2, je zkoumáno prověřováno celkem 5 snímků, 2 na každou " stranu" toho aktuálního. 1
temporal_threshold Když časový vyhlazovač průměruje, započítá pouze hodnoty uvnitř této prahové hodnoty pixelu v aktuálním snímku. 6
spatial_radius Určuje kolik pixelů bude prostorový vyhlazovač uvažovat při své práci. Když je nastaven na 2 , je prověřeno celkem 25 pixelů, s aktuálním pixelem ve středu. 1
spatial_threshold Prostorový vyhlazovač započítá jen hodnoty uvnitř této prahové hodnoty, když průměruje. 3
show Pukud je true, neuskuteční se žádné vyhlazování, ale oblasti považované za pohyblivé (v souladu s parametrem motion_threshold ) budou zvýrazněny líbivou světle šedou. false

Známé problémy

Autorská práva

Na tomto kódu nejsou žádná autorská práva, a nejsou žádné podmínky k jeho distribuci nebo použití. Dělejte s ním co chcete.

Na dopracování

Autor

Ross Thomas <ross zavináč grinfinity.com>

Historie

Verze Popis
0.1b Compiled for AviSynth v2.5 by Wilbert. [YUY2 required!]
0.1a Fixed off-by-one error that caused an access violation when height > 462.
0.1 Total rewrite with a number of algorithmic improvements, much more verbose comments and widespread use of assertions. Made brief preparations for an eventual YV12 version. Implemented "noise detector". First official (yet still alpha) release.
0.0c Back on track. Rewrote again, this time making a conscious effort not to duplicate code already in the core. Implemented a motion detector so that areas in motion get spatially softened and static areas get softened temporally. The name "NoMoSmooth" makes less sense every time I read it.
0.0b Highly embarrassing version algorithmically identical to TemporalSoften which must never be spoken of again.
0.0a Rewrote from scratch and optimized the algorithm somewhat, so now is slightly faster. A change in the algorithm both removed the need for noise_threshold and made show mode extremely difficult to implement.
0.0 Proof of concept code. Hard hats must be worn in this area.

$English Date: 2006/12/15 19:29:25 $

Český překlad:28.4.2009