¿Mejor desentrelazado de video? No nos engañemos


Tengo una cámara que filma el video entrelazado. En realidad no sé si lo filma así (su sensor internamente) pero así lo presenta a su salida. Y eso que es digital miniDV con 3CCD, una de las que mejor calidad tienen.

La verdad que no entendía bien por qué usa video entrelazado y la respuesta es sencilla: Ocupa la mitad de ancho de banda. Con lo que aparenta “mantener” la calidad ocupando la mitad de espacio (o ancho de banda).

Pero ahora es a lo que quería ir: No nos dejemos engañar, la supuesta “mantención” de calidad es casi una mentira, en realidad es una ilusión óptica…

Y acá viene lo interesante. Y aunque pareciera que es algo más que sabido la verdad es que poca gente lo entiende bien.

Puedes buscar en internet información por muchos sitios y si bien están encarando bastante bien el tema del desentrelazado y tienen sus razones y todo. Hasta ahí todo bien, pero nadie habla de para qué fue inventado originalmente el video entrelazado y cómo es que se muestra en la pantalla original (y por qué lo hicieron así?).

¿Cómo se muestra el video entrelazado?

Lo más normal es que una búsqueda en internet te devuelva algo como esto:

Si bien es un fotograma real de un video entrelazado, así no es como se ve en una pantalla de TV entrelazado!

El problema al momento de querer desentrelazar video es que nos olvidamos de cómo se aprovechó la idea original. Y el entrelazado se vale de tres cosas:

  • El sistema visual del ser humano
  • La forma de las celdas de la pantalla
  • Y la permanencia del fósforo de la pantalla

Se basa en el principio de que el sistema visual del ser humano no puede interpretar con detalle los movimientos rápidos pero sí las imágenes estáticas.

Nuestro cerebro interpreta cambios rápidos en la imagen y nos hace entender que es algo que está en movimiento. Al mismo tiempo que aunque pierde calidad (porque obtenemos la mitad de la información al ser entrelazado) el cerebro al detectar movimiento no percata detalles.

El fósforo ayuda a mantener una permanencia de imagen en la pantalla para que no se desvanezca totalmente y no tengamos una sensación de parpadeo.

Cuando el cerebro deja de detectar movimiento espera obtener detalles visuales. El sistema entrelazado al dibujar los dos campos sin diferencia temporal nos puede mostrar una imagen con mayor resolución (el doble que si estuviera en movimiento).

Por si no sabes bien lo que es entrelazado y como funciona

En los televisores de antes, los de tubos CRT, no se dibujaba la imagen de un tirón, sino que se hacía en dos pedazos. Primero las líneas impares y luego las líneas pares. O también llamados campos (campo superior y campo inferior).

Los tubos están compuestos de una película de fósforo en el frente que hace que la luz que genera se mantenga un tiempo suficiente encendida. O sea, cada puntito en el tubo se ilumina por un haz de electrones que viaja, pero si no estuviera el fósforo esa luz se borraría rápido entonces no veríamos algo “pintado” sino que veríamos un puntito que se mueve. Para eso sirve el fósforo.

Ahora no es que queda iluminado siempre, sino que igual se va desvaneciendo pero apenas se está por desvanecer completamente llega de nuevo el haz de electrones y dibuja la imagen que sigue. Y así hace todo el tiempo, primero las líneas impares y luego las líneas pares. De esa forma logra mantener la imagen dibujada constantemente.

Ahora, cada vez que dibuja una imagen de líneas, el tiempo va pasando, entonces si al momento de dibujar las pares pasó algo distinto, ahora lo que va a dibujar va a estar corrido con lo anterior (con lo que dibujó antes en las impares). Eso se hace así para que no se pierda la sensación de movimiento, o sea, que no se pierda la fluidez en el movimiento. Porque imaginate que no lo hiciera lograríamos ver las cosas que se mueven medio atrancadas. Ese efecto de trancado se nota si a un video entrelazado lo desentrelazan con un desentrelazador común y le mantienen la velocidad de fotos por segundo. Porque para obtener fluidez en movimiento deberían duplicar la velocidad de fotos por segundo (ya que así es como logra dar esa sensación el entrelazado).

Ahora, cada imagen (de línea par o de línea impar) se dibuja a 30 fotos por segundo. Al dibujar dos (una impar y otra par) nosotros tenemos la sensación de que se ven a 60 fotos por segundo. Por eso se mantiene una fluidez en los movimientos (el movimiento va a 60). Porque las cosas que cambian con el tiempo nuestro cerebro las percibe a esa velocidad de 48 a 60 fotos por segundo. A menos de 48 empezaría a notar imágenes trancadas y a más de 60 no habría diferencia en la fluidez de los movimientos. Por eso se usan esos valores.

En cambio si dibuja una imagen impar, luego la par, y las dos están en el mismo tiempo se va a dibujar un dibujo completo. O sea, porque no hay movimiento, no hay cambios de una imagen a otra. Entonces ahora vemos una imagen estática pero con más detalles (porque gracias a todo el sistema y la permanencia de nuestra retina nos da la sensación de que estamos viendo algo constante y estático).

Interpretación visualmente

Fijate en la imagen izquierda, se nota que están las dos imagenes (la impar y la par) juntas, ves que hay partes donde se ve una corrida con la otra (se ve feo)? Eso es porque hubo un movimiento entonces en un tiempo (mientras iba por las impares) sucedió algo, y cuando pasó a las pares sucedió otra cosa. Pero en la parte del fondo de la foto completa (la primera que está arriba del todo) como las cosas están quietas (la parte del paredón), las dos veces que se dibujaron las imágenes todo era continuado, por eso se ve completa y bien (fotito a la derecha). Se observa con más detalles, no? (No consideres que está pixelada eso es porque le hice “zoom” para que se aprecie la diferencia entre las líneas). Observa mejor la foto primera, la grande, la completa del video, ahí se nota mejor (tiene la calidad original).

