test de compresibilidad y lumaYV12

Para hablar y pedir ayuda sobre Hardware, Software y tal pascual, además de tutoriales para hacer tus copias privadas o configurar eMule.
Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

test de compresibilidad y lumaYV12

Mensaje por jordisound » Jue 05 Abr, 2007 18:48

Buenas!
Ahi va una duda sobre una cosilla que me ha pasado al realizar un test de compresibilidad de un rip que estoy preparando. Uso GKnot y avs.
Me ha salido un valor de 0.490, con lo que ajustando al espacio de que dispongo llegaria a un valor del 63% del qf del test.
Me ha sorpendido que saliera un valor tan alto. La peli es oscurilla y le meti lumayv12(1,1.2) para dar un poco de luminosidad.
La cuestión es que he repetido el test sin el luma (la peli más oscurilla) y el valor arrojado por el test fue de 0.410 (sensiblemente menor).
Que hago pues, le dejo el luma sabiendo que se verá un poco mejor para mi gusto pero sabiendo que me alejo del 75% que es el ideal o le quito el luma con lo que sí consigo acercarme al 75%.

Avatar de Usuario
Nostromo_
Mensajes: 17
Registrado: Vie 18 May, 2007 23:29
Ubicación: En los brazos de una chica mala de cine negro.

Mensaje por Nostromo_ » Mar 22 May, 2007 00:36

No podría responder sin tener más datos a mano, pero sí decirte que no siempre el hecho de que una película sea oscura significa mayor compresibilidad. Y tampoco seas estricto con el 75%. Si usas versiones últimas de Xvid valores en torno al 60-65% suelen ser aceptables.

¿Has probado a usar el test de compresibilidad de ARCalculator? Está más optimizado que el de GK y además con ese programa puedes hacer uso de la herramienta AVS Optimizer con la que se pueden aplicar distintos filtros para distintas partes del vídeo a codificar.

Saludos.

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

MVTools

Mensaje por elguaxo » Mar 22 May, 2007 01:38

Dale una primera pasada completa y saca la compresibilidad del archivito de estadísticas. Yo hace rato que no me fio más de los tests.

En cualquier caso tanto .490 como .410 son números muy feos. Últimamente mi mejor amigo para mejorar la compresibilidad es MVDegrain2. Así como el DegrainMedian y el FFT3DFilter el MVDegrain2 es otro filtro del maestro Fizick! Baja el MVTools (que es quien contiene al MVDegrain2): http://avisynth.org.ru/mvtools/mvtools.html

Y prueba con esto. Sin saber como es la fuente no te puedo recomendar algo exacto, pero comienza con esto que seguramente te vas a sorprender:

Código: Seleccionar todo

vbw1=MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=true,blksize=16,idx=1,sharp=1)
vfw1=MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=true,blksize=16,idx=1,sharp=1)
vbw2=MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=true,blksize=16,idx=1,sharp=1)
vfw2=MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=true,blksize=16,idx=1,sharp=1)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=200,idx=2) 
Y si necesitas un poco más en vez del ejemplo de arriba prueba con este:

Código: Seleccionar todo

vbw1=MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=true,blksize=8,overlap=2,idx=1,sharp=1)
vfw1=MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=true,blksize=8,overlap=2,idx=1,sharp=1)
vbw2=MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=true,blksize=8,overlap=2,idx=1,sharp=1)
vfw2=MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=true,blksize=8,overlap=2,idx=1,sharp=1)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=275,idx=2)
Y mejor aún si nos subes un pedacito de VOB, así te podemos dar un consejo más pertinente. Yo no soy estricto con el 75%, prefiero 80% :mrgreen:

Avatar de Usuario
bluegardenia
Mensajes: 6128
Registrado: Sab 11 Oct, 2003 02:00
Ubicación: El Páramo del Espanto

Mensaje por bluegardenia » Mar 22 May, 2007 20:48

Acabo de probar el primer script que pone elguaxo, nunca había usado mvdegrain, y la primera impresión es excelente. Con una película durilla de comprimir ha rebajado un punto el avg. quant sobre otros scripts con diferentes denoise digamos convencionales. Sin perder detalles importantes, limpiando de verdad vaya, no de manera indiscriminada. Le daré un vistazo a las opciones que permite para afinar más.
Gracias.
Cuadruplico y voy a por más

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

Monster

Mensaje por elguaxo » Mar 22 May, 2007 21:03

Lo estoy usando para todo y hay combinaciones ALUCINANTES. Algunas de ellas resultan en ripeos de más de 48horas para una película...

