jueves, 22 de marzo de 2012

Compresión de Video con el Estándar MPEG: Conceptos básicos

Compresión de Video con el Estándar MPEG: Conceptos Básicos.
01-Julio-2002 
Alejandro Navarrete

La digitalización de las señales de televisión ha facilitado procesarlas con computadoras digitales y transmitirlas de forma efectiva y eficiente por medios cableados e inalámbricos. Sin embargo, el costo inmediato de la digitalización de señales es un importante incremento en el ancho de banda requerido para representarlas. La alternativa más socorrida para resolver este problema es el uso de técnicas de compresión digital de señales. Existen técnicas de compresión para comprimir señales de tipos distintos como audio, imágenes fijas, imágenes en movimiento y datos.

Una analogía útil para comprender el principio de la compresión digital de señales es el proceso mediante el cual se obtiene jugo de frutas concentrado. Como sabemos, el jugo de frutas concentrado pesa menos y ocupa menos espacio que el jugo original o que el reconstituido (generalmente la séptima parte), por lo que es más fácil almacenarlo y transportarlo. Cuando deseamos beber el jugo de frutas, debemos antes "reconstituirlo" agregándole varias partes de agua por cada parte de jugo concentrado. Sabemos también que el jugo reconstituido nunca sabrá igual que el jugo fresco original, pero estamos dispuestos, en general, a aceptar cierta degradación en la calidad del jugo como pago por haberlo podido almacenar y transportar más fácilmente. Es claro que no importa si el jugo es de naranja, de mandarina o de manzana, todos los jugos, por el simple hecho de ser jugos, contienen un alto porcentaje de agua. Podemos entonces quitarles eso que es común a todos los jugos y sólo quedarnos con la esencia. Cuando deseamos consumir el jugo le agregamos al concentrado aquello que le habíamos restado anteriormente.

Este mismo principio se aplica a la compresión digital de señales. Esto es, primero distinguimos entre la estructura de la señal y su "esencia"; luego tomamos la esencia y eliminamos la estructura, y finalmente almacenamos y transportamos esta versión reducida de la señal original. Para recuperar la señal original (o una versión aproximada de ésta) debemos antes descomprimir la señal comprimida, agregándole, de alguna forma, aquello que le restamos al comprimirla.

El estándar MPEG utiliza varias técnicas de compresión de señales para procurar que la versión final sea lo más compacta posible, manteniendo un cierto grado de calidad de la señal. En general, las técnicas de compresión pueden clasificarse en dos grandes categorías: compresión sin pérdidas y compresión con pérdidas. Como su nombre lo sugiere, las técnicas de compresión sin pérdidas permiten recuperar una versión idéntica a la señal original, pero usualmente no permiten altas tasas de compresión. Estas técnicas se utilizan con frecuencia en la compresión de datos de computadora (como archivos ejecutables, por ejemplo). Por su parte, la compresión con pérdidas produce cierta degradación tolerable a la señal, pero a cambio permite tasas de compresión mucho más altas. El estándar MPEG utiliza una combinación de técnicas de ambas categorías.

La compresión digital de señales se basa en la identificación y en la reducción de la redundancia que existe en la señal, de manera que sólo quede la parte esencial de la misma, que la distingue de otras señales del mismo tipo. Para poder restarle redundancia a las señales primero debemos presentarlas en un formato más apropiado para la compresión. La tasa de compresión final dependerá, en buena medida, de la efectividad de este primer proceso.

Una señal de video puede entenderse como la sucesión continua de cuadros de imagen fijos. En el estándar de televisiónNTSC que utilizamos en México, se presentan 30 cuadros de imagen cada segundo, para dar la sensación de movimiento. Al digitalizar una señal de video se toman muestras de cada cuadro de imagen en forma horizontal y vertical, formando una matriz de "elementos de imagen" o pixeles (de las palabras en inglés "picture element"). Es esta representación digital de la señal de video la que ocupa un ancho de banda muy superior al de la señal original. Para resolver este problema, una primera aproximación podría consistir en la compresión de cada cuadro de imagen en forma independiente, explotando la redundancia (espacial) que existe en cada uno, como si se tratara de una secuencia de múltiples fotografías. Sin embargo, este mecanismo no explota la redundancia temporal que existe entre cuadros de imagen consecutivos. La Figura 1 muestra cómo existe redundancia en cuadros de imagen consecutivos.