Acá te muestro como sería una imagen par y una impar. A groso modo, esto no es como se ve en un TV de tubo.

Los de arriba son de un pedazo del cuadro de foto del video. Fijate como molesta a la vista, no? Eso es porque en ese ejemplo no hay ningún efecto de fósforo. Es como si no existiera eso y se vería así todo rayado. Sin mencionar que si fuera animada se vería como a continuación (pero un poco más rápido: 60 por segundo, este está a 50 por segundo aunque quizá tu pc no lo logre mostrar a esa velocidad porque no es un video y le puede costar más trabajo):

Igual algo se nota y ya ves como el coche está moviéndose. Pero también se ve mucho un efecto de rejilla. El sistema de visión del humano alcanza a detectarlo porque faltaría algo que lo ayude un poco.

Presiona ESC para detener todos los movimientos (si te molestan). O aleja tu vista de ahí jaja.

Televisores entrelazados

Un tubo de CRT de televisor. O sea, acuérdate que estamos hablando de televisores no de monitores de PC porque para eso se inventó el entrelazado. Bueno, un tubo de televisor dibuja como se ve a continuación:

La disposición de las líneas puede ser esa pero los que yo vi de cerca las tenían tipo panal. En el dibujo de ejemplo arriba se encuentran alineadas. En el dibujo de abajo son fotos reales de una pantalla de TV entrelazada (de la habitación, jeje) y de mi monitor TV/LCD samsung. La distancia a la que fue tomada la foto es prácticamente la misma, fijate que el LCD tiene más “puntitos” por el mismo espacio que el TV. Obviamente eso es porque tiene más resolución.

Como ves un televisor de esos es muy distinto a un monitor de PC y TVs modernos tipo LCD y Led. Actualmente los televisores son iguales que los monitores de PC. Hoy día casi que no hay diferencia entre un monitor o TV. Pero ninguno es entrelazado, y ahí es donde viene el problema si vas a trabajar con material entrelazado en la PC.

Ese tipo de pantallas no tenían pixeles, tenían tipo un panal o celdas que es distinto a un cuadradito (pixel). Entonces la forma en que se veían las cosas sobre esa pantalla era diferente. La trampa estaba en que todo se basaba en ilusión óptica dandole la sensación al espectador de que estaba viendo algo de buen detalle y buena fluidéz de movimiento. Cuando en realidad era mentira jaja.

A continuación te muestro un ejemplo de cómo un televisor entrelazado podría representar la foto anterior.

Todavía se ven rayas. Pero menos notorias. Y menos molesto, verdad? (mucho mejor)

Lo que simulé en la imagen anterior fue sólo el efecto del fósforo del TV (aunque en realidad no es así, pero es muy similar al efecto que produciría en nuestra vista). Haciendo que los campos impares sean totalmente visibles (porque se acaban de dibujar recién) y los pares menos visibles (un 50%) porque se dibujaron anteriormente (pero gracias al fósforo y nuestra retina todavía los vemos).

Me acabo de dar cuenta que en mi cámara (hablando en jerga de video) los campos inferiores son los que envia primero. En la jerga de video se le dicen campos y pueden ser de superiores (top) o inferiores (bottom). O sea: top field o bottom field, respectivamente. Pero también impares y pares, donde los impares son  superiores y los pares son inferiores.

Bueno, la imagen arriba la estás viendo estática pero el sistema de video entrelazado fue creado para funcionar en continuo cambio y no quedarse estancado como visualmente se ve la imagen anterior. Así que en un televisor aunque todo parezca quieto en realidad siempre van a haber cambios de luz porque se estarían dibujando continuamente los campos.

¿Cómo desentrelazar mejor entoces?

Entonces que podemos hacer. Podemos simular eso con la PC y obtener así un desentrelazado similar a lo que veríamos en un TV. Te vuelvo a repetir: Como la imagen en una pantalla estaría en continuo cambio de luz, hacer esto a un video no da la misma sensación que al mirar la foto estática de arriba. Sino que las partes estáticas se notarían aunque una pequeña sensación de algo raro, se notaría más  la sensación de detalle o claridad. Y las partes en movimiento aunque también den una pequeña sensación de algo extraño (como rayada) se alcanzarían a notar movimientos fluidos. Muy parecido a un TV (o casi igual).

La idea acá no es obtener una imagen perfecta de alta calidad como una foto estática sino que es obtener la misma sensación que se obtendría al mirar el video en un TV entrelazado. Al fin y al cabo la señal está especialmente preparada para ser mostrada de esa forma. no?

¿Por qué busco esa sensación en vez de calidad fotográfica?

Si, por qué no mejor usar un desentrelazador como yadif o deint o mejor aún TempGaussMC o QTGMC que generan una imagen como una foto nítida sin ningún rayado extraño.

Porque busco la máxima calidad que puedo obtener de mi video entrelazado sin perderlo.

Y esos desentrelazadores además de que son muy lentos estarían sintetizando las partes faltantes haciéndome perder el video original. Prácticamente estarían haciendo el mismo trabajo que hace nuestro cerebro al mirar el video entrelazado en un tv entrelazado.

