# STMedianFilter

## Přehled

autor: Tom Barry
verze: 0.1.0.3
stáhnout: http://www6.impacthosting.com/trbarry/downloads.htm, http://www.avisynth.org/warpenterprises/
kategorie: Prostorově časové vyhlazovače
požadavky:

- YV12 & YUY2 Barevné prostředí
- SSEMMX (=ISSE) podpora

licence: GPL

## Popis

STMedianFilter je (mírně pohybově kompenzovaný) prostorově/časový mediánový filtr.

Je docela jemnozrnný, používá jen sousední pixely v prostoru a času, takže se dívá na 26 sousedních pozic pro filtrování každé pozice. Nyní filtruje jak jas, tak barevnost, ale filtrování barevnosti je trochu více omezené, jak je popsáno níže.

POUŽITÍ - Pro použití prostě:

1) Umístěte STMedianFilter.dll do nějaké složky. Můžete ho získat z www.trbarry.com/STMedianFilter.zip

2) Ve vašem Avisynth souboru použijte příkazy podobné těmto;

    LoadPlugin("F:\STMedianFilter\STMedianFilter.dll")
    Avisource("D:\kdekoli\mujsoubor.avi")
    STMedianFilter(S_FilterThreshHold, S_EdgeThreshHold, T_FilterThreshHold, T_MotionThreshHold)

Samozřejmě nahraďte jména souborů a složek vašimi vlastními a doplňte celočíselné hodnoty parametrů. Platné hodnoty pro každý z nich jsou od 0 do 255.

S a T výše označují prostorový (spatial) a časový (temporal) režim.

Dobrým startovním místem pro hodnoty parametrů by mohly být

    STMedianFilter(8,15,4,7)

Větší hodnoty způsobí více filtrování, ale více artefaktů.

### Popis parametrů:

S_FilterThreshHold - nefiltruje pixel prostorově, pokud by se měnil více než o tuto hodnotu. Větší hodnoty mohou způsobit ztrátu pěkně podrobných obrysů, ale není to příliš citlivé.

S_EdgeThreshHold - nefiltruje pixel prostorově, pokud se hodnoty na hranách mění více než tato hodnota. Zdá se, že je docela shovívavý, takže může být podle přání hodně zvyšován.

T_FilterThreshHold - nefiltruje pixel časově, pokud by se měnil více než o tuto hodnotu. Větší hodnoty způsobí duchy. Nenastavujte přes 5-10 , aby jste se vyhnuli duchům.

T_MotionThreshHold - nefiltruje pixel časově, pokud se nekompenzované hodnoty pohybu mění více než o tuto hodnotu. Nenastavujte přes 10, aby jste se vyhnuli duchům.

## Metoda práce

Pokud tomu správně rozumím, jednoduchý mediánový filtr je prostě ořezávací krok, kde se nastavuje hodnota tak, aby nevyšla z určitých mezí - vysoké i nízké jeho sousedů.

Například, pokud jste měli 3 pixely v řádku, které měli hodnoty <5,8,7> mohli by jste oříznout středovou hodnotu aby nebyla mimo mezí - zespoda 5 , nebo shora 7, takže by jste ho nastavili na 7.

Teď si představte, že jste měli malý 3x3 video monitor, podobný ploše Rubikovy kostky. Obraz předchozího snímku byl spodní vrstvou kostky, aktuální snímek byl střední vrstvou, následující snímek byl horní.

Pak aktuální středový pixel by byl právě ve středu Rubikovy kostky a bylo by 13 způsobů jakými by jste mohli nakreslit čáru přes něj s jeho nejbližšími dvěma sousedy.

Já jsem porovnal každý z těchto párů sousedů, abych viděl který pár nejvíce odpovídal hodnotě. Použil jsem tento pár k oříznutí hodnoty středového pixelu.

Také jsem oříznul hodnotu pixelu jestliže:

1) by to nezměnilo hodnotu pixelu o více než hodnotu některého parametru FilterThreshold, a také;

2) množství 'nekompenzovaného pohybu' (soulad s hodnotami sousedů) byl menší než hodnota parametru MotionThreshHold.

## Seznam změn

2004/08/19 v.0.1.0.3 Released by Fizick 2005/01/30

- Fixed bug with spatial filter radius for YV12

2004/08/10 V 0.1.0.2 by Fizick - not public

- Fix one main bug (for both YUY2 and YV12 modes):
  in all previous versions light pixels were not filtered,
  both S_EdgeThreshHold and T_MotionThreshHold did not work also.

2003/06/22 V 0.1.0.1 by Tom Barry

- Fix bug affecting YV12 only

2003/01/22 V 0.1.0.0 by Tom Barry

- Remove chroma filtering again. Add YV12 support. Use Pluginit2
  Also remove Horizontal parms, add them to spatial.
  Hopefully fix purple tint.

2002/08/03 V 0.0.3.0 by Tom Barry

- Add some chroma filtering

2002/08/03 V 0.0.2.0 by Tom Barry

- Bugs, Split out spatial, Temporal, Horizontal user parms

2002/08/02 V 0.0.1.0 by Tom Barry

- Initial test release

`$English Date: 2005/07/10 16:11:01 $`

`Český překlad:23.4.2009`