Autor Tema: Inverse Telecine DVDs Simpson NTSC  (Leído 214 veces)

0 Usuarios y 1 Visitante están viendo este tema.

edumj

  • Miembro junior
  • **
  • Desconectado Desconectado
  • Registrado: 22/06/2011
  • Mensajes: 34
  • Valoración: 0
Inverse Telecine DVDs Simpson NTSC
« Mensaje inicial: 29 de Septiembre de 2017, 18:18 »
Buenas,

estoy intentando desentrelazar, o invertir el telecine de los DVDs de Los Simpson en NTSC, porque los PAL están "doblemente entrelazados". (Habrán cogido los DVDs NTSC y los han pasado a PAL directamente, porque se ven más borrosos y con frames entrelazados sobre otros entrelazados...) :molesto:

La primera temporada creo que tenía las "flags" de Pulldown (aunque algún frame entrelazado se veía con el VLC) con lo que debería de ser fácil recuperar los 23.976 fps originales.

He mirado otra temporada y ya no tiene el Pulldown (según MediaInfo), o sea estará "hard telecined", pero el problema es que el patrón de frames progresivos y entrelazados, al principio sí es 3:2, pero luego ya no! A veces hay 3 ó 4 frames entrelazados seguidos y luego 4 ó 5 progresivos (aunque algunos podrían ser entrelazados, pero parecer progresivos al ser fotogramas repetidos, son dibujos). O sea, que no sé como estará hecho el telecine porque a veces hay 5 o 6 frames distintos consecutivos, y no puede ser "true interlaced"! Pero después hay varios frames repetidos, como si la velocidad del telecine fuera cambiando??  :sospecha:

Aquí he subido el principio del vob, demultiplexado y con los .avs de prueba y tal:
https://mega.nz/#!PEUQRabA!dTiWiAmGhz8gf-3xoRhRWA000XTB1Xd_almD8LVL_ec

He probado varios filtros del Avisynth para hacer el IVTC y desentrelazar los que siguen entrelazados, pero al hacer el "decimate" (borrar 1 frame de cada 5, para pasar de 29.97 fps a 23.976 fps) hay saltos en las animaciones, porque eliminan siempre 1 frame cada 5, sin simportar si están repetidos o no. He probado el SmartDecimate y hace lo mismo.  :decabeza:

¿Hay alguna manera de que sólo borren los frames que estén realmente repetidos? Ya sé que se desincronizará si no se borra 1 de cada 5, pero se podría llevar la cuenta de los frames que faltan por borrar e ir haciéndolo cada vez que encuentre un frame repetido. :pensando:

Como no he encontrado ningún filtro que lo haga, he empezado a hacer un script de AviSynth, y parece que funciona! :-D Pero, necesito pasarle los patrones de todos los fotogramas originales que forman los frames: 2:2:2:3, 2:2:2:3:2, 4:5, 5:4, 4:5:4:5, 2, etc... Le puedo mandar entre 1 y 6 parámetros a la vez, o sea, podría mandarle 2, luego 3, o 2,3 juntos, etc...

Ya veis que los patrones son muy raros (4:5 ó 2:2:2:3, que casi es lo mismo) son 9 campos y no 10! (10 sería 2:3:2:3). Los he sacado mirando frame a frame, bueno campo a campo (con SeparateFields), y apuntando cada cuantos frames (campos) cambia la imagen (fotogramas diferentes).
Así, cuando me salen 2 frames iguales, no es que sea un frame progresivo (puede ser también entrelazado), sino que un fotograma único está dividido en 2 campos (que forman un frame).
Si me salen 3 iguales, es que ese fotograma, dividido en 2 campos, se muestra 3 veces. O sea, repite uno de los 2 campos y está entrelazado el frame anterior o el posterior (depende de si el campo que se repite es el "top" o el "bottom").
Si me salen 4 iguales, es que el fotograma original se muestra durante 2 frames
Si me salen 5 iguales, es que se muestra durante 2 frames y medio (otro entrelezado).