Quiero decir que el sistema de video entrelazado se creó así, bajo ese principio, no con la idea de obtener video progresivo a través de él. Por lo tanto conseguir un video progresivo de calidad a través de un video entrelazado es casi imposible. Por el simple hecho de que nos falta información porque nuestra cámara no es capaz de almacenar esa información (no significa que no sea capaz de capturarla pero sí seguro que la procesa y la almacena entrelazada para ahorrar espacio y ancho de banda). Al hacer eso ya está perdiendo datos en dos cosas: Resolución espacial y resolución temporal.

Ese es el efecto indeseado de guardar el video en formato entrelazado. Sacrifica la mitad de cada cosa (tiempo o definición) y no se pueden obtener las dos a la máxima calidad, o una o la otra, pero no ambas.

Y la solución para su proyección o mostrado es una sola: Una pantalla entrelazada.

No hay otra forma más eficiente de mostrarlo o representarlo si se quiere obtener el 100% de calidad a partir de ese formato.

Porque por más que existen algoritmos de desentrelazado muy buenos que logran obtener una calidad muy buena de imagen, lo que hacen en resumen es sintetizar la información que falta, pero esa información en el video original nunca existió.

Detectan movimiento, aplican borrosidad, donde y como mezclar el punto del campo con los subyacentes, detectan las diferencias de pixel, etc. Y así un montón de procesos complejos todos para obtener un resultado sintético que no es igual a como se pretendió mostrar en un TV entrelazado de verdad.

Entonces parte de la imagen que se obtiene a partir de esos desentrelazadores es sintética y no existe en el video original.

¿Cómo conseguir un video no entrelazado de calidad y no sintético?

Lamentablemente la única solución es obteniendo una cámara (o si se puede modificando la tuya) que almacene el video en esa forma directamente (que trabaje con video progresivo y no entrelazado). Cualquier conversión de entrelazado a no entrelazado siempre será sintética o de menor calidad porque la idea se sustenta en el sistema de visión del ser humano y en el ahorro de ancho de banda. O saldrá con menos detalle visual / resolución, o saldrá con menos detalle de movimiento / temporal. Nunca podrán estar los dos juntos en un video entrelazado (aunque por supuesto que sí combinados pero no en la totalidad del cuadro).

Así que la calidad real de ese material es esa. No se le puede pedir más.

Mi experiencia

Llevo un par de años tratando de obtener la mejor calidad del mundo (aunque suene exagerado) desentrelazando mis videos y nunca lo logré y nunca lo voy a lograr (al menos con esos desentrelazadores no).

Hasta que me puse a investigar bien como era el asunto. Y me di cuenta de a poco que por más que intentara de una u otra manera lo único que obtenía eran imágenes aproximadas o sintéticas del video original pero nunca podía obtener la calidad original (ni mejor ni peor).

Entonces pensé cómo podía trabajar con eso. Y la respuesta más obvia es: Trabajalo así como está, entrelazado. Lógico, no?

Pero entonces como las pantallas de la PC son progresivas (no entrelazadas) no podía después verlo bien al video.

Y entonces dónde lo puedo ver? Pues en un TV que sea entrelazado.

Y cómo se ve en un TV entrelazado? Y claro, no se ve igual de definido que en la pantalla de mi PC, pero si esa es la calidad original! Es la máxima calidad que se puede conseguir de ese video, mejor no se va a poder ver!

Ahí me fui dando cuenta que mi material no era de tanta calidad como suponía. Y yo pensaba que en la PC lo estaba viendo con peor calidad pero la realidad es que lo estaba viendo incorrectamente.

O sea, el video entrelazado es así, no es mejor que eso que se ve en un TV. Entonces desentrelazarlo no mejoraría su calidad (aunque por momentos fui un tonto y lo creí).

La solución definitiva era simular el TV. Así que podría convertir el video al modo simulado directamente o preparar un filtro para el momento de ser reproducido y ya ahí podría reproducirlo en una pantalla progresiva, y verlo tal cual lo vería en un TV viejo con la calidad que tiene y sin poder pedirle más porque esa es su calidad.

Confusión entre calidad visual y calidad del origen

Resulta que por ahí se espera que el video entrelazado en la PC se vea perfecto, como te parece que se supone se ve en un TV entrelazado. La realidad es que en esos TV tampoco se ve tan perfecto pero por la técnica que utiliza nos hace la sensación de que sí.

He visto gente que quiere convertir sus videos con esos algoritmos complejos y nunca obtienen una calidad como esperan o sino les tarda demasiado y tampoco quieren eso. Yo les puedo decir que: PIDEN DEMASIADO!

El video original no tiene esa calidad que esperan. Aunque en la pantalla del monitor parezca un video de 640×480 en realidad la calidad de escenas en movimiento es la mitad de alto (240). La única calidad que siempre se conserva es a lo ancho. Pero a lo alto se pierde.  Y sólo en imágenes estáticas se obtiene la máxima calidad “que debería siempre tener”. Esa es la calidad que quizá muchos esperamos que conserve el video pero no siempre lo va a lograr porque es entrelazado. Al menos en las partes en movimiento no lo lograríamos.

Para obtener un mejor resultado yo les sugiero que empleen el método de simulación de tv entrelazado. Que voy a describir a continuación. Y dejen que su cerebro sintetize el resto (que lo hace mejor y más rápido que una PC).

Técnicas de simulación de TV entrelazado

Técnica simple

La primer técnica, y la única y más directa que se me ocurre, es como ya te mostré más arriba: Ayudar a la retención en la retina en los cambios rápidos. Y se simula haciendo que el campo anterior se muestre a menor intensidad. Más precisamente un 50% de intensidad. Pero duplicando los fotogramas, uno por cada campo simulado.

