Tasa de bits constante. Cuando al red ofrece un servicio de transporte de tipo CBR (i.e ATM), entonces podremos utilizar un control de flujo que proporcione una tasa de bits constante. Es necesario incluir un buffer entre el encoder y la red para suavizar las fluctuaciones del bitrate. Almacenar el video antes de enviarlo aumenta el retardo total, siendo no aconsejable para servicios de entrega de vídeo interactivo. La técnica más común para controlar el flujo de salida del encoder es ajustar sus parámetros de configuración en función de la ocupación del buffer (feedback control). Por otro lado, también podemos regular el flujo con información acerca de la actividad del frame actual (feed-forward). (Gp:) Source Encoder (Gp:) Buffer (Gp:) Modify Encoder Params. (Gp:) Input (Gp:) Picture activity (Gp:) Buffer status (Gp:) Output
Ajuste de parámetros de codificación. Al controlar de flujo de salida de un encoder se debe llegar a un compromiso entre la calidad y la tasa de compresión. Cuando se trata de encoders basados en transformada por bloques, podemos jugar con varios parámetros: Tasa de cuadros (frame rate) ? Sólo usado cuando la calidad de cada cuadro no puede degradarse. Codificar sólo una parte del bloque de coeficientes (i.e. solo coeff. de baja frecuencia). El coeff. DC siempre debe estar presente. Cuando la información del movimiento es más importante que el detalle espacial ? Mantener la tasa de cuadros y modificar el parámetro de cuantización Qp. Incrementando Qp se obtendrán mas coeff. nulos, reduciendo los bits necesarios para codificar el bloque usando VLC El ajuste de Qp se puede hacer a nivel de un cuadro, GOB o MB. Umbral de detección de movimiento. Decide si un MB en un cuadro P es codificado o saltado (COD=1) Si aumentamos el umbral ? el encoder se hace menos sensible al movimiento ? Pocos MB se codifican ? Reducimos la tasa de bits. Umbral de codificación INTRA de un MB. Decide si un MB es codificado como INTRA (Mayor tasa de bits) o INTER.
Cuantización variable. El mecanismo de control de flujo más utilizado es: Ajuste del valor de Qp del siguiente cuadro, GOB o MB, basándose en la ocupación actual del buffer (estado de la red). Sin embargo, estos mecanismos ofrecen resultados no predecibles y/o fluctuaciones severas del bitrate: Los distintos umbrales de cuantización(valores Qp) no afectan de forma lineal al bitrate de salida El contenido de vídeo puede afectar a lacantidad de bits necesarios para codificarun frame. Para producir un bitrate estable es necesario emplear algoritmos más complejos, incorporando en muchos casos tanto feedback (buffer-based) como feed-forward control. Un ejemplo: TM5 Rate control algorithm (MPEG-2, H.263, …) ? Buffer-based
TM5 rate control algorithm (I). Mecanismo que controla el bitrate calculando de forma adaptativa el valor de Qp para cada MB. Tres pasos: Paso 1: Estimación de la tasa de bits objetivo para el siguiente cuadro. Se realiza antes de codificar el cuadro Estima de la complejidad global, X, del siguiente cuadro (I, P o B) donde S indica el número de bits requeridos para codificar el cuadro anterior, y Q es el valor de cuantización medio de todos los MBs El número de bits para el siguiente cuadro, T, se calcula en base al número de bits disponible para el resto del GOP actual, R, y a la complejidad. R se actualiza tras codificar cada frame (inicialmente R = 0) Si es el primer cuadro de un GOP (INTRA o I-frame):
donde Np,b es el número de cuadros P y B que faltan por codificar en el GOP
Sino (cuadros P y B)
TM5 rate control algorithm (II). Paso 2: Cálculo del valor Qp de referencia para todos los MBs del cuadro (rate control) Esta basado en la idea de un buffer virtual. Antes de codificar el MBj (j>= 1), se calcula el nivel de llenado del buffer virtual (del cuadro actual I, P o B). d0 es el valor inicial de llenado del buffer Bj es el número de bits generados al codificar los MBs del cuadro hasta el MBj (incluido este) dj es el valor de llenado del buffer al codificar el MBj El valor final del buffer virtual (dji,p,b cuando j=MB_Cnt) se utiliza como valor de llenado inicial para el siguiente cuadro del mismo tipo. A continuación se calcula el valor de referencia del cuantizador Qj para MBj:
Paso 3: Determinación del valor del cuantizador (mquantj) de MBj. Cálculo de la actividad espacial de MBj: Usando el valor de los pixels originales de los cuatro bloques de 8×8 de luminancia (n=1..4) y los cuatro bloques de 8×8 de luminancia de los pixels organizados por campos (n=5..8)
TM5 rate control algorithm (III).
Pkn son los valores de los pixels en el enésimo bloque de 8×8 Vblkn corresponde a la varianza de los pixels del enésimo bloque de 8×8 Actj es la actividad espacial del MBj
A continuación se normaliza la actividad espacial:
avg_act es el valor medio de actj en el último cuadro codificado (para el primer cuadro se asigna el valor de 400).
Por último, calcula el valor del cuantizador (mquantj) para MBj:
El valor de mquantj se recorta para que entre en el intervalo [1,31] y se utilice como valor de cuantización de MBj.
Feed-forward rate control.
En feed-forward el parámetro de cuantificación se calcula en función de los bits necesarios para codificar el error de predicción del cuadro actual.
Control de flujo: Resolución reducida. Para aplicaciones donde se requieren bajas tasas de bits y no es suficiente con la cuantificación variable. Submuestrear cada macrobloque de error antes de codificarlo y realizar la operación inversa (interpolando) en el decodificador.
Control de flujo: Resolución reducida (2). Ejemplo de decodificador H.263 con procesamiento de resolución reducida
Control de flujo: Codificación multinivel. El stream de salida esta formado por un número de codificaciones a distintos niveles de tasa de bits, cuadros por segundo y/o resolución. Nivel Básico + Niveles de mejora. Ejemplo H.261 con dos niveles sobre ATM (1992) Básico a muy baja tasa de bits Mejora ? diferencias con original Ejemplo H.263 con dos niveles (1999) Básico ? QCIF a f/s Mejora ? CIF a 2 x f/s MPEG-4 soporta multinivel
Control de flujo: Codificación multinivel (2). Ejemplo de MPEG-4, escalabilidad temporal, Qp=cte
Protección y ocultación de errores. Los datos de vídeo codificados son muy sensitivos a la pérdida de información y a los errores de bit del canal. La calidad del video se degrada enormemente ante canales de altos BER a no ser que empleemos mecanismos de control de errores. Las predicciones espacial y temporal de las secuencias de vídeo aumentan la vulnerabilidad. Esquemas de gestión de errores deben situarse en codificador y decodificador No es factible la retransmisión del vídeo erróneo debido a los requisitos de tiempo real
Protección y ocultación de errores (2). Técnicas de ocultación de errores. Sólo interviene el decodificador en el control de errores. El codificador no añade redundancia. El decodificador trata de aprovechar la información que ya tiene libre de errores de la secuencia de video ya recibida para realizar una recuperación aproximada.
Sin ocultación Zero-MV MV del frame anterior MV del frame anterior que mejor se mueve en la dirección del MV perdido
Protección y ocultación de errores (3). Técnicas de protección de errores (en el codificador). Inserción de códigos de corrección de errores. Normalmente se aplican a los códigos de longitud fija y se combinan con otras técnicas Duplicación de los vectores de movimiento. Refresco INTRA Refresco INTRA adaptativo (AIR) AIR – Dos bloques INTRA en cada cuadro
Conclusiones. Las técnicas de control de flujo nos permiten cambiar los parámetros de calidad para conseguir un bitrate deseado Las secuencias de vídeo codificado son muy sensibles a los errores. Se pueden utilizar técnicas de ocultación de errores en el decodificador y codigos de redundancia y aumento de bloques intra en el codificador.
Página anterior | Volver al principio del trabajo | Página siguiente |