La clave de este filtro es que hace un pre-análisis sobre los vectores de movimiento en bloques. Tal como funcionan los mismos codecs MPEG2, MPEG4-ASP o AVC (Xvid o x264 por ejemplo).

En el segundo ejemplo verás que ajusté básicamente 3 parámetros a diferencia del primero:

blksize=8, analiza sobre bloques más pequeños lo cual da gran precisión
overlap=2, esto es una de las cosas importantes que Fizick introdujo con el FFT3DFilter. Al aplicar de forma muy fuerte sus filtros sobre áreas definidas por bloques, se formaban finalmente... bloques. El overlap hace que se superpongan los bloques sobre los cuales se aplica el filtro para no ver estos efectos secundarios.

thSAD=275, valores más grandes de thSAD hacen que MVDegrain2 se aplique más fuerte.

En general el filtrado de MVDegrain2 es compatible con el FFT3DFilter. Es decir que se puede aplicar un toque de FFT3DFilter después de una aplicación de MVDegrain2.

Y este script a continuación Lux DeLux de los ShitBusters lo bautizó como THE monster. A agarrarse porque ningún ripeo bajará de las 48horas pero sus resultados son milagrosos en caso de ser necesarios:

original
Imagen

raped by the monster
Imagen

nótese que atacó solo a los artefactos de compresión del DVD que era malito (macrobloques y ruido en chroma y luma) y los detalles quedaron intactos.

Ah, esto es THE monster:

Código: Seleccionar todo

