# STMedianFilter

## Abstrato

autor: Tom Barry
versão: 0.1.0.0
download: http://mywebpages.comcast.net/trbarry/downloads.htm
categoria: suavizadores Spatio-temporal
requisitos:

- YV12 & YUY2 Colorspace
- Suporte SSEMMX (=ISSE)

## Descrição

STMedianFilter é um filtro mediano (de movimento ligeiramente compensado) spatial/temporal.

De razoavelmente muito boa granulação, usando só píxeis adjacentes em espaço e tempo, olha em 26 locais adjacentes para os filtrar. Filtra luma e croma, mas em croma é um pouco mais limitado, como descrito depois.

USO - para usá-lo:

1) Coloque o STMedianFilter.dll em qualquer lugar num diretório. Você pode obtê-lo em www.trbarry.com/STMedianFilter.zip

2) Em seu arquivo Avisynth use comandos semelhantes para

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

E claro, substitua os nomes dos arquivos e diretório com o seu próprio e dê os valores inteiros como parâmetros. Os valores válidos para cada, são de 0 a 255.

S e T acima, postos para espaço e temporal, respectivamente.

Um bom ponto de partida para valores de parâmetros pode ser

    STMedianFilter(8,15,4,7)

Valores maiores filtram mais, mas mais artefatos. Descrições de parâmetros:

S_FilterThreshHold - não filtre píxel de espaço se muda mais que estes. Maiores valores podem causar perda de detalhe de linha, mas não é extremamente sensível.

S_EdgeThreshHold - não filtre píxel de espaço se em uma extremidade onde os valores mudam mais que isto. Parece ceder razoavelmente, assim pode ser elevado muito se desejado.

T_FilterThreshHold - não filtre píxel Temporal se mudar isto mais que estes. Grandes valores causarão fantasmas. Não fixe mais de 5-10 para evitar fantasma.

T_MotionThreshHold - não filtre píxel Temporal se valores de movimento não compensados mudarem mais que isto. Não fixe mais de 10 para evitar fantasma.

## Método de operação

Mas se eu entendo isso como um simples filtro mediano é um passo de corte onde um valor é fixado para não ir além de seus limites alto e baixo.

Por exemplo, se tivesse 3 píxeis seguidos com valores < 5,8,7 > você poderia cortar o do centro para não estar fora o baixo 5 ou o alto 7, assim o fixaria em 7.

Agora imagine você tinha uma pequena tela de vídeo 3x3, como uma superfície de um cubo de Rubik. Imagine o quadro prévio como a camada inferior do cubo, o quadro atual como a camada do meio e o próximo quadro o topo.

Então o píxel de centro atual seria o centro do cubo de Rubik e haveria 13 modos de você desenhar uma linha por ele e um par de dois vizinhos mais próximos.

O que eu fiz foi comparar cada um desses pares de vizinhos para ver qual par era mais concordante em valor. Eu usei esse par para cortar o valor do píxel central.

Eu também cortei o valor do píxel só se ambos:

1) Não mudassem o valor do píxel por mais que o valor do parâmetro do FilterThreshold, e

2) A quantia do 'movimento não compensado' (acordo em valor pelos vizinhos) fosse menos que o valor do parâmetro MotionThreshHold.

`$Date: 2006/03/26 18:11:54 $ Portuguese translation by RoLon`