# 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

- Pixely uvnitř spatial_radius okrajů nejsou zpracovány.
- Snímky uvnitř temporal_radius na začátku a konci klipu nejsou zpracovány.
- Zatímco algoritmus je celkem dobře optimalizován je stále docela pomalý, ale velmi krátké testy ukazují, že by mohl být trochu rychlejší než Convolution3D v režimu preset="movieHQ" .

## 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í

- Optimalizace jak algoritmická tak verze implementace kódu assembleru kritických částí algoritmu.
- Vylepšení detektoru pohybu, tak že bude citlivější na pohyb v oblastech s nižším kontrastem.

## 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`