Sunteți pe pagina 1din 43

Manual AviSynth

Hola, linker26, tienes 0 mensajes, 0 son nuevos.


Mostrar mensajes no leídos desde la última visita.
Mostrar nuevas respuestas a tus mensajes.
Mostrar temas sin respuestas.
Mostrar todos mis mensajes.

Septiembre 20, 2010, 16:40:41

Noticias: MKVToolnix 4.2.0

Eliminados diversos bugs en el tratamiento y segmentación de archivos. Eliminada la


compresión de cabeceras para MPEG-4 part 2 (DivX/Xvid). Activado por defecto la
compresión de cabeceras para MPEG-4 part 10 (AVC/h.264).

http://www.mundodivx.org/foro/index.php?topic=39095.0 Buscar... Buscar Este tema

Foro MundoDivX | General y otros temas | Manuales | Tema: Manual AviSynth

Moderadores: Dressler, Burnout, LUCHOO, Amármol, 888 « anterior próximo »

Páginas: [1]
linker26 y 0 Visitantes están viendo este tema.

Autor Tema: Manual AviSynth (Leído 7443 veces)

888 Manual AviSynth


Moderador « Post inicial: Noviembre 02, 2009, 18:50:47 »

Desconectado

Sexo:
Presentacion
Reg: 26-06-2006
Mensajes: 8.122 Este manual se encuentra en un estado de constante actualizacion y expansion, y probablemente lo este por siempre , dado el tipo
de programa que es AviSynth y la enorme cantidad de filtros que existen y faltan ser agregados asi como tambien todos los nuevos
que continuan saliendo. Por eso sepan que los filtros tratados aqui no son todos los disponibles (aun? ), ni siquiera cerca.
En principio el objetivo inicial de servir como introduccion a AviSynth creo que fue alcanzado, pero si no lo creen asi por favor dejen
un comentario sobre lo que les parece que falta para cumplir con el mismo.

Las consultas sobre el funcionamiento de los filtros y recomendaciones sobre su aplicacion por favor realicenlas en hilo nuevo en el
subforo de edicion de video.
Sugerencias, criticas y comentarios sobre el manual son muy bienvenidos y pueden hacerlas en este hilo, desde donde tambien
pueden colaborar con el manual, nomas publiquen alli la explicacion del filtro que deseen y este sera agregado a la brevedad dejando
por supuesto constancia de su colaboracion.

Colaboran con este manual:


overdrive80
ElMagno90
piscator
Nagash
Ferny
Burnout
LUCHOO

Introduccion
AviSynth es un programa libre y gratuito destinado a realizar frameserver y edicion de videos, aunque no es un programa de edicion
convencional como los que estan acostumbrados a usar. Para darse una idea de porque, carece completamente de una interfaz grafica
desde donde puedan ejecutar sus opciones y/o configurarlo. En su lugar, la configuracion se "escribe" enteramente sobre un archivo de
texto sin formato, mediante el uso de un lenguaje propio de AviSynth. En cuanto a su ejecucion, esta es en todo momento
transparente para el usuario (salvo quizas en casos de error en la configuracion).
De forma muy basica y breve, el funcionamiento podria resumirse asi: AviSynth toma video y/o audio descomprimido (la decodificacion
siempre es externa) y se ocupa de procesarlo en tiempo real mediante la aplicacion de filtros (internos o externos) de muy variada
indole, para luego "soltarlo" y sea recibido por el programa compresor (encoder) o reproductor. Entonces AviSynth vendria a ser una
especie de intermediario, y por lo tanto requiere no solo que haya alguien antes que le entregue el video descomprimido
(decodificadores y/o demultiplexores), sino tambien alguien a continuacion (encoder o reproductor) a quien devolverle el video
filtrado. No funciona solo por su cuenta y esto tiene logica con lo dicho anteriormente sobre que su ejecucion es transparente, por ello
sin el programa a continuacion no se podria usar.
Volviendo a su configuracion, se dijo que se hacia a traves de un archivo de texto usando el lenguaje que entiende AviSynth. Es decir
que se deben escribir las instrucciones de lo que queremos que haga. A este archivo de texto con las instrucciones se le llama script, y
puede ser creado con el bloc de notas o similares pero siempre guardando sin formato (.txt), aunque para que AviSynth lo reconozca
como un script debe tener extension AVS. Tambien existen utilidades que permiten crear el script de forma mucho mas comoda e
incluso interactiva, siendo lo mas cercano a una interfaz grafica que se puede encontrar. En el script se pueden indicar los filtros que
se desean aplicar y su configuracion, teniendo en cuenta que AviSynth respeta el orden del texto en su ejecucion.
Es este archivo .avs el que luego debe cargarse al compresor o reproductor, donde una vez abierto AviSynth se encarga de que estos
vean un archivo AVI con video descomprimido, siendo esta la funcion principal del programa, tomar un video en algun formato
cualquiera (como minimo debe poder ser reproducido con los codecs instalados en el sistema) y entregarlo como un video AVI, funcion
denominada frameserver.

Descarga de AviSynth

La siguiente es su web oficial, donde pueden encontrar mas informacion sobre su funcionamiento, asi como tambien listados de la
mayorias de los filtros disponibles.

http://avisynth.org/

Durante la instalacion se les preguntara si desean habilitar ciertas opciones, como por ejemplo la de asociar a Avisynth los archivos de
extension AVS(Associate AVS with Notepad), recomendable activarla para asi identificar facilmente los script.
Tambien Add Avisynth Script to new items menú, que les permite acceder a ClickDerecho->Nuevo->AviSynth Script para crear
directamente un archivo con extension AVS.

Algunas de las utilidades que se pueden usar para la creacion y evaluacion de scripts son:

AVSEdit

AvsP (version original - discontinuada)

1 de 43
Manual AviSynth

AvsPmod (continuacion extraoficial del desarrollo de AvsP)

AviSynth Batch Scripter

Todas estas ofrecen exelentes ventajas y funciones, como la posibilidad de previsualizar o incluso (AvsP) de regular los parametros de
configuracion de los filtros mediante una interfaz grafica mientras se comprueban los resultados casi instantaneamente.

Una ves tienen el script terminado, pueden abrirlo con el programa que usen para codificar o reproducir como si de un archivo de
video de tratara, y Avisynth se ocupa del resto.
En teoria pueden cargar el archivo .avs en cualquier programa que soporte archivos AVI, ya que aunque este no se los muestre como
soportado pueden forzar la carga con la opcion comunmente llamada All Files de la ventana de carga.

Introduccion al Lenguaje de AviSynth


Como se menciono anteriormente AviSynth se configura a partir de archivos de texto sin formato denominados scripts. Aqui veremos
las bases del lenguaje que se debe emplear en dichos scripts para poder "ordenarle" a AviSynth lo que necesitamos que haga.

AviSynth va leyendo el script en orden, linea por linea hacia abajo, y de izquierda a derecha en cada linea, igual que como
acostumbramos a leer un libro. Debemos considerar esto cuando armemos nuestro script, ya que los comandos y filtros seran
ejecutados en este orden y el mismo es de suma importancia, como se comenta mas adelante.

Es importante aclarar que AviSynth ignora espacios en blanco dejados entre comandos o filtros sucesivos, asi como tambien
mayusculas y minusculas, es lo mismo usar DirectShowSource que diRecTShowSoURCE.

Nota: de aqui en mas aquello que se encuentra resaltado en amarillo corresponde a lenguaje de AviSynth, por ello lo veran en la
sintaxis y en los ejemplos; y lo que vean resaltado en verde son los parametros.

Filtro:
Comando que le indica a AviSynth que debe aplicar un determinado filtro en ese punto del script. Este comando se compone por el
nombre del filtro seguido de dos parentesis entre los que es posible dar valores personalizados a ciertos parametros que regulan su
configuracion.
Con esta denominacion de "filtro" aqui estamos incluyendo todos los tipos de descriptos mas adelante (internos, externos y funciones).

NombreDelFiltro()

Al margen del orden en que AviSynth ejecuta el script, los filtros sucesivos pueden ir de forma completamente arbitraria, considerando
que AviSynth ignora los espacios en blanco.
Por ejemplo, el siguiente script:

AviSource("C:\video.avi")
Resize(1280,720)
FFT3DFilter()

Es exactamente lo mismo que:

AviSource("C:\video.avi")Resize(1280,720)FFT3DFilter()

Ambas formas son identicas en funcionalidad, pero la primera resulta mucho mas ordenada para quien debe leer y trabajar con dicho
script.

Parametros:
La accion de un filtro se configura a partir de una serie de parametros, que son valores propios de cada filtro en particular y utilizados
internamente para calculo y/o configuracion.
A estos parametros se les debe asignar un cierto valor, segun el efecto que dicho valor tendra en el funcionamiento del filtro, para ello
consultar el manual. Cabe aclarar que en la enorme mayoria de los filtros los parametros ya vienen con un valor asignado por defecto,
en cuyo caso veran que con solo aplicar el comando del filtro el script es funcional. Sin embargo, aunque existen filtros cuyos valores
por defecto pueden ser aplicados a variedad de situaciones, siempre es aconsejable ajustarlos a nuestro video y asi lograr los
resultados optimos.
Dichos valores se pueden asignar de diferentes formas: en algunos filtros se debe conocer el orden en que se encuentran los
parametros dentro del parentesis y los valores se les asignan en el mismo orden separados por comas:

STMedianFilter(a,b,c,d) (obviamente deben conocer que representa cada parametro)


STMedianFilter(8,15,4,7)

Esto puede aplicarse a todos los filtros.


Sin embargo, en la gran mayoria se conoce el nombre de los parametros y el filtro es capaz de reconocerlos, por lo que se les puede
asignar su valor en cualquier orden mientras se los nombre como se ve a continuacion:

FFT3DFilter(sigma=2.0, bt=3, plane=0)

Esta es una forma mucho mas comoda y versatil, ya que nos permite solo asignar valores a aquellos parametros a los que necesitemos
modificar su valor por defecto.

Dentro de los parentesis pueden dejar cuantos espacios deseen, pero si quieren continuar en la siguiente linea deben emplear el
comando \, de la siguiente forma:

STMedianFilter(8, 15 \
,4,7)

Esta linea es perfectamente valida, que por supuesto queda muy fea pero es solo un ejemplo.

Los valores que puede tomar un cierto parametro dependen de su tipo, que puede ser: integer - numeros enteros (1, 3, 800, etc); real
- numeros reales (1.25, 6.9887, 0.006, etc); string - texto, que debe ser escrito entre comillas; boolean - puede ser verdadero (se
escribe True) o falso (se escribe False), sin comillas.
En el siguiente ejemplo ven la aplicacion de todos los tipos:

LSFmod(defaults="fast", strength=85, secure=false, ss_x=1.78)

Trabajando con multiples archivos de audio/video, asi como tambien multiples pistas de audio o video:
AviSynth solo es capaz de aplicar una cierta sucesion de filtros a un archivo o pista a la vez. Por ello, si deseamos aplicar un filtrado
diferenciado a diferentes pistas dentro del mismo script es necesario recurrir al uso de variables. Esta es una nocion basica de

2 de 43
Manual AviSynth

programacion, y aqui basta que la consideremos como un nombre que recibe una cierta fraccion de informacion, ya sea un valor
numerico, una pista de video o audio, texto, etc. Se utiliza para almacenar dicha informacion dentro del script cuando esta sera
requerida mas adelante.
En el caso particular que nos compete, estas variables se crean asignandole a un determinado archivo o pista de audio/video un cierto
nombre, el cual pasara a identificarlo de aqui en mas dentro del script y siempre que requieran aplicarle algun filtrado deberan invocar
a la variable que lo contiene. La asignacion se realiza utilizando el comando =, como se ve en el siguiente ejemplo:

video = AviSource("C:\mi_video.avi", audio=false)


audio = WAVSource("C:\mi_audio.wav")

Este par de lineas les permtite cargar audio y video por separado, asignando cada uno a una variable cuyo nombre es completamente
arbitrario, pero que por supuesto deben de emplear cada vez que requieran acceder a su contenido.

Cuando necesiten aplicarle un cierto filtrado al contenido de una variable, no solo deben de invocarla por su nombre sino tambien,
luego del filtrado, actualizar su contenido, lo cual pueden hacerlo de diferentes formas:

video = video.LSFmod()

Aqui se almacena en la variable video el resultado de la sucesion de filtros luego del comando =. En la jerga se dice que se "evalua" la
expresion luego del = y se asigna el resultado a la variable. Entonces lo que ocurre es que el contenido de la variable es primero
modificado y luego almacenado en la misma, sobreescribiendo el contenido original.
El . (punto) deben emplearlo para separar la variable del filtro que la sucede cuando ambos se encuentra pegados en la misma linea. O
tambien pueden simplemente dejar un espacio pero asi queda mas lindo.

Tambien pueden usar algo asi:

video.LSFMod()
video = last

En este otro caso se le aplica el filtrado a la variable video, para luego emplear la variable especial last para la asignacion. Esta
variable especial siempre contiene el ultimo resultado disponible en esa parte del script, siendo en este caso lo que queda luego de
aplicar el filtro LSFmod a la variable video.

A su vez, muchos filtros soportan introducir el video a filtrar como el primer parametro dentro de los parentesis, mediante la variable
que lo contiene. El mismo ejemplo anterior puede ser reescrito asi:

video = LSFmod(video, defaults="fast")

Si no se especifica nada entonces el filtro toma como entrada el ultimo video disponible (o lo que es lo mismo, aquel que se encuentre
dentro de la variable last).

LSFmod(defaults="fast") es lo mismo que: LSFmod(last, defaults="fast")

Y por ultimo, cuando finaliza el script se le debe indicar a AviSynth cual es el video de salida de entre todas las variables presentes.
Esto se realiza mediante el comando return, y colocando a continuacion el nombre de la variable que contiene el video. En nuestro
ejemplo, supongan que ya esta la etapa de filtrado de video y ahora queremos que la salida contenga dicho video mas el audio cargado
por separado al comienzo del script:

final = AudioDubEx(video,audio)
return final

El filtro AudioDubEx se encuentra explicado en la seccion sobre carga de archivos.


De no especificar nada el video a la salida sera aquel contenido en la variable last, o sea el ultimo video en ser filtrado. En este ultimo
ejemplo hubiera sido lo mismo poner:

AudioDubEx(video,audio)

En este caso es mas sencillo usar esta ultima sintaxis, pero esto es solo un simple ejemplo para fijar ideas, el uso del comando return
se hace especialmente util en scripts mas complejos.

Filtros
A continuacion se presentan los filtros actualmente abarcados por este manual, ordenados por categorias y subcategorias.
El formato de explicacion de cada filtro es el mismo: se da una breve (o no tanto) explicacion de su utilidad y a veces funcionamiento
(muy basico), se muestra su sintaxis (en la mayoria de los casos junto con el valor por defecto de los parametros) y se pasa a explicar
la funcion de cada parametro. A continuacion puede que haya algun que otro ejemplo y finalmente enlaces a la descarga,
documentacion y otra informacion relacionada.
Debajo del nombre de cada filtro tienen indicado los formatos de color sobre los que soporta trabajar. Si su video no se encuentra en
uno de estos, pueden recurrir al filtro ConvertToXXX que encuentran dentro de la categoria Color y Niveles.

AviSynth es capaz de trabajar con tres tipos diferentes de filtros, a saber:

Filtros Internos: Son aquellos incluidos con AviSynth y pueden usarse directamente.

Filtros Externos o Plugins: Filtros no incluidos con AviSynth, tambien llamados plugins. Se componen de un unico archivo .dll
aunque en algunos casos pueden requerir que otras librerias esten presentes en el sistema.
Para poder invocar un plugin en el script (mediante su sintaxis correspondiente) primero debe cargarse el mismo utilizando la
siguiente linea en el comienzo del script: LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la
carpeta por defecto: C:\Program Files\AviSynth 2.5\plugins.
Por supuesto que en un mismo script pueden utilizar tantos plugins como gusten, nada mas deben usar una linea por cada uno para
cargarlos, o ponerlos todos en la carpeta mencionada.

Funciones: Para crear los scripts, Avisynth ofrece un lenguaje mucho mas complejo de lo que se vemos aqui, donde solo nos
limitamos a nombrar los filtros y el modo de aplicarlos y configurarlos. Es posible "programar" lo que queremos que se haga con
determinados filtros, de una forma muy compleja y con el objetivo de lograr mejores resultados de los que se consiguen con la
aplicacion de los filtros "a lo bruto".
Estos scripts suelen contener la programacion, en el lenguaje que entiende AviSynth, de lo que se acostumbra a llamar "funcion", es
decir que cada script de este tipo define una funcion. La forma de trabajar con estas funciones es muy similar a como se trabaja con
los plugins, es decir que hay que asegurarse de cargarla al script y luego se la puede invocar mediante su sintaxis como si de otro
filtro se tratara.
Es importante tener en cuenta que el script solo contiene una programacion, pero no puede filtrar por si mismo, depende para
funcionar de los filtros internos o externos que se mencionan en las respectivas secciones del manual.

3 de 43
Manual AviSynth

Existen variedad de estos scripts, dedicados por ejemplo a aumento de nitidez (efecto sharpen), filtrado de ruido, filtrado de bloques,
etc.
Como la funcion suele requerir de filtros externos deben asegurarse de cargarlos como corresponde o tenerlos en la carpeta por
defecto.
Respecto a la carga de la funcion misma, se realiza mediante la linea: Import("C:\...\funcion.avs").
Para la carga automatica de las funciones pueden colocarlas en la carpeta por defecto junto al resto de los plugins, con la unica
salvedad de ponerles extension .avsi para que puedan ser reconocidas por AviSynth.

Orden de aplicacion de los filtros:


Es de fundamental importancia el orden en que aplican los diferentes filtros sobre el video, pudiendose afectar de forma nagativa la
calidad del video de usarse un orden incorrecto.

Este asunto lo discutimos en el hilo abierto para hablar sobre el manual y llegamos a cierto concenso, que son las consideraciones
presentadas a continuacion. Sin embargo sepan que el tema aun se encuentra abierto a modificaciones, por lo que son bienvenidos a
dar su opinion.

Consideraciones para ordenar los filtros dentro del script:

Desentrelazado: antes de cualquier otra etapa de filtrado.


DeBlock: antes de crop, resize y de otras etapas de filtrado de ruido.
Denoising temporal: antes del denoising espacial.
Anti-Aliasing: luego del resize.
Resize cuando se reduce la resolucion: antes del filtrado de ruido (denoisers).
DeHalo y Deringing: luego del filtrado general de ruido y luego de los filtros de nitidez (sharpen).

A continuacion pueden ver un script de ejemplo con el orden correcto:

Citar

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#CARGA DE ARCHIVOS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

DGDecode_mpeg2source("E:\DB_1\Opening\ope.d2v", info=3)

ColorMatrix(hints=true, threads=0)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#DESENTRELAZADO
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#CROOPING&RESIZE&COLOR
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

Crop(4,0,0,0)

Spline64Resize(720,480)

Tweak(sat=1.1)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#DENOISERS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

FFT3DFilter(sigma=2.2,bw=32,bh=32,ow=16,oh=16,plane=0,sharpen=0.6)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#SHARPENS&SMOOTHERS&ANTIALIASINGS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

LSFMOD(defaults="slow")

TBilateral(diameterL=5,diameterC=5,sDevL=1.300,sDevC=1.300,iDevL=7.000,iDevC=7.000,\
csL=1.000,csC=1.000,d2=false,chroma=true,kernS=2,kernI=2,resType=0)

SAA()

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#OTROS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

Toon(0.25)

GradFun2db(thr=1.3)

Carga y Manipulacion de Archivos


Lo que necesitan para que AviSynth pueda cargar sus archivos, ya sean audio, video o imagenes, asi como tambien los filtros que
permiten su manipulacion.

Filtros en esta categoria:


AVISource / AVIFileSource / OpenDMLSource
DirectShowSource
WAVSource
ImageSource
DGMPGDec
DGAVCDec
DGDecNV
NicAudio
BassAudio
Trim
AudioDub / AudioDubEx
UnalignedSplice / AlignedSplice
ImageWriter

Carga y Manipulacion de Archivos

4 de 43
Manual AviSynth

Transformaciones Geometricas
Todo lo que sirva para escalar, cortar, rotar, etc, la imagen.

Filtros en esta categoria:


AddBorders
Crop
FlipHorizontal / FlipVertical
Letterbox
Resize
Turn

Transformaciones Geometricas

Desentrelazado
Introduccion al contenido entrelazado y los filtros para solventarlo.

Filtros en esta categoria:


AnimeIVTC

Desentrelazado

Filtrado de rudio (denoisers)


Filtros destinados al ruido aleatorio.

Subcategorias y filtros:

Espaciales: FRFun3b - FRFun7 - SpatialSoften - UnDot - VagueDenoiser - SPresso - TBilateral - RemoveGrain.


Temporales: TemporalSoften.
Espacio-Temporales o 3D: DeGrainMedian - DFTTest - FFT3DFilter - FFT3DGPU - FluxSmooth - STMedianFilter.
Temporales con compensacion de movimiento: MVTools+MDegrain - TTempSmooth.

Denoisers

Restauracion
Por aqui estan los filtros que se dedican a eliminar o atenuar efectos indeseables del video, tambien llamados artifacts. Estos filtros
todos tienen un uso especifico, no son filtros para aplicar sobre ruido en general, sino especificamente sobre el efecto al que apuntan.

Subcategorias y filtros:

Debanding: GradFun2db - GradFun2DBmod.


Deblocking: BlindPP - DeBlock - DeBlock_QED - SmoothD - UnBlock.
Dehaloing y Deringing: DeHalo_alpha - EdgeCleaner - HQDering - YAHR.
Antialiasing: SharpAAMCmod.
Correccion de Color: Colormatrix.
Filtros para Eliminar Logos: rm_logo.

Restauracion

Aumento de nitidez (efecto sharpen)


La finalidad de estos filtros se explica por si sola.

Filtros en esta categoria:


aSharp
aWarpSharp / aWarpSharp2
MSharpen
LimitedSharpenFaster
LSFmod
SeeSaw
Sharpen

Filtros Sharpen

Multiproposito
Funciones dedicadas a mas de un tipo de filtrado, es decir que abarcan mas de una categoria.

MCTemporalDenoise

Ajustes
Ajustes de color, niveles y framerate.

Subcategorias y filtros:

5 de 43
Manual AviSynth

Conversion: ConvertToXXX.
Color y Niveles: ColorYUV - GreyScale - Tweak.
Framerate: AssumeFPS - ChangeFPS - Decimate - FDecimate - PullDown.
Oscurecimiento de lineas: FastLineDarkenMOD - Toon.

Ajustes

Varios
Subcategorias y filtros:

Efectos: AddGrainC - GrainFactory3 - Reverse.


Subtitulado: Subtitle - VSFilter.

Varios

« Última modificación: Septiembre 18, 2010, 15:45:30 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Carga y Manipulacion


Moderador « Respuesta #1: Noviembre 03, 2009, 19:20:03 »

Desconectado

Sexo:
Carga de Archivos
Reg: 26-06-2006
Mensajes: 8.122 Como AviSynth ejecuta el script en orden lo primero que debe ir en el script son las lineas que permiten la carga de video y/o audio,
que se muestran a continuacion.

AviSource("C:\...\video.avi", pixel_type=YV12)
AviFileSource("C:\...\video.avi", pixel_type=YV12)
OpenDMLSource("C:\...\video.avi", pixel_type=YV12)

AviSource permite cargar archivos AVI, WAV, AVS o VDR(frameserver de VirtualDub).


Esta detecta automaticamente el tipo de archivo y lo pasa a la interfaz AVIFile o OpenDML segun corresponda. En caso de encontrase
problemas se puede forzar el uso de alguna de estas utilizando las otras dos lineas de carga, teniendo en cuenta que AviFileSource
sirve para archivos AVI<2GB y el resto de formatos mencionados, mientras que OpenDMLSource puede abrir archivos AVI de
cualquier tamaño pero no los otros formatos.
Entre las comillas se indica la ruta completa al archivo, anque esta se puede obviar (solo se pone el nombre) si el archivo AVS(el
script) esta en la misma carpeta que dicho archivo.
Este modo de cargar el archivo requiere de un codec VFW para decodificar el video y de un codec ACM para decodificar el audio, asi
que deberan tener codecs con dicha capacidad instalados.
Pueden evitar la carga del audio colocando audio=false en la linea, quedando asi: AviSource("C:\...\video.avi", audio=false).
El parametro pixel_type sirve para forzar un formato de color en la salida del decodificador, siendo validos los siguientes: YV12,
YV411, YV16, YV24, YUY2, Y8, RGB32 y RGB24. Si se omite (que es lo mas comun) AviSynth usara el primer formato soportado por el
decodificador respetando el orden ya mostrado.

DirectShowSource("C:\...\video.mp4", fps=25)

Para poder cargar otros formatos, o tambien util si no tienen un codec VFW para el video o uno ACM para el audio pero si pueden
reproducir el archivo sin problemas, se utiliza esta linea que hace uso de la interfaz DirectShow y asi permite
demultiplexar/decodificar todo formato que posea un Decoder o Splitter directshow instalado en el sistema. Es decir, que deberan
tener instalados los decodificadores y demultiplexores como si los necesitaran para reproducir el video.
Definir el parametro fps sirve para fijar el frame rate de reproduccion, pero solo es necesario en ciertos casos de decoders directshow
que fallan en informarlo, como cuando se trata de achivos ASF o MOV.
Si desean solo cargar el video, pueden agregar audio=false a la linea, quedando video.mp4", audio=false), y viceversa con
video=false.
Para videos con framerate variable o VFR se puede agregar convertfps=true, que sirve para convertir a framerate constante o CFR
mediante duplicado de frames. Aparentemente ofrece mejores resultados si tambien se fija el framerate usando fps=120 o
fps=119.88.

WAVSource("C:\...\audio.wav")
WAVSource("C:\...\video.avi")

Para cargar un archivo externo de audio descomprimido en formato WAV, o tambien cargar solo el audio de un archivo
AVI(decodificandolo mediante la interfaz ACM).

ImageSource("C:\...\%d.bmp", start=0, end=1000, fps=24, pixel_type=RGB24)

Para carga de imagenes, ya sea sueltas o una secuencia de las mismas para formar un video. En este ultimo caso los archivos deberan
estar nombrados en orden adecuadamente.
start y end sirven para fijar un intervalo de carga. Los valores mostrados en la sintaxis son los que vienen por defecto.
pixel_type puede ser Y8, RGB24(por defecto) o RGB32. El canal alfa(transparencias) solo es cargado si se usa RGB32 y si es soportado
para el formato de imagen cargado.

Ejemplos:

ImageSource("C:\...\%d.jpg", 51, 256)


