Divxhouse.com Web sobre videoedición

Avisynth Real

Avisynth: Filtrado de Imagen REAL

Orden de Filtros

El orden de los filtros es algo crucial en muchos aspectos para conseguir una calidad esperada. Como se ha comentado en la parte de Novatos es importante el capturar directamente en YUY2, de esa manera evitamos conversiones inútiles de modo de color y también se evita un unos 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\filtros\temporalcleaner.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",audio=true)

#DirectShowSource ("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 primer filtro a tener en cuenta es el de desentrelazado, para evitar esa sucesión de lineas 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 030, 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)

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 muy buen filtro de desentrelazado y que mantiene la nitidez en muchos 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 / Contrste / 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

(-180 a 180) Ajusta el color, de rojo a verde.

SAT

(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 237-255 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 colorYUV es que diferencia entre la parte Luma (Y) y la Croma (UV) ganando asi en calidad.

TemporalCleaner (2,6)

Valor para casos en los que la captura sale en buenas condiciones (de Tv por ejemplo)

TemporalCleaner (4,9)

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(4,7,8,mode=2,scenechange=6)

Limpieza habitual

Temporalsoften(6,8,10,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

La imagen superior tiene un zoom de 150%

BlindPP (mpeg2dec3.dll)

Este es un filtro deblocking y que consigue unos buenos resultados (aunque la versión ffdshow es bastante mas estable) a la hora de realizar un spatial al video y encima con gran velocidad.

BlindPP(quant=5,cpu2="xxxxoo",moderate_h=40,moderate_v=40)

Valor con el que se obtiene resultados buenos.

BlindPP(quant=10,cpu2="xxxxoo",moderate_h=28,moderate_v=28)

Valor algo mas agresivo y a veces provoca errores en la imagen.

VagueDenoise (vaguedenoise.dll)

Este es un filtro especial para imagen Real y que realiza una limpieza sin abusar de filtrado, intentado mantener toda la calidad del video. Por desgracia es un filtro algo lento aunque merece la pena.

VagueDenoiser(threshold=2,method=1,nsteps=6,chroma=true)

Valor por defecto y que consigue una limpieza aceptable.

VagueDenoiser(threshold=4,method=1,nsteps=6,chroma=true)

Valor algo mas agresivo consiguendo mayor limpieza.

VagueDenoiser(threshold=7,method=1,nsteps=6,chroma=true)

Valor algo mas agresivo que los anteriores

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 este tipo de filtrado es mas efectivo que uno spatial puro y es con el que se consigue unos resultadois excelentes.

Sin limpieza

Con 3D activado

La imagen superior tiene un zoom de 150%

MipSmooth (mipsmooth.dll)

Este 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 = "MovieHQ")

Configuración util para la mayoría de los casos

mipsmooth (preset = "MovieLQ")

Valor algo mas agresivo para casos con mucha suciedad.

mipsmooth (preset = "MovieLQ", Downsizer="lanczos", upsizer ="bicubic")

Otro configuración agresiva, pero que obtiene mejores resultados que el MOVIELQ.

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).

Solo limpieza

Con Unfilter activado

Con el filtro detras del Spatial o el Filtro 3D se consigue mayor limpieza y mayor efecto del filtro.

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 provocar algun desajuste, que se suele arreglar con un simple resize (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 recompendable para fuentes en mal estado. Elimina mucha nitidez.

BicubicResize (X, Y, 0.333, 0.333)

Util para ciertos casos en los que se quiere ganar en compresibilidad.

BicubicResize (X, Y, 0, 0.50)

Configració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

2.35: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

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 meter640 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).

9 - 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).

Carda de filtros (carga de DLL)

Carga del video (avisource,directshowsource o mpeg2source)

Filtros

Filtro de desentrelazado (siempre que este entrelazado el video)

Filtros de ajuste de luminosidad (iría CNR2, tweak y los necesarios)

Filtro Temporal (para eliminación de ruido general)

Filtro 3D o Temporal/Spatial

Filtro Spatial (optativo, ya que el 3D consigue mayor calidad)

Filtro Crop (para eliminar las partes negras de los bordes de la captura)

Filtro Resize (el mas adecuado para la compresión a realizar)

Este es un ejemplo de orden de filtros. Por desgracia existen algunos filtros que no funcionan con sistema de colores YUY2YV12 y dentro del scrip 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.

10 - 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")

Tomsmocomp(1,15,1)

CNR2("xxx",4,5,255)

tweak(sat=1.23,cont=1.34, bright=-8)

temporalcleaner(5,12)

mipsmooth (preset = "MovieHQ")

crop(8,8,-12,-8)

bicubicResize(512,384,0,0.75)

Descarga de ejemplo

Esta configuración la he utilizado para capturas de TV (fuente aceptable/buena) y con excelentes resultados.

11 - 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.