Beruflich Dokumente
Kultur Dokumente
H.320
El estndar esta dispuesto en una estructura jerrquica de cuatro capas: Imagen Grupo de bloques (GOB) Macrobloques (MB) Bloques Para entender cada una de estas capas empezaremos dando una breve introduccin al codec en sus aspectos ms esenciales.
Diagrama de bloques.
Codificador de Video
CONTROL DE CODIFICACION
Seal de Video
Codificador De Fuente
Buffer de Transmisin
Codificador de Transmisin
bitstream
Decodificador de Video
bitstream DecoSeal de dificador Receptor Buffer de Recepcin Decodificador multiplexor Decodificador de Fuente
Video
Entrada/Salida de video H.261 soporta dos resoluciones CIF (Common Interchange Format, 352x288 pixels) y QCIF (Quarter Common Interchange Format, 176x144 pixels).
Entrada/Salida digital El codificador provee un bitstream codificado cumpliendo con las recomendaciones de ITU-T H.261 con cdigo de correccin de errores BCH opcional. Frecuencia de muestreo Las imgenes son muestreadas a una frecuencia mltiplo entero de la frecuencia de la lnea de video. Tanto el reloj de muestreo como el de la red son asncronos. Algoritmo de codificacin de la fuente El algoritmo de codificacin es un hbrido entre prediccin inter-imagen, codificacin mediante transformada y compensacin de movimiento para aprovechar la redundancia temporal. El decodificador posee la capacidad opcional de implementar la compensacin de movimiento. Bit Rate La recomendacin esta orientada a obtener video a una tasa entre 4 Kbit/s y 2Mbit/s.
Diferencia de color pico = entre 16 y 254 Estos son los valores nominales y el algoritmo de codificacin funciona con valores de entrada entre 1 y 254. Se especifican dos formatos de escaneo de imagen CIF y QCIF anteriormente mencionados. H.261 usa el espacio YCBCR en lugar de RGB para representar los datos para aprovechar los estudios sobre el Sistema Visual Humano que muestra que el ojo humano es ms sensible a los cambios en luminancia y menos sensible a los cambios en la cromancia. Ms adelante veremos como se aprovecha este hecho al codificar ms grueso la informacin de croma. 1.2 Algoritmo de codificacin de la fuente de video El diagrama de bloques del codificador de la fuente de video se muestra a continuacin.
p CC t
qz
V id e o in
Q- 1
T o v ide o m u l ti p l e x c o de r
T -1
f T 150 24 41-9 0/ d0 3
T Q P F CC p t qz q v f
T r a n s f o rm Q u a n ti z e r P i c tu r e m e m o r y w i th m o ti o n c o m p e n s a te d v a r i a b l e d e l a y L o o p f il t e r C o d in g c o n t ro l F l a g f o r IN T R A /I N T E R F l a g f o r tr a n s m i t te d o r n o t Q u a n t i z e r in d ic a t i o n Q u a n t i z i n g i n d e x f o r t ra n s f o rm c o e f f i c ie n t s M o ti o n v e c t o r S w i t c h in g o n / o f f o f t h e l o o p f i lt e r
El error de prediccin (modo INTER) o la imagen de entrada (modo INTRA) es subdividido en bloques de 8x8 pixels los cuales son segmentados en bloques transmitidos y no transmitidos. Adems, cuatro bloques de luminancia y dos correspondientes a la diferencia de color (CBCR) se combinan para formar un macrobloque. Un macrobloque puede ser representado de varias maneras cuando nos referimos al espacio YCBCR. La figura de abajo muestra tres formatos de video; 4:4:4, 4:2:2, 4:2:0. Cuando
hablamos de 4:4:4 es video YCBCR usando todo el ancho de banda, se usan 4 bloques Y, 4 bloques CB y 4 bloques CR esta forma de representar los datos contiene tanta informacin como si hubisemos usado el espacio de color RGB, 4:2:2 contiene la mitad de informacin de croma que 4:4:4 y 4:2:0 contiene un cuarto de la informacin de croma.
1.2.1 Prediccin Se usa una prediccin inter-picture, que puede ser potenciada con compensacin de movimiento y un filtro (spatial filter). De esta manera explotamos la redundancia temporal para obtener una mejor eficiencia en la compresin. Una primera aproximacin a la compresin H.261 se podra resumir de la siguiente manera: Secuencia decodificada
Los cuadros recordemos que pueden ser de dos tipos de formato CIF o QCIF con un submuestreo 4:2:0. Dos tipos de cuadros: cuadros Intra (I) y cuadros Inter (P) Los cuadros I son bsicamente JPEG Los cuadros P usan pseudo-diferencias de un cuadro anterior (pude ser tanto un I como un P), entonces los cuadros dependen uno del otro. Los cuadros I nos dan un punto de acceso
Donde la imagen previa se llama reference y l imagen a codificar se llama target. En realidad de diferencia es lo que se codifica.
vectores de movimiento tienen valores enteros que no exceden +/- 15. El vector es usado para los cuatro bloques de luminancia en el macrobloque. El vector de movimiento para ambos bloques de diferencia de color es derivado dividiendo a la mitad los valores de la componente del vector del macrobloque y truncando la magnitud hacia cero para obtener componentes enteras. Un valor positivo de la componente horizontal o vertical del vector de movimiento significa que la prediccin es formada por pixels en la imagen previa los cuales estn espacialmente a la derecha o debajo de los pixels que estn siendo predichos. Los vectores de movimiento estn restringidos de forma que todos los pixels a los cuales hace referencia estn dentro del rea de la imagen codificada. La estimacin de la compensacin de movimiento asume que la imagen actual se puede modelar como una translacin de una imagen previa en el tiempo. El estndar H.261 divide cada imagen en macrobloques de 16 x 16 pixels, cada uno de ellos se predice de un cuadro anterior estimando la cantidad de movimiento durante el tiempo transcurrido entre los cuadros. Buscamos obtener el vector de movimiento minimizando una funcin de costo (dentro de una regin de bsqueda) midiendo el mismatch entre el cuadro de referencia y el actual. Este mtodo de dividir en bloques se usa particularmente en la compresin de video en general por su simple implementacin en hardware.
Un forma de obtener el vector de movimiento es mediante la bsqueda exhaustiva que evala el error medio absoluto (MAE) para cada pxel en la regin de bsqueda. Este mtodo tiene un costo computacional elevado lo cual en aplicaciones de tiempo real es crtico, por otro lado obtenemos verdaderamente la mejor estimacin del vector de movimiento. Otros algoritmos de bsqueda se han implementado para reducir los puntos de bsqueda.
Por ejemplo, el algoritmo de bsqueda en tres pasos, primero evala el MAE en el centro y en ocho lugares diferentes en la imagen de referencia, el punto que tiene el menor MAE es el
centro para una nueva bsqueda en una regin que es la mitad de la anterior y as hasta completar tres pasos.
Una comparacin muestra los rendimientos de ambos mtodos para una regin de bsqueda de 16x16, en una secuencia a 30 cuadros por segundo y una resolucin de 720x480; Bsqueda exhaustiva 29.89 GOPS (Giga Operaciones Por Segundo) Bsqueda en 3 pasos 1.02 GOPS Adems de estos dos mtodos existen muchos ms que tratan de minimizar la complejidad computacional, nombrarlos a todos exigira ahondar sobre un tema que no es el objetivo de esta monografa. Lo que si es importante es que la eleccin de cmo llevar a cabo la compensacin de movimiento es a libre eleccin y depender de cada caso particular. Aunque el contraste entre la bsqueda exhaustiva y la en tres pasos sea evidente no quiere decir que no se pueda usar la exhaustiva, por ejemplo, en el codec que llego a mis manos se usa la misma con alguna condicin de corte en el algoritmo para estimar el vector de movimiento.
1.2.4 Transformada
Los bloques transmitidos son inicialmente procesados por la transformada bidimensional separable discreta del coseno de tamao 8 por 8. La salida de la transformada inversa varia entre 256 a 256 despus de cortar ( clipping ) para ser representada con 9 bits. La funcin que da la transformada inversa es:
donde x y son las coordenadas espaciales, u v son las coordenadas en el dominio de la transformada. C (u ) 1 / 2 para u = 0; y vale 1 en otro caso.
La multiplexacin de video se arregla en una estructura jerrquica con cuatro capas. De arriba abajo las capas son: - Imagen - Grupo de bloques ( GOB ) - Macrobloque ( MB ) - Bloque
Cada imagen es dividida en grupos de bloques (GOBs). Un GOB comprende un doceavo de rea de una imagen CIF o un tercio de una imagen QCIF.
1 3 5 7 9 11 CIF 2 4 6 8 10 12 1 3 5 QCIF
Cada parte del GOB esta relacionada con una componente de luminancia Y de 176 pixels por 48 lneas y sus espacialmente correspondientes componentes de croma CB y CR de 88 pixels por 24 lneas cada una. Los datos para cada grupo de bloques consiste en un encabezado seguido de los datos del macrobloque segn el siguiente esquema.
GBSC GN GQUANT GEI GSPARE GEI MB data
Donde los parmetros entre lneas quebradas son variables. Cada encabezado es transmitido una vez entre dos PSCs aun si no hay datos presentes referentes al macrobloque. El bloque GBSC (Group of Blocks start code) es una palabra de 16 bits fija; GN (Group Number) indica el nmero de grupo de bloques; GQUANT indica el cuantizador a ser usado. Por ltimo los bloques de datos GEI y GSPARE son de largo variable y estn reservados para aplicaciones futuras para mantener la compatibilidad hacia atrs.
Los bloques de datos MQUANT, MVD y CBP estn presentes siempre que MTYPE lo indique (ver tabla a continuacin).
Prediction Intra Intra Inter Inter Inter Inter Inter Inter Inter Inter 1 MC MC MC MC + FIL MC + FIL MC + FIL x x x x x x x x x x x x x x MQUANT MVD CBP TCOEFF x x x x x x x x 0001 0000 001 1 0000 1 0000 0000 0000 001 01 0000 0000 0001 0000 1 01 VLC
01
NOTES x means that the item is present in the macroblock. 2 It is possible to apply the filter in a non-motion compensated macroblock by declaring it as MC FIL but with a zero vector.
El encabezado MBA (Macroblock address) es el nmero del macrobloque (1..33). Para macrobloques subsiguientes se manda la diferencia entre las direcciones absolutas del macrobloque a mandar y el ltimo transmitido. Para codificar dichas direcciones se usa un cdigo de longitud variable que esta dado por la norma, vemos que para los nmeros ms bajos se usan los cdigos ms cortos. Esto evidencia que estadsticamente se estarn mandando macrobloques contiguos, dando diferencias menores y por lo tanto se estarn transmitiendo pocos bits. La tabla del cdigo variable se ve a continuacin; observamos que es un cdigo de Huffman, se puede observar que es un cdigo instantneo, lo cual es vital para aplicaciones en tiempo real y evitar retardos en la decodificacin. En general los distintos bloques de datos se van a codificar con cdigos similares a este.
MBA 11 12 13 14 15 16 17 18 19 10 11 12 13 14 15 16 1 011 010 0011 0010 0001 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 Code MBA 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 MBA stuffing Start code 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 Code 0101 0101 0101 0100 0100 0100 0100 0100 0100 0011 0011 0011 0011 0011 0011 0011 0011 0001 0000 10 01 00 11 10 011 010 001 000 111 110 101 100 011 010 001 000 111 0000
11
0001
Los datos para un bloque consiste en una palabra cdigo para los coeficientes de la transformada DCT y un marcador de fin de bloque.
TCOEFF
EOB
La informacin sobre los coeficientes de la transformada siempre estn presentes para los seis bloques en un macrobloque cuando MTYPE indica INTRA. En otros casos MTYPE y CBP sealan cuales bloques llevan dicha informacin. Los coeficientes cuantizados se transmiten segn la figura (en zig-zag anlogo a JPEG). 1 3 4 10 11 21 22 36 2 5 9 12 20 23 35 37 6 8 13 19 24 34 38 49 7 14 18 25 33 39 48 50 15 17 26 32 40 47 51 58 16 27 31 41 46 52 57 59 28 30 42 45 53 56 60 63 29 43 44 54 55 61 62 64
Lo ms probable es que muchos de estos coeficientes sean cero, por eso se los codifica como una corrida de ceros y un valor de nivel (-128..127). El estndar codifica las corridas y el nivel mediante una tabla con un cdigo de longitud variable que toma en cuenta las combinaciones de corridas de ceros y niveles ms probables asignndoles a estas los cdigos de menor longitud. Cuando se trata de una combinacin que no esta en la tabla se usa un cdigo de longitud fija. En resumen el bitstream queda:
3 Codificador de transmisin
Bitrate El reloj de transmisin se provee externamente. Buffer de datos de video El codificador debe controlar el bitstream de salida para satisfacer los requerimientos del decodificador. Cuando se opera con el formato CIF el nmero de bits creados para codificar una imagen no debe exceder los 256 Kbits, cuando se trata de QCIF no puede exceder los 64 Kbits. El estndar H.261 se usa frecuentemente para mandar datos sobre un canal con un bitrate constante, como ISDN (128 Kbps). La secuencia de salida del codificador varia en cuanto al nmero de bits dependiendo de la cantidad de movimiento en la escena, por lo que un mecanismo de control es necesario para mapear los bits de salida en la corriente de bits constante del canal. Para ello la secuencia de salida se guarda en un buffer y se va vaciando al bitrate del canal. Cuando la complejidad de la escena aumenta causa que se vaya llenando el buffer por lo tanto el paso de cuantificacin se incrementa aumentando la compresin y reduciendo el birate de salida. A la inversa a medida que el buffer se va vaciando se reduce el paso de cuantificacin.
Retardo en la codificacin de video Este tem es incluido en la recomendacin por la necesidad de conocer los retardos del codificador y decodificador de video para permitir la compensacin de los retardos de compresin de audio cuando H.261 es usado como parte de un servicio conversacional. Esto mantendr la sincronizacin entre los labios de la persona que habla y el audio correspondiente. Correccin de errores El bitstream transmitido contiene un cdigo de correccin de errores BCH, que utiliza un polinomio generador g ( x) ( x 9 x 4 1)( x 9 x 6 x 4 x 3 1) . El uso del cdigo de correccin es opcional en el decodificador.
Conclusiones finales.
Podemos decir que los principales problemas que se encuentran en este estndar son: Estimacin del vector de movimiento Propagacin de errores Control del bit-rate
La estimacin del vector de movimiento ya fue discutido en 1.2.2 y el problema radica en elegir un mtodo rpido y que de buenos resultados en cuanto a encontrar el vector de movimiento que minimice alguna funcin de costo como puede ser el error medio absoluto. La propagacin de errores se refiere a los errores que se comenten en descodificacin al computar la transformada inversa del coseno, para solucionar esto se fuerza al codificador a mandar un cuadro INTRA. El control del bitrate ya se explic anteriormente y la filosofa era manejar un buffer que cuando se llenaba se aumentaba el paso de cuantificacin y a medida que se vaciaba se volva a reducir.
Se nota claramente que el uso del filtro espacial y de la compensacin de movimiento mejoran la PSNR claramente. Y en cierto intervalo a medida que aumento el bitrate las mejoras son ms apreciables. Tambin se observa que a valores altos de bitrate (a partir de 200 Kbps ms o menos) las diferencias se hacen menos notables, a pesar de todo la diferencia entre usar compensacin de movimiento o no son del entorno de 3 dB lo que significa una mejora del doble en cuanto a rendimiento. A todo esto no olvidemos que al usar compensacin de movimiento y el filtro espacial estamos aumentando la carga computacional, introduciendo retardos que deben de cuidarse en aplicaciones de tiempo real, sobre todo a bajos bitrates.
De esta grfica podemos apreciar como decae la calidad de la secuencia con el aumento de la razn de compresin. Cuando comprimimos poco la calidad visual que se obtiene usando compensacin de movimiento y el filtro espacial es mucho mejor que si no lo hiciramos, en contraste al querer obtener valores altos de compresin las calidades visuales son muy parecidas. Esto se debe a que los efectos de la cuantificacin pobre que resulta de querer comprimir predominan sobre las mejoras que introducen los mtodos que aprovechan la redundancia temporal. La pruebas que pude hacer codificando secuencias con el estndar H.261 se realizaron con un software de evaluacin propietario que tomaba una secuencia de archivos bitmap y los codifica utilizando el estndar. Los nicos parmetros que se pueden modificar son el bitrate y los cuadros por segundo. Se observaron resultados similares a los obtenidos con MPEG-2, por lo menos en cuanto a la calidad visual, pero la razn de compresin en H.261 es un poco menor. Luego de este estndar surgieron un montn de mejoras que dieron lugar al estndar H.263, que agrega algunos de las siguientes modificaciones: Ms formatos de imgenes, y diferentes estructuras de bloques Compensacin de movimiento de medio pxel, lo que elimina la necesidad del loop filter Alternativas a la codificacin de entropa (codificacin aritmtica) Incluye bloques de tipo B como en MPEG Mejora el rendimiento en 3-4 dB a bitrates menores de 64 Kbps. Codificacin predictiva del vector de movimiento usando los tres anteriores. Cuatro vectores de movimiento por macrobloque. Variedad de opciones negociables. La siguiente tabla comparativa se refiere a la PSNR y lo Bits por Pxel al transmitir se con los diferentes estndares sobre un canal sin ruido usando diferentes modulaciones. Las secuencias fueron codificadas a 10 cuadros por segundo, y los esquemas de modulacin se
corresponden a 15, 30 y 45 Kbps. El estudio comparativo muestra el mejor rendimiento de H.263 sobre H.261 a bajos bitrates con una mejor razn de compresin.
Fuentes
Documento con la descripcin del estndar H.261 publicado por la ITU-T
Diversos sitios de Internet pertenecientes a universidades u organizaciones que se dedican a la compresin de video: http://www.cs.cf.ac.uk http://icsl.ee.washington.edu http://www-mobile.ecs.soton.ac.uk http://umi.eng.rgu.ac.uk/umi/digvid/dvhome.html http://www.4i2i.com/default.htm El codec utilizado para hacer algunas pruebas con el estndar es un software de evaluacin de la empresa 4i2i. Algunos publicaciones en formato pdf que se adjuntan. Material del curso Codificacin de Imgenes y Video 2002