# NoMoSmooth

## Abstrato

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

## Descrição

Quando vem aos suavizador es há duas variedades principais: suavizador es "temporal" e suavizador es "spatial". Os s uavizador es "temporal" trabalham examinando os quadros em torno do atual e calculando a média dos píxeis correspondentes se julgados semelhantes o bastante (provavelmente é ruído). Os s uavizador es "spatial" trabalham de um modo semelhante, exceto que examinam os píxeis próximos, no mesmo quadro. Alguns filtros são um híbrido dos dois, incluindo este aqui e o excelente Convolution3D.

Cada aproximação tem suas vantagens e desvantagens. A grande coisa sobre suavizador es "temporal" é que eles fazem um trabalho fantástico eliminando ruído quando é ajustado certo, mas eles também podem gerar alguns artefatos muito feios, particularmente ao lidar com movimento. Por outro lado, os suavizador es "spatial" podem ser bastante destrutivos nos detalhes de sua imagem, mas é incrível em áreas de muito movimento porque esses têm poucos detalhes e se movem muito depressa para que qualquer artefato seja notado.

Em condições ideais, pode-se aplicar um suavizador temporal a áreas relativamente estáticas e um suavizador de espaço às móveis. Isso é o que este filtro tenta fazer e o objetivo é um resultado de qualidade mais alta (menos perceptível) que Convolution3D mas com correspondentemente menor impacto em compressibilidade.

Além desta aproximação baseada em movimento, NoMoSmooth emprega outra técnica para tentar reter detalhe existente tanto quanto possível: só os píxeis flutuantes são suavizados. Em outras palavras, determinados três quadros numa linha com o atual no centro, os píxeis que são examinados só serão considerados a um tipo de suavizador se é maior que ambos os píxeis correspondentes nos quadros prévios e próximos, ou menor que ambos. Isto poderia ser considerado um "detector de ruído" muito simplista e pode parecer ajudar a reduzir a suaviza ção temporal em detalhes importantes como os de tons de pele.

## Uso

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

Parâmetro | Sentido | Padrão
--- | --- | ---
motion_threshold | Controla a sensibilidade do detector de movimento, com valores mais baixos sendo mais sensíveis (vendo mais movimento) e com mais alto, menos sensíveis. Eu poderia entrar em mais detalhe no algoritmo numa versão posterior deste arquivo, mas por ora se você é curioso olhe a fonte. | 40
temporal_radius | Determina quanto o suavizador temporal se aventura no clipe para fazer seu trabalho. Se fixo em 2 um total de 5 quadros é examinado, 2 em cada "lado" do atual. | 1
temporal_threshold | Quando o suavizador temporal está calculando a média só incluirá valores dentro deste percentual do píxel no quadro atual. | 6
spatial_radius | Determina quantos píxeis o suavizador espacial considera ao fazer seu trabalho. Se fixo em 2, um total de 25 píxeis são examinados, com o píxel atual no centro. | 1
spatial_threshold | O suavizador espacial só inclui valores neste percentual quando estiver calculando a média. | 3
show | Se true, nenhuma suavização será levada a cabo, mas áreas julgadas de movimento (pelo parâmetro motion_threshold) serão realçadas com uma bela luz cinzenta. | false

## Assuntos Conhecidos

- Os píxeis nas extremidades spatial_radius são ignorados.
- Os quadros em temporal_radius dos fins do clipe são ignorados..
- Enquanto o algoritmo está sendo razoavelmente bem aperfeiçoado, ainda é bem lento, mas breves testes indicam que pode ser um pouco mais rápido que Convolution3D no modo preset="movieHQ".

## CopyRight

Há nenhum direito autoral protegido neste código e nenhuma condição em sua distribuição ou uso. Faça o que quiser com ele.

## TODO

- Aperfeiçoar o algoritmo e implementar as versões do código da linguagem assembly das suas partes críticas.
- Melhorar o detector de movimento de forma a ser mais sensível ao movimento em áreas de baixo-contraste.

## Autor

Ross Thomas <ross em grinfinity.com>

## História

Versão | Descrição
--- | ---
0.1b | Compilado para AviSynth v2.5 por Wilbert. [requerido YUY2!]
0.1a | Fixado um erro que causou uma violação de acesso quando altura > 462.
0.1 | Reescrito totalmente com várias melhorias algorítmicas, comentários muito mais eloqüentes e difundido o uso de afirmações. Preparações breves feitas para uma eventual versão de YV12. Implementado o "detector de ruído". Primeiro lançamento oficial (ainda alpha).
0.0c | Atrás da pista. Reescrito novamente, fazendo agora um esforço consciente para não duplicar o código no coração. Implementado um detector de movimento de forma que em áreas de movimento tenha um espaço suave e as áreas estáticas suavizadas de forma temporária. O nome "NoMoSmooth" tem menos sentido toda vez que leio.
0.0b | Versão idêntica ao algoritmo de TemporalSoften altamente embaraçosa e que nunca mais deve ser falada.
0.0a | Reescrito do nada e aperfeiçoado um pouco o algoritmo, agora ligeiramente mais rápido. Uma mudança no algoritmo removida a necessidade do noise_threshold e fez o modo show extremamente difícil de implementar.
0.0 | Prova de código de conceito. Devem ser usados chapéus duros nesta área.

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