Por supuesto que esta técnica dobla la velocidad del video por duplicar los fotogramas, o sea, pone un campo y medio por cada fotograma, para obtener el efecto deseado.

Observa que aunque en “Cuadro simulado” se ven aún rayas, la sensación de movimiento es buena aunque sea una imagen estática. Estando en reproducción es aún mejor.

Esta técnica permite también recuperar el video original sin alteraciones en lo absoluto. Ya que sí o sí va a dibujar cada campo completo sin alteración. Lo único que hace sintético es adicionar el campo anterior con menos intensidad, pero el campo anterior ya se vio a intensidad completa en el fotograma anterior, así que no perdemos nada de información.

Esta técnica sería una de las más rápidas.

Ventajas:

  • Es suficientemente rápida
  • Permite recuperar el video original entrelazado
  • Sin pérdida de datos
  • Imagen suficientemente nítida y con fluidez de movimiento
  • Efecto similar a verlo en un TV entrelazado

Desventajas:

  • Se alcanzan a observar rayas o como si se viera a través de una rejilla
  • El nivel de brillo disminuye casi a la mitad (aunque esto puede ser ventajoso)

Que disminuya el nivel de brillo por ahí es útil. En realidad la imagen no pierde su brillo, el efecto se observa porque ahora está entre rayas y la luz que emite se separa a la mitad pero sigue emitiendo la misma intensidad porque no hemos tocado para nada el campo. La ventaja es que “cansa” menos a la vista, a su vez que mantiene alta nitidez.

Se podría también tomar como desventaja que en realidad no es ultra rápido quizá como se espera y que no creo que sea útil para aplicar en tiempo real salvo que tengas un procesador demasiado rápido (depende a qué nivel se implemente el filtro).

Yo por ahora no lo he programado de ninguna forma entonces estaba pensando en usar imágenes PNG volcadas al disco al mismo timepo que lanzaría otra rutina que se encargaría de ir armando el video del otro lado. O sea, esos procesos son lentos, pero otro (como un filtro para mplayer) puede ser mucho más rápido.

Por otro lado también requiere 60 fotos por segundo así que sería algo exigente para cualquier reproductor o PC. Pero si lo quisieras reproducir en un DVD hogareño puedes volverlo a entrelazar que no perderías nada de calidad.

Técnica panal

No he hecho la prueba aquí pero la idea es simular la pantalla del TV lo más parecido posible.

Como ya viste en una foto (sino igual te la muestro acá de nuevo) la pantalla de la TV entrelazada tiene tipo un panal de avejas. No son cuadritos como los pixeles de los LCD o Led.

Entonces la idea consistiría en acomodar cada pixel del fotograma de esa forma, igual que como lo acomoda el TV entrelazado en su pantalla.

Fijate que no están alineados sino que están uno al medio de otro. O sea, la mitad de uno cruza con el borde de otros dos y así (tipo ladrillos). No están formando una línea vertical directa aunque sí horizontal.

Para poder lograr el mismo efecto tendría que acomodar los pixeles de la imagen de tal forma que queden así. La única forma es haciendo más grandes los pixeles de la imagen (porque los del LCD están alineados tipo una rejilla y no uno a la mitad del otro). Haciéndolos más grandes (ocupando un grupo de 4 píxeles del LCD) se pueden acomodar de tal forma que se logren disponer de esa manera como si fuera la pantalla de un TV.

Ventajas:

  • Permite recuperar el video original entrelazado
  • Sin pérdida de datos
  • Imagen casi idéntica a como se vería en una TV
  • Sin el efecto rayado
  • La disminución del nivel del brillo sería menor

Desventajas:

  • Más lento que el anterior.
  • Se obtendrían fotogramas de más resolución que el video original ocupando más espacio y ancho de banda (al menos 4 veces más)

Como ves la técnica panal más bien pretende evitar el efecto rayado. Pero ocuparía casi 4 veces más que el video original (en lugar de sólo el doble).

Con esta técnica se obtendría mucho mejor fidelidad de imagen. La imagen sería lo más fiel posible a un TV entrelazado.

A su vez podemos valernos de dos opciones o formas de hacer el proceso:

  1. Doblando los fotogramas y simulando el fósforo para ayudar a la retina.
  2. O con la misma velocidad de fotogramas simplemente distribuir la información de los campos en panal.

La primera sería lo correcto, obtendríamos la simulación completa de un TV entrelazado, pero nuestro video ocuparía como 4 veces más.

La segunda nos permite disminuir a la mitad el requisito de espacio, o sea, ocuparía sólo 2 veces más en lugar de 4. Además de que la velocidad de reproducción de fotogramas por segundo sería menos exigente (25 o 30 por segundo). En lugar de la completa que se necesitan 60.

Con las PC de hoy día yo diría que conviene utilizar el más completo ya que si la PC es capaz de reproducir HD de seguro puede reproducir este video sin problemas. Sería un equivalente en exigencia de procesamiento a un HD sólo que en realidad lo veríamos como un SD jaja. Que mal pero es la realidad. Lamentablemente esa es la desventaja de reproducir entrelazado en un medio progresivo.

Un poco de historia del entrelazado

El entrelazado fue inventado para poder cumplir con el compromiso de calidad de imagen y velocidad de movimiento al enviar las señales de TV por el aire.

Si se quería tener calidad de imagen se iba a necesitar un ancho de banda que en esa época era difícil o costoso de obtener (para la fabricación de los tubos de los TV y demás equipos). Ya que para manejar una imagen completa de esa definición y velocidad requería un tubo CRT que pudiera reaccionar a esa velocidad (esos eran los de deflexión electrostática y eran muy costosos). Además de la circuitería y todo lo demás que también tendría que trabajar con esa exigencia. Exigencia que era costosa.