Carga todas las imagenes desde la 51.jpeg hasta la 256.jpeg formando un video que corre a 24 fps.

ImageSource("C:\...\%2d.png", end=69, fps=30)


Carga todas las imagenes desde la 00.png hasta la 69.png, formando un video que se reproduce a 30 fps.

ImageSource("C:\...\imagen.bmp", end=100)
Repite la imagen.bmp 100 veces, formando un video a 24 fps.

Plugins para carga de archivos


Existen plugins que pueden ser utilizados por AviSynth para cargar ciertos formatos de video y/o audio. Estos plugins se ocupan de la

6 de 43
Manual AviSynth

demultiplexacion y decodificacion (y opcional, de ajustes de Luminancia y crop), actuando asi como frameservers para AviSynth o
cualquier otro programa que soporte cargar los archivos de proyecto que crean los indexadores.
De esta forma se puede evitar usar los decodificadores del sistema y asi se gana en estabilidad. La carga de los mismos se puede
realizar manualmente mediante la linea LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la
carpeta por defecto: C:\Program Files\AviSynth 2.5\plugins.

El funcionamiento en el caso de los plugin para carga de video es comun a todos ellos, dado que son desarrollados todos por el mismo
autor. Este es basicamente asi: se incluyen en la descarga dos software diferentes, un programa llamado DG[...]Index.exe y el plugin
propiamente dicho de nombre DG[...]Decode.dll
Primero se debe usar el programa Index para abrir el video. Aqui es cuando deben extraer el audio, dado que estos plugin solo
procesan video, asi que el audio hay que tratarlo aparte. Tambien es posible aplicar algo de filtrado sencillo (Luminancia y crop)
mientras se observan los resultados en tiempo real, a manera de preview del video que obtendra AviSynth del plugin. Con este
programa se crea un archivo de proyecto que contiene informacion sobre el video a decodificar, incluidos los ajustes de luminancia y
crop que hayan hecho. Es este archivo de proyecto el que luego se carga desde el script de AviSynth y es a partir del mismo que el
decodificador (DG[...]Decode.dll) carga el video, decodifica y envia el video descomprimido a AviSynth para la aplicacion del script.

DGMPGDec
Este conjunto de utilidades permite cargar archivos con video en el formato MPEG-1 o MPEG-2, contenidos en alguna de las siguientes
extensiones soportadas: VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO.

Se usa asi: cargan el video al DGIndex.exe con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las opciones
de reproduccion en el menu File.
Para extraer el audio, pueden usar las opciones en Audio->Output Method, siendo estas: Disable (no se extrae nada); Demux Tracks
(eligen que pistas extraer); Demux All Tracks (extrae todas las pistas); Decode AC3 Track to WAV (extrae y decodifica hacia WAV). La
extraccion ocurre durante el proceso de creacion del archivo de proyecto .d2v
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos
los resultados se aplican en tiempo real.
Para crear el proyecto .d2v van a File->Save Project y guardan el mismo, el proceso demorara un cierto tiempo, pueden ver el
progreso en la linea de tiempo. Tambien, de paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de
video, mediante File->Save Project and Demux Video, o solo extraer las pistas de audio con Demux Audio-Only Stream.

Sintaxis para carga del video:


MPEG2Source("C:\...\video.d2v")

DGMPGDec

DGAVCDec
Para cargar archivos de video en el formato H264 o MPEG-4 AVC, el que puede encontrarse en alguno de los siguientes formatos de
archivo (extensiones): H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP.

Se procede de la siguiente manera: ejecutan DGAVCIndex.exe y cargan el archivo de video (File->Open). Una vez abierto pueden usar
el cursor para navegar por el mismo, o aprovechar las opciones de reproduccion (File->Play, Stop, Pause).
Pueden extraer (demultiplexar) el audio mediante Audio->Audio Demux, se abre una lista con las pistas detectadas, las marcan para
extraer con Set y las mismas seran demultiplexadas al guardar el proyecto. Pueden desmarcar usando Clear.
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos
los resultados se aplican en tiempo real.
Finalmente, para crear el archivo de proyecto .dga, utilizan File->Save Project para iniciar el proceso, cuyo avance puede ser
monitoreado mirando el cursor.
Al guardar el proyecto tambien es posible extraer el video a un archivo RAW (solo video) a partir de File->Save Project and Demux
Video.

Sintaxis para carga del video:


AVCSource("C:\...\video.dga")

Descarga

DGDecNV
Este plugin (DGDecodeNV.dll) tiene la particularidad de poseer soporte para la tecnologia CUDA de Nvidia. Gracias a esta es capaz de
entregar el procesamiento a la placa de video (GPU), aprovechando el impresionante poder de calculo que estas poseen y liberando asi
al CPU del proceso de decodificacion. Actualmente este plugin es de pago, aunque este es irrisorio (para donde se gane en dolares por
lo menos ) y solo necesario una vez.
No todas las placas de video Nvidia soportan CUDA, solo aquellas con PureVideo version VP2 o superior. Pueden consultar en esta lista.
Teniendo la placa, solo les faltan los drivers oficiales de Nvidia desde la version 191.07 en adelante.
Como ultimo paso antes de poder ejecutar el script, deben iniciar el servicio CUVID ejecutando el archivo CUVIDServer.exe, incluido
con la descarga del plugin.

Los formatos de video soportados, junto con sus posibles contenedores y/o extensiones, son:
MPEG-2 y MPEG-1 -> VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO.
H264 -> MKV, H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP.
VC-1 -> MKV, VC1, M2TS, Transport Streams.

Noten que en el caso de VC-1 no es soportada la extension WMV, en cuyo caso pueden recurrir a la herramienta GDSMux incluida con
el Haali Media Splitter para pasar de .wmv a .mkv

Se usa asi: ejecutan DGIndexNV.exe y cargan el video con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las
opciones de reproduccion File->Play/Preview/Stop/Pause-Resume.
La extraccion del audio se realiza desde Audio->Audio Demux. En el caso de un archivo TS (Transport Stream) se listan las pistas
detectadas y deben seleccionar cuales desean extraer: click sobre la pista->Set para agregar, Clear para quitar. La extraccion ocurre
durante el proceso de creacion del archivo de proyecto.
Cuando se trata de un archivo PS(Program Stream) o MKV las pistas se eligen de la misma forma pero se extraen desde ahi mismo
usando Demux.
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos
los resultados se aplican en tiempo real.

7 de 43
Manual AviSynth

Para crear el archivo de proyecto (.dgv si es VC-1, .dgm si es MPG o .dga si es H264), es decir iniciar el proceso de indexado, van a
File->Save Project y guardan el mismo. El proceso demora unos minutos, pueden ver el progreso en la linea de tiempo. Tambien, de
paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de video, mediante File->Save Project and Demux
Video.

Sintaxis para carga del video:


DGSource("C:\...\video.dgm")

Algunos de los parametros disponibles:


deinterlace, para desentrelazado usando el decodificador PureVideo de Nvidia. Puede tomar los valores: "0", por defecto, no se aplica
desentrelazado; "1", desentrelazado normal; "2", desentrelazado al doble del framerate original (o tambien llamado bobbing).
resize_w y resize_h permiten aplicar reescalado usando la GPU, y por supuesto representan la resolucion horizontal y vertical
respectivamente.

DGDecNV

NicAudio
Para carga de varios formatos audio.

Sintaxis:
AC3(Dolby Digital)
NicAC3Source("C:\...\audio.ac3",Channels,DRC)
DTS, DTSWAV
NicDTSSource("C:\...\audio.dts",Channels,DRC)

Channels: opcional, valor entero, maximo numero de canales a la salida, por ejemplo si cargan un .ac3 de 6 canales pueden hacer
Downmix a estereo si le ponen al parametro un valor de 2.
DRC(0,1): aplica el algoritmo de Dynamic Range Compresion, por defecto en 0. 1 aplica el perfil Normal del algoritmo.

MP1, MP2, MP3


NicMPG123Source("C:\...\audio.mp3",Normalize)

Normalize(0,1): si normalizar o no el volumen, por defecto en 0 (apagado).

LPCM
NicLPCMSource("C:\...\audio.lpcm",SampleRate,SampleBits,Channels)
WAV, WAVEFORMATEXTENSIBLE, W64, BWF, RF64, AU, AIFF y CAF
RaWavSource("C:\...\audio.wav",SampleRate,SampleBits,Channels)

SampleRate: valor entero a expresarse en Hz, representa la frecuencia de muestreo.


SampleBits: representa el tamaño de la muestra digital del audio. Valores validos: 8, 16, 24, 32. Y 33 solo para RAW (equivale a 32
float). LPCM tambien acepta 20, -8, -16, -24 y -32, siendo los valores negativos para audio LPCM de Blu-Ray (Big-Endian).

Descarga

BassAudio
Para carga de audio. Amplio soporte de formatos.
El plugin no es mas que una interfaz para AviSynth de las librerias decodificadoras provistas por: http://www.un4seen.com/, desde
donde pueden descargarlas.
Hay varias librerias, cada una dedicada a un determinado grupo de formatos. Segun que formato deseen cargar necesitaran que la
libreria que corresponda este acompañando al plugin (BassAudio.dll), pero en el script solo es necesario cargar este ultimo.
La libreria principal es el archivo bass.dll y soporta los formatos: MP1, MP2, MP3, OGG, WAV, AIFF, entre otros.
Otros formatos se soportan mediante Addons, es decir que ademas del archivo .dll que posee dicho soporte extra de formatos, tambien
debe estar presente bass.dll, todo junto al plugin. Pueden ver que hay disponible y para que formatos desde aqui, asi como descargar
lo que necesiten.

Sintaxis:
Para cargar el plugin
LoadPlugin("C:\...\BassAudio.dll")

Para cargar un archivo de audio


BassAudioSource("C:\...\audio.mp3")

El plugin lo consiguen como parte del BeHappy, ojo que puede ser que algunas versiones sean solo el ejecutable, busquen el programa
completo, descomprimen y lo encuentran en la carpeta plugins.

Filtros para Manipular Archivos


AudioDub / AudioDubEx
Este filtro une la pista de video del clip1 con la pista de audio del clip2, para formar una nueva pista de audio y video.

AudioDub(clip1, clip2)
AudioDubEx(clip1, clip2)

La diferencia entre las variantes es que la "Ex" no arroja un error cuando alguno de los clips no poseen la pista necesaria. Por ejemplo
si el clip1 no posee pista de video, en vez de dar error el resultado solo contendra la pista de audio del clip2. Y lo mismo vale si el clip2
no posee audio.

AlignedSplice / UnalignedSplice
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Para unir dos o mas videos, uno a continuacion del otro. La diferencia entre ambas alternativas es que AlignedSplice une los videos
teniendo en cuenta la sincronizacion del audio, es decir que corta y/o agrega silencio en la pista de audio del primer video segun sea

8 de 43
Manual AviSynth

necesario para evitar desincronzaciones.


UnalignedSplice debe usarse cuando originalmente las pistas de audio eran una sola continua.

AlignedSplice(clip1, clip2, clip3, ...)


UnalignedSplice(clip1, clip2, clip3, ...)

Tambien puede reemplazarse esta sintaxis por los simbolos + para representar UnalignedSplice y ++ para AlignedSplice, por
ejemplo asi:

AviSource("C\...\video1.avi") + AviSource("C\...\video2.avi")

Trim
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sirve para seleccionar un determinado trozo de un video. Se deben indicar el frame de inicio y frame final del trozo, siendo ambos
tambien incluidos en la seleccion. A partir de este filtro solo el trozo seleccionado continuara siendo procesado.
Tambien puede usarse para seleccionar diferentes partes del video no consecutivas, "sumando" la aplicacion del filtro a cada una de
ellas.

Sintaxis:
Trim(a,b,pad_audio)
Trim(a,b)+Trim(c,d)

Donde a y/o c son los frames iniciales y b y/o d los finales de cada trozo.
El segundo metodo puede usarse para cortar un sector intermedio del video, basta que a sea el frame 0(cero) y d el ultimo frame,
entonces se elimina el rango de frames desde b+1 hasta c-1.
pad_audio(true,false) por defecto activo, de ser desactivado (pad_audio=false) impide que el audio sea ajustado para coincidir con la
duracion del video.

Ejemplos extraidos de la wiki:


Trim(100,0) -> borra los primeros 100 frames, audio ajustado o cortado para coincidir con la duracion del video.
Trim(100,0,false) -> elimina los primeros 100 frames de audio y video. Las duraciones de audio y video resultantes permanecen
independientes.
Trim(100,-100) -> lo mismo que trim(100,199)
Trim(100,199,false) -> el audio sera cortado si es mas largo pero no ajustado de ser mas corto que el frame 199.
Trim(0,-1) -> devuelve solo el primer frame.
Trim(0,100)+Trim(200,300) -> conserva los frames 0 a 100 y 200 a 300, eliminando los frames desde 101 a 199.

ImageWriter
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Permite exportar el video en forma de secuencia de imagenes, o lo que es lo mismo permite extraer los frames hacia archivos de
imagenes sueltos.

Sintaxis y valores por defecto:


ImageWriter("C:\...\nombre_archivo", start=0, end=0, type=ebmp, info=false)

Entre comillas va la ubicacion y nombre de archivo que tendran las imagenes. AviSynth las nombra de la siguiente manera:
nombre_archivo000000.type, nombre_archivo000001.type, nombre_archivo000002.type, etc.
Mediante start y end pueden elegir que porcion del video desean exportar, marcando el frame de inicio y final. Por defecto ambos
valores en 0 indica que se exporta todo el video.
El formato de las imagenes se selecciona con type, pudiendo ser: bmp, dds, ebmp, jpg/jpe/jpeg, pal, pcx, png, pbm/pgm/ppm, raw,
sgi/bw/rgb/rgba, tga, tif/tiff. Por defecto se guardan en el formato nativo de AviSynth ebmp, que viene a ser un bmp con la posibilidad
de exportar en cualquier formato de color (YUY, RGB, etc). Si se usan los formatos Y8 o RGB el archivo ebmp es un bmp estandar,
pero de usarse el resto la compatibilidad probablemente quede restringida a AviSynth y el filtro ImageSource.
Para los demas formatos de imagen el color debe ser Y8 o RGB24/RGB32.
Con info=true se graba sobre el video si el frame fue exportado y de serlo el nombre de archivo de la imagen que le corresponde.

« Última modificación: Agosto 31, 2010, 22:00:43 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Re: Manual AviSynth nueva estructura (por favor no postear)


Moderador « Respuesta #2: Noviembre 03, 2009, 19:28:19 »

Desconectado

Sexo:
Filtros para Transformaciones Geometricas
Reg: 26-06-2006
Mensajes: 8.122
AddBorders
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
AddBorders(left,top,right,bottom,color)

En ciertos casos no es posible modificar el tamaño(espacial) de un vídeo con solo redimensionar dado que las resoluciones que se
deben obtener son fijas para cumplir algún estándar, entonces con solo dimensionar se dañaria el aspect ratio(AR) del mismo y este se
veria alargado o achatado; asi que para llegar a la resolucion definitiva hace falta completar los pixeles faltantes con bandas de un
color solido, para ello se usa el filtro AddBorders; este filtro agrega una banda de pixeles de algun color de altura configurable por
separado en cada margen.
Observen la sintaxis, los parametros left(izquierda), top(arriba), right(derecha) y bottom(abajo) representan la cantidad de
pixeles(valores enteros) que ocuparan las bandas contando desde cada uno de los cuatro margenes.
Lo mas comun es agregar bandas arriba y abajo, pero tambien se agregan en los cuatro lados por ejemplo cuando se desea solucionar
el efecto overscan.
El parametro color permite elegir un color distinto del negro (color por defecto). Este color lo deben indicar en codigo hexadecimal.
Aqui pueden ver una lista con los codigos y colores soportados, mientras que por aca pueden cotejar a que color corresponde cada
codigo.

Ejemplo:
AddBorders(0,64,0,64,$00FFFF)

9 de 43
Manual AviSynth

Esta linea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nomas .

Crop
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
Crop(left,top,-right,-bottom,align)

Este filtro sirve para cortar cierta cantidad de pixeles de los lados de la imagen.
Se configura indicando la cantidad a cortar de cada lado, donde left es izquierda, top es arriba, right es derecha y bottom es abajo. Y
deben colocar los ultimos dos valores negativos como se ve en la sintaxis.
El parametro align(true,false) permite activar(true) o desactivar(false, por defecto) la alineacion de la informacion que representa al
frame en memoria (RAM). Cuando se usa align=true el filtro, luego de cortar y almacenar la imagen en memoria de forma no
alineada, procede a copiarla hacia otra posicion pero esta vez alineada. Cuando la perdida de velocidad debido a esta copia es menor a
la perdida que tendria el filtro a continuacion si estuviera la imagen desalineada se logra una ganancia de velocidad, especialmente
cuando luego siguen filtros de suavizado (Smoothers).

Una variante del mismo filtro es la siguiente:


CropBottom(count,align)

Remueve count lineas de la parte inferior de la imagen, especialmente util para eliminar la distorsion inferior de un video capturardo
de un VHS.

FlipHorizontal / FlipVertical
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Rotan al video de tal manera que lo que se veia de izquierda-derecha pasa a verse de derecha-izquierda, en el caso del horizontal, el
vertical hace lo mismo pero en vertical valga la redundancia.
Dicho de otra forma el video pasa a verse como el original se veria en un espejo.

Sintaxis:
FlipHorizontal()
FlipVertical()

Letterbox
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Se ocupa de solapar sobre el video bandas negras o de color a eleccion, tapando la parte superior e inferior, y opcionalmente los lados,
del video.
Puede servir para cubrir bandas negras ya existentes que contengan ruido o para cubrir rudio, artifacts, etc de los bordes de un video.

Sintaxis y valores por defecto:


Letterbox(top, bottom, x1, x2, color=0)

Con top y bottom se fijan los tamaños en pixeles de las bandas superior e inferior respectivamente. Con x1 y x2 se cubren los laterales
izquierdo y derecho.
Para cambiar el color usan codigo hexadecimal, por ejemplo color=$00FFFF es cyan. Pueden consultar otros colores aqui.

Resize
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Este filtro se usa para modificar la resolucion del video, para asi estirarlo o comprimirlo(espacialmente hablando) lo necesario hasta
alcanzar la nueva resolución deseada. Existen unas cuantas variantes que se pueden usar:

Sintaxis:
BilinearResize(ancho,altura)
BicubicResize(ancho,altura,b,c)
LanczosResize(ancho,altura,taps)
Lanczos4Resize(ancho,altura)
GaussResize(ancho,altura,p)
BlackmanResize(ancho,altura,taps)
PointResize(ancho,altura)
SincResize(ancho,altura,taps)
SplineXXResize(ancho,altura) , donde XX puede ser 16, 36 o 64

El ancho y altura deben indicarse con valores enteros, dado que la unidad mas chica posible es el pixel. Tambien tengan en cuenta que
muchos codecs compresores requieren para su correcto funcionamiento que el video a comprimir tenga valores de resolucion, tanto
horizontal como vertical, multiplos de 8 o 16, asi que antes de aplicar el resize averiguen cual es el caso que les compete para no
encontrarse luego con errores inexplicables.

Explicacion Detallada de cada variante:

Bilinear: tiende a suavizar la imagen, esto significa que es el que menos detalle deja pasar al redimensionar; adecuado para cuando
usen bitrates bajos al comprimir, y/o cuando se reduce la resolucion.
Bicubic: es similar en funcionamiento al anterior, pero gracias a mejores algoritmos logra procesar un mayor nivel de detalle y por
ende es mejor para cuando se aumenta la resolucion, lograndose una imagen mas nitida, pero solo es recomendable cuando habra
suficiente bitrate como para comprimir dicho detalle extra, sino puede ser mas conveniente el Bilinear para evitar que la calidad se
vea afectada negativamente al comprimir. Puede ser personalizado mediante los parametros b y c que pueden ver en la sintaxis de
mas arriba. Estos son llamados blurring y ringing respectivamente; el blurring sirve para quitar nitidez, agregando un efecto "borroso",
eliminando detalle. Puede servir para evitar la aparicion de macrobloques al comprimir a bajos bitrates; mientras que el ringing hace
todo lo contrario, a mayores valores mas fino sera el filtro y mas detalle dejara pasar llegando tambien a producir el efecto de un filtro
sharpen(aumento de nitidez), con la posibilidad de aparicion de ruido si el filtro se setea muy fuerte. Con b=0 y c=0.75 el filtro es
identico al presente en VirtualDub, "VirtualDub`s Precise Bicubic". Un valor normal seria b=0 y c=0.5 para asi lograr una importante
ganacia de detalle respecto del Bilinear, valores mayores a c=0.6 pueden producir ruido. Los valores por defecto son: b=1/3 y c=1/3.
Lanczos: permite alcanzar muy alto nivel de detalle y con mejor calidad que el Bicubic, solo recomendable para altos bitrates. Sirve
como alternativa al Bicubic con valores de 0.6<c<0.75, aunque logra una calidad superior a este (menos ruido).
El valor de taps (1-100, por defecto en 3) permite elegir el numero de lobulos que utilizara el algoritmo (para saber que cornos es eso

10 de 43
Manual AviSynth

pueden leer algo aqui, en ingles y aunque entiendan el idioma no les garantizo que vayan a comprender algo, son cuestiones que
tienen que ver con la matematica del filtro). A mayor valor, mayor sera el detalle, pero comienza a aparecer notable ruido
acompañando al mismo (se acentua el "ringing", como se dice en la jerga).
Lanczos4: es el equivalente a LanczosResize(xxx,yyy,taps=4). O sea es lo mismo que Lanczos con un valor de taps=4.
BlackMan: esta es una modificación del Lanczos que permite lograr menos ruido con valores de taps altos, parametro que representa
lo mismo que en Lanczos, aunque aqui su valor por defecto es 4. Este filtro deberia lograr mejores resultados que el Lanczos4 si es
usado como viene por defecto.
Gauss: filtro basado en el algoritmo de Gauss. El parametro p ajusta la nitidez, desde 0 (menor detalle, mas borroso) hasta 100
(mayor detalle, mas fino). Su velocidad es similar al Lanczos4.
Point: es el filtro para resize mas simple que existe. Su uso no es para nada recomendable a no ser que se quiera disminuir la calidad
del vídeo adrede. Sus resultados suelen contener mucho bloque.
Sinc: incorporado a partir de la version 2.6, permite usar la funcion Sinc truncada. El parametro taps es lo mismo que en Lanczos.
SplineXX: este filtro tiene como objetivo alcanzar un muy alto nivel de detalle, pero generando menos ruido que si se usara Lanczos.
XX puede valor 16, 36 y 64, cuanto mayor este valor mayor sera el detalle.

Otra forma de uso:

Desde la versión 2.5.6 de avisynth existe la posibilidad de cortar la imagen desde el mismo filtro de resize, como con el filtro Crop. Si
se utiliza, en el proceso primero se corta y luego se aplica el resize.
Usar esta linea:
Crop(10, 10, 200, 300).BilinearResize(100, 150)

Seria casi lo mismo que usar la siguiente:


BilinearResize(100, 150, 10, 10, 200, 300)

Este metodo es conveniente usarlo cuando quieren cortar parte de la imagen previa a su reescalado. Usandolo se logra mayor calidad
en el reescalado de los bordes. Pero para cortar bandas negras o artifacts es mejor usar el filtro Crop.

Turn
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

TurnLeft()
TurnRight()
Turn180()

Rotan el video 90 grados hacia la izquierda(left), derecha(right) o 180 grados.

Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Denoisers
Moderador « Respuesta #3: Noviembre 06, 2009, 19:56:38 »

Desconectado

Sexo:
Denoisers Espaciales
Reg: 26-06-2006
Mensajes: 8.122 Son aquellos que filtran un determinado pixel basandose en informacion obtenida del analisis de los pixeles adyacentes. Por ello un
parametro que muchos de estos filtros tienen en comun (asi como tambien los 3D) es aquel que regula que tan lejos del pixel se
extiende el analisis. Como se imaginaran aumentar dicho radio resulta en perdida de velocidad pero tambien aporta mejoras de
calidad.

FRFun3b
[YV12]

Denoiser basado en fractales, lo que no dice nada util salvo que su funcionamiento difiere de otros filtros, y basta probarlo para notar
muy alto nivel de limpieza y a su vez una alta conservacion de detalle fuerte, por lo que constituye uno de los filtros mas potentes y
precisos, a pesar de ser solo espacial. Tambien es bastante rapido.
Aunque no todo son rosas, tiende a dejarse llevar y ataca al detalle debil o difuso, lo que puede llevar a un efecto de sobrefiltrado en
ciertas areas de la imagen. A pesar de esto el resultado general suele ser muy bueno si el video es muy ruidoso.

Sintaxis:
frfun3b(T, Tuv, S)

Los parametros son bien simples: T es la fuerza de filtrado sobre luminancia, mientras que Tuv lo es sobre la crominancia. S es un
parametro que de subirlo cambia calidad por velocidad.
Y nada mas... eso si, no tengo idea de cuales son los valores por defecto, salvo que si prueban aplicar frfun3b() directamente, seguro
notaran que es demasiado fuerte.
Quizas un mejor punto de partida sea: frfun3b(2.0,2.0,1)

Descarga

FRFun7
[YV12]

Aparentemente es la continuacion del anterior, aunque en verdad producen resultados diferentes. Por ello es que decidi mencionarlos
a ambos como filtros separados.
Debido a la carencia total de documentacion y la falta de informacion en general no tengo idea de que diferencias de calidad o potencia
puede haber, aunque en mis pruebas observe que parece menos potente que el anterior, particularmente al filtrar artifacts de
crominancia en fondos. Tambien note que es menos preciso filtrando cerca del detalle, produciendo un resultado de menor calidad.
Tambien parece ser notablemente mas rapido, de seguro en compensacion por la menor calidad.

Sintaxis y valores por defecto:


frfun7(Lambda=1.1, T=6.0, Tuv=2.0)

Lambda viene a ser la fuerza de aplicacion en general. Mientras que T y Tuv representan la fuerza de aplicacion especificamente sobre
bordes, para luminancia y crominancia respectivamente.
De seguro requieran reducir el valor de T, ya que por defecto es algo fuerte y ataca detalle. Este es el parametro que mas impacto

11 de 43
Manual AviSynth

tiene sobre el filtrado.

Descarga

SpatialSoften
[YUY2]

Unico filtro de ruido espacial incluido con AviSynth.

Sintaxis:
SpatialSoften(radius,luma_threshold,chroma_threshold)

El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel en estudio con una mayor
cantidad de pixeles adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una
calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor
conservacion de detalle.
luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente.

UnDot
Dudaba sobre si valia la pena mencionarlo, pero es tan simple de usar que aqui va.

