VagueDenoiser
Abstrato
autor: Lefungus, Kurosu, Fizick
versão: 0.33.3
download: http://bag.hotmail.ru/vague/vaguedenoiser.dhtml
categoria: Suavizadores Spatial
requisitos:
- YV12 & YUY2 & RGB Colorspace
O que ele faz
Isto é um Wavelet com base em Denoiser.
Basicamente, transforma cada quadro da entrada de vídeo no domínio de wavelet,
usando vários de seus filtros. E filtra alguns dos coeficientes obtidos. Faz
uma transformação wavelet inversa depois. Devido às propriedades wavelet,
deve resultar um bom alisado e ruído reduzido, sem borrar as características
do quadro. Esta transformação wavelet pode ser feita em cada superfície do
colorspace. Este filtro usa um wavelet do tutorial de Brislawn.
Exemplos de Uso do filtro VagueDenoiser
(todas as linhas do escrito de avisynth aqui são
só exemplos)
Alguns ajustes Lefungus (comentários sobre percentuais de Qian a vir) como
Para filtrar luz num filme. (medium
->threshold=1-1.5;strong->threshold=2-3)
VagueDenoiser(threshold=0.8, method=1, nsteps=6, chromaT=0.8)
Para filtrar luz num anime. (medium
->threshold=2; strong ->threshold=4)
VagueDenoiser(threshold=1.5, method=1, nsteps=6, chromaT=2.0)
Sintaxe do filtro VagueDenoiser
VagueDenoiser
(clip, int "threshold", int "method", int "nsteps", float "chromaT", bool "debug", bool "interlaced", int "wavelet", bool "Wiener", float "wratio", integer
"percent")
threshold: flutuante (padrão=0)
Filtro de força. Mais alto, mais filtrado será
o clipe. Percentual duro pode usar um valor mais alto que o suave antes do clipe
parecer filtrado demais.
Se fixo < 0, então "denoising"
(remove ruídos) de luminosidade será desativado
Se fixo = 0, então o percentual é calculado
automaticamente (adaptável)
method: -1 a 3 (padrão=3) O método da filtragem que usará.
-1 : Nenhum cálculo de percentual (propósito de
depurar)
0 : Cálculo do percentual duro. Todos os valores
abaixo do percentual serão zerados.
1 : Cálculo de percentual suave. Todos os valores
abaixo do percentual serão zerados. Todos os valores acima serão reduzidos
pelo percentual.
2 : Cálculo de percentual pseudo adaptável. Escala
a entrada de percentual, dependente dos dados "wavelet" locais (local
= nível de decomposição "wavelet"). Este modo está desativado!
3 : O cálculo de percentual Qian. Escala ou anula
coeficientes - intermediário entre (mais) suave e cálculo (menor) de
percentual duro.
nsteps: (padrão=4)
Número de vezes que o wavelet vai decompor o
quadro. Valores altos podem ser mais lentos mas os resultados serão melhores.
Valores sugeridos são 3-6.
O quadro não pode ser decomposto além de um
ponto particular (tipicamente, 8 para um quadro 640x480 - como 2^9 = 512 >
480)
chromaT: um flutuante (padrão=-1)
Valor de percentual fixado pelo filtro Croma.
Mais lento, mas dá melhores resultados
Se fixado < 0, então "denoising" de
Croma será desativado (modo padrão)
Se fixado = 0, então o percentual é calculado
automaticamente (adaptável)
debug: true ou false
Desativa o transformar inverso para exibição
direta (mas não normaliza coeficientes).
Também habilita saída
para a utilidade Debugview
interlaced: true ou false (padrão=false)
Tenta processar clipe de campos separadamente.
wavelet: um inteiro (padrão=1)
Seleciona o tipo do wavelet:
1 - Cohen-Daubechies-Feauveau 9/7 - popular,
provavelmente o melhor
2 - Brislawn 10/10 (aguçado, usado só em todas
as versões anteriores, de 0.23 a 0.29)
3 - Villasenor-Belzer-Liao 6/10
Wiener: true ou false (padrão=false)
Ativa dois passos ao WienerChop, modo
"denoising" forte com percentual alto (lento).
Primeiro passo é estimação de ruído para
transformar com o primeiro wavelet (diferente do selecionado) com colocações
selecionadas,
o segundo passo é o ótimo "denoising"
de Wiener com segundo wavelet (selecionado).
O segundo wavelet 1 é usado com o primeiro
wavelet 3 (estimação),
O segundo wavelet 2 é usado com primeiro wavelet
1 (estimação),
O segundo wavelet 3 é usado com o primeiro
wavelet 1 (estimação).
wratio: um flutuante (padrão=0.5)
O valor de desvio normal de ruído para
"denoising" Wiener como relação relativa para valor do percentual.
percent: um inteiro de 0 a 100 (padrão=75)
Parcial do "denoising" completo
(misturando quadro puro com fonte).
História e download
- v 0.12 First Release
- Precision problems corrected, 0 for threshold is now lossless.
- v 0.13
- Hard thresholding method enabled.
- Cosmetic changes.
- Avisynth parameters changed.
- v 0.2
- Implemented many new wavelet filters, thanks to the wavelet transform coder construction kit.
look at http://www.geoffdavis.net/ for more informations.
- Implemented nsteps parameter, that allow you to use n steps in the selected wavelet tranform.
- Some nsteps values could produce unvalid results, reducing this value generally solve the problem.
- Little optimizations from Shodan and Bidoche.
- v 0.22
- YUY2 colorspace support.
- Optionnal chroma filtering, (chroma=true/false).
- Cosmetic changes, code cleaned.
- Html documentation.
- v 0.23
- Code cleaned, filters class removed.
- Better parameters for compilation. Should really works on every cpu now.
- Removed all filters except Brislawn 10/10, so filter parameter has been removed.(it's like filter=7).
- A little speed increase (3-5fps on a 640x256 frame with nsteps=6).
- v 0.24
- Another speed increase, some critical loops unrolled (To infinity and beyond!)
- v 0.241
- height and width must be mod4, added errors messages if not
- Cleaned include thanks to Kurosu
- v 0.242
- Removed restrictions on width/height, fixed bugs
- Some improvements from Kurosu
- v 0.243
- v 0.25
- Little speed increase (due to some little profiles and vectorizations)
- added defaults
- added a visual.net compiled dll for compatibility purposes. This dll is slower
- v 0.26 (Kurosu)
- Merged (C++ frenzy) all assembly parts from Kurosu's version into one dll
- Hence, speed increase
- Undone previous vectorization optimizations
- All improvements are available for YV12 only
- v 0.26.1 (Kurosu)
- Merge from Sh0dan on copy
- Cleaner and safer management from Bidoche
- Fixed a crash that may have affected P4 users (Athlons with SSE support weren't affected as 3DNow! code, being the fatest, is always selected).
- Added debug output and NOOP threshold method (for debug purpose)
- v 0.27.0 (Kurosu)
- Continued integration and added framework for Haar wavelet (still not functionnal, deactivated)
- All optimizations proposed by Sh0dan, ARDA and Bidoche
- Some registers reuse (AMD-64 gonna rock) for some more speed (5%)
- Added Qian thresholding
- v 0.27.1 (Kurosu)
- Fixed YUY2 mode
- Added RGB24 and RGB32 mode
- The 3 above modes are unlikely to get any speed optimization
- v 0.28.0 (Kurosu)
- Fixed all modes to properly process what needs to be processed (small speedup)
- Unrolled float2byte conversion, little speed-up
- Added interlaced (see option with that name) support to YV12 colorspace
- Workspace compatible with ICL7. dll isn't compiled in that mode for legal reasons (I don't own ICL)
- Decteted a major slowdown for MOD64 width. Avoid them, as applying this filter before resizing might be faster in fact (particularly true for widths of 512)
- v 0.28.1 (Kurosu)
- MOD64 width slowdown is due to something needing a dreadfull rewrite, so no fix
- Implemented cleaner support of YUY2 and RGB24/32
- Interlaced mode now works in all mode (processing in interlaced mode is a little bit faster but you loose precision)
- v 0.28.2 (Kurosu)
- Ported to nasm the assembly parts
- v 0.29 (Kurosu)
- v 0.30 (Fizick)
- Added (restored) CDF 9/7 wavelet (C version only) and wavelet selection option
- Added WienerChop two-pass denoising mode using two different wavelet basises.
- Replaced boolean "chroma" parameter to float "chromaT" as threshold value for chroma planes
- Added automatic (adaptive) threshold estimation
- 3DNow mode of hard thesholding temporary replaced by SSE or C versions.
- Fixed possible memory leakage bug for non YV12 modes
- v 0.31 (Fizick)
- Added noise ratio parameter for Wiener pass
- Fixed interlaced mode. Seems it now work.
- 3DNow mode of Qian thesholding temporary replaced by SSE or C versions.
- v 0.32 - July 09, 2004 (Released by Fizick, but part of work was done by Kurosu)
- Added Villasenor-Belzer-Liao 6/10 wavelet (not optimized C version only)
- Changed estimation wavelets to more optimal pairs for WienerChop mode.
- 3DNow optimized version of WienerChop and AutoThreshold - thanks to Kurosu.
- 3DNow mode of hard and Qian thesholding re-enabled after some bugs were fixed by Kurosu and Fizick.
- Small speed increasing mainly due to copy reverse order(
- but big slowdown for mod64 width (especially 512!) still exist).
- SSE float-byte conversion has bug for some width, temporary replaced to C version.
- Ported to NASM memcopy assembly function (no more non-NASM assembly).
- v 0.32.1 - July 10, 2004 (Fizick)
- Fixed bug in copy function, introduced in v.0.32
- Re-enabled SSE optimized float-byte and byte-float conversion after fixing some bugs
- v 0.33 - July 11, 2004 (Fizick)
- Fixed slowdown for mod64 width by padding (thanks to MfA)
- Add partial denoising mode (by blending with source)
- Fixed bug with AutoThreshold for 3DNow.
- AutoThreshold is now also dependent from "wratio" parameter.
- Added messages for Debugview utility.
- Change some parameters default values to more optimal (for me?):
- thresh=0 (auto), method=3, nsteps=4, wavelet=1, percent=75.
- v 0.33.1 - July 13, 2004 (Fizick)
- Fixed bug with mod64 width for SSE (by pad increasing from 2 to 4)
- v 0.33.2 - July 17, 2004 (Fizick)
- Fixed bug with default values.
- v 0.33.3 - July 21, 2004 (Fizick)
- Fixed bug with YUY2 (introduced in v.0.32.1)
Créditos
* Todos do Doom9.org para suas deliberações.
* MarcFD por sua documentação html de mpegdec3.
Este html é o mesmo mas com conteúdos modificados.
* Lefungus por sua documentação html
VagueDenoiser. Este html é o mesmo mas com conteúdos modificados. :)
* Kurosu por sua documentação html VagueDenoiser.
Este html é o mesmo mas com conteúdos modificados. :-)
* Geoff Davis, o autor do kit de construção do
transformador coder wavelet.
* Lefungus, o criador do VagueDenoiser.
* Kurosu, reorganização e otimizações do código.
* Fizick, algumas desorganizações e desotimizações
(?) do código. :-)
Distribuição do Código
Este é um sofware de distribuição livre sob as
condições do GNU-GPL v2
Contacto
Você pode mandar e-mail a Lefungus para:
lefungus (arroba) altern (ponto) org para a maioria das sugestões, relato de
bug, pedido de característica, ou o que for.
Os assuntos de Otimização são de Kurosu.
Fizick não é responsável por coisa alguma, mas
normalmente se esforça para a perfeição :)
Vá em http://forum.doom9.org
para suporte.
$Date: 2006/03/26 18:11:54 $ Portuguese translation by RoLon