# FluxSmooth

## Abstrato

autor: Ross Thomas (Sansgrip)
versão: 1.1a
download: http://www.avisynth.org/warpenterprises/
categoria: Suavizadores Spatio-temporal
requisitos:

- YV12 & YUY2 Colorspace
- Suporte ISSE

## Descrição

Uma das propriedades fundamentais dos ruídos é que são fortuitos. Uma das propriedades fundamentais de movimento é que não são. Esta é a premissa atrás de FluxSmooth que examina cada píxel e o compara ao correspondente prévio e último quadro. A suavização acontece se o valor de ambos são maiores, ou se ambos são menos que o valor no quadro atual.
Eu gosto de chamar isto de "píxel flutuante", então eu gosto de apagar da existência esse píxel calculando a média com seus vizinhos. Para FluxSmoothST, isto é feito (padrão) de uma maneira spatio-temporal, que para cada píxel flutuante, seus 8 vizinhos de espaço imediato como também seu 2 vizinhos temporais (o píxel acima mencionado das quadros prévios e próximos correspondentes) são considerados para inclusão na média. Se o valor de cada píxel estiver dentro do percentual especificado, é incluído. Se não, não é. FluxSmoothT executa só o calculo da média temporal.
Este filtro parece remover quase todos os ruídos de fontes de baixo ruído (como DVD) e muito ruído de fontes de alto ruído (como captura de TV a cabo), mantendo uma boa quantia de detalhes.
Se sua CPU suporta operações de inteiros SSE (Intel Pentium III e melhor, AMD Athlon e melhor) uma versão aperfeiçoada do algoritmo será usada.
Usando FluxSmoothT em vez de FluxSmoothST para suavização só temporal é muito, muito mais rápido (50% mais rápido em meu sistema).

## Uso

> `FluxSmoothT` (clip, int "temporal_threshold")
> `FluxSmoothST` (clip, int "temporal_threshold", int "spatial_threshold")

Parâmetro | Significado | Padrão
--- | --- | ---
temporal_threshold | Píxeis vizinhos de temporal dentro deste percentual do píxel atual são incluídos na média. Se fixo para -1, nenhum suavizador temporal acontece. (Não pode ser fixo a –1 em `FluxSmoothT`). | 7
spatial_threshold | Píxeis vizinhos de Spatial dentro deste percentual do píxel atual são incluídos na média. Se fixo para -1, nenhum suavizador de espaço acontece | 7

## Assuntos Conhecidos

- As extremidades do quadro não são processadas.
- O primeiro e último quadro de um clipe não são processados.
- Parece causar uma violação de acesso quando usado com codificação n-pass em CCE. Eu não pude duplicar isto. Pode ter sido relacionado ao esvaziamento de memória fixado por fabrice.

## TODO

- Aperfeiçoa código SSE com respeito a emparelhar, baias e assim por diante.

## Autor

Ross Thomas <ross at grinfinity.com>

## História

- 1.1a Ainda outro lançamento "oops". O píxel atual é considerado uma vez mais no código do cálculo da média - eu achei a falta disto muito agressiva, especialmente durante movimento rápido. Também fixado o estúpido "3am bug" que envolve um par de variáveis. Eu tinha declarado estática que não deve ter sido. Graças a krieger2005 por descobrir isso e ARDA por diagnosticá-lo.
- 1.1 Mudado o código do cálculo da média de forma que o píxel atual é excluído e produz melhor redução de ruídos. Também divide o código em dois filtros diferentes, FluxSmoothT e FluxSmoothST. O anterior faz suavização só temporal (equivalente a fixar "spatial_threshold=-1 " em FluxSmoothST) e é aproximadamente 50% mais rápido. Removida a versão Avisynth 2.0x para arrumar a base de código. Alguém ainda o usa? Meu agradecimento a fabrice e sh0dan para o lançamento 1.01 durante minha ausência estendida :).
- 1.01 Incluído por sh0dan:
  - Removido leak em AviSynth 2.5 modo YV12 (código por fabrice)
  - Tabelas e variáveis alinhadas.
  - Usar AviSynth BitBlt para copiar croma.
  - Não use salvar fluxo. (movntq)
  Ao todo um aumento aproximado de 15% de velocidade comparado à versão anterior. Todas as mudanças são marcadas com "sh0":.
- 1.0 Primeira "liberação estável". Eu acho que está bem testada, mas espere emergir uma porção de bugs e me chamar de mentiroso... Fixado um bug que, junto com um no resizers embutido, causou uma violação de acesso sob certas circunstâncias. Graças a sh0dan por descobrir isso:). Incluído SetCacheHints e atualizado no "AvisynthPluginInit2" na versão 2.5.
- 0.4 Implementada a versão iSSE aperfeiçoada que roda com aproximadamente o dobro da velocidade da versão C++. Algumas pequenas otimizações para a versão C++. Agora suavisa croma e também luma.
- 0.3 Fixado bug ruim que causou suavização incorreta: nenhum filtro no lugar mais. Padrões mudados para onde eles estavam, agora que o algoritmo trabalha corretamente. Gastado algum tempo testando o nível e afinando vários pedaços de código, assim deve ser agora significativamente mais rápido.
- 0.2 Fixado bug não fatal que causou um pedido para um quadro além do fim do clipe. Mudado para filtro no lugar, assim pode pressionar algumas otimizações aqui e lá. Mudados padrões muito alto. Primeira liberação Avisynth 2.5/YV12.
- 0.1 Primeira liberação. Código alfa.

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