Filtro extremadamente debil. Rara vez notaran a simple vista sus efectos, salvo quizas si observan su impacto en la compresibilidad,
aunque tampoco esperen gran cosa.
En particular esta pensado para eliminar ruido en forma de "puntos" aislados, de ahi su nombre, y con ellos tambien el denominado
ruido mosquito que se presenta en bordes. Se nota su efecto especialmente al hacer upsize (reescalar hacia mayor resolucion), donde
estos puntos se hacen mas evidentes.
Tambien es extremadamente rapido y el detalle que puede eliminar es despreciable en la mayoria de los casos, por lo que usarlo no
cuesta casi nada y podria ayudar a un filtrado mas completo.
Puede resultar contraproducente en videos de muy alto nivel de detalle, ya que tiende a llevarse por delante detalle muy fino y/o en
movimiento (lluvia o copos de nieve por ejemplo).

Sintaxis:
UnDot()

Eso es todo, ni siquiera tiene parametros .

Descarga y Documentacion

VagueDenoiser
[YV12-YUY2-RGB24-RGB32]

Parece mas efectivo contra bajos niveles de ruido, dado que aplicarlo fuerte produce un efecto Smooth muy marcado y daña
demasiado al detalle. En el caso de anime puede resultar efectivo para mayor cantidad de ruido.
Segun el changelog presente en la documentacion el modo mas completo en funcionalidad y optimizaciones es el YV12, asi que si
notan problemas con videos en otro modo de color, convierten a YV12.

Sintaxis y valores por defecto:


VagueDenoiser(threshold=0, method=3, nsteps=4, chromaT=-1, interlaced=false)

La intensidad de aplicacion se regula con threshold, donde un valor de 0 estima la misma automaticamente (adaptativo). Valores
menores que 0 desactivan filtrado de Luma. Regular este parametro es fundamental, dado que por ser un filtro solo espacial no tendra
ningun problema en eliminar detalle si se lo aplica mas fuerte de lo que requiere el video.
nsteps es el tipico parametro que a mayor valor mayor calidad pero mas lento el filtrado y viceversa. Valores tipicos recomendados son
3 a 6.
Para activar filtrado de Chroma aumentan el valor de chromaT>=0, donde 0 es estimacion de intensidad automatica (adaptativo).
Usan interlaced=true para videos entrelazados.
El metodo de accion que se puede elegir con method varia desde 0 hasta 3. Aparentemente el orden de mas fuerte a mas suave es el
siguiente: 1>3>0>2. Recomiendo usar el valor por defecto.

Buenos resultados (sobre poco ruido) y buena conservacion de detalle en un video con poco detalle fino:
VagueDenoiser(threshold=2, nsteps=6)

Descarga y Documentacion

SPresso
Esta es una funcion denoiser muy ligera, ideal para conseguir modestas mejoras de compresibilidad sin afectar de forma notable la
nitidez.
En un principio se ideo para el filtrado solo de la luminancia. Aunque luego se le incorporo la posibilidad de filtrar tambien
crominancia, no parece ser tan efectiva para ello.

Filtros necesarios:
MaskTools v2
RemoveGrain

Sintaxis y valores por defecto:


SPresso(limit=2, limitC=4, bias=25, biasC=50, RGmode=4, RGmodeC=0)

La "C" identifica a los parametros que regulan el filtrado de crominancia.


El parametro limit sirve para indicar que tanto se puede cambiar un pixel, y vendria a ser una forma de limitar la fuerza de filtro.
bias permite modificar algo asi como la agresividad, a mayor valor mas pixeles seran filtrados. Un valor de "20" es una aplicacion muy
liviana, mientras que "30" ya es bastante fuerte.
El modo de filtrado le corresponde al parametro RGmode, que permite elegir el modo de funcionamiento del filtro RemoveGrain. El
valor por defecto parece ser el mejor para amplia variedad de situaciones. Como el filtrado de crominancia se encuentra desactivado
por defecto (solo se procesa luma), RGmodeC=0, pero por supuesto pueden jugar con este parametro para procesar ambos o solo
crominancia, asi como cambiar el modo de filtrado.

12 de 43
Manual AviSynth

Discusion en doom9 y descarga del script

TBilateral
[YV12-YUY2]

Este plugin se basa en el algoritmo bilateral de fitrado, para quien sepa de que se trata (bienvenida es cualquier informacion, siempre
y cuando corresponda al nivel de este manual).
Yendo al grano, mis pruebas me permitieron observar que hace un trabajo bastante decente con niveles ligeros de ruido sin afectar de
forma importante al detalle (las hice sobre HDTVRip de 720p), nada que un buen filtro Sharpen no sepa corregir.
Por ello incialmente lo recomiendo para ese tipo de videos, pero tambien habria que probarlo con niveles de ruido mas importantes a
ver como se comporta.

Sintaxis y valores por defecto:


TBilateral(diameterL=5, diameterC=5, sDevL=1.4, sDevC=1.4, iDevL=7.0, iDevC=7.0, csL=1.0, csC=1.0, d2=false, chroma=true,
gui=false, resType=0)

"L" identifica los parametros que afectan a la luminancia, mientras que "C" a aquellos ligados a la crominancia.
Para cada pixel el filtro lo compara con una serie de pixeles adyacentes, en base a lo cual decide como aplicar el filtrado. El parametro
diameter fija la distancia hasta donde deben tomarse en cuenta pixeles adyacentes. A mayor valor mas pixeles (cada vez mas lejanos
al central) seran tenidos en cuenta en los calculos del filtro, en teoria proporcionando un resultado mas preciso y de mejor calidad,
aunque mas lento. El valor debe ser impar, mayor que 1 y menor que la resolucion vertical.
La agresividad del filtro puede ser regulada mediante dos parametros: sDev e iDev. Segun puedo observar el primero afecta de forma
mas directa la fuerza de aplicacion sobre los pixeles que se son filtrados (lo que en teoria seria ruido), aunque usar valores muy
elevados tambien conduce a sobrefiltrado (tiende a atacar el detalle mas grueso). El segundo parametro proporciona una forma de
limitar hasta donde llega el filtro cuando se trata de detectar que es ruido y que es detalle; este valor debe regularse segun la relacion
que haya entre el nivel de ruido y el nivel de detalle del video. Por ejemplo, en videos con alto nivel de detalle conviene mantenerlo
bajo, pudiendo ser necesario reducir bastante los valores por defecto. La agresividad del filtro sobre el detalle es muy sensible a este
parametro.
Con el valor de cs tambien se afecta en parte la agresividad del filtro. Aumentar el valor desde "1.0" les dara una mayor conservacion
de detalle, aunque el efecto es bastante sutil. Disminuirlo (se puede hasta un minimo de "0") parece reducir la calidad del resultado,
afectando al detalle sobre bordes, por ello esto ultimo no creo que sea recomendable, a lo sumo dejarlo en el valor por defecto, o si se
observa perdida de detalle, aumentarlo.
Si se trata de imagen real conviene fijar d2=true, dado que permite un filtrado mas eficiente sobre gradientes de color suaves. En
cambio si la imagen corresponde a anime o dibujos animados (areas de color solido y/o gradientes bruscos) es mejor como viene por
defecto.
chroma=true por defecto implica que se procesa la crominancia, por supuesto un valor de "false" la deja intacta y solo se filtra
luminancia.
El filtro incluye la posibilidad de habilitar una interfaz grafica (gui=true) para observar en tiempo real el resultado de modificar los
parametros y asi poder ajustarlos mas comodamente.
El valor por defecto resType=0 parece ser poco amigable con el detalle difuso en fondos, lo que no parece ser el caso al usar un valor
de "1" o "2". En teoria tambien es posible un valor de "3", pero en mis pruebas siempre causaba el cuelgue de AviSynth, muy
probablemente debido a algun bug siendo que este modo se introdujo en la ultima version.

Descarga

RemoveGrain
Este es el famoso filtro espacial de ruido muy utilizado en funciones o scripts de variada indole. Se caracteriza por poseer una gran
variedad de modos de funcionamiento y por ser relativamente rapido.

Descarga
Autor del filtro: Kassandro

Sintaxis: (por defecto)

RemoveGrain(mode=2, modeU=2, modeV=2, planar=false)

Mode= Determina el modo en que se eliminara grano sobre la luminancia


ModeU y ModeV= Determina el modo en que se eliminara grano sobre los 2 canales de croma
Planar= Sirve para que el filtro trabaje con un determinado espacio de color o sobre otros tambien.

Cosas a tener en cuenta:

-El filtro trabaja por defecto solo bajo YV12 (planar=false), si se quiere utilizar este filtro bajo espacios de color YUY2, RGB24 o RGB32
se debe utilizar planar=true.
planar=true bajo YV12 no produce ningun efecto, ni negativo ni positivo.

-El RemoveGrain siempre se debe utilizar antes de realizar un crop y en lo posible aplicarlo antes de un resize tambien.

-Al descargarnos el RemoveGrain nos encontramos con 4 .dll con nombre parecido, se recomienda NO ponerlas todas juntas dentro de
la carpeta Plugins de avisynth. Cada una corresponde al tipo de instrucciones que acepte nuestro procesador por lo que si el nuestro
acepta SSE3 no habría necesidad de poner las anteriores. En el caso de queres tener la opcion de elegir cualquiera de las 4 .dll es
preferible que se cargue a través de LoadPlugin que ponerlas en la carpeta Plugin de Avisynth.

-Kassandro ofrece la siguiente clasificación de los modos en lo que respecta al riesgo de generar artifacts, desde el más seguro al de
mayor riesgo: 1, 5, 2, 18, 6, 7, 8, 17, 3, 4, 9.

-Kassandro ofrece la siguiente clasificación de los modos con respecto a la compresión, de las de mayor ganancia compresión a las de
menos: 4, 17, 9, 8, 3, 7, 6, 2, 5, 1.

-Se puede incluso utilizar diferentes modos para la luminancia y la croma

-Utilizarlo 2 veces seguidas es totalmente valido, igualmente el filtro es muy rapido por lo que no debe influir demasido en la
velocidad, ej:

RemoveGrain(mode=17).RemoveGrain(mode=17) o incluso cambiando de modos RemoveGrain(mode=17).RemoveGrain(mode=2), etc

Modos:

Modo 0= No hace filtrado, solo sirve cuando se buscar filtrar ciertas partes (por ejemplo si solo se desease filtrar la luminancia y no la

13 de 43
Manual AviSynth

croma, o viceversa).
Modo 1= No parece hacer practicamente efecto o al menos mis ojos no lo perciben, segun su autor da el mismo efecto que el filtro
Undot. Por supuesto no hay ningun riesgo de crear artifact ni de atacar lineas y detalle fino.
Modo 2= Parece tener un infimo efecto sobretodo se puede apreciar sobre los bordes pero es tan debil que es dificil darse cuenta. Los
riesgos siguen siendo nulos como el modo anterior.
Modo 3= Limpia grano moderadamente pero ataca un poco las lineas delgadas y detalle fino.
Modo 4= Segun Kassandro es el que obtiene mayor compresibilidad pero tiene un gran riesgo de crear artifact y destruir lineas. En mi
caso personal limpio bastante bien el grano en general pero algunas lineas y detalles muy finos fueron literalmente "devorados",
incluso me aparecio un efecto parecido al "dientes de sierra" en una linea que era parte de la curvatura de una letra.
Modo 5= Diseñado para ser piadoso con las lineas (incluido sus extremos) y detalles finos pero a causa de eso no parece tener un gran
poder de limpieza de grano.
Modo 6= Diseñado con el mismo fin que el modo anterior, tiene una leve mejora en la limpieza de grano y mantiene muy bien las
lineas aunque a veces se come un poco los puntos finales de la lineas.
Modo 7= Limpia mas grano que el modo 6 intentando conservar las lineas y el detalle fino, de hecho lo logra bastante bien aunque se
come mas los pixeles finales de las lineas que el anterior.
Modo 8= Limpia un poquito mas de grano que el anterior a costo de seguir perdiendo pixeles en los extremos de las lineas.
Modo 9= Limpia mas grano que los modos del 5 al 8 pero tiene graves problemas con las lineas y detalles finos, aunque no tanto como
el modo 4.
Modo 10= Este modo no se menciona en ninguna parte de la documentacion del Remove grain pero segun mis pruebas da un
resultado muy curioso, no solo no limpia el grano sino que parece acentuarlo más, sobretodo en los bordes y lineas...
Modo 11= Se diferencia bastante de los otros modos ya que parece darle un efecto "Blur" al video. Este modo fue reemplazado por el
modo 12
Modo 12= Es un reemplazo del modo 11, el efecto "blur" o de "desenfoque" parece ser el mismo pero este modo es bastante mas
rapido que el anterior.
Modo 13 al 16= Son modos de "Bob" para fuente entrelazada, parece que de 13 a 16 cada modo que voy avanzando limpia un poquito
mas de grano pero genera algunos artifacts y tiene problemas con lineas muy finas, el tema de desentrelazados escapa totalmente a
mis conocimientos por lo que me abstengo de seguir opinando.
Modo 17= Vendria a ser el modo inteligente, actua como el 4 pero se adapta a las lineas y detalles finos cambiando automaticamente
a un modo mas suave. Conlleva un riesgo moderado de artifacts.
A mi me agrado sue resultado, limpio bien el grano sin devorarme las lineas aunque me suavizo un poquito la imagen y se comio
algunos pixeles de los extremos de las lineas, se puede ganar una gran compresibilidad con el. Supongo que un buen Sharpen no
deberia tener problemas en arreglarlo.
Modo 18= Es como el modo 17 pero mantiene mucho mejor los pixeles en los extremos de las lineas, ademas ese efecto de suavizado
del modo 17 casi no se distingue en este modo. Lo malo es que no limpia tanto grano como el anterior.

Bueno, las pruebas las hice con AvsP para no andar recomprimiendo y por supuesto siempre tome el mismo frame como referencia.
Si quieren chequear las fotos que exporte con AvsP con las que fui comparando los distintos modos, quizá ustedes encuentren algo en
lo que me equivoque o sino ampliar un poco mas la descripción de alguno de ellos.

Aca les dejo el Pack de fotos.

Denoisers Temporales
En este caso el analisis que determina como se filtra un determinado pixel se realiza sobre pixeles en la misma posicion pero de
frames anteriores y posteriores.
En este caso el radio del analisis se mide en frames.
Este modo de filtrado suele ser menos agresivo que el espacial pero tambien mas amable con el detalle, y por ello recomendado para
bajos niveles de ruido.

TemporalSoften
[YUY2-Y8-YV411-YV12-YV16-YV24]

Filtro interno (incluido con AviSynth).

Sintaxis:
TemporalSoften(radius,luma_threshold,chroma_threshold,mode,scenechange)

El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel con sigo mismo en mayor
cantidad de frames adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una
calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor
conservacion de detalle.
luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente.
Por defecto en mode=1, se puede setear en mode=2 para aprovechar un mejor desempeño del filtro temporal(mejor calidad y mayor
velocidad).
scenechange permite fijar un valor limite para no procesar imagenes involucradas en cambios de escena. El valor representa el cambio
promedio de los pixeles entre frames. Un rango recomendado es 5<scenechange<30.

Ejemplo de un buen punto de partida extraido de la wiki:


TemporalSoften(4,4,8,scenechange=15,mode=2)

Ejemplos sugeridos por piscator:


Temporalsoften(2,3,3,mode=2,scenechange=6) (suave)
Temporalsoften(3,5,5,mode=2,scenechange=10) (medio)
Temporalsoften(4,8,8,mode=2,scenechange=10) (fuerte)

Denoisers 3D
Estos filtros realizan un analisis tanto espacial como temporal (ver explicaciones de las subcategorias anteriores) para decidir como se
filtra en determinado pixel.
La combinacion de estos dos enfoques en teoria les da a estos filtros una importante ventaja de calidad. Particularmente se destacan
FFT3DFilter y DFTTest, dos filtros muy potentes que son capaces de eliminar enormes cantidades de ruido con muy alta precision.

DeGrainMedian
[YV12-YUY2]

14 de 43
Manual AviSynth

Su nombre lo dice todo, un denoiser espacio-temporal para eliminar grano. Rápido y efectivo.

Cómo se usa y valores por defecto:


DeGrainMedian(limitY=4, limitUV=6, mode=1)

Valores posibles: para limitY(luma) [0-255], limitUV(chroma) [0-255] y mode [0 fuerte - 5 débil].

Buenos valores (de más débil a más fuerte)


DeGrainMedian(limitY=2,limitUV=3)
DeGrainMedian(limitY=3,limitUV=7)
DeGrainMedian(limitY=2,limitUV=3).DeGrainMedian(limitY=2,limitUV=3)
DeGrainMedian(limitY=3,limitUV=7).DeGrainMedian(limitY=3,limitUV=7)

Descarga y Documentación

DFTTest
[YV12-YUY2]

Muy potente y preciso, pero lento. Funcionamiento similar a FFT3DFilter.

Sintaxis y valores por defecto:


DFTTest(Y=true, U=true, V=true, sigma=16.0, sbsize=12, sosize=9, smode=1, tbsize=5, tmode=0, tosize=0, dither=0, threads=0,
opt=0)

Se puede usar por defecto y ya logra exelentes resultados en videos muy ruidosos:
DFTTest()

Aunque lo mas comun es que requieran reducir la fuerza de filtrado si se trata de un video relativamente limpio. Si ven que limpia
mucho detalle reducen el valor de sigma.
Por ejemplo, para una limpieza de muy alta calidad (muy lenta) sobre un video bastante limpio, pueden probar:
DFTTest(sigma=4)

Con Y, U y V se activa o desactiva el filtrado de los planos de luminancia, chroma_U y chroma_V respectivamente.
sigma regula la fuerza del filtrado.
sbsize es el tamaño del bloque(en pixeles) que se usa para muestrear el frame, a menor valor un filtrado mas preciso(se conserva mas
detalle) pero mas lento, y viceversa. sosize regula el overlap o solapamiento entre bloques, por supuesto no puede ser mayor que
sbsize-1 y de ser mayor a sbsize/2 el resultado de la resta sbsize-sosize debe ser multiplo de sbsize, asi dice en la docu.
smode=1 indica que se usa el esquema de filtrado espacial de bloques y solapamiento. Pero puede ser cambiado a smode=0, lo que
involucra que el filtro se mueva pixel por pixel y se transforme en algo ridiculamente lento, aunque tambien ultra preciso. En este
modo no hay solapamiento y el valor de sbsize debe ser impar.
El radio del filtrado temporal se fija con tbsize, que es la cantidad de frames tomados en cuenta alrededor del que se esta filtrando.
Minimo tbsize=1, que equivale a filtrado solo espacial.
Desde la version 1.8 el filtro ofrece la posibilidad de aplicar dithering cuando es creado el resultado. El dithering consiste en aproximar
un color desconocido mediante la mezcla de otros colores conocidos y es util para contrarrestar el efecto banding (ver categoria
Restauracion). Por defecto esta etapa del filtrado se encuentra desactivada. Se activa con valores mayores que cero y existen dos
modos de operacion: dither=1, que deberia ser suficiente para remover el banding introducido por la aplicacion del filtro; dither=>2
(hasta 100), que aplica el mismo metodo de dithering pero agregando una cierta cantidad de ruido aleatorio previo (mas cuanto mayor
sea el valor del parametro), lo que sirve para mejorar la efectividad y se puede utilizar para reducir el banding ya presente en el video
antes de la aplicacion de DFTTest.
Se pueden usar dos metodos de filtrado temporal: tmode=0 filtra frame por frame, centrandose en cada uno y desplazandose hacia
ambos lados segun tbsize. En cambio con tmode=1 se procesan bloques de frames de tamaño tbsize, cuyo solapamiento es el valor
tosize. La diferencia pasa por la velocidad y precision siendo mas preciso pero mas lento tmode=0.
threads establece el numero de hilos en que se divide el procesamiento. Un valor de "0" implica que el filtro los fija automaticamente
segun el numero de procesadores(nucleos) detectados. A su vez puede elegirse el nivel de optimizacion de las instrucciones usando el
parametro opt cuyo valor por defecto sirve para autodeteccion (otros valores posibles: "1"->rutinas C; "2"->SSE; "3"->SSE2).

El filtro posee opciones de configuracion mas avanzadas, incluyendo la posibilidad de analizar el video en busca de un patron de ruido
y con el optimizar el filtrado "enseñandole" al filtro a localizarlo.

Importante: para funcionar requiere que libfftw3f-3.dll (http://www.fftw.org/install/windows.html) este presente en C:\Windows
\System32.

Descarga (documentacion incluida)

FFT3DFilter
[YV12-YUY2]

Elimina ruido conservando la nitidez de la imagen (incluso aplicándolo fuerte). Mejora muchísmo la compresibilidad.
Tambien ofrece una funcion de sharpen.

Sintaxis y valores por defecto:


FFT3DGPU(sigma=2.0, bt=3, plane=0, bw=32, bh=32, ow=bw/3, oh=bh/3)

Cómo se usa:
FFT3DFilter() -> config estandar que va bien para muchos casos

FFT3DFilter(bt=5, sharpen=0.5, plane=4, ow=16, oh=16) -> opcion potente y de alta calidad, pero lenta, ideal para videos muy
ruidosos.

Parametros:
Se pueden cambiar los valores de sigma para la fuerza del filtrado (1.0<sigma<1.5 débil, 2.0<sigma<2.5 medio, sigma=3.0 fuerte,
sigma>3 más fuerte). Es el parámetro más importante, ojo con aumentarlo porque el filtro es muy potente.
También el plane. Por defecto plane=0 solo pilla la luma, si ponemos plane=4 pilla luma y croma.
Se pueden cambiar los valores de bt desde 2 a 5 (a mayor valor más frames serán tenidos en cuenta en el filtrado temporal). Si
colocan bt=1 el filtro pasa a ser solo espacial o 2D. Es interesante mencionar que con el filtro funcionando solo en modo espacial la
fuerza del mismo aumenta, es decir que se filtra mayor cantidad de ruido, especialmente en areas oscuras y/o de poco detalle. Sin
embargo tambien se pierde detalle fino, como texturas. El termino medio se alcanza usandolo por defecto, aumentar el radio temporal
hara que se salve mas detalle pero tambien se conservara mas ruido en ciertas areas. Usenlo como mas les guste.
bw y bh son las dimensiones (ancho y alto) del bloque que usa el filtro para el muestreo del video, se pueden bajar para mejorar la
calidad y aumentar la limpieza de ruido.
Tambien se pueden editar los valores de ow y oh (el overlap o solapamiento entre bloques en el muestreo), que por defecto dependen
de bw y bh como pueden ver en la sintaxis. Para mejorar la calidad se deben subir estos valores y por supuesto se pierde en velocidad

15 de 43
Manual AviSynth

(y viceversa), sin embargo el filtro tiene una limitacion y no se permite que 2*ow>bw y/o 2*oh>bh, asi que ojo con eso.
Se puede usar la función sharpen, desactivada por defecto. Si se usa, los valores están entre 0.3 y 1.0; Su aplicacion aporta una
ganancia notable de nitidez sin ruido extra, muy recomendable.

Como podéis ver en la documentación tiene decenas de opciones más, que hacen de este filtro uno de los mejores.

ojo al instalar!
Se debe colocar el archivo fftw3.dll (que pueden descargar de http://ftp://ftp.fftw.org/pub/fftw/fftw3win32mingw.zip) en C:\Windows
\System32. El filtro no funciona sin el.

Descarga y Documentación

FFT3DGPU
[YV12-YUY2]

Version del filtro FFT3DFilter con capacidad para aprovechar la GPU (placa de video) para el procesamiento.

Requerimientos:
-> DirectX 9.0c o superior (version de abril del 2006 en adelante).
-> Placa de video con soporte DirectX 9 por hardware. En el caso de Nvidia de la linea FX5xxx en adelante, recomendandose de 6xxx
en adelante. En cuanto a ATi, de 95xx en adelante.

Sintaxis:
FFT3DGPU(sigma, bt, sharpen, plane, ow, oh)

Los parametros son los mismos que en el filtro FFT3DFilter.


Tambien requiere del archivo fftw3.dll.

Descarga y Documentacion

FluxSmooth
Sencillo filtro de ruido espacio-temporal. No particularmente efectivo, limpia mas detalle del que deberia a pesar de ser un filtro 3D, y
de los mas suaves. Sin embargo parece resultar util para limpiezas muy ligeras y mejorar la compresibilidad.

Sintaxis y valores por defecto:


FluxSmoothT(temporal_threshold=7) -> filtrado solo temporal.

FluxSmoothST(temporal_threshold=7, spatial_threshold=7) -> filtrado espacial y temporal.

Los unicos parametros que se pueden configurar representan la fuerza del filtrado temporal y espacial por separado.

Para limpiar muy suavemente y evitar perder detalle de mas, aunque bastante efectivo, particularmente sobre bordes:
FluxSmoothST(2,2)

Descarga y Documentacion

STMedianFilter
Este plugin realiza un filtrado espacial y temporal con cierta compensacion del movimiento.
No lo veo particularmente muy preciso, lo cual es consistente con que utiliza un modo de funcionamiento bastante simple. Por lo que
no esperen que sea muy considerado con el detalle.
Segun mis observaciones, asi como tambien lo que se describe en la documentacion, el filtro esta regulado para suavizar solo ruido
muy fino, por lo que pareceria recomendable para ocasiones donde se desee alguna leve ganancia de compresibilidad (quizas un 5%) o
como apoyo en alguna etapa de filtrado mas completa. Por ejemplo, se me ocurre que podria usarse para una primera limpieza muy
fina, para luego pasar a aplicar algo mas potente y de mayor calidad.

Sintaxis y valores por defecto:


STMedianFilter(8,15,4,7)

El filtro basicamente compara los valores de luminancia y crominancia de un determinado pixel con aquellos de los pixeles inmediatos
adyacentes (tanto en el espacio como en el tiempo), para luego modificar el valor de dicho pixel y que este quede dentro de cierto
rango definido por los pixeles adyacentes.
Entonces, el primer parametro regula la agresividad espacial, ya que establece el maximo cambio que puede sufrir el pixel al ser
filtrado espacialmente. Es decir que si los pixeles adyacentes son muy diferentes, el pixel no sera filtrado a no ser que se aumente este
parametro. Tengan en cuenta que un aumento desmedido causara perdida de detalle fino con altos contrastes, siendo que este tipo de
detalle se sustenta en variaciones altas de los valores de pixeles adyacentes.
El segundo parametro regula la agresividad sobre bordes, de la misma forma que el anterior. El filtrado parece ser mucho menos
sensible a este parametro. Evidentemente el plugin debe poseer algun algoritmo de deteccion de bordes, sino seria lo mismo que el
parametro anterior.
Ya en el tercer parametro se trata de la agresividad en el filtrado temporal, de una forma similar al primero salvo porque ahora la
comparacion es con los pixeles adyacentes en el tiempo (frames anterior y posterior). Aqui conviene usar siempre valores bajos (no
mayores a 10) para evitar el efecto fantasma.
Y por ultimo el cuarto limita el filtrado segun la compensacion de movimiento, a mayores valores mayor filtrado pero tampoco
conviene pasarse de 10 para evitar el efecto fantasma.

Descarga

Denoisers Temporales con Compensacion de Movimiento


Se trata de analizar y detectar el movimiento del video para asi realizar una limpieza temporal mas precisa.

MVTools+MDegrain

16 de 43
Manual AviSynth

MVTools es un plug-in de avisynth que incluye varias herramientas. El MVAnalyse se usa para la estimación y compensación de los
objetos en movimiento de un video. Se basa en vectores de movimiento, los mismos que usa el códec XVID p.ej. a la hora de trabajar,
lo que permite hacer una limpieza temporal mejor.
Se puede usar la función MVAnalyse junto con cualquier denoiser, pero lo normal es usar los filtros MDegrain1 , MDegrain2 o
MDegrain3. Este filtro trabaja teniendo en cuenta las una, dos o tres frames anteriores y la una, dos o tres frames posteriores, con lo
que la limpieza es mucho más precisa. Limpia sin apenas alterar la imagen y es el que mejora más la compresibilidad de un video.

Cómo se usan:

Se carga el mvtools2.dll (ver introduccion a filtros externos) y copiamos del siguiente script una de las tres partes, según queramos
usar el MDegrain1, 2 o el 3

MVTools con MDegrain1


super = MSuper()
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
MDegrain1(super, backward_vec1, forward_vec1, thSAD=300, thSADC=400)

MVTools con MDegrain2


super = MSuper()
backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4)
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4)
MDegrain2(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=300, thSADC=400)

