03-04-2019, 10:59 PM
FILTROS de VIDEO
Definiciones
Parametros: la accion de un filtro (ya sea interno, externo o una funcion) se configura a partir de una serie de parametros, propios de cada filtro en particular. Estos parametros vienen con valores por defecto (salvo raras exepciones), siendo estos los valores recomendados como punto de partida. Cuando arman el script e invocan un filtro, no es necesario que definan el valor de todos los parametros que tiene el filtro, solo de aquellos que desean modificar el valor por defecto.
Por ejemplo: el filtro BicubicResize posee 2 parametros adicionales a las resoluciones vertical y horizontal (llamados b y c en la descripcion del filtro mas abajo), si ustedes solo colocan BicubicResize(x,y) dichos parametros se usaran con los valores por defecto, pero si lo desean pueden escribir: BicubicResize(x,y,c=0.75), definiendo asi uno de ellos con el valor personalizado y dejando al otro con el valor por defecto, y asi sucesivamente pueden usar todas las combinaciones que quieran.
Es importante destacar que en muchos de los filtros los valores por defecto deben considerarse solo como una referencia, y no como los valores optimos de aplicacion. Si es cierto que en la mayoria de los casos los valores por defecto son fijados para un efecto aceptable en una amplia gama de videos, sin embargo si se desea lograr una aplicacion optima casi siempre se tendran que regular los parametros segun el video.
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 ve 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, 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.
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.
A continuacion se presentan los filtros ordenados por categorias, y dentro de algunas de estas tambien por subcategorias. A su vez, dentro de cada subcategoria los filtros estan ordenados alfabeticamente.
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.
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.
Debajo del nombre de cada filtro tienen indicado el tipo, es decir si es interno, plugin o funcion, y 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.
En cada categoria hay una lista que refleja todos los filtros tratados hasta la fecha.
Carga y Manipulacion de Archivos
Lo que necesitan para que AviSynth pueda cargar sus videos, asi como tambien los filtros que permiten su manipulacion.
Filtros en esta categoria:
AVISource / AVIFileSource / OpenDMLSource
DirectShowSource
WAVSource
ImageSource
DGMPGDec / DGMPGDecNV
DGAVCDec / DGAVCDecNV
DGVC1DecNV
NicAudio
BassAudio
Trim
UnalignedSplice / AlignedSplice
ImageWriter
Carga y Manipulacion de Archivos
Transformaciones Geometricas
Todo lo que sirva para modificar tamaño, cortar, etc la imagen.
Filtros en esta categoria:
AddBorders
Crop
FlipHorizontal / FlipVertical
Letterbox
Resize
Turn
Transformaciones Geometricas
Filtrado de rudio (denoisers)
Filtros destinados al ruido aleatorio.
Subcategorias y filtros:
Espaciales: FRFun3b - FRFun7 - SpatialSoften - UnDot - VagueDenoiser.Temporales: TemporalSoften.Espacio-Temporales o 3D: DeGrainMedian - DFTTest - FFT3DFilter - FFT3DGPU - FluxSmooth.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.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
LimitedSharpenFastermod
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:
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
Carga de Archivos
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 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")
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.
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).
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
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 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.
888:
Filtros para Transformaciones Geometricas
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)
Esta linea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nomas :-D.
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 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.
888:
Denoisers Espaciales
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)
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 tiene sobre el filtrado.
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 notorios.
Tambien es extremadamente rapido y el detalle que puede eliminar es despreciable, por lo que usarlo no cuesta casi nada y podria ayudar a un filtrado mas completo.
Sintaxis:
UnDot()
Eso es todo, ni siquiera tiene parametros :-D.
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)
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]
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)
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)
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, :ojotes: 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.
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.
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 (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
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
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 excelentes200 para las muy buenas300 para las buenas400 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
888:
Filtros para Debanding
El banding se presenta sobre zonas del video donde hay una variacion de color suave o gradual.
El artifact o efecto indeseable consiste en bandas de colores solidos bien definidas en vez de una variacion de color continua, producto de una representacion con menos bits de los necesarios. Para ilustrar mejor este efecto ver imagen.
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]
Sintaxis:
GradFun2db(thr)
thr(valor real) regula la fuerza del filtro, por defecto en "1.2"
Descarga
GradFun2DBmod
Esta funcion por supuesto ofrece mayor calidad y funcionalidad que el plugin anterior, en el que se basa.
Descarga del script y discusion en doom9
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 sirve para lograr un grano desde mas aleatorio (0) a mas estatico (100).
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.
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.
Descarga y Documentacion
Definiciones
Parametros: la accion de un filtro (ya sea interno, externo o una funcion) se configura a partir de una serie de parametros, propios de cada filtro en particular. Estos parametros vienen con valores por defecto (salvo raras exepciones), siendo estos los valores recomendados como punto de partida. Cuando arman el script e invocan un filtro, no es necesario que definan el valor de todos los parametros que tiene el filtro, solo de aquellos que desean modificar el valor por defecto.
Por ejemplo: el filtro BicubicResize posee 2 parametros adicionales a las resoluciones vertical y horizontal (llamados b y c en la descripcion del filtro mas abajo), si ustedes solo colocan BicubicResize(x,y) dichos parametros se usaran con los valores por defecto, pero si lo desean pueden escribir: BicubicResize(x,y,c=0.75), definiendo asi uno de ellos con el valor personalizado y dejando al otro con el valor por defecto, y asi sucesivamente pueden usar todas las combinaciones que quieran.
Es importante destacar que en muchos de los filtros los valores por defecto deben considerarse solo como una referencia, y no como los valores optimos de aplicacion. Si es cierto que en la mayoria de los casos los valores por defecto son fijados para un efecto aceptable en una amplia gama de videos, sin embargo si se desea lograr una aplicacion optima casi siempre se tendran que regular los parametros segun el video.
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 ve 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, 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.
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.
A continuacion se presentan los filtros ordenados por categorias, y dentro de algunas de estas tambien por subcategorias. A su vez, dentro de cada subcategoria los filtros estan ordenados alfabeticamente.
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.
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.
Debajo del nombre de cada filtro tienen indicado el tipo, es decir si es interno, plugin o funcion, y 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.
En cada categoria hay una lista que refleja todos los filtros tratados hasta la fecha.
Carga y Manipulacion de Archivos
Lo que necesitan para que AviSynth pueda cargar sus videos, asi como tambien los filtros que permiten su manipulacion.
Filtros en esta categoria:
AVISource / AVIFileSource / OpenDMLSource
DirectShowSource
WAVSource
ImageSource
DGMPGDec / DGMPGDecNV
DGAVCDec / DGAVCDecNV
DGVC1DecNV
NicAudio
BassAudio
Trim
UnalignedSplice / AlignedSplice
ImageWriter
Carga y Manipulacion de Archivos
Transformaciones Geometricas
Todo lo que sirva para modificar tamaño, cortar, etc la imagen.
Filtros en esta categoria:
AddBorders
Crop
FlipHorizontal / FlipVertical
Letterbox
Resize
Turn
Transformaciones Geometricas
Filtrado de rudio (denoisers)
Filtros destinados al ruido aleatorio.
Subcategorias y filtros:
Espaciales: FRFun3b - FRFun7 - SpatialSoften - UnDot - VagueDenoiser.Temporales: TemporalSoften.Espacio-Temporales o 3D: DeGrainMedian - DFTTest - FFT3DFilter - FFT3DGPU - FluxSmooth.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.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
LimitedSharpenFastermod
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:
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
Carga de Archivos
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 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")
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.
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).
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
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 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.
888:
Filtros para Transformaciones Geometricas
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)
Esta linea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nomas :-D.
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 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.
888:
Denoisers Espaciales
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)
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 tiene sobre el filtrado.
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 notorios.
Tambien es extremadamente rapido y el detalle que puede eliminar es despreciable, por lo que usarlo no cuesta casi nada y podria ayudar a un filtrado mas completo.
Sintaxis:
UnDot()
Eso es todo, ni siquiera tiene parametros :-D.
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)
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]
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)
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)
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, :ojotes: 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.
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.
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 (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
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
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 excelentes200 para las muy buenas300 para las buenas400 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
888:
Filtros para Debanding
El banding se presenta sobre zonas del video donde hay una variacion de color suave o gradual.
El artifact o efecto indeseable consiste en bandas de colores solidos bien definidas en vez de una variacion de color continua, producto de una representacion con menos bits de los necesarios. Para ilustrar mejor este efecto ver imagen.
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]
Sintaxis:
GradFun2db(thr)
thr(valor real) regula la fuerza del filtro, por defecto en "1.2"
Descarga
GradFun2DBmod
Esta funcion por supuesto ofrece mayor calidad y funcionalidad que el plugin anterior, en el que se basa.
Descarga del script y discusion en doom9
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 sirve para lograr un grano desde mas aleatorio (0) a mas estatico (100).
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.
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.
Descarga y Documentacion