Entonces la solución que encontraron fue la de entrelazar la señal. Primero enviarían las líneas impares y luego las pares. Pero a la misma velocidad.

De esa forma podían tener las dos cosas: Calidad y velocidad, al mismo tiempo que ocupaba la mitad del ancho de banda en el aire.

Fue así como nació el modo de video entrelazado que fue el que se utilizó (y las señales de video analógicas de TV siguen siendo así) en televisión hasta hace ¿poco? o ¿mucho? En realidad es de hace mucho pero aún las señales analógicas de TV utilizan ese sistema.

El sistema está estandarizado en PAL y NTSC.

Todo eso sucedió como en los 40′

Y como a mediados de los 70′ fue que se empezó a popularizar la TV a color.

Puedes citar una fuente del NTSC aquí: http://ntsc-tv.com/index.html

Muy buena información al respecto pero en inglés.

Actualización 11-06-2012:

Éxito

He logrado desentrelazar con la técnica primera (la simple) y fue todo un éxito. El video se ve mejor de lo que esperaba (en realidad se ve como debería verse).

Las zonas quietas mantienen nitidez y las zonas con movimiento se ven fluidas.

Además de que al rayarlo con líneas más oscuras (un 50% del campo anterior) su nivel de brillo ha bajado casi a la mitad pero gracias a eso permite mantener una sensación de nitidez o calidad.

El script lo hice en perl y utiliza ImageMagick. Si si, muy raro, no? Jeje. Por ahora no me largué a programar un filtro en mplayer porque lo encontré bastante complicado. Tengo que dedicarle más tiempo y estudiar como funcionan los filtros en mplayer para poder hacerlo. Pero sería mi siguiente paso para tener algo más directo y no tener que recurrir a tantos archivos.

Pero por ahora este script hace el trabajo completamente y lo hace muy bien. No desperdicia nada porque almacena cada marco o fotograma en un formato compatible con el video original, o sea, en YUV. Así que los fotogramas al volcarse al disco ocupan lo que tienen que ocupar (y no demás), ya que mantiene el espacio de color.

Hasta que descubrí como hacer eso! Me llevó bastante tiempo e investigación.

Por ahora convierte de DV video a MJPEG. No pude convertir a dvvideo de nuevo porque se pierde mucha calidad. Al parecer DV video no está preparado para 60 FPS de marcos progresivos. Entonces aunque logra hacer el trabajo pierde calidad.

Si sabés cómo especificarle a ffmpeg que haga un DV video a 60 (en realidad 59,94) FPS sin perder calidad, te agradecería que me lo enseñaras😛

Acá te muestro el resultado (le quité el audio porque no viene al caso pero el script te coloca el audio y todo):

El script:

#!/usr/bin/perl

# Desentrelazador de video NTSC 720x480
# La técnica que empleé aquí es la de 50% desvanecimiento del 
# campo anterior. Conservando el tamaño pero duplicando la 
# velocidad.
# La idea es simular una pantalla de TV entrelazada.

# Más detalles en https://anyeos.wordpress.com/2012/06/11/mejor-desentrelazado-de-video-no-nos-enganemos

# Este trabajo lo entrego bajo licencia:
#
#            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#                    Version 2, December 2004
#
# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
#
# Everyone is permitted to copy and distribute verbatim or modified
# copies of this license document, and changing it is allowed as long
# as the name is changed.
#
#            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
#  0. You just DO WHAT THE FUCK YOU WANT TO. 

# Autor: Anyeos <anyeos@gmail.com>
# WP: https://anyeos.wordpress.com
# 
# Por supuesto, sería genial que me mencionaran ya que yo fui quien
# "inventó" esta técnica.
#                            -- Anyeos (2012)

my $video = $ARGV[0];
#my $aspect = $ARGV[2];

if (-z $video)
{
    print "Debes especificar el archivo de video a desentrelazar.\n";
    exit 1;
}

print "Archivo de video: $video\n";

my $tmpdir = "/tmp/".rand(999999);
print "Directorio de trabajo: $tmpdir\n";

`mkdir -p $tmpdir`;
`mkdir -p "$tmpdir/deinttv"`;

print "Generando marcos...";
`mplayer -ao pcm:file="$tmpdir/$video.wav" -vo pnm:pgmyuv:outdir=$tmpdir -vf format=YV12 -aspect 3:2 -fps 1000 "$video" > /dev/null 2>&1`;
print "OK\n";

my $dimpar;
my $dpar;
for ($a = 0; $a <= 479; $a=$a+2)
{
    $b=$a+1;
    $dpar .= "-draw 'line 0,$a 720,$a' ";
    $dimpar .= "-draw 'line 0,$b 720,$b' ";
}

# Especifica el color de la línea para desentrelazar los campos
my $color = "rgba(0,0,0, 0.5)";

my $fn = 0;

print "Desentrelazando los campos de los marcos...\n";
    opendir(DIR, $tmpdir);
    @marcos = sort(grep { /\.pgmyuv$/i && -f "$tmpdir/$_" } readdir(DIR));
    for ($m = 0; $m < @marcos; $m++)
    {
        my $marco = "$tmpdir/".$marcos[$m];

            $fn++;
            $sfn1 = sprintf("%08d", $fn);
            $fn++;
            $sfn2 = sprintf("%08d", $fn);
            # Adquiero el campo par
            `convert $marco -alpha on -strokewidth 1 -fill '$color' $dpar $tmpdir/deinttv/$sfn1.pgmyuv`;
            # Adquiero el campo impar
            `convert $marco -alpha on -strokewidth 1 -fill '$color' $dimpar $tmpdir/deinttv/$sfn2.pgmyuv && rm $marco`;

            if (($fn % 100) == 0)
            {
                print "fotograma $fn...\n";
            }
    }
    closedir(DIR);