MVTools con MDegrain3


super = MSuper()
backward_vec3 = MAnalyse(super, isb=true, delta=3, overlap=4)
backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4)
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4)
forward_vec3 = MAnalyse(super, isb=false, delta=3, overlap=4)
MDegrain3(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, backward_vec3, forward_vec3, thSAD=300,
thSADC=400)

Lo único que debemos variar es el valor de thSAD y thSADC (unmbral para el filtrado de luma y chroma). Recordad que se puede
aplicar más fuerte a la chroma sin que afecte a la imagen.

Valores orientativos, después cada uno que pruebe:


100 para las fuentes excelentes
200 para las muy buenas
300 para las buenas
400 para las normales-limpia más fuerte (es el valor por defecto)

En la docu se explican el resto de opciones, pero por defecto van muy bien.

Descarga y Documentación

TTempSmooth
[YV12-YUY2]

Filtro temporal adaptativo al movimiento (solo trabaja en zonas estaticas de la imagen), y usa valores de referencia en frames
anteriores y posteriores (hasta un máximo de 15!, 7 de cada lado). Tiene su tiempo pero se sigue usando.

Cómo se usa y valores por defecto:


TTempSmooth(maxr=3, LThresh=4, CThresh=5, scthresh=12.0, debug=false, interlaced=false)

Valores posibles para maxr: de 1(menos frames, más rapidez, menos calidad) a 7(más frames, menos rapidez, mas calidad).
LThresh, CThresh: limite de luma y chroma, rango: 1 a 256.
Para regular la sensibilidad de deteccion de cambio de escena se ofrece el parametro scthresh. Para ver que frames estan siendo
detectados como cambio de escena, y asi poder ajustar este valor de forma optima segun el video, pueden usar debug=true. Para
monitorear la informacion que el filtro entrega pueden usar la utilidad DebugView.
Para aplicar sobre video YV12 entrelazado, interlaced=true. No tiene efecto si el video es YUY2, dado que no hace falta.

Descarga y Documentación

« Última modificación: Agosto 31, 2010, 21:56:12 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Restauración
Moderador « Respuesta #4: Noviembre 06, 2009, 21:04:52 »

Desconectado
Filtros para Debanding
Sexo: El banding se presenta sobre zonas del video donde hay una variacion de color suave o gradual.
Reg: El artifact o efecto indeseable consiste en bandas de colores solidos bien definidas en vez de una variacion de color continua, producto de una
26-06-2006
Mensajes: representacion con menos bits de los necesarios. Para ilustrar mejor este efecto ver imagen.
8.122 Entonces los filtros dentro de esta subcategoria se ocupan de suavizar la transicion entre estas bandas, tratando de restaurar el gradiente de color.
Quizas enfocados mayormente a post-proceso, es decir para filtrar durante la reproduccion, dado que si los usan para corregir el efecto y luego
comprimir, el encoder es muy probable que vuelva a generar los artifacts al reducir la cantidad de bits como parte de la compresion. De todas
formas basta que prueben y llegado el caso se podria aumentar la fuerza del filtro para ver si el efecto se conserva.

GradFun2db
[YV12-YUY2-RGB24-RGB32]

Filtro basico para debanding.

17 de 43
Manual AviSynth

Sintaxis:
GradFun2db(thr)

thr(valor real) regula la fuerza del filtro, por defecto en "1.2"

Descarga

GradFun2DBmod
Esta funcion, que se basa en el filtro anterior, ofrece una mayor calidad y funcionalidad. La mayoria de los scripts que son capaces de aplicar
debanding hacen uso de esta funcion.

Filtros requeridos:
GradFun2db
AddGrainC
MaskTools2
RemoveGrain

Agregar ruido de grano (AddGrainC) ayuda a disimular mejor el efecto, y me parece que tambien ayuda a evitar que ocurra de nuevo en futuras
compresiones.

Sintaxis y valores por defecto:


GradFun2DBmod(thr=1.2, thrC=thr, str=0.8, strC=0.0, temp=50, custom="tu_generador_de_grano_favorito", show=false, screenW, screenH)

Los parametros que fijan la intensidad de aplicacion son thr y thrC para luma y chroma respectivamente.
La intensidad del grano generado se puede configurar con los parametros str y strC para luma y chroma respectivamente. Estos representan los
parametros var y uvar del filtro AddGrainC.
temp es el parametro seed de AddGrainC, que regula la estabilizacion temporal del grano generado y sirve para lograr un ruido de grano desde
mas aleatorio (0) a mas estatico (100). Un valor de -1 desactiva dicha estabilizacion.
Pueden usar el plugin generador de grano que prefieran, asi: custom="GrainFactory3()", pudiendo tambien agregar otros filtros en cadena
separandolos por puntos, por ejemplo para usar supersampling:
custom="spline36resize(resolution*2).addgrain(xx,0,0).spline36resize(resolution)".
Con show=true a la salida se obtiene una comparacion donde se puede observar el frame original y el frame filtrado, junto a las diferencias entre
ellos mostradas graficamente, asi como tambien los valores fijados para todos los parametros. Esto constituye una exelente herramienta de ayuda
para la configuracion del filtro.
screenH y screenW son las resoluciones, vertical y horizontal respectivamente, de la salida cuando esta activa la comparacion con show=true.

Descarga y discusion en doom9

Filtros para Deblocking


Seguro ya habran notado esos feos bloques que aparecen en los videos comprimidos con los codecs mas modernos, que se hacen mas notables
cuanto mas sobrecomprimido este el video.
Ya se imaginaran para que sirven los filtros de esta subcategoria, pues si, se ocupan de remover a los nefastos bloques.

BlindPP
Buen filtro de bloques, potente y efectivo. Logra aniquilarlos con muy poca perturbacion del detalle, y ya que esta en eso limpia buena parte del
ruido en general que pudiera haber, asi como tambien ofrece la posibilidad de filtrar ruido en bordes (ringing).
Como localiza los bloques por su tamaño, debe ser aplicado antes de cualquier etapa de crop o resize para evitar que estas los deformen.

Sintaxis y valores por defecto:


BlindPP(quant=2, cpu=6, iPP=false, moderate_h=20, moderate_v=40)

Para que ataque exclusivamente a los bloques se debe usar cpu=4. Valores menores (hasta 0) reducen la efectividad del deblocking. cpu=5 activa
filtrado extra de ruido de Luma en bordes (deringing), y cpu=6 incluye tambien chroma. Aunque el filtro realiza un exelente trabajo solo con la
funcion deblocking.
La fuerza se fija con quant, y va desde 0 a 31.
Usan iPP=true unicamente si su video es entrelazado.
moderate_h y moderate_v (ambos desde 0 a 255) son limites para establecer hasta donde se filtra. Aumentar estos valores permite una menor
agresividad (se filtran menos bloques, pero puede ayudar a conservar mas detalle), y viceversa.

Ejemplo:
Para filtrado de bloques y ruido en general, relativamente fuerte:
BlindPP(quant=4, cpu=4)

Descarga
Deben descargarse el paquete DGMPGDec, donde viene incluido dentro del archivo DGDecode.dll. Deben usar dicho archivo como plugin.

DeBlock
[YV12-YUY2]

Utiliza el filtro para deblocking presente en la decodificacion de H264.


Es conveniente aplicarlo antes de cualquier resize o crop, para evitar alterar los bloques y dificultar o impedir su localizacion.

Sintaxis:
Deblock(quant,aOffset,bOffset)

quant(valor entero, rango: 0 a 60) regula la fuerza del filtro. Por defecto es 25.
aOffset(entero) modifica el limite de deteccion de bloques, a mayores valores el filtro sera aplicado tambien donde los bloques son menos visibles.
Por defecto en 0.
bOffset(entero) modifica la deteccion de bloques y la fuerza del filtro, a mayores valores mas fuerte es la aplicacion. Por defecto en 0.

Si quant+aOffset es menor de 16 el filtro no hace nada.

18 de 43
Manual AviSynth

Descarga y Documentacion

DeBlock_QED
Esta funcion filtra los bloques distinguiendo el borde de los mismos y su interior, para realizar un filtrado mas fuerte sobre el contorno de los
bloques, mientras se evita un filtrado excesivo en su interior.
Como el objetivo de la funcion es preservar una mayor cantidad de detalle debilitando el filtrado en el interior del bloque, es mejor usarla en
videos ligeramente sobrecomprimidos o que no tengan presencia de bloques demasiado notable.
Es conveniente aplicarlo antes de cualquier resize o crop, para evitar alterar los bloques y dificultar o impedir su localizacion.

Filtros requeridos:
MaskTools2
DeBlock
DCTFilter

Sintaxis y valores por defecto:


DeBlock_QED(quant1=24, quant2=28, aOff1=2, bOff1=4, aOff2=4, bOff2=8, uv=3)

quant1: fuerza de filtrado en bordes de bloques.


quant2: fuerza de filtrado en interior de bloques.

aOff y bOff representan los mismos parametros ya explicados en el filtro DeBlock(mas arriba), pudiendose regular para los bordes(1) o interior(2)
de bloques por separado.
uv=3 aplica la funcion a chroma. Un valor de 2 no filtra chroma. Y valores de -1 o 1 aplican un filtrado convencional con el filtro DeBlock, fuerte o
normal respectivamente. Es decir que para que la funcion sea aplicada a la crominancia, debe usarse como viene por defecto.

Una aplicacion del filtro por defecto ya aporta buenos resultados:


DeBlock_QED()

Descarga (Click derecho->Guardar como)

SmoothD
Este filtro esta un poco viejo y su desarrollo fue abandonado en etapas muy tempranas sin llegarse a una version estable.
A pesar de todo se las arregla bastante bien para eliminar los bloques produciendo resultados mas que satisfactorios para su rapida velocidad.
Tambien puede usarse como denoiser general, aunque habiendo mejores y mas nuevas opciones en ese rubro yo lo recomiendo exclusivamente
para eliminar bloques.

Sintaxis:
SmoothD(quant=3, num_shift=4, adaptive_shift=0, zero_weight=1)

La fuerza se fija con quant, desde 1 a 31. A mayor valor mas fuerza.
El tipico parametro para canjear velocidad por calidad esta presente en num_shift, que a mayor valor da mas calidad pero menor velocidad. Va
desde 1 a 8.
adaptive_shift (0 o 1), de activarse (1), regula el valor de num_shift respecto del valor de quant, supongo que para permitir una mejor relacion
calidad/velocidad, aunque quizas sea mejor que lo hagan manualmente.
De aumentarse zero_weight los bloques son atacados con menos agresividad, lo que puede servir para una mayor conservacion de detalle.

Ejemplo:
Para un video con bloques bien visibles esta linea parece hacer un buen trabajo:
SmoothD(quant=5, num_shift=8)

Descarga y Documentacion

UnBlock
Fuerte filtro de bloques, para videos moderada a fuertemente sobrecomprimidos.
En mis pruebas observe que es muy efectivo en areas de bajo nivel de detalle, pero donde los bloques aparecen sobre detalle mas fino el filtro
distorsiona mucho, y de nada sirve si va a generar mas ruido del que elimina. Reservenlo para videos muy feos.

Sintaxis:
Unblock(chroma, photo, cartoon)

Por defecto: chroma=true, photo=false, cartoon=false.

chroma=false desactiva el filtrado sobre la crominancia (informacion de color).


Se puede colocar photo=true cuando se sabe que la imagen del video es "fotografica", lo que configura al filtro mas agresivo.
Y si se aplica el filtro a un video de dibujos animados (colores solidos con alto contraste) se puede colocar cartoon=true, lo que sirve para que el
filtro sea menos agresivo.

Descarga y Documentacion

Filtros para Dehaloing y Deringing


El indeseable efecto "halo" se presenta como una banda luminosa u oscura en los bordes de alto contraste. Usualmente es causado por pasarse con
el efecto sharpen, aunque tambien puede encontrarse nativamente, por ejemplo en DVD comerciales.
Por otro lado, los filtros para deringing son aquellos destinados limpiar el ruido que muchas veces acompaña a los bordes. La mayoria de los filtros
para dehaloing tambien puede usarse para deringing dado que su principio de funcionamiento suele ser muy similar. Por ello es que esta
subcategoria engloba ambos tipos de filtros.

DeHalo_alpha
Muy buena funcion para dehaloing, altamente efectiva, aunque suele requerir que configuren bien sus parametros segun el video para lograr la
maxima eficiencia.

19 de 43
Manual AviSynth

Tambien pueden usarla para deringing, aunque no esperen tan buenos resultados por ese lado.

Filtros requeridos:
MaskTools2
Repair (parte del paquete RemoveGrain)

Sintaxis y valores por defecto:


DeHalo_alpha(rx=2.0, ry=2.0, darkstr=1.0, brightstr=1.0, ss=1.5)

rx y ry es el radio de aplicacion del filtro, horizontal y vertical respectivamente. La funcion es muy sensible a este parametro asi que no se aparten
mucho de los valores por defecto. Un valor de 1.0 desactiva el filtrado en esa direccion. Basicamente este parametro permite regular el tamaño de
los halos y asi evitar filtrar de mas y perder contraste (detalle) o quedarse corto y dejar pasar halos gruesos. Es muy importante que fijen este
parametro segun su video si notan que sobrefiltra.
darkstr y brightstr es la fuerza de aplicacion del filtro para halos oscuros y brillantes respectivamente. Yo diria que conviene bajar bastante la
intensidad de aplicacion sobre halos oscuros, dado que son los que menos molestan, ademas de que su presencia resalta contornos y da la
impresion de mayor nitidez. Quizas valores menores de 0.5 sean recomendables.
ss es el factor de supersampling, util para evitar aliansing (efecto serrucho en bordes).

Descarga

EdgeCleaner
Funcion para deringing y dahaloing. Es efectiva para ambos tipos de artifacts, aunque para halos muy fuertes puede que se quede corta.

Filtros requeridos:
aWarpSharp
MaskTools2
RemoveGrain y Repair (RemoveGrain solo para smode=1)
Deen (solo para smode=2)

Sintaxis:
EdgeCleaner(strength=8.0, rep=true, smode=0, hot=false, fix=true)

strength es la fuerza de aplicacion.


rep=true usa el filtro Repair sobre el resultado de aWarpSharp, supongo reduciendo la intensidad de la deformacion producida por este.
smode define el modo en que la funcion busca pequeñas particulas, pudiendo ser: 0-Desactivado; 1-Usando RemoveGrain; 2- Usando Deen.
hot=true activa el filtrado de "hot pixels" como se les dice en la jerga, que vendria a ser ruido muy fino compuesto de pixeles con un color muy
diferente del color que los rodea. Similar a usar el filtro UnDot.
fix=true soluciona un bug conocido del filtro aWarpSharp.

Script de la funcion:

Citar

# EdgeCleaner() v1.03 (06/08/2008)


# - a simple edge cleaning and weak dehaloing function
#
# Description:
# Functions have been briefly tested to work with MT on mode 1 and 2 without any problems
#
# Requirements:
# aWarpSharp, mt_masktools, Repair (optional), RemoveGrain (optional) and Deen (optional) plugins required
# YV12 input required and mod16 or even mod32 input is preferred since aWarpSharp borks sometimes
#
# Parameters:
# strength (float) - specifies edge denoising strength (8.0)
# rep (boolean) - actives Repair for the aWarpSharped clip (true; requires Repair)
# rmode (integer) - specifies the Repair mode; 1 is very mild and good for halos,
# 16 and 18 are good for edge structure preserval on strong settings but keep more halos and edge noise,
# 17 is similar to 16 but keeps much less haloing, other modes are not recommended (17; requires Repair)
# smode (integer) - specifies what method will be used for finding small particles, ie stars; 0 is disabled,
# 1 uses RemoveGrain and 2 uses Deen (0; requires RemoveGrain/Repair/Deen)
# hot (boolean) - specifies whether removal of hot pixels should take place (false)
# fix (boolean) - fixes an aWarpSharp bug by overlaying a healthy pixel from the source clip;
# good idea to set to false when over-cropping afterwards (true)