Figura 1. Secuencia de cuadros de imagen que muestran la redundancia temporal. Note cómo gran parte de la información del primer cuadro se encuentra presente en cuadros subsecuentes.


Con el ánimo de obtener la mayor tasa de compresión posible, es necesario explotar tanto la redundancia espacial que existe en cada cuadro de imagen, como la redundancia temporal que existe en cuadros sucesivos. Un concepto importante relacionado con el estándar MPEG se conoce como "grupo de imágenes" (GOP, por sus siglas en inglés). Un GOP está formado por una secuencia de cuadros de imagen consecutivos con una longitud que oscila entre 10 y 30 imágenes. Los cuadros de imagen dentro de un GOP pueden ser de uno de tres tipos distintos: intra-cuadros (o cuadros I), cuadrospredichos (o cuadros P) y cuadros bidireccionales (o cuadros B). Un intra-cuadro es un cuadro de imagen que se codifica en forma independiente de otros cuadros, como si se tratara de una fotografía; esto es, sólo explota la redundancia presente en ese cuadro. Los cuadros predichos, como su nombre lo sugiere, se estiman o ?predicen" con base en un cuadro I o en un cuadro P previo, y los cuadros bidireccionales se estiman con base en cuadros I y P (o sólo P) que se hallen antes y después del cuadro a ser estimado. La Figura 2 muestra un GOP con la disposición de cuadros I, P y B.

Como se aprecia en la Figura 2, un GOP siempre inicia con un cuadro I. Con base en este primer cuadro se hace una estimación de un primer cuadro P, que se encuentra a varios cuadros de distancia hacia delante del cuadro I. Con base en el cuadro I y en el P estimado, se estiman los cuadros bidireccionales (B), que se hallan entre el cuadro I y el P. Después, con el primer cuadro P se estima el siguiente cuadro P y con estos dos se estiman los valores de los cuadros B intermedios. Este proceso continúa hasta que se llega a final del GOP.

Las herramientas que se utilizan para la estimación de cuadros P son distintas a las utilizadas para codificar los intra-cuadros. En este caso se desea explotar la redundancia temporal que existe entre un cuadro y otro posterior. Como es de esperarse, gran parte de la información de un cuadro de imagen estará presente en un cuadro posterior, siempre que ambos pertenezcan a una misma escena. De este modo, no es necesario codificar (ni transmitir) toda la información de un cuadro posterior, sino sólo aquélla sección del cuadro que haya cambiado respecto del cuadro de referencia. En la Figura 1 se mostraron cuadros de imagen de una misma escena. Como puede notarse, el segundo cuadro contiene gran parte de la información del primero, sólo que ésta se ubica en una posición distinta, debido a que la cámara se ha desplazado hacia la derecha. Este mismo efecto puede apreciarse al comparar el segundo y el tercer cuadros.



Figura 2. Disposición de cuadros de imagen en un "grupo de imágenes" o GOP.


El codificador MPEG definirá una región de búsqueda dentro del segundo cuadro en el que encontrará la mejor coincidencia de una sección del cuadro previo de referencia conocida como "macrobloque". El tamaño de un macrobloque es de 16 pixeles por lado y las regiones de búsqueda miden, por lo general, 60 pixeles de alto por 120 de ancho. La búsqueda se hará entonces 30 pixeles arriba y abajo del macrobloque de referencia y 60 pixeles a la derecha y a la izquierda de éste. La Figura 3 muestra esquemáticamente los conceptos de macrobloque y de región de búsqueda definidos en el estándar MPEG.

