Quando vem aos suavizadores há duas variedades principais: suavizadores "temporal" e suavizadores "spatial". Os suavizadores "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 suavizadores "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 suavizadores "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 suavizadores "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.
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 |
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.
Ross Thomas <ross em grinfinity.com>
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