function EdgeCleaner(clip c, float "strength", bool "rep", int "rmode", int "smode", bool "hot", bool "fix") {

strength = default(strength, 8.0)


rep = default(rep, true)
rmode = default(rmode, 17)
smode = default(smode, 0)
hot = default(hot, false)
fix = default(fix, true)

c = (c.isYV12()) ? c : c.ConvertToYV12()
strength = (smode==0) ? strength : strength+4

main = c.aWarpSharp(strength,1)
main = (rep) ? Repair(main,c,rmode) : main

mask = c.mt_edge("prewitt",4,32,4,32).mt_invert().mt_convolution()

final = (!hot) ? mt_merge(c,main,mask) : Repair(mt_merge(c,main,mask),c,2)


final = (fix) ? Overlay(final,c.ConvertToRGB24().Crop(0,1,-c.width+1,-c.height+2),x=0,y=1) : final
final = (smode != 0) ? mt_merge(final,c,c.StarMask(smode)) : final

return final

function StarMask(clip c, int "mode") {

mode = default(mode, 1)

clean = (mode==1) ? c.RemoveGrain(17) : Repair(c.Deen("a3d",4,12,0),c,15).RemoveGrain(21)


diff = (mode==1) ? mt_makediff(c,clean) : NOP

final = (mode==1) ? diff.Greyscale().Levels(40,0.350,168,0,255).removegrain(7,-1).mt_edge("prewitt",4,16,4,16) : \

20 de 43
Manual AviSynth

Subtract(mt_merge(clean,c,c.mt_edge("roberts",0,2,0,2).mt_expand(mode=mt_circle(1)).mt_invert()),c).mt_edge("roberts",0,0,0,0).mt_deflate()

return final

# Changelog:
# 06/08/2008 v1.03
# - improved mask that leaves less warping and more original line structure, therefore higher strengths are now safe to use
# - improved StarMask()
# - removed super mode
# - removed srep, sshiqloc, some smodes and VD_SmartSmoothHiQ() due to StarMask() changes
# 01/06/2008 v1.02
# - added srep parameter
# - improved particle masking
# 01/06/2008 v1.01
# - added masking for particles with two parameters; smode and sshiqloc
# 12/05/2008 v1.00
# - removed line darkening, mode 2 mask, RemoveGrain
# - assert changed to colorspace conversion to yv12
# - fixed some logic problems
# - "fixed" the aWarpSharp black pixel bug
# - added Repair

HQDering
Funcion que resulta bastante efectiva versus el efecto halo, aunque produce notable aliasing.
En cuanto a deringing, ofrece una limpieza muy ligera para no dañar detalle, asi que si poseen un video que tiene considerable ruido en bordes
deberan recurrir a algo mas potente.

Filtros requeridos:
MaskTools2
Deen

Sintaxis y valores por defecto:


HQDering(strength=255, overall=0)

El valor que tiene la fuerza por defecto es el maximo que admite la funcion (0<strength<255) , asi que quizas requieran bajarlo para evitar que
resulte contraproducente.
Para un efecto smooth generalizado pueden darle valores mayores que cero a overall, hasta 255.

Script de la funcion:

Citar

######
##
## HQDering v0.1 by mf
##
## Applies derining by using a smart smoother near edges (where ringing occurs) only.
##
## Usage: Import("HQDering-v0.1.avs")
## HQDering()
##
####

function HQDering(clip input, int "strength", int "overall", clip "smoother") {

strength = Default(strength, 255) # strength, 0-255


overall = Default(overall, 0) # overall smoothing, 0-255
smoothed = defined(smoother) ? smoother : input.Deen("a3d",4,15,15,20) # filter that smooths

normalmask=input.mt_edge(thY1=3, thY2=255, mode="sobel", chroma="none")

amplifiedmask=normalmask.Levels(0, 3.3, 90, 0, 255).Blur(1.0)

thickmask=normalmask.mt_inflate().mt_inflate().mt_inflate().Levels(0, 3.3, 90, 0, 255)


\ .Blur(1.0).mt_inflate().mt_inflate().mt_inflate().Levels(0, 3.3, 255, 0, 255)
\ .mt_inflate().mt_inflate()

ringingmask=mt_lutxy(amplifiedmask.mt_invert(), thickmask, expr="x y * 255 /").Levels(60, 3.0, 140, overall, strength)

mt_merge(input, smoothed, ringingmask)

YAHR
O tambien: Yet Another Halo Reducing script.
Funcion extremadamente potente y efectiva.
Deben cuidar donde la aplican para no perjudicar al detalle. Ademas, debido al uso de aWarpSharp, objetos pequeños se ven ligeramente
deformados.

Filtros requeridos:
MaskTools2
RemoveGrain y Repair
aWarpSharp
MedianBlur

Sintaxis:
YAHR()

Eso es todo, no tiene parametros, aunque serian bienvenidos para controlar su agresividad.

Descarga (click derecho->guardar como)

21 de 43
Manual AviSynth

Filtros para Antialiasing


El efecto aliasing provoca en los bordes de las imagenes pixelaciones dando el aspecto de sierra:

Para este proceso, existen funciones intrinsecamente creadas para evitar este efecto y dar suavidad a los bordes y otras que no siendo su funcion
principal, tambien lo consiguen.

SharpAAMCmod
SharpAAMCmod(dark, thin, sharp, smooth, stabilize, tradius, aapel, aaov, aablk, aatype)

El parametro dark tiene la funcion de remarcacion de la linea. Por defecto 0.2


El parametro thin la de adelgazarla. Por defecto 10.
El parametro sharp que indica a LSFMod la funcion de enfocado (0-100). Por defecto 100.
El parametro smooth que indica a LSFMod la funcion de suavizado (0-100). Por defecto 100. (smooth-piel melocoton-suavizado)
El parametro stabilize controla la estabilizacion de movimiento de los bordes para evitar el parpadeo. Provoca mucha lentitud, en casos muy
extremos. Por defecto true
El parametro tradius marca el radio temporal de estabilizacion (0 a 3). Por defecto 2.
El parametro aapel indica el factor de supermuestreo para cálculos del vector de movimiento cuando usamos stabilize=true. (1, 2 o 4). Por defecto
1.
El parametro aaov determina el solapamiento de los bloques para el cálculo del vector de movimiento cuando usamos stabilize=true. Por defecto 4
para SD y 8 para HD.
El parametro aablk determina el tamaño de los bloques para los cálculos del vector de movimiento cuando usamos stabilize=true (4, 8 o 16). Por
defecto 8 para SD y 16 para HD.
El parametro aatype indica el tipo de antialiasing, en este caso "Sangnom" o "EEDI2". Por defecto Sangnom

Ejemplo:

SharpAAMCmod(dark=2.5, thin=0, sharp=50, smooth=50, stabilize=false, aatype="EEDI2")

Esta funcion esta incluida en el codigo de la funcion AnimeIVTC, pero puede ser cargada de forma separada, pero si quereis podeis crear un Script
por separado

Citar

function SharpAAMCmod(clip orig, float "dark", int "thin", int "sharp", int "smooth", bool "stabilize", int "tradius", int "aapel", int "aaov", int "aablk", string "aatype")
{
dark = default ( dark, 0.2 ) # strokes darkening strength
thin = default ( thin, 10 ) # Presharpening
sharp = default ( sharp, 150 ) # Postsharpening
smooth = default ( smooth, -1 ) # Postsmoothing
stabilize= default ( stabilize,false ) # Use post stabilization with Motion Compensation
Tradius = default ( Tradius, 2 ) # 2 = MDegrain2 / 3 = MDegrain3
aapel = default ( aapel, 1 ) # accuracy of the motion estimation (Value can only be 1, 2 or 4. 1 means a precision to the pixel. 2 means a precision to half a pixel, 4 means a precision to quarter a
pixel, produced by spatial interpolation (better but slower).)
aaov = default ( aaov, (orig.width>1100) ? 8 : 4 ) # block overlap value (horizontal). Must be even and less than block size. (Higher = more precise & slower)
aablk = default ( aablk, (orig.width>1100) ? 16 : 8 ) # Size of a block (horizontal). It's either 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
aatype = default ( aatype, "Sangnom" ) # Use Sangnom() or EEDI2() for anti-aliasing

w=width(orig)
h=height(orig)
m=mt_logic( orig.DEdgeMask(0,255,0,255,"5 10 5 0 0 0 -5 -10 -5", divisor=4,Y=3,U=3,V=3)
\ ,orig.DEdgeMask(0,255,0,255,"5 0 -5 10 0 -10 5 0 -5", divisor=4,Y=3,U=3,V=3)
\ ,"max").mt_lut("x 128 / 0.86 ^ 255 *")
preaa=(thin==0 && dark==0) ? orig : (thin==0) ? orig.Toon(dark) : (dark==0) ? orig.awarpsharp2(depth=thin) : orig.Toon(dark).awarpsharp2(depth=thin)
aa= (aatype=="Sangnom") ? preaa.spline36resize(w*2,h*2).TurnLeft().SangNom().TurnRight().SangNom().spline36resize(w,h) : (aatype=="EEDI2") ? preaa.ediaa() :
blankclip(pixel_type="YV12").subtitle("Please use Sangnom or EEDI2 for aatype")
postsh=(sharp==0 && smooth==0) ? aa : aa.lsfmod(edgemode=1,strength=sharp,overshoot=1,soft=smooth)
merged=mt_merge(orig,postsh,m,Y=3,U=3,V=3)

sD=mt_makediff(orig,merged)

origsuper= orig.MSuper(pel=aapel)
sDsuper = sD. MSuper(pel=aapel, levels=1)

fv3 = tradius==3 ? origsuper.MAnalyse(isb=false,delta=3,overlap=aaov,blksize=aablk) : nop()


fv2 = tradius>=2 ? origsuper.MAnalyse(isb=false,delta=2,overlap=aaov,blksize=aablk) : nop()
fv1 = tradius>=1 ? origsuper.MAnalyse(isb=false,delta=1,overlap=aaov,blksize=aablk) : nop()

22 de 43
Manual AviSynth

bv1 = tradius>=1 ? origsuper.MAnalyse(isb=true, delta=1,overlap=aaov,blksize=aablk) : nop()


bv2 = tradius>=2 ? origsuper.MAnalyse(isb=true, delta=2,overlap=aaov,blksize=aablk) : nop()
bv3 = tradius==3 ? origsuper.MAnalyse(isb=true, delta=3,overlap=aaov,blksize=aablk) : nop()
sDD = tradius==1 ? sD.MDegrain1(sDsuper,bv1,fv1) : tradius==2 ? sD.MDegrain2(sDsuper,bv1,fv1,bv2,fv2) : sD.MDegrain3(sDsuper,bv1,fv1,bv2,fv2,bv3,fv3)

reduc = 0.4
sDD = mt_lutxy(sD,sDD,"x 128 - abs y 128 - abs < x y ?").mergeluma(sDD,1.0-reduc)

return stabilize ? orig.mt_makediff(sDD,U=2,V=2) : merged


}

Aparte de este hay otros mas que ya se explicaran. ^_^

Filtros para Correccion de Color


Aquellos filtros que solucionan artifacts que haya sobre los colores.

Colormatrix
Al convertir desde un DVD a XviD mediante AviSynth muchas veces la información de color de la fuente no es interpretada correctamente.
Colormatrix soluciona esto.

Cómo se usa:
En la carga del video
mpeg2source("C:\RIP\pelicula.d2v" ,info=3)
ColorMatrix(hints=true)

Si se observa mejoría lo usamos. Si no, no hace falta.

Descarga y Documentacion

Filtros para Eliminar Logos


Para cuando deseen deshacerse de algun molesto logo o marca de agua que haya sobre el video.

rm_logo
Funcion que hace uso de una interesante variedad de filtros para lograr su objetivo.

Descarga (Click derecho->guardar como)

Filtros requeridos:
AVSInpaint
ExInpaint
MaskTools2
MedianBlur
RemoveGrain
TTempSmooth
FFT3DFilter (solo para PP=2)

Ojo porque el filtro AVSInpaint se carga mediante el comando especial LoadCPlugin.


No se carga automaticamente con tenerlo en la carpeta de plugins por defecto.

Sintaxis y valores por defecto:


rm_logo(logomask="", loc="", cutsize="small", par=1.0, mode="both", percent=25, PP=1, debug=false)

Parametros:

El filtro requiere de una mascara que marque donde se encuentra el logo. Dicha imagen se carga mediante al parametro logomask. Deben indicar
la localizacion de la misma entre "", por ejemplo logomask="C\...\logo.bmp". Mas adelante se explica como se crea esta mascara.

Para evitar operar sobre la totalidad de la imagen, el filtro corta el trozo donde esta el logo. Entonces es necesario indicarle en que parte del frame
se encuentra, mediante loc, que puede ser: "tr", "tl", "br" o "bl", respectivamente las esquinas superior derecha, superior izquierda, inferior
derecha e inferior izquierda.

Si el logo es demasiado grande pueden aumentar el area de recorte usando cutsize="medium" o cutsize="large".
Esto lo aplican si ven que parte del logo permanece intacto, como si no hubiera sido filtrado.

par es para especificar la relacion de aspecto, por ejemplo par=16.0/9.0 o par=4.0/3.0.

Segun el tipo de logo existen 3 modos para removerlo.


Si es translucido, usan mode="deblend".
Si son colores solidos, mode="inpaint"
O una combinacion de ambos, mode="both".

PP=1, 2 o 3 activan alguno de los modos de post-proceso, con la intencion de minimizar los artifacts resultantes de la eliminacion del logo.
Un valor de "0"(cero) desactiva esta funcion.

Habilitando debug=true la salida se transforma en un mosaico de imagenes donde se muestran las diferentes etapas de filtrado. Ideal para
comparar.

Modo de uso:

Necesitan seleccionar un frame del video donde aparesca el logo, y guardarlo como imagen .bmp (pueden usar Media Player Classic).
Lo ideal es que elijan un frame que posea el fondo negro, por ejemplo uno de los creditos, ya que luego deben editar esa imagen .bmp,
resaltar el logo con color blanco y dejar el resto de la imagen de color negro puro.

23 de 43
Manual AviSynth

Esta nueva imagen es la mascara que utiliza la funcion para identificar al logo, y la ruta a la misma es la que deben colocar como valor del
parametro logomask.
El primer script es mejor ejecutarlo mediante algun reproductor, y no cargarlo directamente al programa conversor.
Esto es asi porque el filtro realiza una primera pasada de analisis sobre un trozo de video donde la totalidad de los frames contengan el logo.
Por ello en el script aplican el filtro Trim (categoria Manipulacion de Archivos) para seleccionar un intervalo donde estan seguros que el logo
aparece en todos los frames. Esto solo si el logo aparece o desaparece en algun punto del video.
Entonces, la primera vez que ejecuten el script el filtro realiza una pasada de analisis sobre un deteminado porcentaje del video (o intervalo
que hayan fijado con Trim), el que pueden configurar mediante el parametro percent (entre 0 y 100 por supuesto). A mayores valores mejor
el resultado, pero procuren no pasarse de "50".
Este analisis puede tardar mucho, dependiendo del porcentaje que elijan y la resolucion del trozo a analizar. Mientras tanto el programa
reproductor aparenta estar colgado, pero tengan paciencia.
Finalizado el analisis se crea un archivo de imagen .ebmp que contiene la informacion recolectada y requerida por el filtro para eliminar el
logo. De aqui en mas el video es accesible (se reproduce) y aunque cierren el reproductor no es necesario un nuevo analisis salvo cambien
algun parametro (no editen la linea del filtro rm_logo).
Conformes con el resultado pueden quitar del script los comandos Trim y cargarlo al programa conversor. Como el resultado del analisis esta
contenido en la imagen .ebmp la conversion debe empezar inmediatamente (sin analizar).

De yapa un ejemplo con imagenes incluidas:

rm_logo(logomask="H:\tallervideo\samples\logo.bmp", loc="br", par=16.0/9.0, mode="both", percent=40, pp=2, cutsize="medium", debug=true)

« Última modificación: Agosto 31, 2010, 21:59:56 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Sharpen
Moderador « Respuesta #5: Noviembre 07, 2009, 14:24:32 »

Desconectado

Sexo:
Filtros Sharpen
Reg: 26-06-2006
Mensajes: 8.122
aSharp
[YV12]

Se caracteriza por poseer capacidad de adaptarse ante situaciones en donde su aplicacion podria provocar ruido o enfatizar bloques, y
asi lograr un mejor resultado que un filtro sharpen convencional como el interno incluido con AviSynth (Sharpen).

Sintaxis:
asharp(T,D,B,hqbf)

T(valor real en el rango 0..32) representa el limite hasta donde el filtro sera aplicado (2 por defecto). Un valor de 0 no hara nada.
D(real rango 0..16) permite configurar la fuerza con que el filtro adaptara su funcionamiento ante situaciones que lo ameriten, un
valor de 0 desactiva completamente la capacidad de adaptarse. Valor por defecto es 4. Cuando esta activo el valor de T actua como
maximo.
B(real rango 0..4) permite activar y regular la adaptacion del filtro para evitar la aplicacion del filtro sobre bloques y empeorar aun
mas los mismos. Un valor negativo desactiva esta funcion. Un valor igual o mayor a cero lo activa y cuanto mayor sea mayor
influencia tendra al ser aplicado. Solo funciona con D>0. Por defecto esta desactivado (B=-1).
hqbf(true,false). Ideal activarlo para videos con bloques, su funcion es filtrarlos, requiere que D>0. Por defecto esta desactivado
(hqbf=false).

Descarga y Documentacion

aWarpSharp

24 de 43
Manual AviSynth

Segun lo que mis ojos me permiten observar, el resultado de aplicar este filtro difiere bastante de un efecto sharpen convencional. Lo
que se observa es una compresion de los bordes difusos, "afinandolos" se podria decir. Esto ofrece un efecto sharpen muy potente en
videos borrosos, pero no es magico, tambien distorsiona detalle fino y deforma objetos pequeños. Por supuesto es posible regular los
parametros para disminuir esta deformacion y aun asi se logra un efecto sharpen notable, no tan fuerte pero por lo menos mas
normal.
Debido a su principio de funcionamiento quizas sea mas recomendable para aplicar sobre dibujos animados o anime, donde se puede
aprovechar mejor sin necesidad de reducir mucho su intensidad de aplicacion.
Existen dos versiones de este filtro, la original cuyo desarrollo se abandono hace tiempo, y una version modificada y actualizada con
mejoras de estabilidad y optimizaciones. Por razones historicas se mencionan ambas, pero lo mas recomendable es usar la nueva
version.

aWarpSharp original

aWarpSharp(depth=16, blurlevel=2, cm=2)

La intensidad de aplicacion se varia con depth, y les aseguro que querran bajarla si deciden usar el filtro sobre imagen normal .
blurlevel parece regular la magnitud de la deformacion, a menor valor mas acotada es esta, es decir que limita el sharpen pero
tambien permite un efecto mas normal. Puede variar entre 1 y 4.
cm es el modo de tratar la crominancia, donde un valor de 0 desactiva el filtrado de la misma. 1 y 2 son dos modos para filtrarla,
donde 1 involucra a la luminancia y 2 es filtrado de chroma independiente. Segun la documentacion es mas recomedable usar cm=1.
En mis pruebas lo que note fue una mayor estabilidad de color con dicho valor, ya que ciertos bordes quedaban sobre coloreados
usando cm=2.

Descarga v1

aWarpSharp v2

aWarpSharp2(thresh=128, blur=2, type=0, depth=16, chroma=4)

depth es la intensidad general de aplicacion, puede variar entre -128 a 127. Equivale a depth*blurlevel/2 (valores version original).
thresh sirve para ajustar la deteccion de bordes, reducir para bajar la agresividad del filtro. Variable entre 0 y 255.
blur permite regular la intensidad de la deformacion, puede variar entre 0 y 100. Disminuir este valor implica aumentar el efecto
sharpen, pero disminuye la calidad de usarse el filtro en alta intensidad y/o agresividad, en cuyo caso conviene aumentarlo.
type=1 ofrece mejor calidad pero es mas lento que usar type=0. Al usar type=1 el valor por defecto de blur pasa a ser 16 dado que
para lograr el mismo efecto sharpen debe ser 8 veces el valor que con type=0.
Para elegir el modo de procesar crominancia: chroma=0 anula crominancia (deja al video en blanco y negro); chroma=1 ignora la
informacion de chroma y produce un video inservible; chroma=2 la copia tal como esta en el original (cm=0); chroma=3 la procesa de
forma independiente (cm=2); chroma=4 la procesa basandose en la informacion de luminancia (cm=1).

Descarga v2

MSharpen
Filtro sharpen que posee la particularidad de poder ser configurado para solo aplicarse sobre los bordes (detalle grueso). Esto se logra
mediante una mascara que "oculta" las zonas de la imagen sin este detalle y evita que el filtro se aplique sobre las mismas. Util para
evitar amplificar el ruido de fondo.
Por supuesto, la cantidad de detalle que abarca la mascara puede ser configurada, segun hasta donde queramos que se filtre.

Sintaxis y valores por defecto:


MSharpen(mask=false, threshold=10, strength=100, highq=true)

Para poder ver el detalle que esta siendo cubierto por la mascara colocan mask=true. Luego pueden disminuir el parametro threshold
para abarcar detalle mas grueso, o viceversa. Una vez tienen este parametro bien configurado, quitan de la sintaxis mask=true.
La fuerza de aplicacion se fija con strength, como de costumbre.
Imponer highq=false implica mayor velocidad pero menor calidad en la deteccion de detalle.

Ejemplo:
Primero usamos la mascara para configurar que detalle sera filtrado:
MSharpen(mask=true, threshold=10)
Una vez establecida la mascara (se bajo threshold para abarcar detalle mas grueso) se puede proceder al filtrado:
MSharpen(threshold=7)

Descarga y Documentacion

LimitedSharpenFaster
Esta funcion tiene como objetivo agudizar la nitidez del video minimizando la aparicion de efectos indeseables. Vendria a ser un filtro
sharpen con proteccion contra efectos como halo, ruido mosquito, aliasing, todos aquellos comunmente encontrados al aplicar un filtro
sharpen.
Debo decir que hasta ahora es el mejor filtro sharpen que he visto, los resultados que logra son impresionantes, pero claro esto no
viene gratis y hay que sacrificar tiempo siendo mucho mas lento que aplicar un filtro sharpen convencional.
Visto que el objetivo de la funcion es ofrecer un aumento de la nitidez limitado para evitar los artifacts ya mencionados, de necesitar
resultados mas fuertes, en vez de aumentar la fuerza de aplicacion a lo bruto puede que sea mas conveniente recurrir a un filtro
convencional sin las protecciones.

Filtros requeridos:
MaskTools2
RemoveGrain
WarpSharp (solo para Smode=1)

Sintaxis y valores por defecto:


LimitedSharpenFaster(Smode=3, edgemode=0, strength=100, Lmode=1, ss_x=1.5, ss_y=1.5, dest_x, dest_y, soft=0, wide=false)

Smode(1,2,3,4) selecciona el modo de operacion. Estos modos son: 1-UnsharpMask, 2-Sharpen, 3-Range sharpening, 4-Nonlinear
sharpening. Los primeros dos aplican los filtros que les dan nombre, mientras que los ultimos dos aplican un metodo propio del script
LSF. Mis pruebas me mostraron que el modo (3) parece ser el mas eficiente (relacion sharpen/calidad).
edgemode(-1,0,1,2), permite elegir si agudizar solo el detalle de bordes (1) o solo el detalle de todo lo que no sea bordes (2), o todo
(0). (-1) muestra lo que el filtro identifica como bordes. Usar edgemode=1 es ideal para cuando quieren evitar amplificar
innecesariamente ruido de fondo y/o para videos con bajo nivel de texturas, les recomiendo que lo prueben.
strength(0 a inf), este parametro regula la intensidad con la que se agudiza el detalle. En Smode=2, el valor esta limitado entre
0-100, y representa el rango de 0.0 a 1.0 del filtro Sharpen; valores mayores son tomados como 100. Por defecto el valor es de 100
salvo para Smode=1 donde es de 160. El valor de este parametro puede subirse sin miedo, dado que por diseño la funcion "limita" el

25 de 43
Manual AviSynth

efecto si este podria causar artifacts, aunque por supuesto de subirlo mucho estos se haran notables.
Lmode(0,1,3), controla la forma en que la funcion limita el efecto sharpen para evitar los artifacts. Un valor de (0) desactiva la
limitacion, (1) limita normalmente sobre toda la imagen y (3) no limita sobre bordes pero si lo hace normalmente sobre todo lo demas.
ss_x y ss_y(>=1.0) permiten aplicar el metodo llamado supersampling (cuando son mayores que 1.0), que se trata de primero usar
resize para agrandar la imagen, aplicar el filtro, y luego resize al tamaño original (internamente se utiliza el filtro lanczos). El objetivo
de hacer esto es evitar la aparicion de aliasing, aunque tampoco conviene subir mucho estos valores para evitar reducir la efectividad
del filtro, lo ideal es usar los minimos que eviten el aliasing. Con dest_x y dest_y pueden indicar una resolucion de salida, para asi
ahorrarse una etapa de resize.
soft(-1 a 100) suaviza (efecto smooth) el efecto del filtrado, es decir que se deberia ocupar de limpiar ruido que haya sido amplificado
durante el mismo. Su intensidad dependera de que tanto ruido haya en el video antes de aplicar la funcion. Tambien podria usarse
como filtrado ligero de ruido si por ejemplo tambien usan edgemode=1, ya que de esta forma el filtro no amplifica el ruido que pudiera
haber sobre fondos o areas de poco detalle y soft puede trabajar de forma mas eficiente sobre el ruido que suele presentarse en dichas
areas. (-1) calcula automaticamente un valor apropiado.
wide=true en vez de tomar los limites locales de un pixel en una matriz de 3x3 pixeles aledaños, utiliza una matriz de 5x5, y permite
lograr mejores resultados si el video original esta muy borroso y/o si se usa supersampling.

Existen otros parametros que no se mencionan, pero que no deberian necesitar para una correcta aplicacion del filtro. De todas
maneras pueden recurrir a la

Ejemplo:
LimitedSharpenFaster(edgemode=1, ss_x=1.0, ss_y=1.0) -> efecto sharpen sin proteccion contra aliasing y aplicado solo sobre
bordes.

Descarga (click derecho->guardar archivo como...)

Pueden leer mas sobre la filosofia detras de su funcionamiento aqui, aunque se trata de una version anterior lo que alli se explica
seguro sigue siendo valido, pero no presten atencion a los parametros y sus valores, eso cambió.

LSFmod
Modificacion de la funcion LimitedSharpenFaster, que agrega importantes mejoras de versatilidad, asi como tambien otras
correcciones y optimizaciones varias.
Al igual que la funcion original, el objetivo es el aumento de nitidez del video tratando de evitar o por lo menos minimizar la aparicion
de los artifacts comunes a la aplicacion de un filtro sharpen.
Visto que la razon principal de esta modificacion es ofrecer una mayor versatilidad en la configuracion, de no buscar hilar muy fino
seria mejor que usen la version original, para evitar complicarse de mas con la gran cantidad de parametros extra.

Filtros requeridos:
MaskTools2
RemoveGrain
WarpSharp (solo para Smode=1)
VariableBlur (solo para Smode=2)

Sintaxis y valores por defecto:


LSFmod(defaults="fast", strength=100, Smode=3, Smethod=2, kernel=11, preblur="OFF", secure=true, source, Lmode=1, soft=0,
soothe=true, keep=20, edgemode=0, edgemaskHQ=false, ss_x=1.5, ss_y=ss_x, dest_x, dest_y, show=false, screenW=1280,
screenH=1024)

El parametro defaults permite predeterminar el valor de todos los demas.


Desde ya que aunque fijen este parametro tambien pueden fijar los demas, en cuyo caso el valor del parametro que fijen
manualmente es el que se usa.
defaults="old": funcionamiento exactamente igual a la funcion LimitedSharpenFaster por defecto. Equivale a los mismos valores
mostrados en la sintaxis salvo por: secure=false, soothe=false, keep=25, edgemaskHQ=true
defaults="fast": es la config por defecto, y son los valores mostrados en la sintaxis, que corresponden a una aplicacion rapida del
filtro.
defaults="slow": aplicacion lenta pero en teoria de mayor calidad. Los parametros diferentes a los por defecto son: Smode=5,
Smethod=3, secure=true, Lmode=4, soft=-2, edgemaskHQ=true.
Como siempre, strength regula la fuerza de aplicacion. Dado que el proposito de la funcion es limitar el efecto para evitar remarcar o
crear ruido, pueden subir el valor de este parametro sin miedo (dentro de limites razonables claro).
Se pueden usar diferentes modos para lograr el efecto sharpen, segun el valor de Smode sea igual a: 1-UnSharp Masking (filtro
WarpSharp); 2-UnSharp Masking (filtro VariableBlur); 3-Range Sharpening; 4-NonLinear Sharpening (original); 5-NonLinear
Sharpening (corregido).
A su vez, los modos 3, 4 y 5 pueden aplicarse usando tres metodos diferentes, que se fijan como Smethod=: 1-3x3 kernel;
2-Min/Max; 3-Min/Max + 3x3 kernel.
En mis pruebas (usando Smode=3), el primer metodo lo note menos agresivo que el segundo, es decir que el efecto sharpen era
notablemente inferior. Mientras que el tercer metodo no presenta mucha diferencia respecto del segundo, apenas se nota que es mas
agresivo.
El valor de kernel solo afecta a los metodos 1 y 3, y permite incrementar su agresividad. El valor por defecto es la minima agresividad,
y de ahi puede tomar los valores: 20, 12 y 19, en orden de menos a mas agresivo. Aunque no esperen grandes diferencias, por lo que
pude ver se nota mas en fondos y areas de colores solidos.
Solo en los modos 3, 4 y 5, para evitar producir ruido sobre bordes (ringing), se puede activar preblur="ON". Y si ademas se desea
evitar reforzar el ruido en general, se puede usar este parametro junto con su filtro de ruido favorito, por ejemplo asi:
preblur="FFT3DFilter(plane=4)". Esto en el caso de que no hayan filtrado el ruido previamente.
secure=true (solo util en los modos 3, 4 y 5) evita el efecto de bandas sobre gradientes de color, asi como tambien la apariencia
aceitosa. Segun mis observaciones lo que hace este parametro es reducir o directamente anular la aplicacion del efecto sharpen sobre
fondos o superficies de color solido, y asi logra evitar los problemas mencionados. Recomendable dejarlo activado.
Lmode sirve para configurar la forma en que la funcion limita el efecto sharpen. No limitar equivale a mayor agresividad pero tambien
a mayores artifacts. Los valores posibles son: 1-Limita la aplicacion de forma general; 2-Limita la aplicacion solo sobre bordes (mayor
agresividad sobre fondos, colores solidos, texturas); 3-Limita a cero la aplicacion sobre bordes y normal sobre todo lo demas (menor
agresividad sobre bordes); 4-Limita normal sobre bordes y tambien limita pero mas agresivo sobre lo demas.
Para compensar el efecto sharpen se puede hacer uso de soft, que puede variar de 0 a 100. Un valor de -1 calcula un valor
automaticamente igual que en la funcion original, y un valor de -2 calcula automaticamente segun un nuevo metodo de LSFmod.
Ignoro las diferencias.
Para reducir la inestabilidad temporal(ruido aleatorio en general y artifacts sobre el movimiento) y el aliasing, limitando un poco mas
el efecto sharpen, se puede aplicar soothe=true. El parametro keep es el minimo porcentaje de efecto sharpen que se debe dejar
pasar, es decir que pone un maximo a que tanto puede debilitarse el efecto sharpen de estar usando soothe=true.
edgemode=0: filtra todo; =1: filtra solo bordes (similar a usar secure=true); =2: filtra todo lo que no sea bordes; =-1 muestra los
bordes.
edgemaskHQ=true: misma mascara de bordes que la version original; =false: mascara mas rapida pero de menor calidad.
Para controlar el aliasing(efecto serrucho en bordes) estan presentes los tipicos factores de supersampling: ss_x y ss_y, cuyo valor
equivale a un resize de tantas veces la imagen original, aplicacion del filtro y vuelta a tamaño original. No usen valores muy altos
porque limitaran mucho el efecto sharpen, solo el minimo para evitar el aliasing. Con dest_x y dest_y pueden indicar una resolucion
de salida, para asi ahorrarse una etapa de resize.

26 de 43
Manual AviSynth

Colocando show=true pueden aprovechar una funcionalidad extra de la funcion que consiste en mostrar a la salida una comparacion
entre el video antes y despues de aplicar el filtrado, junto con informacion sobre la configuracion. Los valores de screenW y screenH
son las resoluciones horizontal y vertical de la imagen de salida respectivamente.

Una utilidad mas que interesante la encuentran en el parametro source. Basicamente este les permite definir un video de referencia,
para que la funcion no aumente la nitidez mas alla de este. Es decir que pueden usar la funcion para restaurar el detalle perdido en
una etapa de filtrado de ruido.
El uso vendria a ser:
video_original
filtro_de_ruido()
LSFmod(source=video_original)
Ejemplo:
a = last
FFT3DFilter(bt=5, plane=4, bw=32, bh=32, ow=16, oh=16)
LSFmod(source=a)

Ejemplos:
Aplicacion identica a la funcion LSF original por defecto:
LSFmod(defaults="old")
Partiendo de la configuracion por defecto de LSF original pero aprovechando las mejoras de la nueva version:
LSFmod(defaults="old", secure=true, soothe=true, preblur="ON") -> tengan en cuenta que la finalidad de estas nuevas opciones es
controlar los artifacts, cosa que logran reduciendo el efecto sharpen.

Descarga y discusion en doom9

SeeSaw
Cuando se busca el aumento de la nitidez de un video, lo que se recomienda para lograr un resultado satisfactorio es hacerlo mediante
dos etapas de filtrado, ambas opuestas en objetivos.
Una etapa de filtrado de ruido (o efecto smooth) y la etapa de efecto sharpen. Esto se hace asi porque de aplicar solo el efecto sharpen
el ruido ya presente se veria muy intensificado y el resultado aunque tendria la mayor nitidez tambien se veria bastante mal por el
incremento del ruido. Entonces un resultado que podriamos llamar estable se consigue combinando ambas etapas de filtrado, que
siendo opuestas tienden a ofrecer un termino medio aceptable.
De aplicarse primero el filtrado de ruido, luego el sharpen podra aplicarse de forma segura sin miedo a intensificar el ruido que ya no
esta. Pero de usar este orden mucho del detalle fino se pierde con la primer limpieza, y dicho detalle no puede ser recuperado.
Si primero se aplica el sharpen, todo el detalle esta disponible para ser intensificado. Pero luego, debido a la prescencia potenciada de
ruido, se debe aplicar el smooth, y este proceso contraresta mucha de la ganacia de detalle obtenida en la primer etapa.
Por supuesto, lo que se busca es el termino medio sea cual sea el metodo que se use.

La funcion SeeSaw se ocupa de realizar este proceso de dos etapas automaticamente. Sin embargo no usa ninguna de las
aproximaciones mencionadas por si solas, sino que combina ambas tratando de permanecer en un punto intermedio y asi obtener los
mejores resultados.
Resumiendo: el resultado se vera beneficiado por una disminucion del ruido y un aumento de nitidez. Por otro lado, si el original posee
efecto halo, este se vera notablemente intensificado.

Importante: esta funcion esta pensada para videos que ya se ven razonablemente bien. Aplicarla directamente sobre videos que
poseen artifacts mas "pesados" que simple ruido no es recomendable sin antes ayudar con algo de filtrado previo que apunte
especificamente a dichos artifacts.

El filtrado de ruido lo hacen con su filtro denoiser favorito, asi SeeSaw trabaja comparando el video filtrado por ustedes con el
original. Esto les permite elegir el mejor filtrado de ruido segun sus preferencias y las circunstancias.
Tambien pueden aplicar la funcion directamente, aprovechandose el filtrado interno de ruido, que utiliza el filtro RemoveGrain,
aunque lo mejor es usar un denoiser aparte.

Filtros requeridos:
RemoveGrain y Repair
MaskTools2

Sintaxis:
SeeSaw("video original", "video con ruido filtrado", Sstr=1.5, ssx=1.0, ssy=ssx, NRlimit=2, NRlimit2=NRlimit+1, Slimit=NRlimit+2,
bias=49)

Sstr es la intensidad de aplicacion.


El supersampling (para evitar aliasing) se fija con ssx y ssy, pero segun la documentacion no es necesario, a lo sumo usar bajos
valores como 1.25 deberia ser suficiente.
NRlimit representa el maximo cambio que puede sufrir un pixel por el filtrado de ruido, por lo que aumentar este valor potencia el
filtrado de ruido. Pero ojo porque NRlimit2 y Slimit por defecto dependen de este, asi que si solo se definen este parametro se estara
aumentando la agresividad en general de la funcion. De necesitarse solo regular la funcion que representa este parametro se deben
definir los otros dos explicitamente.
NRlimit2 tambien limita cambios por denoising, pero en una etapa de filtrado intermedia, no la definitiva, por ello por defecto tiene un
valor mas alto.
Slimit es el limite del cambio maximo de un pixel por efecto sharpen. Aumentar este valor incrementa el efecto sharpen.
Visto que SeeSaw trata de mantenerse en un estado intermedio entre los dos metodos comentados, se ofrece el parametro bias para
inclinar la balanza hacia el metodo sharpen->smooth, o de mayor detalle fino pero mas ruido (bias>=50); o hacia el metodo
smooth->sharpen, menor ruido pero bajo detalle fino (bias<50).

Tiene mas parametros, como pueden ver en el script, pero no creo que valga la pena mencionarlos y lo que les recomiendo es que los
dejen como vienen por defecto.

Ejemplo 1:

a = last

b = a.Denoiser_Favorito()

SeeSaw()

Ejemplo de uso generico. El a = last indica que se toma el video tal como esta al llegar a dicha linea.

Ejemplo 2:

LoadPlugin("H:\tallervideo\Filtros Avisynth\fft3dfilter.dll")
LoadPlugin("H:\tallervideo\Filtros Avisynth\mt_masktools-26.dll")
LoadPlugin("H:\tallervideo\Filtros Avisynth\RepairSSE2.dll")

27 de 43
Manual AviSynth

LoadPlugin("H:\tallervideo\Filtros Avisynth\RemoveGrainSSE2.dll")

Import("H:\tallervideo\Filtros Avisynth\SeeSaw.avs")

DirectShowSource("C:\...\video.avi")

a = last

b = a.FFT3DFilter(bt=5, plane=4, ow=16, oh=16)

SeeSaw(a, b, Sstr=1.0)

Ejemplo de script completo. Se disminuye la fuerza de la funcion para un mejor resultado en un video de buena calidad. Se aplica el
exelente filtro de ruido FFT3D en un modo de alta calidad e intensidad media.
Ojo que este ejemplo posee una etapa de filtrado de ruido bastante potente.

Descarga (click derecho->Guardar archivo como)

Sharpen
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

El filtro Sharpen es el unico filtro para dicho efecto que viene incluido con AviSynth.

Sintaxis:
Sharpen(amount,MMX)
Sharpen(amountH,amountV,MMX)

Donde 0.0<amount<1.0 es un valor real y representa la fuerza del filtro.


En la segunda forma de invocarlo la variable amountH sirve para indicar por separado la intensidad del filtro en forma horizontal,
mientras que se indica con amountV la vertical.
MMX(true,false): activado por defecto. Si se desactiva (MMX=false) se puede evitar la aparicion del efecto "halo", donde se forman
"bandas claras" en los contornos de los objetos. Sin embargo su desactivacion previene al filtro de aprovechar las capacidades MMX del
procesador y por ende resulta en una caida de la velocidad, asi que solo desactiven si notan molesto dicho efecto.

Ejemplo:
Sharpen(0.85)

« Última modificación: Agosto 07, 2010, 20:50:48 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Ajustes
Moderador « Respuesta #6: Noviembre 07, 2009, 14:34:36 »

Desconectado

Sexo:
Conversion de Color
Reg: 26-06-2006
Mensajes: 8.122
ConvertToXXX
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Convierte el video al espacio de color elegido. Util cuando el filtro que quieren usar solo soporta algunos formatos especificos o uno
solo en particular, como por ejemplo el filtro SpatialSoften, que solo soporta trabajar sobre YUY2. Tambien en el caso de que el
codificador a donde envian el video soporte un formato de color de entrada especifico.

Sintaxis:
ConvertToXXX(matrix,interlaced,chromaplacement,chromaresample)

XXX puede ser: RGB, RGB24, RGB32, YUY2, Y8, YV411, YV12, YV16, YV24.
En matrix pueden elegir entre usar: "Rec.601"(default), "PC.601", "Rec.709" y "PC.709", todos van con comillas incluidas. Esto le
indica al filtro cual es el rango de colores. Los Rec reducen el rango a aquel soportado por la TV analogica(16,235) y los PC procesan el
rango de color completo(0,255). Segun la informacion en la wiki matrix="Rec.601" debe ser usado cuando la fuente es XviD/DivX o
capturas analogicas; matrix="Rec.709" en cambio se recomienda usarlo cuando la fuente es HDTV o DVD.
interlaced puede ser true o false(default) y lo activan cuando la fuente es entrelazada.
chromaplacement se usa cuando convierten desde o hacia YV12, pueden elegir entre "MPEG2" (default), "MPEG1" o "DV", con las
comillas incluidas.
chromaresample es el filtro de reescalado que se usa para la crominancia en los casos en donde la misma tiene diferente resolucion
entre los formatos de color que se estan convirtiendo. Puede usarse cualquiera de los mencionados en el filtro Resize, el default es
chromaresample="Bicubic".

Ajustes de Color y Niveles


Aqui encuentran todo lo relacionado a regular color, brillo, contraste, gamma, etc.

ColorYUV
[YUY2-Y8-YV411-YV12-YV16-YV24]

Filtro interno que ofrece varias formas de modificar color y luminancia(brillo y contraste) de un video en formato de color YUV (no
sirve para RGB).

Sintaxis:
ColorYUV(gain_y, off_y, gamma_y, cont_y, gain_u, off_u, cont_u, gain_v, off_v, cont_v, opt, levels)

gain_y es un multiplicador del maximo valor de luminancia, es decir que aumenta el nivel de blanco, estirando hacia arriba, desde el
minimo valor(nivel de negro, que no se modifica), la gama de valores de luminancia, por supuesto con el objetivo de lograr una mayor
luminosidad. Puede tomar valores entre 0 y 1024. En el filtro Tweak esto equivale al parametro cont. Para lograr un aumento de
(k+1) veces, deben colocarle al parametro un valor de k*256, por ejemplo para aumentar 1.2 veces el nivel de blanco usan
gain_y=51.2.

28 de 43
Manual AviSynth

gain_u y gain_v hacen lo mismo con la crominancia (planos U y V, azul y rojo respectivamente), pero no tiene mucho sentido su
aplicacion, dado que produce un estiramiento hacia el azul o el rojo que arruina los colores.
off_y vendria a ser el brillo, o el equivalente al parametro bright del filtro Tweak. Lo que hace la funcion brillo es sumarle o restarle a
la luminancia un determinado valor, en este caso definido por el parametro off_y.
off_u y off_v aplican el mismo concepto a la crominancia, pero nuevamente no son utiles dado que producen un corrimiento hacia azul
o rojo, en este caso aun mas marcado dado que se modifican todos los valores por igual.
cont_u y cont_v sirven para regular el color, tal como el parametro sat del filtro Tweak. Esta funcion lo que hace es estirar los valores
de crominancia desde el centro hacia afuera, reduciendo el minimo nivel y aumentando el maximo, y es en esto que difiere de gain,
que solo aumentaba el maximo. Este comportamiento permite evitar el problema del corrimiento que si producian off y gain cuando se
usaban con la crominancia. Lo que hay que tener en cuenta es que como los parametros regulan los canales V y U por separado, para
regular el color en general deben definir ambos parametros con el mismo valor. Los valores siguen el mismo criterio que el parametro
gain.
cont_y es lo mismo pero aplicado a la luminancia y se puede usar para aumento de contraste, con la salvedad de que como tambien se
modifica el nivel de negro, se notara un oscurecimiento muy marcado de la imagen. Por ello, salvo se busque especificamente reducir
el nivel de negro, es mejor usar la funcion gain_y para aumento de contraste convencional.
Opcionalmente es posible limitar el rango de valores de luminancia colocando opt="coring". De hacerlo, todos los valores fuera del
rango de [16,235] seran eliminados.
Mediante levels="PC->TV" o levels="TV->PC" es posible realizar la conversion del rango de luminancia, entre el de la PC: [0,255], y el
de la TV: [16,235]. Como pueden ver esta conversion lo que hace es modificar los valores limite para el nivel de negro y nivel de
blanco, asi que el efecto es el mismo que aplicar la funcion cont_y.

Ejemplos:
Para aumentar contraste 1.2 veces -> ColorYUV(gain_y=51.2)
Para aumentar color 1.2 veces -> ColorYUV(cont_u=51.2, cont_v=51.2)
Para aumentar brillo -> ColorYUV(off_y=10)
Para disminuir brillo -> ColorYUV(off_y=-10)

GreyScale
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Convierte el video a escala de grises (blanco y negro), pero sin cambiar el formato de color.

Sintaxis:
Greyscale()

Tweak
[YUY2-Y8-YV411-YV12-YV16-YV24]

Con el podremos regular a gusto contraste, brillo, saturacion y color. Es sumamente util y nos permitira lograr algun que otro efecto
muy interesante.

Sintaxis:
Tweak(hue,sat,bright,cont,coring,startHue,endHue,maxSat,minSat,interp)

hue(-180.0 a +180.0, por defecto en 0.0): tiñe la imagen hacia un determinado color. Valores mayores llevan la imagen hacia el rojo,
mientras que valores menores lo hacen hacia el verde.
sat(0.0 a 10.0, por defecto en 1.0): ajusta la saturacion del color, o sea que este vendria a ser el valor que ajusta la intensidad del
color. Valores por debajo de 1.0 la reducen y viceversa.
bright(-255.0 a +255.0, por defecto en 0.0): regula el brillo. Con bright>0.0 se aumenta, mientras que a valores negativos se
disminuye.
cont(0.0 a 10.0, por defecto en 1.0): contraste, 1.0 es sin variacion, valores inferiores lo bajan, valores mayores lo aumentan.
coring(true o false, por defecto true): lo que hace cuando esta activado es limitar la luminancia a valores en el rango [16,235], siendo
este el rango de TV. De definirse como false se usa el rango de PC, que es [0,255]. Limitar el rango equivale a impedir que algunas
areas de la imagen tomen valores muy negros o muy blancos.
maxSat(por defecto 150.0) y minSat(por defecto 0.0) (ambos van desde 0.0 a 150.0, en porcentaje): permiten definir el rango de
valores de saturacion que debe tener un pixel para que se le aplique el filtrado que regulan los parametros hue y sat. Por ejemplo, util
para cuando solo desean aumentar el color de ciertas areas de la imagen sin saturar las demas. Para RGB el valor maximo sera de
100.0 (100%), para otros espacios de color esta permitido usar hasta 150.0(150%).
startHue(por defecto 0.0) y endHue(por defecto 360.0) (ambos desde 0.0 hasta 360.0 en grados): igual que los anteriores, definen un
rango para la aplicacion de los parametros hue y sat, solo que en este caso el rango consiste en los valores de hue de cada pixel.
interp(0 a 32, por defecto 16): se usa para interpolar (de forma lineal) los valores de minSat y maxSat, en el rango [minSat-
interp,minSat] y [maxSat,maxSat+interp]. Con interp=0 no hay interpolacion, util por ejemplo cuando el video se compone
unicamente de colores uniformes (anime por ej).

Pueden ver algunos ejemplos de aplicacion aqui.

Ajustes de Framerate
Filtros destinados a trabajar sobre los frames por segundo o FPS de un video.

AssumeFPS
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
AssumeFPS(fps,sync_audio)
AssumeFPS(numerator,denominator,sync_audio)
AssumeFPS(clip1,clip2,sync_audio)
AssumeFPS(preset,sync_audio)

Se ocupa de modificar el framerate de reproduccion sin modificar el conteo de frames (causando que el video se reprodusca mas rapido
o mas lento de lo normal).
Si se usa sync_audio=true (false por defecto) tambien modificara el sample rate del audio para igualar la duracion del video. Esto
tambien constituye un metodo para modificar unicamente el sample rate del audio.
fps es un numero real que representa los frames por segundo, aunque es mas conveniente cuando se trata de NTSC utilizar la relacion
30000/1001 (en vez de 29.97) o 24000/1001 (en vez de 23.976), utilizando los valores numerator y denominator para el numerador
y el denominador respectivamente. Esto se recomienda dado que cuando especifican un numero real avisynth lo pasa a una relacion,

29 de 43
Manual AviSynth

entonces siendo 23.976 y 29.97 resultados aproximados de las relaciones ya mencionadas en la realidad cuando avisynth los pase no
dara la relacion estandar exacta.
Tambien pueden valerse de presets ya existentes para elegir los FPS segun los estandares, mediante el valor preset, y segun los
mencionados en la tabla de esta pagina.
Si otro video esta presente (mediante clip2 es posible agregarlo) entonces el frame rate del video original (clip1) sera igualado al
mismo, util cuando se desean unir dos videos de framerate ligeramente distintos.

Ejemplo:
AssumeFPS(24000,1001,true)
Permite modificar los FPS a 23,976 y tambien modifica el audio.

ChangeFPS
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Modifica el frame-rate eliminando o duplicando frames, sin modificar la duracion.

Sintaxis:
ChangeFPS(fps,linear)
ChangeFPS(numerator,denominator,linear)
ChangeFPS(clip1,clip2,linear)
ChangesFPS(preset,linear)

linear=false (por defecto en true) evita que AviSynth pida los frames de una forma lineal.
El resto de parametros y su funcion coinciden con el filtro AssumeFPS, asi que pueden guiarse con dicha descripcion.

Decimate
[YUY2-YV12]

Elimina frames de un video. Util para reducir el frame rate de videos con frames duplicados. Opera eliminando un frame de un grupo
de N frames, siendo N un parametro configurable, metodo tambien llamado 1-in-N.

Sintaxis:
Decimate(cycle,mode,threshold,threshold2,quality,ovr,show)

cycle fija el valor de N, es decir que se elimina un frame cada N frames. Rango: 2-25 (por defecto: 5).
mode determina el modo de operacion del filtro. Rango: 0-3 (por defecto: 0).
mode=0: el filtro descarta el frame del ciclo de N frames que se determina como el mas similar a su predecesor.
mode=1: en vez de eliminar el frame detectado como duplicado, lo reemplaza por una interpolacion entre dicho frame y el siguiente, o
lo deja pasar. El algoritmo elige que opcion tomar basandose en: si el ciclo de frames es de un video con pulldown 3:2 o video puro(sin
frames duplicados); el valor de threshold. Este modo esta recomendado para material hibrido, es decir con partes del video con frames
duplicados y partes con el frame rate puro.
mode=2: elimina un frame de la seguidilla mas larga de frames detectados como duplicados. Este modo se recomienda como el mas
confiable para usar con Anime o material donde el movimiento ocurre solo en cada segundo, tercero, cuarto, etc frame.
mode=3: en vez de eliminar el frame mas similar, el filtro aplica diferentes estrategias al ciclo de frames segun sea un ciclo con
pulldown 3:2 o un cliclo puro. Ciclos de video puro los procesa de forma normal. A los ciclos con duplicados se les aplica una mezcla de
frames, de tal forma que de 5 frames queden 4. Hay dos factores que le permiten decidir al filtro como proceder: si el ciclo de frames
es o no puro y en el valor de threshold.
Este modo es util para videos hibridos que tienen mayormente video sin frames duplicados.
threshold, valor decimal, por defecto 0.0; como se dijo en mode=1 los frames detectados como duplicados se pueden tratar de dos
formas, se los interpola o se los deja pasar cuando la diferencia metrica entre frames supera el valor del threshold (siempre y cuando
este sea mayor que cero). Esto es ultil porque permite configurar el filtro para que sepa que considerar como duplicado y que no en un
determinado video. Para saber que valor usar se aplica la funcion show(true,false), que muestra sobre el video el valor de la diferencia
metrica entre frames.
Este valor afecta mode=3 de forma similar. No sirve para mode=0.
threshold2: valor real, por defecto 3.0; en mode=2 este parametro establece cuan cerca dos frames deben estar para ser considerados
duplicados
quality: entre 0 y 3, por defecto en 2, regula la calidad de la deteccion de frames duplicados. 0 es mas rapido y 3 mas lento.
ovr: acepta texto donde se especifique la ubicacion de un archivo para forzar la desicion del filtro, es decir en ciertos casos el video
habra salido perfecto salvo un par de frames en donde el filtro se equivoco, entonces pueden forzar la aplicacion del filtro sobre esos
frames en particular mediante un archivo de texto de extension .dec, sonde deben especificar dichos frames con su correspondiente
numero, uno por renglon. Ej: ovr="C\...\anular.dec".

Descarga

FUENTE: manual de referencia (Reference Manual) incluido en la descarga.

FDecimate
[YV12-YUY2]

Permite remover frames de un video, con el objetivo de variar la tasa de frames por segundo, sin producir desincronizacion
audio/video.
La diferencia con el filtro Decimate es que permite reducir el frame rate a cualquier valor de forma eficaz, dado que no esta restringido
a solo eliminar 1 frame cada tantos (metodo tambien llamado 1-in-N) sino que es capaz de detectar y eliminar los frames duplicados
cuando le es posible. El metodo de 1-in-N para remover frames no puede ser utilizado cuando el proceso que se aplico para duplicar
los frames en primer lugar no fue de la misma indole (ej: videos a 120FPS).

Sintaxis:
FDecimate(29.97)

Por supuesto en vez de 29.97 ponen el valor deseado.

Descarga y Documentacion

PullDown
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:

30 de 43
Manual AviSynth

PullDown(a,b)

Proceso tambien llamado telecine, se trata de representar el primer frame mediante a campos y el segundo mediante b campos, y asi
se repite hasta el final del video.
Por ejemplo: un telecine 2:3 o 3:2 (a:b) modifica el framerate de 23.976 a 29.97 agregando campos duplicados, dos para el primer
frame y tres para el segundo, y asi hasta el fin del video.
Usar a=0 y b=3 (0:3) es lo mismo que deshacer el pulldown 3:2 (29.97 -> 23.976).
Este ultimo no lo probe asi que ignoro si realmente funciona, aunque el pulldown 2:3 o 3:2 si debiera hacerlo sin problemas.

Oscurecimiento de Lineas
Con videos de anime como objetivo, sirven para remarcar las lineas negras.

FastLineDarken 1.3 MT MOD


[YV12]

FastLineDarknen cumple la función de marcar los bordes, dejándolos mas negros de lo normal y según mis pruebas, algo muy
levemente engrosados. Ayuda bastante para bordes que se ven pálidos o se ven poco. cumple la misma función que toon, pero
obviamente conlleva a artifacts por ser rápido pero no me refiero a q si se ocupa de manera común salga, todo lo contrario si se hace
abuso de este como sucede con toon, saldrán los molestos puntos negros dentro de los cuerpos de los elementos.
*Nota: en espacio de color, no importa el formato que tenga el video en dicho aspecto, pues con el filtro ConvertToYV12() se anula
el error de color que nos saldría en megui o virtualdub al ocupar el script, pues este nos hará la conversión a dicho formato de color.
Claro que este comando debe colocarse como el primer filtro dentro del script, porque hay casos en los cuales algunos filtros no lo
detectan si no esta entre los primeros.

Requerimientos:
MaskTools2

Funcionamiento:

FastLineDarkenMOD(strength, luma_cap, threshold, thinning)

*Nota: en la información saldrá puesto FastLineDarken(strength, luma_cap, threshold, thinning), pues bien, debemos agregarle la
frase MOD al final, de lo contrario lanzará el ejecutor del script (Megui, Virtualdub, VirtualdunMod) el error de función no existente.

strength (Fuerza): desde 0 hasta 256. Default: 48


Regula la fuerza del filtro. Representa la maxima reduccion de luminancia, es decir el maximo oscurecimiento que puede
sufrir una linea.

luma_cap (Luminancia): desde 0 a 255. Default: 191


0 representa el blanco, 255 representa el negro, es decir, aquí adecuamos la cantidad de color del borde, de claro a oscuro.

threshold (Umbral): Default: 4.


No hay información certera del parámetro máximo de esta opción.
Valor de 0 inhabilita este parámetro. Se recomienda poner el valor 4, ya que hay una gran cantidad de pixeles que son marcados al
azar, los cuales se oscurecen débilmente. El valor 4 viene a solucionar eso.

thinning (Adelgazamiento): desde 0 a 256. Default: 24


Cantidad de adelgazamiento opcional de la linea. El valor 0 desactiva esta función, y esto a la vez da una gran velocidad en el filtrado.

*Nota 1: hay que tener en cuenta que el adelgazamiento oscurece un poco os pixeles restantes en cada linea.

*Nota 2: se recomienda dejar thinning=0, si se pone valores mas altos que 0, y si mal no estoy es un parametro que quedo mal
editado creo, el video queda completamente cubierto de una capa verde por encima, quedando los detalles por detrás. Para evitar esto
dejar, como ya mencione, thinning=0.

Discusión en doom9.org

Recuerden copiar el texto en un archivo .avs, es decir, abren el block de notas, copian el texto, lo pegan en el block de notas, van al
menú archivo, luego hacen click en guardar como, colocan el nombre del filtro con extension .avs (ejemplo: FastLineDarken 1.3 MT
MOD.avs) y hacen click en guardar. Si se fijan se guardará en un archivo .avs y esta listo para usarse.

Citar

##############################
# FastLineDarken 1.3x MT MOD #
##############################
#
# Written by Vectrangle
# Didée: - Speed Boost, Updated: 11th May 2007
#
# * requires mt_masktools v2
# * requires yv12 input
#
# Usage is FastLineDarkenMOD(strength, luma_cap, threshold, thinning),
# named parameters are supported eg FastLineDarken(thinning=0)
#
# Note that you must import this avs into your script using import("...\FastLineDarken.avs")
#
# Parameters are:
# strength (integer) - Line darkening amount, 0-256. Default 48. Represents the _maximum_ amount
# that the luma will be reduced by, weaker lines will be reduced by
# proportionately less.
# luma_cap (integer) - value from 0 (black) to 255 (white), used to stop the darkening
# determination from being 'blinded' by bright pixels, and to stop grey
# lines on white backgrounds being darkened. Any pixels brighter than
# luma_cap are treated as only being as bright as luma_cap. Lowering
# luma_cap tends to reduce line darkening. 255 disables capping. Default 191.
# threshold (integer) - any pixels that were going to be darkened by an amount less than
# threshold will not be touched. setting this to 0 will disable it, setting
# it to 4 (default) is recommended, since often a lot of random pixels are
# marked for very slight darkening and a threshold of about 4 should fix
# them. Note if you set threshold too high, some lines will not be darkened

31 de 43
Manual AviSynth

# thinning (integer) - optional line thinning amount, 0-256. Setting this to 0 will disable it,
# which is gives a _big_ speed increase. Note that thinning the lines will
# inherently darken the remaining pixels in each line a little. Default 24.
#
# Changelog:
# 1.3 - added ability to thin lines, now runs much slower unless thinning=0. Changed the defaults (again)
# 1.2 - huge speed increase using yv12lutxy =)
# - weird darkening issues gone (they were caused by yv12layer)
# - show option no longer available due to optimizations. Use subtract() instead
# 1.1 - added luma_cap option
# 1.0 - initial release
#

function FastLineDarkenMOD( clip c, int "strength", int "luma_cap", int "threshold", int "thinning")
{
## parameters ##
str = string(default(strength, 48) /128.)
lum = string(default(luma_cap, 191))
thr = string(default(threshold, 4))
thinning = default(thinning,24)
thn = string(thinning /16.)

## filtering ##
exin = c.mt_expand().mt_inpand()
diff = mt_lutxy(c,exin,yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? 127 +",uexpr="x",vexpr="x",u=2, v=2)
linemask= mt_lut(diff.mt_inpand(),"x 127 - "+thn+" * 255 +").RemoveGrain(20,-1)
thick = mt_lutxy(c, exin, yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? "+str+" * x +",uexpr="x",vexpr="x",u=2, v=2)
thin = mt_lutxy(c.mt_expand(),diff,yexpr="x y 127 - "+str+" 1 + * +",u=2, v=2)

return (thinning == 0) ? thick : mt_merge(thin,thick,linemask,y=3,u=2,v=2)


}

Toon
El filtro Toon nos ayuda prácticamente a remarcar las lineas de los dibujos animados, los bordes. Por ejemplo, si poseemos una fuente
de video en donde las lineas de los bordes están o muy suavizados o simplemente no vienen con un buen marcado como corresponde,
este nos ayudara a darle el realce que necesita. Recordar siempre que no se debe abusar del filtro en su parámetro, si se abusa, por
ejemplo, en fuentes buenas que solo necesitan de 0.3 de parámetro, pero se le coloca 0.6, es muy probable que aparezcan puntos
negros en el cuerpo del dibujo en escenas de movimiento, que es donde mas se notará, pero no se quedaran fijas, sino que saldrán en
ciertos frames del video y de manera rápida, no sera constante, pero aparecerán esos defectos.

Requisitos:
aWarpSharp

Como se usa:

Toon(strength)

Nota: valor máximo de strength: 1.0

Recomendados:

Toon(0.25) - Para fuentes en buen estado y que necesitan solo un marcado suave de bordes

Toon(0.30) - Para fuentes donde las lineas necesiten un poco mas de filtrado.

Toon(0.35)- Para Fuentes que necesiten marcar bastante las lineas, de bordes algo débiles

Toon(0.40) - Potencia algo mas que fuerte ya para bordes bien malas

Hice pruebas con 0.65, y ahí ya me salieron fallas como las mencionadas anteriormente, la de aparición de puntos negros en el cuerpo
del dibujo, todo lo q esta dentro de los bordes, no en exceso, pero con buen ojo se nota.

ya del Toon(0.40) hacia adelante, les dejo la responsabilidad a cada uno y según su propio criterio.

Info General y Descarga(v1.0)

Discusion en Doom9's.org (Ingles)

Existe una version modificada del filtro aWarpSharp (ver seccion filtros sharpen), que posee mejoras de estabilidad, calidad y
optimizaciones.
La version 1.1 del filtro Toon es la version 1.0 modificada para poder trabajar con la nueva version de aWarpSharp.

Descarga Toon v1.1

aWarpSharp2

« Última modificación: Agosto 07, 2010, 20:21:08 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Varios
Moderador « Respuesta #7: Noviembre 07, 2009, 14:47:58 »

Desconectado

Sexo:
Efectos
Reg: 26-06-2006
Mensajes: 8.122
AddGrainC
[YV12-YUY2-RGB]

Genera ruido tipo grano y otros efectos derivados, como por ejemplo ruido que simula la lluvia.

Sintaxis y valores por defecto:

32 de 43
Manual AviSynth

AddGrainC(var=1.0, uvar=0, hcorr=0, vcorr=0, seed=-1, constant=false)

var y uvar: desviacion estandar para la generacion de ruido para luma y chroma respectivamente. En español: la intensidad de
generacion de ruido.
hcorr y vcorr(0.0-1.0): correlacion horizontal y vertical. Aparentemente aumentar estos valores produce un efecto de suavizado.
seed>-1 implica usar una secuencia de grano que se repita, o sea a mayores valores el grano se vuelve mas estatico.
constant=true implica un grano constante a lo largo del video, es decir que un patron de grano se repita en todos los frames.

Ejemplo de efecto lluvia:


AddGrainC(var=800,vcorr=0.9)

Descarga y Documentacion

GrainFactory3
Funcion generadora de ruido cuya intencion es simular un tipo de ruido llamado grano plateado (silver grain).
Ademas de lograr dicho efecto, introducir ruido de grano en un video puede servir para hacer mas "visibles" para el codec ciertas
zonas del video donde hay muy poco detalle (ideal para zonas oscuras), y que de otra forma serian sobrecomprimidas llevando a la
aparicion de los nefastos bloques.
Tambien podria servir para disimular la falta de detalle muy fino (texturas), y evitar una apariencia plastica.

Usese con precaucion, agregar ruido significa enormes perdidas de compresibilidad.

Filtros requeridos:
AddGrainC
MaskTools2

Sintaxis y valores por defecto:


GrainFactory3(g1str=13, g2str=15, g3str=25, g1shrp=60, g2shrp=66, g3shrp=80, g1size=1.50, g2size=1.20, g3size=0.90, g1tex=0,
g2tex=0, g3tex=0, temp_avg=0, ontop_grain=0)

#=1 -> areas oscuras, #=2 -> areas intermedias, #=3 -> areas brillantes

g#str(0-???): intensidad de aplicacion.


g#shrp(0-100): nitidez del grano.
g#size(0.5-4.0): tamaño del grano.
g#tex(0-100): intensidad de la apariencia de textura.
temp_avg(0-100): porcentaje de uniformidad temporal. Es decir que si se usa temp_avg=100 el ruido sera estatico durante todo el
video, o dicho de otra forma no variara de posicion entre frames. Valores intermedios son posibles por supuesto. El valor por defecto
representa ruido completamente aleatorio.
ontop_grain(0-???): ruido adicional que se puede agregar sobre una aplicacion previa.

La aplicacion por defecto quizas produce demasiado ruido, si buscan un efecto ligero pueden probar reduciendo los valores de g#str,
por ejemplo:
GrainFactory3(g1str=7, g2str=8, g3str=13)

Descarga (click derecho->guardar archivo como...)

Reverse
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Simple, se ocupa de que el video sea reproducido al reves, de atras hacia adelante.
En origen entrelazado la paridad entre campo superior e inferior se modifica.

Sintaxis:
Reverse()

Subtitulado
Subtitle
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Una instancia de este filtro (incluido con AviSynth) agrega una linea de texto fija a un determinado rango de frames. De necesitarse
agregar diferentes lineas se deben usar varias instancias del filtro.
No es un filtro para subtitulado de traduccion, para ello esta VSFilter.

Sintaxis:
Subtitle(text, x=8, y=size, first_frame=0, last_frame=ultimoframedelvideo-1, font="Arial", size=18.0, text_color=$00FFFF00,
halo_color=0, align=4, spc=0, font_width=pordefectodelsistema, font_angle=0.0, interlaced=false)

El texto del subtitulo va en text.


x e y son las coordenadas en las que se centra el subtitulo.
font: fuente del texto. Todas las fuentes instaladas en el sistema estan disponibles.
size: altura del texto en pixeles.
text_color(por defecto amarillo 100% opaco) y halo_color(por defecto negro 100% opaco): color del texto y color del borde del
subtitulo, se fijan en codigo hexadecimal $aarrggbb (ver aqui), salvo por las primeras dos cifras que representan el porcentaje de
transparencia, donde 00 es completamente opaco, y FF completamente transparente. Pueden usar esto ultimo para desactivar el
borde.
Para elegir como se alinea al subtitulo respecto de la coordenada fijada con x e y se hace uso de align. Pueden ver una tabla de como
se usa este parametro aqui, les debo la traduccion.
spc: modificar el espacio entre caracteres.
font_width: ancho de cada letra.
font_angle: angulo de inclinacion de la letra.
interlaced: activar en videos entrelazados.

VSFilter

33 de 43
Manual AviSynth

Filtro dedicado a pegar subtitulos sobre el video. Archivos soportados: .sub, .srt, .ssa, .ass, .pcb, .smi

Sintaxis:
TextSub("C\...\subtitulos.ass") -> para archivos de subtitulos que contienen texto (SRT, SSA, ASS)

VobSub("C\...\subtitulos.sub") -> para archivos de subtitulos que contienen imagenes, como aquellos extraidos de un DVD-Video.

Descarga (buscar en DirectShow Filters -> DirectVobSub)

« Última modificación: Septiembre 11, 2010, 15:39:58 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 MCTemporalDenoise
Moderador « Respuesta #8: Noviembre 28, 2009, 19:08:09 »

Desconectado

Sexo:
MCTemporalDenoise
Reg: 26-06-2006
Mensajes: 8.122 Muy completa y compleja funcion, que ademas de trabajar como denoiser temporal compensado por movimiento, ofrece numerosas
opciones extra de pre y post-procesado(PP). Estas se iran abordando a medida que se expliquen los parametros que las que
representan.
Estos filtros de post-proceso pueden utilizarse por separado, es decir sin aplicar el filtrado de ruido, y es esto ultimo lo que confiere a
esta funcion su caracter de multiproposito.

Descarga del script

Filtros y funciones necesarias:


(incluidos aquellos filtros requeridos por estas funciones)

MVTools v2
MaskTools v2
RemoveGrain y Repair
FFT3DFilter
FFT3DGPU (en lugar del anterior, solo si usan GPU=true)
TTempSmooth
LSFmod
WarpSharp (solo para SHmode=1)
VariableBlur (solo para SHmode=2)
EEDI2
SangNom
DeBlock_QED
DeBlock
DCTFilter
GradFun2DBmod
GradFun2db
AddGrainC

Sintaxis:
MCTemporalDenoise()

MCTemporalDenoisePP() -> Sin filtrado de ruido, para cuando se quiere aplicar el filtrado de post-proceso de forma independiente.
Este incluye las etapas de filtrado marcadas con "PP", que son las unicas que pueden ser invocadas por esta linea (es decir que solo
pueden definir sus parametros). Y ojo porque vienen todas desactivadas por defecto, por lo que asi como esta la sintaxis no sirve de
nada, asegurense de habilitar la/s etapa/s que deseen usar.

Parametros:
(segun la etapa de filtrado que afectan)

Filtrado de ruido
El radio temporal (cantidad de frames) se fija con el parametro radius entre "1" y "6", por defecto en "2", puede aumentarse para un
filtrado mas preciso pero mas lento.
Como parte del proceso se realiza un prefiltrado con el filtro FFT3DFilter, por lo que el parametro sigma se utiliza para regular su
fuerza, desde un valor de "0" (que desactiva el prefiltrado) para arriba. Por defecto esta en "4.0"
Si se busca un efecto mas fuerte (y mucho mas lento) se puede usar twopass=true para que se apliquen dos pasadas de filtrado en
lugar de una.
Se encuentra disponible el uso del filtro TTempSmooth mediante el parametro useTTmpSm=true, para un filtrado mas potente pero
mas lento.
El efecto de la o las pasadas de denoising (si se usan dos) puede ser limitado mediante limit y limit2 (primer y segunda pasada).
Pueden tomar valores desde "-1", que calcula la limitacion automaticamente y es el valor por defecto para ambas pasadas, hasta
"255", pasando por el "0" que desactiva la limitacion. Obviamente a mayores valores mayor es la limitacion, pero creo que lo mas
recomendable es usar la estimacion automatica aprovechando que la funcion posee dicha capacidad.
Para colocar una etapa de filtrado de ruido extra entre la salida del denoiser temporal y las etapas de post-procesado se hace uso de
post. Como en esta etapa tambien se usa FFT3DFilter, este parametro equivale al sigma de dicho filtro y regula su fuerza. Este
filtrado extra se desactiva usando post=0, que es como se encuentra por defecto.
El procesamiento de crominancia se habilita mediante chroma=true, por defecto esta desactivado.
Si su video es entrelazado tienen a su disposicion interlaced=true.

FFT3D
Configuracion de este plugin.
Los valores de bwbh y owoh representan el tamaño de bloque (con el que se muestrea la imagen) y solapamiento entre bloques
respectivamente, que afectan la precision espacial del filtro. A menores valores mayor calidad pero menor velocidad, por defecto:
bwbh=16y owoh=8 si el video es detectado como HD, o bwbh=8 y owoh=4 en caso contrario. Sepan tambien que por una limitacion
del filtro, owoh no puede ser nunca mayor a la mitad de bwbh. Notaran que para altas resoluciones los valores son mas elevados, eso
es para que la velocidad sea razonable aunque si buscan calidad extrema, los bajan.
La precision temporal tambien es configurable desde el parametro bt, siendo por defecto "3", puede subirse hasta "5" o bajarse hasta

34 de 43
Manual AviSynth

"1" (el filtrado pasa a ser solo espacial o 2D).


ncpu permite especificar el numero de hilos de procesamiento, en caso de que posean un procesador de mas de un nucleo. Por defecto
es "1". Solo sirve para la version comun desde ya.
Si se desea usar la version FFT3DGPU en vez de la original, basta colocar GPU=true. Y la precision de calculo se puede regular con
precision, por defecto "2".
La funcion incorpora una rutina (activada por defecto) que corrige cierto comportamiento del filtro FFT3D, a partir del cual se genera
efecto banding. Se puede eliminar esta correccion mediante fixband=false.

MVTools
Configuracion de este conjunto de herramientas, que son las encargadas de la deteccion y compensacion del movimiento, para todas
las etapas de filtrado donde esta se aplica.
blksize y overlap, son tamaño de bloque y solapamiento para el muestreo de la imagen, por defecto: blksize=16 y overlap=8 si el
video es detectado como HD, o blksize=8 y overlap=4 en caso contrario.
Los parametros thSCD1 y thSCD2 controlan la sensibilidad de deteccion de cambio de escena. El primero establece que tanta
diferencia debe existir entre dos bloques del muestreo para que se considere que hubo dicho cambio; de aumentarse el valor mayores
diferencias seran necesarias, por defecto "300". El segundo indica cuantos de estos bloques donde se detecta el cambio son necesarios
para considerar que el frame es un cambio de escena, por defecto "100". Aumentar estos parametros implica mayor fuerza de filtrado
en general, dado que le quitan precision a la deteccion de movimiento.
thSAD sirve para poner un limite a la compensacion, dado que a menores menos bloques seran compensados. Por defecto "300", debe
incrementarse para una mayor precision y calidad en caso de estar configurando un filtrado general mas potente.
Si se desea una estimacion del movimiento de mayor coherencia, es decir que sea mas inteligente al identificar el movimiento, se
puede usar truemotion=true.
La nitidez de la interpolacion interna se puede fijar con MVsharp, estando en "2" por defecto que es el modo de mas nitidez, pudiendo
tambien ser "1" para interpolacion bicubica, o "0" para bilinear, en orden de mayor a menor nitidez. Util para videos que requieren
mucha limpieza, en cuyo caso ademas de aumentar la fuerza de filtrado se puede reducir la nitidez de la interpolacion para un
resultado mas "suave".

Nitidez (PP)
Esta etapa de post-proceso se encuentra activada por defecto, y puede ser desactivada mediante sharp=false. Trabaja de forma
adaptativa, aplicando el efecto sharpen solo sobre areas quietas y con detalle, evitando la amplificacion de ruido. Si se quiere que el
efecto se aplique de igual forma en toda la imagen se puede usar adapt=false.
El filtro sharpen utilizado es la funcion LSFmod, que pueden ver descripta detalladamente en la seccion de filtros sharpen y los
parametros de esta que pueden invocarse son: strength, por defecto "100"; SHmode, por defecto en "3" (equivale a Smode en
LSFmod); SHmethod, por defecto en "3" (equivale a Smethod en LSFmod); Slimit, por defecto "0" (equivale a Lmode en LSFmod). Este
ultimo parametro solo regula la limitacion espacial, para limitacion temporal compensada por movimiento esta Tlimit, activada por
defecto con un valor de "true".

Proteccion de estrellas o puntos brillantes (PP)


protect=true habilita esta funcionalidad, deshabilitada por defecto.
El nivel de brillo que debe tener un area para ser procesada se fija con cutoff, desde "0"(todo) hasta "255", por defecto "64".
threshold es otro parametro que establece si se filtra o no, en este caso representa el cambio maximo de luminancia que debe existir,
desde "0" hasta "127", por defecto "16". De subir este valor menos areas seran filtradas.
Y por ultimo maxdiff fija el maximo cambio que sufre el area filtrada(considerada como punto brillante) respecto de la imagen original.
"0" copia exactamente igual, por defecto "4" puede llegar hasta "255".

Anti-aliasing (PP)
Para evitar el efecto serrucho en bordes. Se activa colocando AA=true, ya que por defecto viene apagado.
Se puede elegir entre dos filtros de reescalado: EEDI2(por defecto) o Sangnom, mediante useEEDI2, donde se usa "false" para
cambiar a Sangnom.
A valores mas altos de AAthr, se procesan solo bordes mas gruesos. Por defecto "32", va de "0" a "255".
El filtro de reescalado usado para regresar al tamaño original(luego de la etapa de AA) tambien puede elegirse entre tres opciones con
el parametro method, segun el nivel de nitidez. Los valores posibles son: "0"->Bilinear; "1"->Spline36; "2"->Lanczos4, en orden de
menor a mayor nitidez.

DeBlocking (PP)
Se aplica un filtrado de bloques, previamente al filtrado de ruido, si se coloca deblock=true.
Por defecto se usa la funcion DeBlock_QED, aunque tambien puede usarse el plugin DeBlock(mas agresivo) poniendo useQED=false.
Pueden definirse los parametros quant1 y quant2 de DeBlock_QED (ver descripcion de la funcion en la seccion Restauracion para mas
info), y sus valores por defecto son "20" y "40" respectivamente.
De usarse DeBlock, su parametro quant se toma como quant1+quant2 / 2, o sea un valor por defecto de "30".

Limpieza de bordes (PP)


Para aprovechar esta funcionalidad deben poner edgeclean=true. Consiste en limpieza de ruido solo en bordes de zonas sin detalle
fino, asi que no provoca perdidas de calidad.
La distancia que se filtra desde el borde se puede regular con ECrad, por defecto "3".
Y el tamaño de los bordes que se filtran se regula con ECthr, entre "0" y "255", a mayor valor bordes mas finos no son procesados. Por
defecto "32".
El filtro por defecto usado para la limpieza es RemoveGrain, pero pueden usar cualquier plugin o funcion que deseen mediante el
parametro ECmode. Por ejemplo: ECmode="DFTTest()".

Estabilizacion (PP)
Se aplica si usan stabilize=true. Se trata de usar el filtro TTempSmooth (ver subcategoria de denoisers temporales) para eliminar
restos de ruido aleatorio solo sobre fondos.
Los parametros de este plugin que son accesibles son: maxr para regular el radio temporal (frames), a mayor valor una imagen mas
estable, puede ir desde "1" a "7" y por defecto es "1"; TTstr, fuerza de aplicacion, por defecto "1", puede llegar hasta "256".

Areas solidas (PP)


Esta etapa se ocupa de eliminar el efecto banding (ver categoria Restauracion) y previene que se generen bloques en la compresion
(mediante el agregado de ruido de grano). Por supuesto unicamente si enhance=true esta presente.
Se hace uso de la funcion GradFun2DBmod, cuyos parametros presentes son: GFthr para regular la fuerza, donde "1.0" apaga el
filtrado, y de ahi para arriba, por defecto "1.2"; AGstr, para la fuerza de AddGrainC, es decir la intensidad del ruido de grano
generado, por defecto "0.8", de ponerse en "0.0" no se agrega grano; temp para la estabilidad del grano, a mayor valor un ruido
menos aleatorio, es decir menos "nervioso" como le suelen decir, donde "0" es mas nervioso y "100" completamente estatico, por
defecto "50". Vale aclarar que cuanto mas estatico mas compresible.
El parametro bias permite fijar un balance entre grano generado sobre areas brillantes versus areas oscuras. Aumentando el valor se
inclina dicho balance hacia las areas mas brillantes y viceversa. Por defecto en "64", puede ir desde "-1" que equivale a desactivar el
balance (grano uniforme), hasta "254".

Config global
Para usar prefiltrado de ruido personalizado, se debe usar la variable p, mediante la cual pueden definir el filtrado de ruido que deseen
usar como prefiltrado (ver ejemplos). Y ojo porque este prefiltrado no es lo mismo que aplicar un filtro de ruido antes de la funcion y
desactivar el prefiltrado interno. Deben definir la variable para que la funcion tenga internamente a su disposicion el video prefiltrado
como una herramienta de comparacion.
settings permite definir los valores de todos los parametros en base a una serie de presets, segun la fuerza de aplicacion. Las
posibilidades, de menor a mayor fuerza, son: "very low", "low"(por defecto), "medium", "high" y "very high"; recuerden poner tambien

35 de 43
Manual AviSynth

las comillas. Si quieren saber que valores son asigandos a los parametros en cada preset, vean en el script de la funcion, donde como
parte de la documentacion hay una tabla con todos los valores para cada preset.

Debug
Si ponen show=true, en vez del frame filtrado, se obtiene una imagen con la comparacion entre video de origen, prefiltrado y filtrado,
junto con la configuracion completa de la funcion. Muy util para comparar.
La resolucion de esta pantalla se puede modificar usando screenW y screenH, horizontal y vertical respectivamente. Por defecto:
1280x1024.

Las etapas de post-proceso para nitidez y proteccion de puntos brillantes requieren de dos videos de entrada, aquel al que se le filtro
el ruido y el original, dado que estas etapas tratan de restaurar la nitidez y los puntos brillantes que pudieran haber sido perjudicados
en el filtrado de ruido.
Para lograr esto se ofrecen dos variables que deben ser definidas antes de invocar alguna de estas etapas: source, que debe ser el
video previo al filtrado de ruido; y denoised, que debe ser el video luego del filtrado de ruido.

source = last

denoised = source.filtro_de_ruido()

Ejemplos:
MCTemporalDenoise(sharp=false) -> solo filtrado de ruido, es decir que se desactiva la unica estapa de PP que viene habilitada por
defecto.

MCTemporalDenoise(deblock=true) -> habilita filtrado de bloques como pre-procesado.

MCTemporalDenoise(AA=true, protect=true, edgeclean=true, stabilize=true, enhance=true) -> todas las etapas de PP activadas,
aprovechando al maximo las capacidades de la funcion.

MCTemporalDenoisePP(edgeclean=true) -> solo etapas de PP, sin filtrado de ruido, y en este caso solo la funcion de limpieza de ruido
en bordes.

source = last
denoised = source.DFTTest()
MCTemporalDenoisePP(sharp=true) -> uso de la etapa de restauracion de nitidez. Para usar la proteccion de puntos brillantes es lo
mismo, por supuesto activando dicha etapa.

p = last.FluxSmooth()
MCTemporalDenoise() -> prefiltrado personalizado, en vez del prefiltrado interno.

« Última modificación: Agosto 07, 2010, 20:14:53 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

888 Re: Manual AviSynth


Moderador « Respuesta #9: Agosto 29, 2010, 21:32:32 »

Desconectado

Sexo:
Desentrelazado
Reg: 26-06-2006
Mensajes: 8.122
Introduccion al fenomeno de video Entrelazado

El telecined es un proceso por el cual material codificado originalmente a 24 fps, pasa a tener una tasa de fotogramas de 29,97, esta
tecnica es conocida como 3:2 pulldown (por cada tres frames progresivos, dos entrelazados).

De manera que si cuatro frames: A B C D se le aplica 3:2 pulldown la cosa quedaria asi A B BC CD D. Como podeis observar por cada
cuatro frames, aumenta a uno de manera que ahora tenemos tres frames progresivos y dos entrelazados. Por lo tanto, por cada grupo
de cuatro frames uno mas, si 24/4=6, si por cada 6 grupos de 4 un frame mas 6*1=6 frames + 24=30fps.

Debo de aclarar que en realidad no es 24 fps pero es una forma de escribir empleados por los usuarios que manejan video, pues en
realidad es 24000/1001=23,976, al igual que 30 fps es 30000/1001=29,970

Existen otros patrones diferentes a este, por ejemplo:

16 fps (en realidad 15.985) a NTSC 30 fps (en realidad 29.97): pulldown deberia ser con un patron 3:4:4:4
16 fps a PAL 25: el patron del pulldown deberia ser 3:3:3:3:3:3:3:4
18 fps (en realidad 17.982) a NTSC 30: el patron del pulldown deberia ser 3:3:4
20 fps (en realidad 19.980) a NTSC 30: el patron del pulldown deberia ser 3:3
27.5 fps a NTSC 30:e l patron del pulldown deberia ser 3:2:2:2:2
27.5 fps a PAL 25: el patron del pulldown deberia ser 1:2:2:2:2

Bueno en este caso, hablariamos que nuestra fuente sería FILM. Pero las distribuidoras o editoriales de video, usan otros maneras de
entrelazadar el video. Actualmente, con los Blurays la tendencia es a vender material progresivo, con lo cual es menos dolor de
cabeza, pero los DVD siguen aun con estos metodos.

Otro material empleado en la codificacion de video es el hibrido. Esto quiere decir que en el momento de hacer pulldown solo lo hacen
para las partes del video a 24fps y las otras que son a 30fps estarán entrelazadas (lo que se considera como verdaderamente
entrelazado). Este tipo de material, tiene dos maneras de ser desentrelazado:

1. Mediante el uso de VFR, Variable Frame Rate, para un posterior empaquetado en matroska. (El fitro AnimeIVTC, tiene la opcion de
codificar a framerate constante a 23,976)

2. O el uso de un framerate constante, que deberia ser 120fps pues es el minimo comun divisor de 24i y 30i. Tambien puede ser
empleado el uso de 60fps mediante el desentrelazado de un bobber.

Por eso, es bueno primero identificar que tipo de material tenemos en nuestras manos para poder desentrelazar.

36 de 43
Manual AviSynth

InVerse TeleCined por excelencia: TIVTC, Decomb.

Desentrelazadores por excelencia: Decomb, Tdeint, TomMoComp, yadif y todos los bobbers que hay muchos pero a mi personalmente
me encanta MCBob, ya que utiliza Compensacion de Movimiento para evitar efectos de jerkiness, secuencia de frames sin fluidez, a
saltitos. Hay un nuevo Bobber que es la optimizacion de TempGaussMC, lo que pasa es que aparte de desentrelazar elimina ruido, lo
cual a veces no interesa; este filtros se llama QTGMC.

Ahora para los que tengais la cara a cuadros diciendo que si tengo un amigo que se llama Bob, pues no ^^. Estos filtros hacen una
tarea muy laboriosa la cual consiste en descomponer en video en fields (campos). Un frame entrelazado esta formado por un campo
superior e inferior (el superior son los que corresponden a las lineas impares y el inferior por las pares). Esta claro que si combinamos
los dos campos obtenemos el frame.

Por lo cual si tenemos un video a 30i frames, lo transforma a 60p campos. Para ello usan la reconstruccion de campos mediante los
frames proximos, tanto anteriores como posteriores. La compensacion de movimiento, es para que esta interpolaciones de los campos
sea fluida.

Por tanto cuando apliquemos un bobber, nuestro video adquirira una tasa de fotogramas de 59,97 (60fps). Que aunque digamos que
son frames pero son campos reconstruidos. Ahora nuestro video es progresivo, solo nos queda reducir el framerate a 30 y despues
diezmar (decimate). Para pasar un video de 60p a 30p, usaremos la herramienta SelectEvery() o SelectOdd() o SelectEven().

NOTA:El plugin Srestore hace todo lo que voy a explicar de una tacada, pero tiene sus inconvenientes.

SelectEvery() seria seleccionar todos pero dentro del parentesis aplicariamos las reglas para discernir. En este caso podriamos usar
SelectEvery(4,0,2) o SelectEvery(4,1,3).

Para que os hagais una idea SelectEvery(4,0,2) = SelectOdd() - Selecciona los frames impares
SelectEvery(4,1,3) = SelectEven() - Selecciona frames pares.

De esta manera reduciriamos la tasa a 30p y ahora solo quedaria diezmar mediante comandos del Decomb: Decimate() o de TIVTC:
TDecimate(). Quedandose una tasa de 23,976.

Todo esto es aplicable en fuentes NTSC, para fuentes PAL seria lo mismo, pero no tendriamos que diezmar al final.

El uso de "forcefilm" en DGIndex hay que usarlo con cautela, porque puede arruinar todo vuestro trabajo.

Filtros y Funciones para Desentrelazado

AnimeIVTC

« Última modificación: Agosto 30, 2010, 13:37:56 por 888 » Reportar al moderador En línea

Encuentra los mejores manuales en la web: www.mundodivx.com/manuales.php

overdrive80 AnimeIVTC
Miembro nuevo « Respuesta #10: Agosto 30, 2010, 04:02:25 »

Desconectado

Reg: 25-08-2010
AnimeIVTC
Mensajes: 25
Descarga y discusion oficial en doom9

Filtros y funciones necesarias:

Pueden descargar un pack con todos los filtros y funciones necesarias AQUI.
Nota: el archivo también se encuentra adjunto al final de este mensaje.

TIVTC, TDeint y TMM


nnEDI2, EEDI2 y yadifmod
TGMCmod
MVTools2
RemoveGrain y Repair
MaskTools
MaskTools2
Vinverse
MedianBlur

37 de 43
Manual AviSynth

srestore
Average
ReduceFlicker
SangNom
Toon
LSFmod
aWarpSharp2 y Toon-v1.1
Microsoft Visual C++
AvsRecursion

I) Sobre el telecine del anime


Aplica TComb antes de AnimeIVTC si necesitas corregir el efecto dotcrawl.

No es recomendado usar animeivtc con múltiples procesadores y/o utilizando animeivtc varias veces en el mismo script. Si necesitas
usar múltiples procesadores, mira el ejemplo.

Esta función puede también trabajar con cualquier live action totalmente telecine (hard telecined), hibrido o una fuente con campos
mezclados (Field Blended).

Lo primero de todo, hay que comprender algunas cosas básicas antes de leer esta guía. Aqui podéis iniciaros. Los plugins mencionados
son antiguos, pero el concepto general del IVTC está bien explicado y es más que suficiente como preparación para lo que sigue. Tu
puedes ignorar las secciones “Bad telecines” y “Anime” desde que AnimeIVTC() es la solución a los problemas que exponen.

Particularidades del anime:


Mientras un film es creado a 24 frames por Segundo, el anime es animado a 24 fps por lo que no hay necesariamente movimiento en
todos los frames.

Cuando no hay gran cantidad de movimiento, puede ser visualizado a bajos framerates como 8 o 12 fps y con duplicación de algunos
frames se puede mantener un framerate constante de 24 fps.

La ilusión de crear rápidos movimientos en partes diferentes del video es porque pueden reproducirse a diferentes framerates. En esta
situación, la imagen es dividida en 2 partes (frontal y posterior) y hay muchas posibles combinaciones de “intra-frame variable
framerate”. Esto no es constante en todo el episodio/película, ya que cambia dependiendo de la cantidad de movimiento que se va a
mostrar.

La animación CG a 30 fps es a veces usado en anime, también puedes tener secuencias con movimiento en algunos frames sin ningún
tipo de entrelazado o duplicado.

Los créditos pueden ser verdaderamente entrelazados haciéndoles desplazarse los más rápido juddery y sin ser ilegibles, lo que deja
más espacio para ser mostrado

Los créditos pueden también ser totalmente progresivo en la parte frontal y telecined en la posterior.

Porque de todo esto, alguna detección automatizada (DGIndex, megui, automkv... name it!) te permitirán saber qué tipo de
tratamiento tu fuente necesita para ser IVTC/desentrelazado aunque seguramente fallara. La única manera de sacar una fiable
información es la siguiente…y tus ojos.

Conceptos básicos:
Soft telecined.
El flujo de frames es codificado a 24 fps y el pulldown es aplicado durante la reproducción. Se matiene un 3:2 pattern en todo el
video.

Hard telecined.
Tu fuente fue telecined antes de ser codificada en el DVD( or before airing).

Double hard telecined (DHT).


Tu fuente tiene por lo menos una situación del tipo "intra-frame variable framerate" y el telecining fue aplicado separadamente
de las partes del frame, por lo que el patrón no es constante y muchos frames son entrelazados.

Field blended norm-conversion.(Campos mezclados)


En lugar de transformar el video a 24fps (film rate), el flujo es directamente convertido desde NTSC (29.97fps) a PAL (25fps) o
viceversa, creando una mezcla de campos desagradables (parecido al DHT cuando inspeccionamos un frame).

Hybrid.(Hibrido)
Mezcla de material telecined a 24 fps y material progresivo a 30 fps.

Truly interlaced.(Verdaderamente entrelazado)


Cada fotograma contiene la mitad de la información de los dos frames, lo que significa que pueden ser separados (método Bob) a
60 frames progresivos (veremos movimiento en cada cuadro, sin entrelazar o mezcla, tras aplicar dicha técnica).

Progressive.(Progresivo)
Sin entrelazado alguno.

3:2 pattern.
Este patrón se repite desde el principio hasta el final de su clip: 3 fotogramas progresivo seguido por 2 más entrelazado.

Variable Frame Rate (VFR) - Variable Frame Rate.


Las secciones de un fragmento de una película van a framerates diferentes, así permite tener menos frames para el mismo
movimiento. Los duplicados son eliminados y visualizados en la misma línea de tiempo, como si hubiese la misma cantidad de
frames originales.

Lossless rendering pass


Guarde el archivo como YV12 sin comprimir o Lagarith para aplicar el script sólo una vez y posterior filtrado / codificación más
rápida. Se necesita mucho espacio en disco: 5GB de alrededor de 22 minutos con clip@23.976fps y 20GB con Lagarith sin YV12.

Pulldown.
Técnica empleada en material soft telecined, para desentrelazar el video pasando de 29.97fps a 23.976fps

38 de 43
Manual AviSynth

Ejemplos:
Double hard telecine – Al inicio, tu fuente debe parecerse a un típico Hard Telecined , pero después de una inspección más a
fondo, verá que es realmente una DHT: la misma fuente, con diferentes escenas con gran movimiento.

Interlaced on top of telecined (puede ser hard o double hard) – En este caso, la fuente fue un hard telecined.
Obviamente, dado que no hay ningún patrón de DHT y entrelazado en cada cuadro con puro material entrelazado, regular la
salida IVTC mezclas de frames (blends) y sacudidas(jerkiness).

Posibles situaciones:
Para todos los casos, tú debes cargar un proyecto d2v creado en DGindex con la opción "Honor pulldown flags”. O mediante
AviSynth revisar frame por frame con VirtualDub, VirtualDubMod o AvsP.

La identificación del tipo de tu fuente, si es de suma importancia, porque una mala evaluación del problemas dará lugar a otros
como las mezclas y sacudidas (Blends y jerkiness). Para ello cargaremos nuestra fuente de video en el programa DGIndex, y
haremos un preview apretando F5

1. DGIndex te dice "100% Film" y ves un patrón de movimiento de 3:2 pattern. En este caso nuestra fuente de video es un
soft telecined, y para desentrelazar únicamente deberemos localizar y seleccionar, en el programa, la opción "Forced Film".
Guarda el proyecto y olvídate del resto de esta guía. ^_^

2. DGIndex te dice "100% Film" y al inspeccionar el video, frame a frame; ves frames progresivos y entrelazados sin un
patrón de movimiento especifico. Es un Double hard telecined encodeado como progresivo por lo que necesitaras utilizar la
opción mode=3 en
AnimeIVTC.

3. DGIndex te dice "algo menos que 100% Film" y al inspeccionar el video, frame a frame; ves un 3:2 pattern. Este es un
material del tipo Hard Telecined, utilizar la opción mode=1 en AnimeIVTC.

4. DGIndex te dice "100% Video (NTSC o PAL)" y al inspeccionar el video, frame a frame; observas que son progresivos y
entrelazados, sin un patrón especifico. Es un Double hard telecined encodeado como progresivo por lo que necesitaras utilizar
la opción mode=3 en AnimeIVTC.

Si observamos que los créditos (opening, ending y preview) son entrelazados y/o progresivos, debemos dirigirnos al apartado
créditos entrelazados y progresivos, ya que es necesario configurar AnimeIVTC para que funcione correctamente.

5. DGIndex te dice "100% Video (NTSC)" y al inspeccionar el video, frame a frame; ves un 3:2 pattern y los créditos son
entrelazados y/o progresivos. Este es un material del tipo Hard Telecined, utilizar la opción mode=1 en AnimeIVTC.

Si observamos que los créditos (opening, ending y preview) son entrelazados y/o progresivos, debemos dirigirnos al apartado
créditos entrelazados y progresivos, ya que es necesario configurar AnimeIVTC para que funcione correctamente.

6. DGIndex te da un porcentaje de "Film o Video desde 50 a 95%" y al inspeccionar el video, frame a frame; ves un 3:2
pattern y secuencias progresivas (no únicamente los créditos, sino en la totalidad de los frames). En este caso, el material es
hybrid y debemos seleccionar la opción mode= 4.

7. DGIndex te da un porcentaje de "Film o Video desde 50 a 100%" y al inspeccionar el video, frame a frame; ves un 3:2
pattern y secuencias progresivas (no únicamente los créditos, sino en la totalidad de los frames) y los créditos son entrelazados
y/o progresivos. En este caso, el material es hybrid y debemos seleccionar la opción mode= 4.
En este caso, también deberemos dirigirnos al apartado créditos entrelazados y progresivos, ya que es necesario configurar
AnimeIVTC para que funcione correctamente.

Recomiendo encarecidamente que realices un lossless rendering pass(recordemos que es guardar como archivo de video sin
comprimir, mira hacia arriba si no te acuerdas) sin función alguna (y quizás algo como tcomb or jaquemate antes si tú tienes
arcoíris/punto de rastreo), porque es muy lento cuando la configuración de alta calidad son usadas. Podrías también intentar
bajar la calidad del filtrado... pero no queremos. Perfeccionismo ftw!! :p

II) Descripción de las funciones

AnimeIVTC (clip i, int "mode", int "aa", int "precision", int "killcomb", int "cache", bool "ifade" , bool "chrfix" , bool "blend" , bool
"normconv" , int "pattern" , int "pass", bool "rendering" , int "bbob", int "cbob", string "edimode", int "degrain", int "omode" , int
"i1", int "i2", int "e1", int "e2", int "e3", int "p1", int "p2" , int "overlap", int "pel", int "search", bool "nnedi2pel", string "credconv"
, float "dark", int "thin", int "sharp", int "smooth", bool "stabilize", int "tradius", int "aapel", int "aaov", int "aablk", int "aatype")

Parámetros Generales (usado para todos los modos)


mode : Parámetro requerido. Define el comportamiento de la función.
• 1 : Hard telecined
• 2 : Field blended (conversión normal de campos mezclados)
• 3 : Double hard telecined
• 4 : Hibrido

Chrfix: Úsalo para corregir el intercambio de croma entre campos (para saber si se produce este problema, aplicar Bob() en el
clip y examinar los frames. Si en algún punto, el croma de un frame está en el otro y viceversa, el problema está presente).
Ejemplo

ifade : Detecta y corrige, la aparición de entrelazado. Úsalo para modo=1 o 4, ya que el clip se equilibra en el modo=2 y 3.
• True. Habilitado pues ser más seguro.
• False (por defecto). Se refiere a velocidad.

cache : Establece cierta cantidad de fotogramas en la cache para todas las funciones, mediante el uso de un script del clip para
prevenir la búsqueda de fallos + cambios de orden en los frames con filtros temporales. Si utiliza demasiada cantidad, se
provocara un crash, por lo que usa menos si obtienes fallos de memoria.
• 0 to inf. (por defecto=10)
killcomb : Elimina algún resto de entrelazado. Úsalo para modo=1 o 4, ya que el clip se equilibra en el modo=2 y 3.
• 0 : No elimina entrelazado
• 1 : Elimina entrelazado (por defecto)
• 2 : Lento, pero más agresivo que la opción 1.
• 3: Incluso más lento, pero la mejor preservación de detalles y nitidez. Muy parecido como aa=3 [daa()]

39 de 43
Manual AviSynth

aa : Sin dar ningún valor a este argumento significa que tendrás que comparar los 4 métodos para seleccionar el mejor para tu
fuente. Ninguno es necesariamente mejor que otro, pero uno es el que mejor se adapta a tus necesidades. Ejemplo sin y con
anti-aliasing.
• 0 : No aa. Selecciona esta opción si prefieres llamar externamente las funciones antialiasing que se enumeran a
continuación: ediaa(), daa(), SharpAAMCmod().

• 1 : AA basado en EEDI2() basado aa [puede ser llamado externamente como ediaa()]

• 2 : Hace un promedio de 2 interpolaciones espaciales manteniendo diferentes campos + un contra-sharpening(afinamiento).


[puede ser llamado externamente como daa()]

• 3 : Bordes específicos Sangnom() AA – cuidado con la perdida de detalles... si puedes añadir un poco de tiempo en el
procesamiento, échale un vistazo a la opción aa=4 [puede ser llamado externamente como maa()]

• 4 : Realiza varias cosas: Line darkening (remarca bordes), warp sharpening (enfoque de la imagen), edge targeted
Sangnom() AA (Previene al pixelización de bordes en forma de sierra), limited sharpening (denoiser y sharpen) y estabilizador
temporal [puede ser llamado externamente como SharpAAMCmod()]

Las siguientes opciones se configuran, en el caso de utilizar la opción aa=4 - [SharpAAMCmod()]

aatype : Selecciona el filtro usado para AA


• "Sangnom" (por defecto)
• "EEDI2" (lento, pero a veces tiene una mejor preservación de detalle que Sangnom)

dark : Remarca y obscurece las líneas de los bordes usando la función Toon, Da un efecto de enfoque.
• 0 a 1 (por defecto = 0.2)

thin : A mayor valor = líneas más finas, por el uso de aWarpSharp


• Por defecto = 10

sharp : Nivel de post-enfoque, realizado por LSFmod


• 0 a 100. (por defecto = 100)
• -1= La función intentara auto calcular el mejor valor

smooth : Nivel de post-suavizado, realizado por LSFmod


• 0 a 100 (por defecto = 100)
• -1 = La función intentara autocalcular un buen valor

stabilize : Estabilización de bordes a través de la compensación de movimiento (previene parpadeo), realizado por con un
promedio temporal de MDegrain – úsalo si los bordes son inestables (temblor, parpadeo,…) o como un borde-dirigido inteligente
soothe()
• True (por defecto)
• False

tradius : Radio temporal (# of frames*2+1) de la estabilización.


• 0 to 3 (por defecto =2)

aapel : Factor de supermuestreo para cálculos del vector de movimiento cuando usamos stabilize=true. A mayor valor = mejor,
pero más lento.
• 1, 2 or 4 (por defecto =1)

aablk : Determina el tamaño de los bloques para los cálculos del vector de movimiento cuando usamos stabilize=true. Bloques
más grandes son menos sensibles al ruido, son más rápidos, pero también menos precisos.
• 4, 8 or 16 (por defecto =8 para SD y 16 para HD)

aaov : Determina el solapamiento de los bloques para el cálculo del vector de movimiento cuando usamos stabilize=true. A
mayor valor = mejor, pero más lento.
• Debe ser incluso y superior a la mitad de aablk (por defecto =4 para SD y 8 para HD)

Créditos entrelazados o progresivos


i1/i2/p1/p2/e1/e2/e3: Toma los números de los frames para la función, de modo que cada sección es correctamente procesada.
Usa el numero de frames de tu fuente de video. No tienes que especificar todos ellos. Para ello, puedes crear un sencillo script,
llamando al proyecto que se generó en DGIndex:

DGDecode_MPEG2Source("ruta del archivo.d2v")

De esta manera, podremos cargarlo en virtualdub, y examinar el numero del último frame de cada sección, para posteriormente
especificarlo correctamente.

• i1 : Ultimo frame de la primera sección entrelazada del clip


• i2 : Ultimo frame de la segunda sección entrelazada del clip
• p1 : Ultimo frame de la primera sección progresiva del clip
• p2 : Ultimo frame de la segunda sección progresiva del clip
• e1 : Ultimo frame de la primera sección telecined/double hard telecined/field blended/hibrida del clip
• e2 : Ultimo frame de la segunda sección telecined/double hard telecined/field blended/hibrida del clip
• e3 : Ultimo frame de la tercera sección telecined/double hard telecined/field blended/hibrida del clip

Ejemplo:
Si una parte de un episodio es: telecined (e1) + créditos del opening entrelazados (i1) + episodio (e2) + créditos del endings
progresivos (p1) + avance del próximo episodio (e3).

AnimeIVTC(mode=1, e1=500, i1=2500, e2=30000, p1=31200, e3=33000)

omode : Determina el framerate de salida


• 1 : Convierte los créditos a el framerate de el episodio para mantener un framerate constante. Norma obligatoria para las
conversiones.
• 2 : Los créditos se mantienen 29.97 fps (la mitad de su completa resolución temporal) para crear un VFR clip. Obligatorio
para mode=6 ya que el episodio también es hybrid. Destinados para los archivos mkv.

credconv : Determina como los créditos serán convertidos para omode=1


• “mocomp” : Usa la compensación de movimiento. Úsalo cuando tengas antecedentes de bajo movimiento para obtener una
mezcla libre y estable del clip.
• "blend" : Los frames se combinan para reducir la tasa de fotogramas (framerate)

40 de 43
Manual AviSynth

overlap : Solapamiento de los bloques para el cálculo de vectores de movimiento. A valores más altos = mejor, pero más lento.
Úsalo para “mocomp”
• 0, 2 o 4 para SD (defecto=4)
• 0, 2, 4, 6 o 8 para HD (defecto=8)

pel : Factor de supermuestreo para cálculos del vector de movimiento. A mayor valor = mejor, pero más lento. Úsalo para
“mocomp”
• 1, 2 o 4 (defecto=2)

search: Las pruebas son divertidas. 4 y 5 son generalmente mejor que 2 para una velocidad parecida. Úsalo para “mocomp”
• 2 (Búsqueda logarítmica, también llamada búsqueda Diamond) (defecto)
• 3 (búsqueda exhaustiva) – la más lenta, pero los mejores resultados SAD-wise (básicamente el mo-comp es hecho para
calcular la suma de las diferencias absolutas entre bloques para determinar si el mismo elemento se ha movido o es diferente).
• 4 (búsqueda hexagonal – similar a x264) (default)
• 5 (Desigual multibusqueda hexagonal – similar a x264)

nnedi2pel: Usa nnEDI para interpolación. True = normalmente el mejor. Úsalo para “mocomp”
• true
• false (defecto)

pass: Crear un clip VFR, requiere dos pasadas. El archivo que debes usar para el codificado final/secuencia filtrada, debe ser la
única generada por pass=2. Úsalo para omode= 2
• 1 : Ábrelo con VirtualDub, en la pestaña file selecciona “run video analysis pass”, espera hasta que termine, y luego cierra
VirtualDub O haz una pasada rendering("rendering pass") del archivo AVI, para su uso posterior y evitar el cálculo de la misma
cosa dos veces, una para el análisis y otra para decímate (guardando el clip filtrado en un lossless (sin perdidas)). Por ejemplo
con Lagarith o HuffYUV. A esto se refiere a filtrar el video sin comprimir.
• 2 : Recarga el mismo script con pass=2. Usa el nuevo archivo AVI como fuente si hiciste el rendering pass. Después de filtrar
todo, Codifica. Entonces, coge el “timecode.txt” y añádelo como timecode para la cadena de video en mkvmerge

rendering : Si hiciste un rendering pass, esto será basado únicamente VFR decimation en los archives escritos por pass=1.
Usalo para omode=2 y pass=2.
• True (hiciste un rendering pass únicamente necesitas hacer decimate en pass=2)
• False (no creaste ningún archive intermedio (default)

cbob: A mayor valor = más lento, pero más preciso... Aquí, la elección es calidad frente a velocidad. Úsalo para créditos
entrelazados.
• 0 : El mas rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (TDeint + nnedi2 + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Te dice que filtro usar para la interpolación con cbob=4. El mejor depende de tu fuente. Úsalo para créditos
entrelazados.
• "yadif"
• "eedi2"
• "nnedi2" (default)

degrain: Radio temporal [(numero de fotogramas a usar X 2) + 1] para el paso final de degraining con cbob=4. Mayor valor =
Más lento + más lenta eliminación de ruido + más estable. Úsalo para créditos entrelazados.
• 1 (default)
• 2
• 3

Hard Telecine (mode=1)


precision: A mayor valor= más lento, pero más preciso…Aquí, la diferencia de opciones consisten en la necesidad entre calidad y
velocidad de procesamiento.
• 0 : La más rápida, pero más probabilidad de producción de efectos deja (bordes en sierra, restos de entrelazado, etc. etc.)
• 1 : Muy bueno (usa Tdeint para desentrelazar)
• 2 : Incluso mejor (Tdeint + nnedi para interpolación)
• 3 : Optimo (Tdeint + nnedi + motion mask) (defecto)

blend: Si tienes un caso de blend telecine, o imagenes blend-deinterlacing de telecined. Patrón 3:2 - 3 limpios, 2 mezclados
(blended). En total debe ser 50/50.
• True
• False (default)

Field blended (mode=2)


bbob: A mayor valor = más lento, pero más preciso…Es calidad en contra de velocidad. Mo-comp NO es recomendado para
material mezclado (blended), pero lo deje por si en tu caso tienes problemas de estabilidad con otros bobbers.
• 0 : El más rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (Tdeint + nnedi + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Le dice que filtro usar para interpolación espacial usando cbob=4. El mejor depende de tu fuente de video.
• "yadif"
• "eedi2"
• "nnedi2" (defecto)

degrain: Radio temporal [(numero de frames para usar * 2) + 1] para el último paso con cbob=4. Mayor valor = Más lento +
más lenta eliminación de ruido + más estable
• 1 (defecto)
• 2
• 3

normconv: Establece true si tu fuente fue blend-converted desde PAL a NTSC o viceversa.
• True : Cambia framerate a 25 fps si la fuente es NTSC o a 23.976 fps si es PAL
• False : Mantiene 25 fps si la fuente es PAL y 23.976 si la fuente es NTSC (default)

Double Hard Telecine (mode=3)

41 de 43
Manual AviSynth

cbob: A mayor valor = más lento, pero más preciso... Aquí, la elección es calidad frente a velocidad. Úsalo para créditos
entrelazados.
• 0 : El más rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (Tdeint + nnedi + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Le dice que filtro usar para interpolación espacial usando cbob=4. El mejor depende de tu fuente de video.
• "yadif"
• "eedi2"
• "nnedi2" (defecto)

degrain: Radio temporal [(numero de frames para usar * 2) + 1] para el último paso con cbob=4. Mayor valor = Más lento +
más lenta eliminación de ruido + más estable
• 1 (defecto)
• 2
• 3

pattern: Le dice a la función como aplicar decímate a 23.976 fps.


• 0 El más seguro. Use TDecimate(defecto)
• -1 Compara de 1 a 5
• 1 a 5. Si tu fuente tiene un patrón fijo, encuéntralo con -1 usando el apropiado será el más rápido y visualmente mejor, pero
tan pronto como haya un cambio, todo será un desastre. Se cuidadoso

Hybrid (mode=4)
precision: Valor más alto = más lento, pero más preciso…La única diferencia es entre la calidad y la velocidad.
• 0 : El más rápido (bordes en sierra, entrelazado, etc. etc.)
• 1 : El mejor (usa un desentrelazador externo)
• 2 : Incluso mejor (Tdeint + nnedi para interpolación)
• 3 : Optimo (Tdeint + nnedi + motion mask) (defecto)

omode: Determina el framerate de salida


• 1 : Convierte las secciones 30p to 24p, mediante la mezcla de frames juntos, para mantener un framerate constante.
• 2 : Las secciones 30p se mantienen a 29.97 fps para crear un VFR clip. Destinados para los archivos mkv.

pass: Crear un clip VFR, requiere dos pasadas. El archivo que debes usar para el codificado final/secuencia filtrada, debe ser la
única generada por pass=2. Úsalo para omode= 2
• 1 : Ábrelo con VirtualDub, en la pestaña file selecciona “run video analysis pass”, espera hasta que termine, y luego cierra
VirtualDub.

Otra opción es hacer un lossless rendering pass (En VirtualDub, fast recompress y codec lossless). De esta manera, a la par que
hacemos la primera pasada para el cálculo de VFR, podemos filtrar el video generando un archivo sin perdidas (lossless) para su
uso posterior en la segunda pasada. Por ejemplo con Lagarith o HuffYUV. Ejemplo:

DGDecode_MPEG2source("E:\DB_23\133\133.d2v", info=3)
Animeivtc(mode=4, aa=0, omode=2, pass=1)
Lsfmod()
Toon()

Este seria, el código del script AVS con nuestro filtrado, que cargaremos en VirtualDub o MeGui. Y haríamos, un lossless
rendering pass. Y creara un archivo AVI.

• 2 : Recarga el mismo script con pass=2. Usa el nuevo archivo AVI como fuente si hiciste el rendering pass. Cargas el archivo
y lo codificas. A su vez se creara un archivo llamado “timecode.txt”, el cual tendras que añadirlo en mkvmerge.

Avisource("E:\DB_23\133\133.avi")
Animeivtc(mode=4, aa=0, omode=2, pass=2)

Con este código codificaríamos nuestro archivo y obtendríamos el timecodes.

rendering: Si hiciste un rendering pass, esto será basado únicamente VFR decimation en los archives escritos por pass=1. Úsalo
para omode=2 y pass=2.

• True (hiciste un rendering pass únicamente necesitas hacer decimate en pass=2)


• False (no creaste ningún archive intermedio (default)

III) Ejemplos
Ejemplo I

Ejemplo II

AnimeIVTC es fácil de usar… si tienes preguntas después de leer el manual, por favor postéalas en nuevo hilo en el subforo de
Edicion de Video.
Aquí hay manera de multiprocesado, pero puedes usar el concepto de diferentes maneras (cargando desde diferentes discos
duros + salida a diferentes discos duros y así sucesivamente). Solo he utilizado 3 núcleos, porque fue demasiado para la fuente
del disco duro, incluso cuando se escribe a 4 diferentes. NO utilizarlo para codificar VFR, donde el análisis y la decimation debe
hacerse de un sola vez.

xxxsource("file.ext")

AnimeIVTC([Settings])

threads = 3

x=(framecount()/threads)

A=trim(0,x)
B=trim(x+1,2*x)
C=trim(2*x+1,0)

42 de 43
Manual AviSynth

A#Carga éste script en virtualdub y guardalo como rendering1. Despues cambia A por la B, guardalo en otro script y abrelo en
virtualdub y guardalo como rendering2, idelamente en otro disco duro... etc. De esta manera tendriamos tres instancias de
virtualdub trabajando a la vez, y reduciendo el tiempo de codificacion por tres.

#Despues de codificar las tres partes, carga los diferentes archivos, mediante otro script como este:
#a=avisource(rendering1 file with path)
#b=avisource(rendering2 file with path)
a+b+.....#Con este script ya podriamos comprimir el video.

Recordad que un filtrado rendering, consiste en cargar un script en virtualdub, seleccionar la opcion FAST RECOMPRESS, y elegir
un codec de compresion sin perdidas, ya sea Lagarith o Huffyuv

Requeriments v2.7z (1689.2 KB - descargado 0 veces.)

« Última modificación: Septiembre 16, 2010, 05:22:57 por overdrive80 » Reportar al moderador En línea

Páginas: [1]
Foro MundoDivX | General y otros temas | Manuales | Tema: Manual AviSynth « anterior próximo »

Moderadores: Dressler, Burnout, LUCHOO, Amármol, 888

Ir a: => Manuales Ir

Respuesta rápida
En la Respuesta rápida puedes usar BBC y
smileys como lo harías en un mensaje
normal, pero de una manera más
conveniente.

Publicar Previsualizar

Impulsado por SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC


Página creada en 0.975 segundos con 26 consultas.

Google visitó esta página por última vez: Hoy a las 06:10:42

43 de 43

S-ar putea să vă placă și