source = last
backward_vec2 = source.MVAnalyse(isb = true, delta = 2, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
backward_vec1 = source.MVAnalyse(isb = true, delta = 1, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
forward_vec1 = source.MVAnalyse(isb = false, delta = 1, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
forward_vec2 = source.MVAnalyse(isb = false, delta = 2, pel = 2, overlap=4, sharp=2, idx = 1, truemotion=true)
mask = mvmask(kind=1, vectors=forward_vec1).UtoY().LanczosResize(576,432)
smooth = source.degrainmedian(mode=3).fft3dfilter(bw=16, bh=16, bt=3, sigma=3, plane=0)
source2 = maskedmerge(source, smooth, mask)
source3 = source2.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,idx=1)
source3.gradfun2db(1.5)

Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

Mensaje por jordisound » Sab 26 May, 2007 11:52

Uf 48 horas jejeje.
Ok elguaxo probaré el MVtools a ver que tal, pero mi PC no da para mucho, ya os cuento

Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

Mensaje por jordisound » Mié 30 May, 2007 16:01

Buenas retomo el hilo por el tema de la luminosidad.
En la libreria MPEG2Dec3.dll aparecia la función lumafilter(), que según multitud de guias era un filtro indispensable, al igual que undot(). La opcion por defecto lumafilter() creo que equivalía a Lumafilter(2,1)
En la actual versión de DGdec ya no aparece lumafilter, sino lumaYV12. Parece que ya no haga falta usarse porque veo por ahi que nadie lo recomiende. Sólo en un sitio he visto que se recomienda usar LumaYV12(-2,1), y no se bien por qué. El equivalente a lumafilter() no sería LumaYV12(2,1)? Alguien lo sabe?
Y vosotros, lo soléis usar por norma o sólo en determinados casos?

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

Mensaje por elguaxo » Mié 30 May, 2007 16:10

Creo que ahora la 'corrección' más utilizada es (visible sobre todo en Luma porque aclara) ColorMatrix()

Su utilización más sencilla:

Fuente no entrelazada:
DGDecode_mpeg2source("I:\dvd\video_ts\VTS_06_PGC_01_1.d2v",info=3)
ColorMatrix(hints=true)


Fuente entrelazada (se desentrelaza después, pero el script debiera arrancar así):
DGDecode_mpeg2source("I:\dvd\video_ts\VTS_06_PGC_01_1.d2v",info=3)
ColorMatrix(hints=true, interlaced=true)


nótese que el DGDecode tiene al final el parámetro info=3. Info=3 lee datos del DVD, entre ellos la colorimetría y le pasa este dato a ColorMatrix quien lo recibe gracias al parámetro hints=true

Si no utilizamos el info=3 más hints=true hay que agregar la conversión a mano. Por lejos en la mayoría de DVDs la configuración sería:
DGDecode_mpeg2source("I:\dvd\video_ts\VTS_01_1.d2v")
ColorMatrix("Rec.709->Rec.601",hints=false)


Edito: yo personalmente lo uso bastante, pero siempre después de darle una miradate a la fuente con y sin ColorMatrix

Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

Mensaje por jordisound » Jue 31 May, 2007 08:22

Oido cocina.

Otra cosa. con MVdegrain2, para una fuente mala metemos el thSAD de 400 arriba, no? que creo que 400 es el valor por defecto. hasta dónde podemos llegar?
Tambien comentas que despues un fft3dfilter le iria bien. el valor () o alguna config particular?
Saludos

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

Mensaje por elguaxo » Jue 31 May, 2007 10:31

Depende! :P

thSAD de 400 para arriba empieza a 'comer' bastante. Pero si es una película vieja, en mal estado y el filtrado viene en plan de restauración, creo que puede ir muy bien!

Lo mismo el FFT3DFilter posterior. Como efecto secundario no deseable de un FFT3D muy fuerte puede aparecer 'banding'. Je, nunca va a pasar algo tan feo como el ejemplo que linkeo, pero para que te des una idea de que estoy hablando.

Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

Mensaje por jordisound » Jue 31 May, 2007 11:37

Si claro, estoy hablando de peliculas ochenteras que vienen en unos DVD que dan pena.
Estaría bien, si no en este hilo, en el otro, hacer unas propuestas de configuraciones de filtros para fuentes de BUENA, MEDIA y BAJA calidad, y así tener un poco donde agarrarse, ya que a veces la documentación de los filtros es bastante complicada de entender.

Un ejemplo: en la documentación de MVtools veo la siguiente propuesta para usar el degrainmedian, filtro que me gusta bastante
To denoise with some external denoiser filter (which uses 3 frames: prev, cur, next):

backward_vectors = source.MVAnalyse(isb = true, truemotion=true, delta = 1, idx = 1, thSCD1=500)
# we use explicit idx for more fast processing
forward_vectors = source.MVAnalyse(isb = false, truemotion=true, delta = 1, idx = 1, thSCD1=500)
forward_compensation = source.MVFlow(forward_vectors, idx=1) # or use MVCompensate function
backward_compensation = source.MVFlow(backward_vectors, idx=1) # or use MVCompensate function
# create interleaved 3 frames sequences
interleave(forward_compensation, source, backward_compensation)

DeGrainMedian() # place your preferred temporal (spatial-temporal) denoiser here

return selectevery(3,1) # return filtered central (not-compensated) frames only
No lo he conseguido hacer funcionar. Supongo que donde pone source has de poner la ruta "c:\rip\pelicula.d2v". Pero creo que has de meter comillas, parentesis donde toca (que no lo deja claro) para que empiece a funcionar . cuando llega a la linea del interleave me pone error

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

Mensaje por elguaxo » Jue 31 May, 2007 11:42

Faltaría al comienzo un

Código: Seleccionar todo

source = last
Acá utilizan el MVAnalyse (el análisis de vectores de movimiento), pero en vez de MVDegrain2 utiliza el DegrainMedian. Sí, después proponemos algunos ejemplos en el hilo de filtros!

Avatar de Usuario
jordisound
Mensajes: 232
Registrado: Dom 17 Abr, 2005 02:00

Mensaje por jordisound » Jue 31 May, 2007 12:01

en efecto poniendo eso se arregla, pero me sigue dando error al llegar a la segunda linea. Ahora sale MV analyse no tiene un argumento llamado thSCD1

Avatar de Usuario
elguaxo
Mensajes: 1047
Registrado: Sab 10 Jun, 2006 06:51

Mensaje por elguaxo » Jue 31 May, 2007 12:33

Creo que cambiaste el orden de alguna línea. De punta a punta este es un script que acabo de probar y funciona:

Código: Seleccionar todo

DGDecode_mpeg2source("H:\dvd\video_ts\VTS_01_1.d2v",info=3)
ColorMatrix(hints=true)

crop( 0, 2, 0, 0)
Spline36Resize(640,480)

source = last

backward_vectors = source.MVAnalyse(isb = true, truemotion=true, delta = 1, idx = 1)
forward_vectors = source.MVAnalyse(isb = false, truemotion=true, delta = 1, idx = 1)
forward_compensation = source.MVFlow(forward_vectors, idx=1, thSCD1=500)
backward_compensation = source.MVFlow(backward_vectors, idx=1, thSCD1=500)
interleave(forward_compensation, source, backward_compensation) 
DeGrainMedian()
return selectevery(3,1)