Entonces, lo que hago cuando hay 3 campos "iguales" (top+bottom+top ó bottom+top+bottom) es ir cortando con TRIM el primer o último campo (habría que saber cual es mejor quitar) y así voy eliminando el campo repetido y sólo quedan 2, que formarán 1 frame.
Cuando hay 5 iguales, puedo borrar también sólo 1 campo, o "si vamos con retraso" (porque llevo la cuenta de los campos eliminados y los que se tendrían que haber eliminado hasta el frame actual, diviendo el número de frame actual entre 5) cojo sólo 2 campos y así elimino 3, y se va volviendo a sincronizar.
Cunado hay 2 campos, cojo siempre los 2, pero si hay 4 campos puedo cogerlos todos, o también sólo 2 para seguir sincronizando.

No sé si se entiende...  :neurotico:

El problema, es que tengo que pasarle los patrones (cuántos campos se muestran de cada uno de los fotogramas) y contarlo a mano...  :stress:

Estoy probando con la función YDifferenceFromPreviousNext) separando los campos y seleccionando sólo los pares (y luego sólo los impares) para ver si son iguales. Y creo que se podrían saber los patones haciendo un archivo de texto con las veces que se repite cada campo superior y otro para el inferior, y luego sumarlos. Así sabría cuantos campos se muestran de cada fotograma. Pero no consigo guardar en una variable las veces que se repiten los campos y sólo escribir en el archivo de texto el número total, siempre me escribe un 1. Intento usar las funciones que hay en http://avisynth.nl/index.php/ConditionalFilter#Advanced_conditional_filtering:_part_II pero no aún no entiendo bien como funcionan esas funcionaes (FrameEvaluate, ScriptClip, ConditionalFilter...) pero no me funciona guardar el valor de YDifferenceFromPrevious en una variable y pasar ese valor a otra función (para ir sumando cuando los campos sean iguales, y sólo hacer el write cuando encuentre un campo diferente, y volver a empezar a contar)


En resumen (si alguien ha llegado hasta aquí ;-)):

1- Usando TFM, ¿cómo puedo borrar 1 frame de cada 5, pero sólo si es un frame repetido, e ir borrando los repetidos que encuentre hasta llegar a borrar 1 de cada 5?

2- Usando mi método, ¿cómo puedo hacer una lista con el número de campos que representan cada fotograma original, o sea, una lista con los patrones de PullDown?


Saludos! :saludo:



tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #1: 04 de Octubre de 2017, 12:15 »
Hacer un Inverse Telecine presupone que el original era 23.976 y se ha convertido a 29.970.
Es lo típico con películas filmadas con cámaras analógicas a 24 fps, el estandar de cine.

En el caso de dibujos animados lo más probable es que el original no tuviera un fps constante de 23.976 sino que fuera un VariableFrameRate, es decir una serie de dibujos a presentar durante un tiempo distinto cada uno de ellos en pantalla.
Recordemos los tiempos de presentación en pantalla de un fotograma a fps constante:

23.976 -> 41,7083 ms
29.970 -> 33,3666 ms
59.940 -> 16,6833 ms

Cuando se convierte un VFR a CFR 29.970 entrelazado (59.940 campos por segundo) permite convertir dibujos originales, a presentar del orden de 16 ms, en un solo campo o dibujos a presentar 66 ms en 2 frames duplicadas sin entrelazado aparente. Y con otra duración lo más aproximado a cualquier combinación de campos.

Intentar recuperar eso a un fps constante de 23.976 me parece tarea imposible, eliminar frames o campos duplicados no solucionaría el problema ya que pueden ser necesarios para la sincronía y también podrían perderse campos únicos de escenas de movimiento.

No obstante quizá me equivoque y te ayuden en Doom9 a lograrlo.
Si yo tuviera que recodificar algo así mantendría el entrelazado original.
« Última modificación: 04 de Octubre de 2017, 12:43 por tebasuna51 »

edumj

  • Miembro junior
  • **
  • Desconectado Desconectado
  • Registrado: 22/06/2011
  • Mensajes: 34
  • Valoración: 0
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #2: 23 de Octubre de 2017, 00:33 »
Hacer un Inverse Telecine presupone que el original era 23.976 y se ha convertido a 29.970.
Es lo típico con películas filmadas con cámaras analógicas a 24 fps, el estandar de cine.

En el caso de dibujos animados lo más probable es que el original no tuviera un fps constante de 23.976 sino que fuera un VariableFrameRate, es decir una serie de dibujos a presentar durante un tiempo distinto cada uno de ellos en pantalla.

Hola,

yo sigo creyendo que el original era 24 fps (como casi todos los dibujos animados) aunque la mayoría de animaciones son a 12 fps (también como casi todos los dibujos), menos los movimientos de cámara que serán a 24 fps. Lo que hayan hecho después en vídeo, además de mezclas escenas y poner los créditos, o durante el telecine ya no sé... Pero mientras lleve la cuenta de los campos borrados puedo manterner la sincronización del audio. Otra cosa es que me está costando que el código funcione bien del todo...

Para la remasteriación que han hecho en HD tampoco se han matado mucho, porque según he visto se han cargado también algunos frames al pasarlo directamente a 23.976 fps.

No obstante quizá me equivoque y te ayuden en Doom9 a lograrlo.
Si yo tuviera que recodificar algo así mantendría el entrelazado original.

dejar el entrelazado... ni hacerlo a 59.94 fps me convence, ya que se verán igual de mal los saltos que con 29.97 fps.

Y en Doom9 aún no he consegudio ni que me digan como filtrar la imagen...


Saludos.

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #3: 23 de Octubre de 2017, 03:21 »
Ya he estado siguiendo los hilos de Doom9, y te han contestado usuarios expertos como StainlessS, Manono, hello_hello, ...

Yo me reafirmo en que es misión imposible con esa fuente.

edumj

  • Miembro junior
  • **
  • Desconectado Desconectado
  • Registrado: 22/06/2011
  • Mensajes: 34
  • Valoración: 0
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #4: 23 de Octubre de 2017, 21:02 »
Ya he estado siguiendo los hilos de Doom9, y te han contestado usuarios expertos como StainlessS, Manono, hello_hello, ...

Yo me reafirmo en que es misión imposible con esa fuente.

Sí, algunos los conozco de leerlos en otros posts, pero he preguntado varias veces por cómo puedo filtrar mejor la imagen y nadie me ha contestado a eso. Tendré que hacer otro post para preguntarlo...

Básicamente, me han dicho que use Framedifference en lugar de DifferenceToNext, lo que no me soluciona lo de limpiar la imagen, o que lo haga de otra manera (ya lo intenté de muchas maneras antes de preguntar). O que no debería desentrelazar a la vez que borrar los campos repetidos, pero no el por qué, cuando me parece más lógico y fiable. Lo hice hace años con un par de videoclips, y la duración final es la misma. Aunque ahora he cambiado un poco el código y aunque la sincronización sigue variando (también es normal si en 29,97 cada frame dura 33 ms y 42 ms en 23.976) al final dura lo mismo o sólo varía 42 ms, o sea un frame.


Si quieres cuelgo el script completo, que aún tiene fallos (creo que puse alguno en Doom9), por que sin probarlo no puedes decir que algo sea imposible...  :-D



tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #5: 24 de Octubre de 2017, 00:05 »
Bueno pues ánimo, nada es imposible.

Por mi parte no tengo mucho interés en ese tipo de vídeos.
Si al final consigues la perfección lo posteas por si le sirve a otro usuario.

edumj

  • Miembro junior
  • **
  • Desconectado Desconectado
  • Registrado: 22/06/2011
  • Mensajes: 34
  • Valoración: 0
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #6: 24 de Octubre de 2017, 17:39 »
Por mi parte no tengo mucho interés en ese tipo de vídeos.

¿A qué tipo de vídeos te refieres?

Bueno, si hay algún experto en avisynth y que quiera ayudarme con el script, le estaría muy agradecido.

Saludos.  :saludo:

tebasuna51

  • Moderador
  • ******
  • Desconectado Desconectado
  • Registrado: 22/02/2010
  • Mensajes: 4.192
  • Valoración: 210
Re:Inverse Telecine DVDs Simpson NTSC
« Respuesta #7: 24 de Octubre de 2017, 21:47 »
De dibujos tipo anime (variable frame rate).