Una vez que el codificador MPEG identifica el macrobloque de la región de búsqueda que mejor concuerda con el macrobloque de referencia, define su ubicación con base en un "vector de movimiento". Esto es, un vector de movimiento es un vector que indica a cuántos pixeles se desplazó el macrobloque, tanto en forma horizontal como en forma vertical, como se muestra en la Figura 3. Como podría esperarse, es muy probable que ningún macrobloque de la región de búsqueda sea exactamente igual al macrobloque de referencia (aunque se trate de la misma escena, podría haber cambios de iluminación, de enfoque o de perspectiva). Por esta razón, el estándar MPEG define, en adición a un vector de movimiento, los "residuos" o diferencia que existe entre el macrobloque original y el seleccionado. Al final de cada cuadro de imagen MPEG codificará tanto los vectores de movimiento como los residuos. Esta información codificada es la que es almacenada y, en su caso, transmitida. Para reconstruir el cuadro predicho, el decodificador MPEG lo único que tiene que hacer es, para cada macrobloque de un cuadro, tomar el macrobloque de referencia, desplazarlo a la posición que le indique el vector de movimiento y sumarle el residuo correspondiente. A la técnica que se basa en la obtención de vectores de movimiento para reducir los efectos de movimiento se le conoce como "compensación de movimiento". La codificación de vectores de movimiento y de residuos se basa en métodos de "codificación de entropía" que hacen uso de las propiedades estadísticas de los datos a codificar.



Figura 3. Representación esquemática de macrobloques y región de búsqueda del estándar MPEG. El vector de movimiento indica el desplazamiento relativo de un marcobloque de referencia en el cuadro de imagen que se desea predecir.


Si pensamos en que un codificador MPEG deberá calcular los vectores de movimiento para cada macrobloque de un cuadro predicho y que este proceso se basa en la búsqueda exhaustiva de un mejor macrobloque dentro de una región de búsqueda, no es difícil suponer que el trabajo de un codificador MPEG es muchísimo mayor que el de un decodificador. Esto hace que el estándar MPEG sea "asimétrico". Esta asimetría se refleja claramente en la diferencia en costo de un compresor MPEG (aproximadamente $700,000.00 dólares americanos) en comparación con un decodificador MPEG (entre $600.00 y 2,000.00 dólares).

Los cuadros bidireccionales (cuadros B) se estiman con base en la interpolación de un cuadro I y uno P o de dos cuadros P, según sea el caso. Por ello, los cuadros B no pueden propagar errores de codificación, ya que éstos nunca se utilizan como referencia para estimar otros cuadros.

Toda vez que el estándar MPEG es la base de los procesos de codificación de video en la televisión digital (tanto en definición estándar como en alta definición), los conceptos relacionados con él se hallan presentes en la literatura de todos los servicios relacionados con transmisión de video digital, incluyendo el video por demanda (VOD), la televisión interactiva (iTV), la distribución de señales de televisión vía satélite (ya sea en formato DVB o Digicypher), la videoconferencia y la televisión digital (DTV).

Para la codificación de intra-cuadros se utiliza una técnica de compresión con pérdidas basada en la "transformada cosenoidal discreta? (DCT, por sus siglas en inglés) seguida de técnicas de compresión sin pérdidas que utilizan herramientas como codificación de entropía (códigos de Huffman) y codificación de longitud de secuencias. Una descripción básica de estas herramientas puede hallarse en el libro de Peter Symes, "Video Compressión", de la editorial McGraw-Hill.

El tamaño de la región de búsqueda se definió con base en el número de cuadros por segundo que aparecen en la pantalla y en el hecho de que la cámara se mueve, con mucha más frecuencia, en forma horizontal que vertical.

El criterio utilizado para seleccionar el mejor macrobloque es el minimizar el error cuadrático medio entre el macrobloque original y el seleccionado.

En estricto rigor, el estándar MPEG también realiza la intracodificación de cada cuadro P (antes de predecirlo), compara el tamaño de ambos resultados, intra-codificado y predicho, y envía el que sea más pequeño.