miércoles, 11 de enero de 2012

Compresión de vídeo

Con técnicas de compresión eficaces se puede reducir considerablemente el tamaño del fichero sin que ello afecte muy poco, o en absoluto, la calidad de la imagen. Sin embargo, la calidad del vídeo puede verse afectada si se reduce en exceso el tamaño del fichero aumentando el nivel de compresión de la técnica que se utilice.
Existen diferentes técnicas de compresión, tanto patentadas como estándar. Hoy en día, la mayoría de proveedores de vídeo en red utilizan técnicas de compresión estándar. Los estándares son importantes para asegurar la compatibilidad y la interoperabilidad.
Gracias al desarrollo de estándares, los usuarios finales tienen la opción de escoger entre diferentes proveedores, en lugar de optar a uno solo para su sistema de videovigilancia.
Hay tres estándares de compresión de vídeo distintos: Motion JPEG, MPEG-4 y H.264.
El H.264 es el estándar de compresión de vídeo más actual y eficaz.

Códec de vídeo

En el proceso de compresión se aplica un algoritmo al vídeo original para crear un archivo comprimido y ya listo para ser transmitido o guardado. Para reproducir el archivo comprimido, se aplica el algoritmo inverso y se crea un vídeo que incluye prácticamente el mismo contenido que el vídeo original.
El tiempo que se tarda en comprimir, enviar, descomprimir y mostrar un archivo es lo que se denomina latencia.
Cuanto más avanzado sea el algoritmo de compresión, mayor será la latencia.
El par de algoritmos que funcionan conjuntamente se denomina códec de vídeo (codificador/ decodificador). Los códecs de vídeo de estándares diferentes no suelen ser compatibles entre sí, es decir, el contenido de vídeo comprimido con un estándar no se puede descomprimir con otro estándar diferente.
Por ejemplo, un decodificador MPEG-4 no funcionará con un codificador H.264. Esto ocurre simplemente porque un algoritmo no puede descodificar correctamente los datos de salida del otro algoritmo.

Compresión de imagen vs. compresión de vídeo

Los diferentes estándares de compresión utilizan métodos distintos para reducir los datos y, en consecuencia, los resultados en cuanto a frecuencia de bits y latencia son diferentes.
Existen dos tipos de algoritmos de compresión: compresión de imágenes y compresión de vídeo.
La compresión de imagen utiliza la tecnología de codificación intrafotograma. Los datos se reducen a un fotograma de imagen con el fin de eliminar la información innecesaria que puede ser imperceptible para el ojo humano. Motion JPEG es un ejemplo de este tipo de estándar de compresión. En una secuencia Motion JPEG, las imágenes se codifican o comprimen como imágenes JPEG individuales.
Con el formato Motion JPEG, las tres imágenes de la secuencia se codifican y se envían como imágenes únicas y separadas (fotogramas I), sin que dependan unas de otras
imágenes de la secuencia
Los algoritmos de compresión de vídeo-4 como el MPEG-4 y el H.264 utilizan la predicción interfotograma para reducir los datos de vídeo entre las series de fotogramas.
Ésta consiste en técnicas como la codificación diferencial, en la que un fotograma se compara con un fotograma de referencia y sólo se codifican los píxeles que han cambiado con respecto al fotograma de referencia.
De esta forma, se reduce el número de valores de píxeles codificados y enviados. Cuando se visualiza una secuencia codificada de este modo, las imágenes aparecen como en la secuencia de vídeo original.
Con la codificación diferencial sólo la primera imagen (fotograma I) se codifica en su totalidad. En las dos imágenes siguientes (fotogramas P) existen referencias a la primera imagen en lo que se refiere a elementos estáticos, como la casa. Sólo se codifican las partes en movimiento (el hombre que corre) mediante vectores de movimiento, reduciendo así la cantidad de información que se envía y almacena.
partes en movimiento
Para reducir aún más los datos, se pueden aplicar otras técnicas como la compensación de movimiento basada en bloques. La compensación de movimiento basada en bloques tiene en cuenta que gran parte de un fotograma nuevo está ya incluido en el fotograma anterior, aunque quizás en un lugar diferente del mismo.
Esta técnica divide un fotograma en una serie de macrobloques (bloques de píxeles). Se puede componer o “predecir” un nuevo fotograma bloque a bloque, buscando un bloque que coincida en un fotograma de referencia.
Si se encuentra una coincidencia, el codificador codifica la posición en la que se debe encontrar el bloque coincidente en el fotograma de referencia. La codificación del vector de movimiento, como se denomina, precisa de menos bits que si hubiera de codificarse el contenido real de un bloque.
Ilustración que muestra la compensación de movimiento basada en bloques.
compensación de movimiento
Con la predicción interfotograma, cada fotograma de una secuencia de imágenes se clasifica como un tipo de fotograma concreto, como un fotograma I, P o B.
Un fotograma I, o intrafotograma, es una imagen autónoma que se puede codificar de forma independiente sin hacer referencia a otras imágenes. La primera imagen de una secuencia de vídeo es siempre un fotograma I. Los fotogramas I sirven como puntos de inicio en nuevas visualizaciones o como puntos de resincronización si la transmisión de bits resulta dañada. Los fotogramas I se pueden utilizar para implementar funciones de avance o retroceso rápido o de acceso aleatorio. Un codificador insertará automáticamente fotogramas I a intervalos regulares o a petición de nuevos clientes que puedan incorporarse a la visualización de una transmisión. La desventaja de este tipo de fotogramas es que consumen muchos más bits, pero por otro lado no generan demasiados defectos provocados por los datos que faltan.
Un fotograma P (de interfotograma Predictivo), hace referencia a partes de fotogramas I o P anteriores para codificar el fotograma. Los fotogramas P suelen requerir menos bits que los fotogramas I, pero con la desventaja de ser muy sensibles a la transmisión de errores, debido a la compleja dependencia con fotogramas P o I anteriores.
Un fotograma B, o interfotograma Bipredictivo, es un fotograma que hace referencia tanto a fotogramas anteriores como posteriores. El uso de fotogramas B aumenta la latencia.
Secuencia típica con fotogramas I, B y P. Un fotograma P sólo puede hacer referencia a fotogramas I o P anteriores, mientras que un fotograma B puede hacerlo a fotogramas I o P tanto anteriores como posteriores.
Cuando un decodificador de vídeo restaura un vídeo descodificando la transmisión de bits fotograma a fotograma, la descodificación debe comenzar siempre por un fotograma I. Los fotogramas P y B, en caso de usarse, deben descodificarse junto a los fotogramas de referencia.
El H.264, por ejemplo, admite técnicas avanzadas como los esquemas de predicción para codificar fotogramas I, la compensación de movimiento mejorada con una precisión inferior a un píxel y el filtro de eliminación de bloques en bucle para suavizar los bordes de los bloques (defectos).

Formatos de compresión

Motion JPEG
Motion JPEG o M-JPEG es una secuencia de vídeo digital compuesta por una serie de imágenes JPEG individuales. (JPEG son las siglas de Joint Photographic Experts Group - Grupo de Expertos Fotográficos Unidos) Cuando se visualizan 16 o más imágenes por segundo, el ojo humano lo percibe como un vídeo en movimiento. Un vídeo en completo movimiento se percibe a 30 (NTSC) ó 25 (PAL) imágenes por segundo.
Una de las ventajas de Motion JPEG es que cada imagen de una secuencia de vídeo puede conservar la misma calidad garantizada que se determina mediante el nivel de compresión elegido para la cámara de red o codificador de vídeo. Cuanto más alto es el nivel de compresión, menor es el tamaño del archivo y la calidad de imagen. En algunas situaciones, como cuando hay poca luz o la escena es compleja, el tamaño del archivo puede ser bastante grande y, por lo tanto, usar más ancho de banda y espacio de almacenamiento.
Al no haber dependencia alguna entre los fotogramas de Motion JPEG, un vídeo Motion JPEG es resistente, lo que significa que si falla un fotograma durante la transmisión, el resto del vídeo no se verá afectado.
Motion JPEG es un estándar que no requiere licencia. Tiene una amplia compatibilidad y su uso es muy habitual en aplicaciones donde se requieren fotogramas individuales en una secuencia de vídeo—por ejemplo, para el análisis—y donde se utiliza una frecuencia de imagen de 5 fotogramas por segundo o inferior.
Sin embargo, el principal inconveniente de Motion JPEG es que no utiliza ninguna técnica de compresión de vídeo para reducir datos, ya que consiste en una serie de imágenes fijas y completas. El resultado es una frecuencia de bits relativamente alta o una relación de compresión baja para la calidad proporcionada, en comparación con estándares de compresión de vídeo como MPEG-4 y H.264.

MPEG-4

Cuando se menciona MPEG-4 en las aplicaciones de videovigilancia, normalmente nos referimos a MPEG-4 Parte 2, también conocido como MPEG-4 Visual. Como todos los estándares MPEG (Moving Picture Experts Group), requiere una licencia, es decir, los usuarios deben pagar una tasa de licencia por cada estación de supervisión. MPEG-4 es compatible con aplicaciones de ancho de banda reducido y aplicaciones que requieren imágenes de alta calidad, sin limitaciones de frecuencia de imagen y con un ancho de banda virtualmente ilimitado.

H.264

El H.264, también conocido como MPEG-4 Parte 10/AVC para Codificación de Vídeo Avanzada, es el estándar MPEG más actual para la codificación de vídeo. Se espera que el H.264 se convierta en la alternativa de estándar en los próximos años. Ello se debe a que, sin comprometer la calidad de la imagen, un codificador H.264 puede reducir el tamaño de un archivo de vídeo digital en más de un 80% si se compara con el formato Motion JPEG, y hasta un 50% más en comparación con el estándar MPEG-4. Esto significa que se requiere menos ancho de banda y espacio de almacenamiento para los archivos de vídeo. O, visto de otra manera, se puede lograr mayor calidad de imagen de vídeo para una frecuencia de bits determinada.
En el sector de la videovigilancia, H.264 encontrará su mayor utilidad en aplicaciones donde se necesiten velocidades y resoluciones altas, como en la vigilancia de autopistas, aeropuertos y casinos, lugares donde por regla general se usa una velocidad de 30/25 (NTSC/PAL) imágenes por segundo. Es aquí donde las ventajas económicas de un ancho de banda y un almacenamiento reducidos se harán sentir de forma más clara.
Se espera que H.264 acelere también la adopción de cámaras megapíxel, ya que con esta eficiente tecnología de compresión se pueden reducir los archivos de gran tamaño y las frecuencias de bits sin que la calidad de la imagen se vea afectada. En cualquier caso, tiene sus exigencias: aunque H.264 permite ahorrar en costes de ancho de banda y almacenamiento, también necesita cámaras de red y estaciones de control de mejor rendimiento.
Este perfil es el ideal para cámaras de red y codificadores de vídeo, ya que la latencia se reduce gracias a la ausencia de fotogramas B. La latencia baja es esencial en aplicaciones de videovigilancia donde se realice supervisión en directo, sobre todo si se emplean cámaras PTZ o domos PTZ.

No hay comentarios: