Virtualdubmod y Avisynth: Filtrado de Anime Orden de Filtros El orden de los filtros es algo crucial en muchos aspectos para conseguir una calidad esperada. Como se ha comentado comentado en la parte de Novatos Novatos es important importantee el capturar capturar directamen directamente te en YUY2, YUY2, de esa manera evitamos conversiones conversiones inútiles de modo de d e color y también se evita un uso innecesario de CPU a la hora de la conversión, lo cual se traduce en una menor velocidad de compresión.
1 - Carga de filtros
•
Esto se hace mediante la sentencia:
loadplugin ("h:\capture\ ("h:\capture\filtros\temporalcleaner filtros\temporalcleaner.dll") .dll") •
Y cargando los filtros a utilizar (que se comentarán en esta misma sección)
2 - Carga de video •
Esto se realiza con alguna de estas opciones: Avisource ("capture.avi", ("capture.avi",audio=true) audio=true) #DirectShowSource #DirectShowSou rce ("capture.avi") #Mpeg2source ("capture.d2v") Avisource = Para carga de archivos en avi. DirectShowSource = Carga de videos por medio de filtros Directshow (.avi, .mpg, etc) Mpeg2source = Carga del script resultante del DVD2AVIdg.
3 - Filtro de Desentrelazado
El prim primer er filt filtro ro a tene tenerr en cuen cuenta ta es el de dese desent ntre rela laza zado do,, para para evit evitar ar esa esa suce sucesi sión ón de line lineas as horizontales que aparecen cuando existe movimiento en el video.
Dos ejemplos de videos entrelazados
Los mejores filtros que evitan este problema son:
TOMSMOCOMP 1.7 (tomsmocomp.dll) Este filtro utiliza una estimación de movimiento y un tratamiento adaptativo del entrelazado del video para realizar un desentrelazado con la mayor precisión posible. TomsMoComp (TopFirst, SearchEffort, VerticalFilter) •
•
•
TopFirst: Esto indica el campo que se inicia primero. El valor 1 indica que las lineas 0,2,4 deben ser las que se procesen primero. El valor 0 indica los impares. El -1 aplica un modo automático de este método. SearchEffort: Indica cuanto CPU se utilizará para la detección del entrelazado De un valor de 0 a 30, siendo 30 lo máximo y 1 el mínimo. Un valor -1 aplica un desentrelazado Smart bob, que en ciertos casos puede ser efectivo. VerticalFilter: Aplica un filtro en los típicos efectos del desentrelazado. 1 = Activado. 0 = Desactivado.
Ejemplo: TomsMoComp (1,15,1) #Por defecto TomsMoComp (0,0,1) # Otra posible configuración (y buena).
DECOMB 5.2.1 (versión parcheada por sh0dan) Este es un pequeño pack de filtros para todo lo relacionado con fuentes entrelazadas y que contiene los siguientes filltros: TELECIDE.
Este filtro realiza el desentrelazado por medio del alineado de campos, funcionando mal cuando el entrelazado es puro, siendo eficaz con pequeño entrelazado (como pueden ser de capturas). Debido a la gran posibilidad de configuraciones solo pondré los mas habituales. Telecide(order=1)
Configuración típica Telecide(order=1,guide=1,vthresh=30,dthresh=10)
Otra configuración típica Telecide(order=1,guide=1,vthresh=0,dthresh=0,post=2)
Casos extremos de entrelazado Telecide(order=1,guide=1,vthresh=0,dthresh=0,post=2,blend=true)
Mismo caso al anterio pero con un blend para
•
FieldDeinterlace.
Este es un filtro de desentrelazado en modo postprocesado (blend) y util para casos de entrelazado extremo donde no se consigue desentrelazarlo correctamente. FieldDeinterlace()
Configuración típica con blend (estilo desentrelazado de virtualdub, pero mejor) FieldDeinterlace(blend=false,dthreshold=0,chroma=true)
Para un desentrelazado mas correcto que el anterior. •
Decimate.
Este se utiliza cuando se captura en modo NTSC (29.97fps) y se quiere convertir en 23.997fps . Telecide(order=1) Decimate(cycle=5)
Para su correcto funcionamiento, se añade el filtro Decimate(cycle=5) despues del de desentrelazado, como se puede ver en la imagen superior.
KERNELDEINT 1.40 Otro buen filtro de desentrelazado que puede ser útil en ciertos casos. KernelDeint(order=1, sharp=false)
Configuración normal (el order se puede cambiar entre 0 y 1) KernelDeint(order=1, sharp=true)
Configuración para obtener mayor nitidez.
4 - Filtro de Ajuste de Color / Brillo / Contraste / etc Aquí despues de desentrelazar es cuando se hacen los arreglos en cuanto a problemas de color, brillo, contraste y demas problemas similares.
CNR2 (Chroma Noise Reducer) Este filtro se utiliza para la eliminación de los famosas zonas de "arco iris" que suelen aparecer en zonas blancas con lineas negras cercanas. Tambien es util para limpiar fuentes de origen tipo VHS, donde la fuente es de calidad media - baja, ya que estabiliza los problemas del croma.
Con efecto arcoiris
Sin efecto arcoiris (despues de usar CNR2)
CNR2()
Configuración habitual y que suele funcionar bien (aunque es algo agresivo) CNR2("xxx",5,6,255)
Configuración aconsejada para eliminación del problema del arcoiris.
FixVHSOversharp Este filtro lo que hace es filtrar las sombras oscuras o claras alrededor de los bordes, muy típico en VHS (debido a la señal que emite que suele ser defectuoso y acentua demasiado en ciertas zonas). Tambien señalar que hay que tener cuidado con el filtro, ya que a pesar de conseguir buenos resultados, tambien puede producir aretfactios no deseables.
Con efecto mosquito
Sin efecto mosquito
Este al ser exclusivo de YUY2, necesitará (si así lo pide) de la sentencia “ConvertToYUY2()”
Antes de llamar a los filtros (parte de abajo). De todas formas el error de no YUY2 suele aparecer en el virtualdub de la siguiente forma (o similar), indicando la linea donde se produce el error.
FixVHSOversharpL(30,12,8) FixVHSOversharp(30,14,10)
Configuración habitual. FixVHSOversharpL(30,12,8) FixVHSOversharp(30,14,10) FixVHSOversharp(30,12,8)
Configuración que suele obtener buenos resultados.
Lumafilter (Mpeg2dec3.dll) Este filtro lo que hace es oscurecer un poco la imagen para realizar un efecto de "contraste" y mejorando un poco las zonas "muy claras" y "muy oscuras" y asi aumentando la compresibilidad.
Lumafilter()
Configuración por defecto y que suele ser el mejor de todos.
Tweak (Mpeg2dec3.dll) Este filtro regula problemas en el brillo, contraste y color. De todas formas esta opción esta para regular y mejorar los tonos que tiene la fuente de video (obviamente no hace milagros con capturas donde el contraste es muuy elevado). Tweak(hue=0.0, sat=1, bright=0.0, cont=1) HUE SAT
(-180 a 180) Ajusta el color, de rojo a verde. (0.0 a 10) Ajusta la saturación de color.
BRIGHT (-255 a 255) Ajusta la luz, de menos a más. CONT
(0.0 a 10) Ajusta el contraste.
Si en cualquier video aumentamos un poco de contraste y disminuimos un poco de luz, conseguiremos una definición de los contornos.
ColorYUV(levels="PC->TV")
Este filtro se utiliza para regular la entrada de señal (y tambien de la propia captura). Habitualmente cuando se realiza una captura, la señal de entrada esta limitado por cierto rango de YUY2 (0-15 y 237255 no entran dentro de este rango) y cuando es convertido al ordenador, estos valores son transferidos a 0-255 (abarcando todo el rango). Pero existe un problema y es que las capturadoras hacen el escalado a 16-236 aumentando los contrastes. Y esto se puede probar con una previsualización de la TV (preview en YUY2) con el programa de capturar. Aparece una señal de contraste normal, pero al capturar aparece un video con mucho mas contraste, y es por esta razon explicado antes. Para solucionar este problema (a menos que se haga como yo que regulo el contraste para menos en el programa de captura, y asi captura bien) es con lo siguiente: ColorYUV(levels="PC->TV")
4 - Filtro Temporal Los filtros temporales se basan en la comparación de frames para igualarlos y "pegarlos", de esta forma se realiza una limpieza en zonas generales donde exista un granulo muy aparente (o granulo paradeante).
Sin limpieza
Con Temporal activado
Estos filtros hay que utilizarlos con precaución ya que pueden provocar efectos fantasmillas (sobre todo utilizando un desentrelazado en modo "blend") que no son mas que desdoblamientos en los movimientos bruscos.
TemporalCleaner (temporalcleaner.dll) Este filto tiene su analogo en filtro de virtualdub, y como esta indicado arriba, realiza una comprobación de los frames introducidos y comparandolos. Este filtro tiene la ventaja de que al solo poder introducirse modo de color YUV es que diferencia entre la parte Luma (Y) y la Croma (U y V) ganando asi en calidad. TemporalCleaner (3,7)
Valor para casos en los que la captura sale en buenas condiciones (de Tv por ejemplo) TemporalCleaner (5,10)
Valor por defecto y que suele ir bien en casi todos los casos normales.
TemporalCleaner (9,17)
Esta configuración sería para casos extremos de suciedad y granulo.
TemporalSoften Este filtro viene de serie al instalar el avisynth y con el suele conseguirse muy buenos resultados (similares al temporalcleaner). Ya es cuestión de gustos el usar uno u otro. Temporalsoften(5,8,10,mode=2,scenechange=6)
Limpieza habitual Temporalsoften(8,10,12,mode=2,scenechange=9)
Configuración que suele ofrecer muy buenos resultados
5 - Filtro Spatial o Espacial
Los filtros spatial se basan en la comparación de los valores de un radio de cada pixel, de tal forma que intenta igualarlos para asi limpiar suciedades. Valores pequeños pueden ofrecer resultados realmente increibles, pero su abuso puede provocar la "apastelación" y redución de detalles de la imagen. La ventaja tambien es que solo actua en cada frame, independiente de frame anterior y posterior.
Sin limpieza
Con Spatial activado
eDeen (edeen.dll) Este filtro es un Spatial de excelentes resultados para Anime. Una pena que no se siga mejorando, pero aun asi su calidad es francamente buena. edeen (2,5,12,2,1,true)
Valor para casos en los que la captura sale en buenas condiciones (de Tv por ejemplo) edeen (2,8,16,2,2,true)
Valor por defecto y que suele ir bien en casi todos los casos normales. edeen (3,12,20,2,2,true)
Configuración para videos con imagen mala o que se quiera limpiar mucho. Problema de este filtro: Necesidad de convertir el sistema de color del video a YV12 (si es que no lo está) y se realiza con Converttoyv12() antes de utilizar este filtro en el script de avisynth.
Deen (edeen.dll) Este filtro es un mixto entre 3D (temporal y spatial al mismo tiempo) y tambien permite utilizar un modo Spatial puro. Aquí hay ejemplos de Spatial y en la siguiente sección en modo 3D. Deen ("a2d",2,10,10)
Valor por defecto y que consigue una limpieza aceptable. Deen ("a2d",3,12,14)
Valor algo mas agresivo consiguendo mayor limpieza. Deen ("m2d",1,12,12)
Otro modo de limpieza spatial Problema de este filtro: Necesidad de convertir el sistema de color del video a YV12 (si es que no lo está) y se realiza con Converttoyv12() antes de utilizar este filtro en el script de avisynth.
6 - Filtro 3D o MIXTO (SPATIAL/TEMPORAL)
Los filtros 3D se basan en una mezcla de filtro Spatial y Temporal para la limpieza del video sin degradar en demasiado la imagen y aprovechando la unión de estos dos modos. Sin duda alguna un pequeño filtrado de un filtro de estas cararterísticas despues de un filtro temporal, mejoran sensiblemente la imagen sin degradar en exceso la misma.
Sin limpieza
Con 3D activado
Deen (deen.dll) Este es otro filtro 3D pero con la ventaja que esta especialmente diseñado para utilizarse con ANIME y es ahí donde consigue una calidad extraordinaria. Deen ("a3d",2,10,10)
Valor que consigue una limpieza aceptable en casos normales. Deen ("a3d",3,12,14)
Valor algo mas agresivo consiguendo mayor limpieza, pero preservando los detalles. Deen ("a3d",3,20,20)
Valor para casos extremos donde la suciedad es notable.
MipSmooth (mipsmooth.dll) Este es un muy buen filtro 3D y que tiene la ventaja de poder realizar configuraciones personalizadas. De todas formas pondré lo más básico para utilizar y que suele ir bien en casi todos los casos. mipsmooth (preset = "AnimeHQ")
Configuración util para la mayoría de los casos mipsmooth (preset = "AnimeLQ")
Valor algo mas agresivo para casos con mucha suciedad. mipsmooth (preset = "AnimeLQ", Downsizer="lanczos", upsizer ="bicubic")
Otro configuración agresiva, pero que obtiene mejores resultados que el ANIMELQ.
7 - FILTROS PARA ESTILIZAR IMAGEN En este apartado entran los filtros que se encargar de estilizar la imagen, como puede ser la limpieza de los contornos, lineas mas oscuras, etc.
Asharp (asharp.dll) Este filtro se utiliza para realzar las lineas y hacerlas mas oscuras. Se aconseja que seguido de este filtro se utilice el aWarpsharp para estilizar mas estas lineas.
Con limpieza unicamente
Con asharp activado
asharp (1)
Configuración básica para mejorar las lineas. asharp (1.5)
Configuración mas fuerte que la anterior. asharp (2)
Esta configuración realza bastante las lineas y con un mayor valor pueden aparecer defectos visuales.
Awarpsharp (asharp.dll) Este filtro va en conjunción con el Asharp para estilizar las lineas que ha dejado el filtro anterior, consiguiendo un bonito efecto en videos Anime.
Con limpieza unicamente
Con asharp activado
Con asharp+warp activado
awarpsharp ()
Configuración que suele ir bien para todos los casos. awarpsharp (10,2,0.5,2)
Configuración menos agresiva
8 - FILTROS COMPLEMENTARIOS
Aquí se podrían englobar diversos filtros que se pueden ordenar de cualquier forma y que suelen ser complementarios de los anteriores para mejorarlos o para mejorar la compresibilidad.
Unfilter (unfilter.dll) Este filtro sirve para desenfocar la imagen de forma precisa y rápida (su homónimo "blur" es algo mas lento y no tan preciso).
Con warp activado
Con unfilter antes de Deen
Con el filtro detras del Spatial o el Filtro 3D se consigue mayor limpieza y mayor efecto del filtro. Un ejemplo sería algo así.
Dup (dup.dll) El filtro DUP realmente es como un temporal, pero lo que hace es una comparación de frames, y los que sean muy parecidos, los iguala. De esta forma en videos como ANIME mejora la compresibilidad al haber mas frames parecidos. Un abuso del mismo puede provocar parones (asi que cuidado con utilizarlo con fuentes con excelente imagen). Dup (threshold=1, blend= true, maxcopies= 8)
Configuración básica para mejorar la compresibilidad. Dup (threshold=1.5, blend= true, maxcopies= 8)
Configuración algo mas agresiva y que puede provocar parones.
Gernalmente se aplica este filtro como el último de todos.
9 - FILTROS RESIZE, CROP y RESOLUCIONES Obviamente cuando se realiza una captura, se intenta hacer en la máxima resolución posible, de hecho la mejor siempre será 768 x 576 por ser considerado como FULL PAL. La ventaja de capturar a resoluciones elevadas, es que al minimizarlas se mejora en calidad, ya que la aplicación de filtros puede mejorar la calidad, pero es necesario reducir el tamaño de video para conseguir una relación calidad + tamaño ideal. (de ahí que se intente capturar siempre a la máxima resolución, aunque se tenga que disminuir a 352 x 288).
CROP (propio avisynth) Este filtro se utiliza para eliminar las partes negras en los bordes de la captura. Crop (izquierda, arriba, -derecha, -abajo)
Tanto el valor de derecha como el de abajo deben estar con el signo menos (-). Crop (12,6,-8,-4)
Ejemplo de posible crop.
RESIZE (propio avisynth) Estan ordenados por orden de menor nitidez (bilinear) a mayor (lanczos). BilinearResize (X, Y)
Esta opción solo es recomendable para fuentes en mal estado. Elimina mucha nitidez. BicubicResize (X, Y, 0.333, 0.333)
Útil para ciertos casos en los que se quiere ganar en compresibilidad. BicubicResize (X, Y, 0, 0.50)
Configuración que considero para una captura normal. BicubicResize (X, Y, 0, 0.75)
Permite un poco mas de nitidez, bueno para fuentes en buen estado. LanczosResize (X, Y)
Configuración ideal para mantener una buena nitidez y solo con fuentes en buen estado.
RESOLUCIONES Habitualmente cuando se captura de la Tv, en la mayoría de los casos el AR (aspecto ratio, diferencia entre resolución ancho y alto) es 4:3 y con estos la resolución a utilizar es bien sencilla. El problema suele venir a la hora de capturar casos panoramicos, que no suelen ser todos estandars y a veces incluso hay que ajustarse a alguna resolución cercana a la ideal. AZUL: Recomendados. ROJO: No Recomendados (pero totalmente utilizables)
4:3 o 1.33:1
1.78:1
1.85:1
2.00:1
Calidad Mala
384 x 288
432 x 240
480 x 256
480 x 240 480 x 208
Calidad Regular
416 x 312
464 x 256
480 x 256
512 x 256 480 x 208
Calidad Medio
480 x 360
480 x 272
512 x 272
512 x 256 528 x 224
Calidad Normal
512 x 384
512 x 288
544 x 288
576 x 288 528 x 224
Calidad Buena
576 x 432
576 x 320
560 x 304
576 x 288 576 x 240
Calidad Muy Buena
640 x 480
640 x 360
624 x 336
640 x 320 640 x 272
1280 x 960
1024 x 576
Calidad Excelente
2.35:1
1280 x 720 La tabla solo es un ejemplo de posibles resoluciones y siempre siempre dependerá del tamaño asignado al video y el tiempo del mismo. Porque obviamente, con 20min de captura de muy buena calidad, en teoría se debería meter 640 x 480, pero si queremos meterlo en 60mb, pues esta claro que no va ir nada bien y se vería horrible. Cuestión de hacer pequñas pruebas de 5min para saber que resolución le conviene más o menos al video a comprimir (porque los milagros no existen).
10 - ORDEN DE FILTROS
El orden de los filtros en el script es una parte muy importante en la parte de compresión, ya que dependiendo de si un filtro esta en una posición u otra, el resultado puede ser totalmente distinto. Aquí explicaré lo que para mi es un buen orden de filtros (aunque para ciertos casos quizas otro sería mejor, pero ya es cuestión de probar).
1º Carda de filtros (carga de DLL) 2º Carga del video (avisource,directshowsource o mpeg2source) Filtros
3º Filtro de desentrelazado (siempre que este entrelazado el video) 4º Filtros de ajuste de luminosidad (iría CNR2, tweak y los necesarios) 5º Filtro Temporal (para eliminación de ruido general) 6º Filtro 3D o Temporal/Spatial (a veces el eDeen en este punto mejora la calidad) 7º Filtro Spatial (cuando la imagen no tiene vibraciones es cuando se aplica este) 8º Filtro Asharp (para realzar los contornos y volverlos mas oscuros) 9º Filtro Awarpsharp (estiliza los contornos) 10º Filtro Crop (para eliminar las partes negras de los bordes de la captura) 11º Filtro Resize (el mas adecuado para la compresión a realizar) Filtro DUP (para la igualación de frames muy parecidos)
12º
Este es un ejemplo de orden de filtros. Por desgracia existen algunos filtros que no funcionan con sistema de colores YUY2 o YV12 y dentro del script hay que añadir los famosos
ConvertToYUY2() ConvertToYV12()
Cuantas mas conversiones se realicen, mas lenta se hará la compresión y siempre existe una pequeña perdida de croma en estas conversiones (la LUMA es la única que se mantiene). El Unfilter es otro filtro que no esta detallado y que en ciertas ocasiones puede ser perfecto para mejorar la compresibilidad. En el orden no se ha puesto debido a que puede ir tanto antes del Spatial como antes del Crop o incluso despues del resize.
11 - EJEMPLOS
Aquí hay un ejemplo de posible configuracion para el filtrado de Anime capturado de la TV. AZUL: Carga de filtros en memoria para ser utilizados en el script. ROJO: Carga del video a procesar. VERDE: Llamada de filtros
loadplugin("h:\capture\filtros\temporalcleaner.dll") loadplugin("h:\capture\filtros\MPEG2Dec3.dll") loadplugin("h:\capture\filtros\Dup.dll") loadplugin("h:\capture\filtros\Deen.dll") loadplugin("h:\capture\filtros\cnr2.dll") loadplugin("h:\capture\filtros\asharp.dll") loadplugin("h:\capture\filtros\Decomb510.dll") loadplugin("h:\capture\filtros\aWarpSharp.dll") loadplugin("h:\capture\filtros\Msmooth.dll") loadplugin("h:\capture\filtros\mipsmooth.dll") loadplugin("h:\capture\filtros\TomsMoComp.dll") loadplugin("h:\capture\filtros\unfilter.dll") loadplugin("h:\capture\filtros\eDeen.dll") loadplugin("e:\windows\system32\vsfilter.dll") avisource("captura.avi") FieldDeinterlace(blend=true) converttoyv12() CNR2("xxx",5,6,255) tweak(sat=1.23,cont=1.34, bright=-8) temporalcleaner(6,12) Deen ("a3d",2,6,6) edeen(2,8,8,2,3,true) asharp(1.5,0) aWarpSharp() crop(8,8,-12,-8) bicubicResize(512,384,0,0.75) TextSub("tusdivx.ssa") Dup (threshold=1, blend= true, maxcopies= 8) Descarga de ejemplo
El converttoyv12() se aplica para poder utilizar los filtros asharp, deen, edeen, y awarpsharp. Esta configuración la he utilizado para capturas de Anime de TV (fuente aceptable/buena) y con excelentes resultados.
12 - Finalizando
Ahora con el script acabado es cuando empiezan las pruebas para ver si esta bien o si se debe modificar algo y siempre tener cuidado con no abusar de ningun filtro, ya que su exceso siempre es dañino para la imagen general (aunque en primera persona de la sensación de muy buen resultado). Ahora toca abrir el .avs con el virtualdub y probar que tal va.
En el virtualdubmod existe un modo en la pestaña TOOLS que permite editar el script de avisynth, modificarlo y refrescar el virtualdub para así no tener que cargar una y otra vez el script.
Este es sin duda el mejor modo para probar distintos scrips.