print "$fn fotogramas en total\n";
print "Listo!\n";

print "Generando video final...";
`ffmpeg -r 60000/1001 -f image2 -i $tmpdir/deinttv/%08d.pgmyuv -i $tmpdir/$video.wav -acodec pcm_s16le -pix_fmt yuv420p -vcodec mjpeg -qscale 2 "deint-$video.avi" && rm -f -r $tmpdir || echo "Hubo un error al decodificar, los archivos temporales se dejaron intactos (deberás borrarlos manualmente)."`;
print "Listo! El video 'deint-$video.avi' fue generado.\n";

NOTA: Actualizaré este artículo cuando tenga un filtro hecho para mencoder.
NOTA2: No creo que llegue a hacer eso con mencoder, en su lugar prefiero desarrollar un software de edición de video con capacidad de editar entrelazado e incluirle estas técnicas.

, , , , , , , , , , , , ,

  1. #1 por fabian el noviembre 30, 2012 - 2:15 am

    bueno te digo que la solucion es simple, aumenta el bitrate mejoras frames y calidad de imagen luegos comprimes, con un buen programa para reduzcas peso de archivo…lo normal es 1400 subelo a 4000, y luegos comprimes, mejoras notablemente los pixeles y por ende desentrelazado

  2. #2 por fabian el noviembre 30, 2012 - 2:28 am

    me explico mejor cuando un video se pixcela demasiado, encontre que que la forma mas adecuada es aumentar el bitrate, de 1400 a 4000 dependiendo de la calidad del video para cuando lo convierta a dvd o otro formato la calidad mejore lo digo porque lo hago constantemente, antes de hacer la conversion se debe comprimir el avi, que da de un tamano grande, ademas el desentrelazado tambien mejora…al aumentar bitrate se aumenta la calidad.
    y la pixelacion si dejamos el video tal cual cuando lo convertimos a otro formato pierde calidad, los frames se entrecortan y pixela..excelente tutorial, saludos

  3. #3 por anyeos el noviembre 30, 2012 - 3:22 am

    Quise hacer un análisis de que en realidad estaba perdiendo el tiempo tratando de desentrelazar para editar material. Y lo publiqué para que otros tampoco perdieran su tiempo.

    Por ahora con handbrake consigo un buen desentrelazado de calidad general vs tamaño y velocidad para publicar en progresivo (youtube y eso).

    Pero lo que yo quería hacer era conseguir un video lo más fiel posible al original o sea, sin pérdida, sin comprimir, para poder editar.

    Cuando se trabaja con video directamente y para editar no conviene comprimir, porque se va a perder calidad y no se tienen fotogramas clave. Igual la cámara ya trabaja con un mínimo de compresión en su formato original que es DV pero es entrelazado sí o sí, eso no cambia.

    Entonces la única forma de no perder calidad en el material al realizar la edición era sin desentrelazar y trabajarlo así directamente.

    Lo otro que conseguí es que con xine puedo desentrelazar en vivo, o sea, mientras se reproduce el video en pantalla. Utiliza el plugin de tvtime que desentrelaza muy bien (mejor que mi propio TV LCD y muchos otros seguramente).

    El asunto es que el video final editado lo guardo en formato DVD (que de por sí es mpeg2 ya es comprimido o sea) y es entrelazado también. mpeg2 soporta progresivo según tengo entendido pero estaba pensado para trabajar con video entrelazado (porque viene de las normas antiguas de TV, de las clásicas analógicas).
    Así que tampoco tenía mucho sentido desentrelazar para luego convertir a video de DVD (mpeg2) si se puede guardar entrelazado directamente porque así estaba pensado originalmente.

    AVI es (Audio Video Interlaced) así que el contenedor AVI se supone que lleva en su interior un video entrelazado también.

    Yo te recomiendo utilizar el programa HandBrake que trabaja muy bien para comprimir y mantener calidad (si es lo que se quiere, sino también puede comprimir más pero de todos modos mantiene bastante buena calidad) y utilizar el contenedor mp4 o mkv (con sus encoders como h264) que son de alta calidad, en vez de un avi.

    Igual gracias por tu comentario. Aprecio tu colaboración.

    Saludos.

  4. #4 por DAVID BRUNNER el mayo 16, 2013 - 9:51 pm

    Hola, he puesto la pantalla a 1920×1080 entrelazado y no salen lineas en videos entrelazados, lo malo es que se ve todo muy pequeño, hay un programa que se llama winmodelines que es para poner la resolucion que quieras pero no consegui ponerlo en 1024×768 entrelazado, seria ideal poder hacerlo

    • #5 por anyeos el mayo 18, 2013 - 4:22 am

      Debe ser que tu monitor o TV no soporta el modo entrelazado en esa resolución.
      Igual a mi no me gusta mucho utilizar el desentrelazador que trae el TV monitor porque no suelen ser muy buenos. Has visto como se ve la TV normal? Como si fuera un video web mal comprimido. Bueno, ese tipo de efectos lo producen los desentrelazadores que usan estos TV. Hasta ahora no he visto un TV de estos modernos que desentrelace bien. Tal vez los de 120 Hz lo hagan mejor pero tengo mis dudas.

      Igual no se me había ocurrido probar un modo entrelazado para mi monitor. De todos modos creo que por la conexión a donde lo tengo (DVI) no soporta modo entrelazado o no viene implementado.

      Bueno, muchas gracias por tu aporte (y por visitar mi blog). Que tengas un buen día.

  5. #6 por DAVID BRUNNER el mayo 18, 2013 - 1:50 pm

    Ese modo lo probe con el monitor de tubo, es un modo que va a 30 fotogramas pero 60 campos, descubri este modo en windows xp dando desde el escritorio a propiedades, configuracion, opciones avanzadas, adaptador y lista de todos los modos
    Lo de desentrelazar como dices es imposible porque cada campo esta en un momento distinto, hay que verlo tal y como se grabo, tienen que cambiar a camaras de exploracion progresiva para verlo bien en progresivo

    • #7 por anyeos el mayo 19, 2013 - 5:27 am

      Aaah claro, si yo también vi esos modos en monitores de tubo para PC.
      Si se puede desentrelazar pero emulando el televisor (sería el mejor método).
      O sea, estando el monitor a 60 Hz, en un momento de tiempo muestras las lineas impares y luego en el otro las pares cada momento a 30 Hz, simulando el efecto del TV. O sea, que habría que también simular la permanencia del fósforo.
      Pero fijate tu que con el código ese que publiqué se logra ese efecto y queda bastante agradable a la vista. Pero los videos ocupan el doble porque ahora van a 60 en vez de ir a 30.

      Inclusive hay un desentrelazador bastante bueno (tvtime), que también lo trae xine, que hace un mejor trabajo que eso, prácticamente te produce un video progresivo como si hubiera sido filmado así. Pero también reproduce a 60 fps, sólo que está más bien pensado para ser usado en vivo y no para crear un video desentrelazado. Así que no funciona para desentrelazar un video y guardarlo desentrelazado.

      Después encontré una opción llamada decomb en HandBrake que permite desentrelazar sólo los fotogramas entrelazados, manteniendo la calidad en las imágenes estáticas que era uno de los problemas graves de desentrelazar.
      No se si lo notaste pero cuando desentrelazas por ejemplo para obtener velocidad, obtienes buena calidad de movimiento pero para imágenes casi quietas se ve con la mitad de calidad. A simple vista no se nota pero cuando quieres trabajar con calidad te das cuenta que le falta.
      Y sino desentrelazas por mezcla de los campos y más o menos se puede llegar a conservar la calidad de resolución pero se pierde la de velocidad.

      Bueno, y para terminarte la charla, la verdad que no me es fácil conseguir una cámara progresiva con una calidad comparable a la que ya tengo entrelazada. Porque la que tengo es la Panasonic NV-GS320 que es bastante buena, no es una cámara barata por eso hice todo lo posible para solucionar el tema por software.

      Porque si tuviera el dinero claro que prefiero comprar una mejor cámara y que sea progresiva.
      (No me malinterpretes yo se que tu hablaste del que quiera trabajar con video. Pero yo te quise contar mi caso particular y de por qué me puse a investigar sobre esto.)

      Bueno, gracias por tu comentario y saludos.

  6. #8 por DAVID BRUNNER el mayo 19, 2013 - 8:43 pm

    ¿Tu crees que sin fosforo no veriamos nada? porque siempre he leido que vemos la television por que la retina tiene unos milisegundos que continua viendo una imagen aunque ya no este
    He estado buscando el xine y no lo encuentro para windows, ¿Saves si existe para windows?

    • #9 por anyeos el mayo 20, 2013 - 5:57 am

      No quiero decir eso cuando hablo del fósforo. Porque la retención del fósforo es mínima. Pero sirve para mantener un poquito el campo anterior. Sirve para que no veamos los campos por separado. Pero estamos hablando de una retención de milisegundos (menos de 33 milisegundos aproximadamente).

      Entonces sin el fósforo la imagen nos parpadearía más.

      Sobre Xine:
      Support for the following platforms is in progress (help is always appreciated):

      MS Windows (partially working and committed to hg)
      HPUX (patches received)
      OpenBSD (patches received)
      OS/2 (external site)

      Aparentemente aún no hay soporte completo para Windows pero algo hay.

      Bueno pero puedes instalar también un Ubuntu y tener doble booteo en tu ordenador y así vas viendo esas cosas, digo, no sé.

      Y sino intenta compilarlo tu mismo: http://www.xine-project.org/faq#win32build

  7. #10 por DAVID BRUNNER el mayo 20, 2013 - 1:57 pm

    Conecto el tdt a la entrada de la capturadora y con el virtualdub he visto una opcion que se llama non-interlaced field rate, even first only, tiembla la imagen pero no se ven rayas, lo malo es que en España hay pal y el monitor tiene que ir a un multiplo de 50Hz para que encaje y mi monitor solo soporta hasta 75Hz a 1024×768, (hasta 70Khz de horizontal)
    Es un asco en España, tanta tdt y los 6 canales principales aun usan camaras de exploracion entrelazada y no ves una television de tubo en ninguna tienda, todas de exploracion progresiva

    • #11 por anyeos el mayo 20, 2013 - 6:20 pm

      Acá en Argentina también es PAL. Y bueno, también se sigue usando entrelazado para la TV, y también se sigue usando 4:3 de aspecto sin embargo venden los TV nuevos de 16:9 y la gente suele poner la imagen estirada. Más feo se ve eso, jaja, yo lo uso en 4:3 sin estirar pero igual desentrelaza feo el propio TV LCD.
      Y bue, hay que esperar a que la tecnología de las estaciones cambie.

      Por suerte todavía tenemos los de TRC los viejos.

  8. #12 por DAVID BRUNNER el mayo 20, 2013 - 9:47 pm

    Aqui a veces ponen 4/3 y otras 16/9 con una señal de conmutacion para que el tdt cambie solo pero prefiero 4/3 y la televison analogica con una buena antena, la tdt tiene compresion y salen cuadrados cuando hay movimiento, ademas si falta algo de señal deja de verse

  9. #13 por DAVID BRUNNER el mayo 22, 2013 - 8:23 pm

    He grabado el video que hicistes con el codigo y un programa me dice que va 29.970 fps en vez de 60 fps

    • #14 por anyeos el mayo 23, 2013 - 9:54 am

      Youtube no soporta 60 fps por eso no me dejó subirlo original, me lo recodificó (por eso también se ve peor).
      El original se ve realmente bien, si quieres lo cargo en algún servidor de archivos, lo que pasa que pesa bastante por eso no lo hice.

  10. #15 por DAVID BRUNNER el mayo 23, 2013 - 3:38 pm

    ¿Lo envias a mediafire que bastante rapido?

    • #16 por anyeos el mayo 30, 2013 - 11:37 am

      No tengo cuenta en esos sitios. Solamente tengo en depositfiles.
      Igual tengo que buscar el archivo no sé si todavía lo tengo o lo borré.
      En todo caso podría grabarte otro pero para cualquiera de los casos dame tiempo que aparte de que no sé si lo tengo, y que hacer otro lleva tiempo, también lleva tiempo subirlo porque es grande. Así que dame tiempo.

  11. #17 por DAVID BRUNNER el mayo 30, 2013 - 5:51 pm

  12. #18 por Rodrigo el julio 4, 2013 - 5:03 pm

    El VLC tiene la opcion, en avanzadas para reproducir con filtro de desentrelazar video, anda bárbaro

  13. #19 por Mario el enero 6, 2014 - 3:30 pm

    EXELENTE POST…. te felicito y me saco el sombrero. También llevo bastante tiempo en encontrar un desentrelazado apto para la edición y sin pérdida de calidad… NO EXISTE (Uno u otrooo!!)!!! me terminaste de sacar la duda.. Gracias y mi felicitación! no va haber soft que haga ese trabajo y deje el video tal como lo podemos ver en el material nativo… Edito en Edius, Avid Media C. Premiere.. etc. Saludos.

  14. #20 por DAVID BRUNNER el marzo 25, 2014 - 8:36 pm

    ¿Sabes si las televisiones y monitores tft, plasma y led admiten el barrido 15625/50 o 31250/100?

  15. #21 por DAVID BRUNNER el marzo 25, 2014 - 8:39 pm

    Olvide decir si las que lo admiten ¿lo muestran asi o lo desentrelazan?

    • #22 por anyeos el marzo 27, 2014 - 10:30 pm

      @DAVID BRUNNER, que yo sepa todos los TV digitales siempre admiten muchos tipos de entradas, pero justamente por ser digitales y lo que siempre hacen es un procesamiento digital de algún modo dejándolo visible en pantalla.
      Admiten entrelazado por tema de compatibilidad con los modos viejos. El punto es cómo desentrelazan. Que no me parece bueno su algoritmo de desentrelazado. Además, es por un tema de recursos: para desentrelazar a una calidad alta necesitas mucho poder de procesamiento, y los TV/Monitores digitales no tienen un procesador tan potente, sólo les alcanza para procesar la imagen que necesitan procesar en su máxima resolución y un poco más que eso.
      Es por eso también que no te permiten combinar muchos modos, por ejemplo si activas el modo de contraste dinámico se te van las otras opciones. Por ejemplo ese es un modo que requiere cierto procesamiento.

      Así que por más que admitan esa entrada (que tendrías que ver tu caso particular, o sea, el tv o monitor en particular que quieres probar, si lo admite o no, aunque en teoría sí) no vas a obtener una imagen tan nítida como si lo vieras en un TV/Monitor que trabaja directamente con su pantalla en ese modo.

      Sin ir muy lejos los mismos fabricantes recomiendan usar exactamente la tasa de refresco soportada por el monitor (en el caso de los monitores) y modos medio “raros” no te los recomiendan aunque en teoría deberían funcionar, pero podrían producir distorsiones o parpadeos en la imagen.

      Pues, vas a tener que probar nomás. La verdad no sé qué quieres hacer para qué necesitas saber con exactitud ese dato.

  16. #23 por DAVID BRUNNER el marzo 29, 2014 - 5:59 pm

    Lo pregunto porque quiero digitalizar grabaciones que tengo en vhs y beta y betacam y luego verlas en entrelazado con el maximo numero de lineas verticales posible, un televisor de tubo no da 700 lineas y betacam si porque tiene entradas y salidas Y, Y-B, Y-R por eso te pregunte lo de las pantallas de tft, led y plasma

  17. #24 por DAVID BRUNNER el marzo 29, 2014 - 6:09 pm

    Perdona es:
    1ª Y
    2ª B-Y
    3ª R-Y

  18. #25 por DAVID BRUNNER el mayo 7, 2014 - 10:37 am

    He conectado una salida de euroconector de un dvd al osciloscopio con una imagen con 720 lineas verticales y el osciloscopio da 6,25 Mhz luego no llega a 700 lineas, me confundi

  19. #26 por jonaand el enero 1, 2016 - 5:45 pm

    y para ripear dvds cual es la mejor opción en cuanto a calidad

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: