Parámetros específicos de red I Lo que debe suministrar una red para el envío en tiempo real de una secuencia de vídeo.
Tasa de bits. 13
Parámetros específicos de red II Retardo y varianza del retardo. Normalmente se envían una secuencia de vídeo sincronizada con el audio correspondiente. La sincronización es muy importante y necesaria desde HDTV hasta VCR. En Videoconferencia no es tan importante ya que la imagen no es continua (pocos cuadros/s). En estos casos, los requerimientos para estos parámetros los impone el audio (más sensible). Valores indicativos para la varianza del retardo: HDTV: 50 ms. Vídeo difusión: 100 ms. Videconferencia: 400 ms. 14
Parámetros específicos de red III Tasa de error. El vídeo comprimido es más sensible a los errores. La degradación de la calidad de vídeo percibida depende: BER de la red Del tipo de error (simple, ráfaga, bloque, etc.) Donde se produce ese error. El índice de compresión de vídeo. Mecanismos de recuperación ante errores: Técnicas de protección de la señal. FEC (Forward Correction Codes). Marcas de resincronización. Reversible VLC. Técnicas de paquetización. Ocultación de errores (error concealment) Cuando se pierden bloques o llegan demasiado tarde. Técnicas de extrapolación e interpolación de cuadros. 15
Redundancia temporal Se basa en la similitud de cuadros sucesivos en una secuencia de vídeo. Ej.: Secuencias de plano estático. Se utilizan técnicas de codificación diferencial o transformada 3D Sólo se codificarán las diferencias entre cuadros sucesivos (DPCM). La reconstrucción de un cuadro puede estar basado en otro(s) anterior(es). Un algoritmo típico de eliminación de redundancia temporal (motion compensation) es el que emplea MPEG. 16
Redundancia temporal (MPEG-1) Cuadros de referencia y cuadros auto-contenidos Si F1 lo usamos para construir F2, se dice que F1 es un cuadro de referencia (reference frame). Si un cuadro no se construye a partir de ningún otro, se dice que es auto-contenido (intracoded frame) Normalmente estos sirven de referencia para otros. Macrobloques (macroblocks) 16×16 pixels (6 bloques de 8×8: 4Y,1U y 1V). 17 (Gp:) F1
(Gp:) F2
(Gp:) F3
Redundancia temporal (MPEG-1) Vectores de movimiento (motion vector) Identifican el desplazamiento de un determinado macrobloque en el cuadro actual respecto a la posición que tenía en el cuadro de referencia. Los vectores de movimiento se aplican cuando se identifica un macrobloque existente en el cuadro de referencia (matching blocks)
18 (Gp:) F1 (Gp:) F2 (Gp:) Macrobloques idénticos (Gp:) Vector de movimiento ?x = -20, ?y = 0 (Gp:) Cuadro de referencia
Redundancia temporal (MPEG-1) Búsqueda de macrobloques. Se buscan los macrobloques del cuadro a codificar en el cuadro de referencia. Si se encuentra el mismo macrobloque, sólo se codifica el vector de movimiento correspondiente. Si no se encuentra exactamente el mismo se elige el más parecido (macrobloque INTER). Se codifica el vector de movimiento. Se calcula el macrobloque error (las diferencias) aplicándole codificación estilo JPEG (DCT, quant, RLE+VLC en zigzag). Si no se encuentra ningún bloque similar (mb. INTRA) Se codifica dicho macrobloque con codificación estilo JPEG. 19
Redundancia temporal (MPEG-1) Tipos de cuadros I (Intracoded frames): Cuadro codificado usando JPEG (autocontenido). P (Predictive frames): Cuadro basado en las diferencias respecto a un cuadro de referencia anterior (tipo I). B (Bidirectional frames): Cuadros basados en la interpolación de un cuadro anterior y otro posterior en la secuencia (tipo I o P). 20 (Gp:) F1 (Gp:) F2 (Gp:) F3 (Gp:) Cuadro de tipo I autocontenido (Gp:) Cuadro de tipo B basado en F1 y F3 (Gp:) Cuadro de tipo P basado en F1 (Gp:) Macrobloque encontrado!! (Gp:) Macrobloque encontrado!!
Redundancia temporal (MPEG-1) Secuencias de cuadros (Group Of Pictures) Los cuadros de tipo I son los menos comprimidos, a continuación los de tipo P y por último los que más compresión obtiene son los de tipo B. Secuencias típicas: IBBBPBBBI IBBPBBPBBI (PAL) IBBPBBPBBPBBI (NTSC) 21 (Gp:) I (Gp:) B (Gp:) B (Gp:) P (Gp:) B (Gp:) B (Gp:) P (Gp:) B (Gp:) B (Gp:) I
Redundancia temporal (MPEG-1) La importancia de los cuadros de tipo I. En un sistema de vídeo es habitual el usar los controles de avance, retroceso, pausa, etc. Si queremos detener la secuencia de vídeo, necesitamos encontrar el último cuadro I para reconstruir el cuadro donde se ha detenido la imagen. Sirven como puntos de sincronización. Se estima que deben aparecer al menos un cuadro I cada 300-400 ms. Si se está difundiendo una secuencia de vídeo comprimida (TV broadcast, videoconferencia, etc) Permite "engancharse" rápidamente y recuperarse ante la recepción de algún cuadro dañado. 22
Estimación de movimiento: Algoritmos La parte más costosa de la estimación de movimiento corresponde a los algoritmos de búsqueda de macrobloques en el cuadro(s) de referencia. Provoca codificación asimétrica Los algoritmos más conocidos son los siguientes: Búsqueda completa (Full-Search). TTS (Three-Step Search) Búsqueda logarítmica. Búsqueda en cruz (Cross-Search) OTS (One-at-a-Time Search) Vecinos más próximos (Nearest Neighbours Search) Búsqueda jerárquica. 23
Estimación de movimiento. Se define una función de coste que calcula el error entre dos macrobloques, por ejemplo, SAE (Sum of Absolute Errors)* :
(i,j) está definido dentro del área de búsqueda (NxM) determina las dimensiones del macrobloque. C(i,j) y R(i,j) definen los pixels del macrobloque actual y referencia respectivamente. Las coordenadas (i,j) que menor SAE exhiban determinarán el vector de movimiento del macrobloque actual. 24 (*) Más conocido como SAD (Sum of Absolute Differences)
Algoritmos: Full Search. Examina todos los puntos del área de búsqueda (+/- p) Complejidad computacional por macrobloque: Número total de posiciones: (2p + 1)2 Cada posición (i,j), MxN pixels. Cada pixel requiere: 1 resta, 1 suma y 1 valor absoluto.
Complejidad (secuencia IxJ pixels @ F fps)
Ejemplo: Broadcast TV (I=720, J=480, F=30, N=M=16) Coste de este algoritmo: 29.89 GOPS (p=15) ó 6.99 GOPS (p=7) 25
Algoritmos: Three-Step Search. Coste: Examina puntos 1.02 GOPS (p=15) ó 770 MOPS (p=7). 26 MV: (7,-3) (Gp:) (-7,-7) (Gp:) (0,-7) (Gp:) (7,-7) (Gp:) (-7,7) (Gp:) (0,7) (Gp:) (7,7)
(Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1
(Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2
(Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3
Busca en la posición (0,0) S=2N-1 (step size) Busca 8 posiciones a +/-S píxeles alrededor de (0,0) De las nueva posiciones elige aquella con el SAD menor. S=S/2 y el nuevo origen de búsqueda el punto obtenido en 4. Repetir pasos 3-5 hasta que S=1.
Algoritmos: Búsqueda logarítmica. Coste: Examina 20 puntos 616 MOPS (p=7 y N=2). 27 (Gp:) (-7,-7) (Gp:) (0,-7) (Gp:) (7,-7) (Gp:) (-7,7) (Gp:) (0,7) (Gp:) (7,7)
(Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1
(Gp:) 2 (Gp:) 2 (Gp:) 2
(Gp:) 3 (Gp:) 3
(Gp:) 4 (Gp:) 4
(Gp:) 5 (Gp:) 5 (Gp:) 5 (Gp:) 5 (Gp:) 5 (Gp:) 5 (Gp:) 5 (Gp:) 5
MV: (5,-3) Busca en la posición (0,0) y establece S=N (step size) Selecciona 4 posiciones a S píxeles del origen en los ejes X e Y. Calcula la posición que ofrece el menor SAD, fijándola como el nuevo origen de la búsqueda Si esta posición es la central de las 5 seleccionadas S=S/2 Si S=1 ir al paso 6, sino ir al paso 2. Selecciona el origen actual y las 8 posiciones de alrededor, y calcula aquella que minimiza el SAD
Algoritmos: Búsqueda en cruz (Cross Search) Coste: Examina puntos 523 MOPS (p=7). 28 MV: (-3,-5) (Gp:) (-7,-7) (Gp:) (0,-7) (Gp:) (7,-7) (Gp:) (-7,7) (Gp:) (0,7) (Gp:) (7,7)
(Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1
(Gp:) 4 (Gp:) 4
(Gp:) 2 (Gp:) 2 (Gp:) 2 (Gp:) 2
(Gp:) 3 (Gp:) 3 (Gp:) 3 (Gp:) 3
Establece el origen en la posición (0,0). S=2N-1 (step size) Selecciona 4 posiciones a +/-S píxeles del origen formando una cruz (X) y el propio origen. Calcula la posición que ofrece el menor SAE, fijándola como el nuevo origen de la búsqueda Si (S>1) entonces S=S/2 y va al punto 2. Sino ir al punto 5. Si la mejor posición está en el punto superior izquierda o inferior derecha de la X, evaluar 4 puntos más en forma de X a una distancia de +/-1 pixel. Sino hacer lo mismo pero con los 4 puntos distribuidos en "+".
Algoritmos: OTS (One-at-a-Time Search) Coste: Examina 12 puntos 369 MOP. 29 MV: (-4,-3) (-7,-7) (0,-7) (7,-7) (-7,7) (0,7) (7,7) (Gp:) 1 (Gp:) 1 (Gp:) 1
2 3 4 5 Establece el origen en (0,0). Selecciona el origen y las dos posiciones vecinas en el eje X Calcula la posición que menor SAD exhiba. Si es el origen ir al paso 5. Establece el nuevo origen en la posición que ha ofrecido el menor SAD. Ir al paso 2. Repetir los pasos 2 al 4 seleccionando las posiciones en el sentido vertical (eje Y). (Gp:) 6 (Gp:) 6
7 8 9 Puede dar lugar a mínimos locales !
Algoritmos: Vecino más próximo. Coste: Examina 12 puntos 369 MOP. 30 MV: (-3,-4) Calcula el SAD del (0,0). Establece el origen de búsqueda a la posición del vector supuesto (predicted vector) Selecciona 4 posiciones alrededor del origen en forma de "+". Si el origen de búsqueda (o la posición 0,0 en la primera iteración) ofrece el menor SAD entonces "fin de búsqueda". Sino establece el nuevo origen de búsqueda en la posición que menor SAD ha ofrecido. (Gp:) (-7,-7) (Gp:) (0,-7) (Gp:) (7,-7) (Gp:) (-7,7) (Gp:) (0,7) (Gp:) (7,7)
0 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1 (Gp:) 1
(Gp:) 2 (Gp:) 2 (Gp:) 2
(Gp:) 3 (Gp:) 3
Propuesto para H.263 y MPEG-4.
Estimación de movimiento: Otras consideraciones. Estimación de movimiento con fracciones de pixel Se basa en realizar la estimación de movimiento con mayor precisión, ya que a veces el movimiento real no se ajusta a desplazamientos de píxel enteros. Half-Pixel motion estimation Se obtiene un imagen de mayor resolución interpolando un punto de la imagen entre cada dos píxeles.
31 (Gp:) A (Gp:) A (Gp:) A (Gp:) c (Gp:) b (Gp:) A (Gp:) A (Gp:) A (Gp:) A (Gp:) A (Gp:) A (Gp:) c (Gp:) c (Gp:) d (Gp:) b (Gp:) b (Gp:) b (Gp:) b (Gp:) b (Gp:) d (Gp:) c (Gp:) c (Gp:) c (Gp:) d (Gp:) d
A: Píxeles reales (Enteros) b,c,d: Píxeles interpolados. Las flechas indican la dirección de interpolación. Se incrementan notablemente las prestaciones del algoritmo de estimación de movimiento a expensas de un mayor coste computacional. H.263 utiliza está técnica, incluso se propone utilizar ¼ y 1/8 de píxel para el estándar H.264
Estimación de movimiento: Mejoras propuestas. Vectores de movimiento fuera del cuadro de referencia. Para estimar correctamente el movimiento que se produce en los bordes del cuadro. Tamaño de bloque variable. Para realizar estimación de movimiento más precisa. Se utiliza en H.263 (Anexo F) y H.264. Tamaños: 16×16;8×8;4×4;8×16;16×8…. OBMC (Overlapped Block Motion Compensation) Objetivo: Suavizar los efectos de "blocking" que aparecen en los bordes de los macrobloques. Incremento significativo del coste computacional. H.263 recomiendo utilizar filtros de salida (deblocking filters) que realizan esta operación a un coste computacional muy inferior. Modelos de estimación más complejos: Region-based, Picture Warping, Mesh-based, Object-based… 32
Estándar MPEG. Conjunto de estándares ISO para la grabación y transmisión digital de audio y vídeo. En su evolución se han desarrollado varias versiones del estándar MPEG: MPEG-1 (ISO 11172) ('91): CD-ROM vídeo (1,5 Mbps). MPEG-2 (ISO 13818) ('93): TV Broadcast (4-6 Mbps). HDTV (25-34 Mbps). MPEG-4 (ISO 14496) ('99): Originalmente: Videoconferencia (4,8 a 64 Kbps). Enfoque universal de tratamiento de elementos multimedia. MPEG-7 (00-?): Descripción de contenido multimedia (videodatabases) MPEG-21 (01-?): Uso transparente de contenido multimedia entre redes y usuarios heterogéneos. 33
Relación entre los estándares MPEG. 34
MPEG-1 MPEG-1 (ISO 11172) ('91) MPEG-Vídeo (IS 11172-2) MPEG-Audio (IS 11172-3) MPEG-System (IS 11172-1): Multiplexado y sincronización. MPEG-Conformance Testing (IS 11172-4) Patrones de prueba, medida de calidad, etc MPEG-Software Coding (IS 11172-5) Directrices para la codificación de los algoritmos.
Propósito de MPEG-1 Almacenamiento en CD-ROM de audio (calidad CD) y vídeo (calidad VCR) sincronizado (1,5 Mbps). 35
MPEG-1 Características de MPEG-1: Resolución de imagen: 352x(288 ó 240) (PAL/NTSC). Reducción de color (sub-sampling): 4:2:0. Barrido progresivo (no entrelazado). Tasa de cuadros: 25/30 (PAL/NTSC). Incluye cuadros de tipo D (DC-coded): Operaciones de avance rápido (Fast Forward). Codificador/decodificador asimétrico. 36 (Gp:) Audio encoder (Gp:) Vídeo encoder (Gp:) System Mux. (Gp:) Reloj (Gp:) Salida MPEG-1
Tasa de compresión: 27:1. Los codificadores de audio y vídeo trabajan por separado. Utilizan un reloj común para establecer el tiempo de cada una de sus capturas (system).
MPEG-2 Conjunto de estándares ISO 13818 ('93). Propósito: Mejorar la calidad de imagen respecto al anterior sin incrementar excesivamente la tasa de bits requerida Calidad de vídeo profesional (studio-quality) y HDTV Aplicación: Difusión de señales de TV, HDTV, VOD La codificación/decodificación es muy similar a la de MPEG-1 salvo algunas diferencias: No se incluyen cuadros de tipo D. Permite bloques de 16×8 para vídeo entrelazado. Otras mejoras (permite DC de hasta 10 bits, cuantización no lineal, nuevas tablas VLC, escalabilidad SNR y multiresolución) 37
MPEG-2 Características de MPEG-2. Soporta barrido entrelazado y progresivo. Puede trabajar con distintas resoluciones (nivel): CIF: 352×288/240 (VCR quality) (Compatibilidad MPEG-1) Principal: 720×576/480 (studio-quality) High-1440: 1440×1152 (HDTV) High: 1920×1080 (HDTV) Define varios perfiles de implementación Detalles de los algoritmos de compresión y parámetros de imagen, barrido, etc. El multiplexado y sincronización es más general y flexible que MPEG-1 Se pueden multiplexar/sincronizar varias fuentes de audio, vídeo y datos (ej.: subtítulos en varios idiomas). 38
MPEG-4 Propósito: Diseño de aplicaciones multimedia interactivas distribuidas.
Aplicación: Televisión digital Compatibilidad con MPEG-2 (backware compatibility) Aplicaciones multimedia interactivas El usuario puede interaccionar con los objetos multimedia de la sesión. Distribución de información multimedia (tipo WWW) A través de una red, se permitirá el acceso y distribución a información multimedia, facilitando su diseño y presentación. 39
MPEG-4 Características: Accesibilidad de la información de manera universal y robusta. Alta interactividad con la información multimedia. Definición de escenarios virtuales compuestos por objetos independientes (AVOs). El usuario puede modificar/configurar el escenario actual. Codificación conjunta de datos sintéticos y reales. Codificación eficiente de la información. Mejoras en la compresión y multiplexación de la información. Codificación de objetos con forma irregular. 40
MPEG-4 41
3.3 Estándar H.261. Pertenece al conjunto de estándares H.320 del ITU dedicados a videoconferencia sobre RDSI. H.320: Definición de la familia de estándares H.221: Multiplexado, sincronización sobre uno o varios canales RDSI y empaquetamiento (framming). H.242/H.230: Establecimiento y control de sesión. H.224/H.281: Control remoto de cámaras. H.233 y H.234: Cifrado y autenticación de los datos. T.120: Soporte para aplicaciones (transferencia de imágenes, anotaciones compartidas, etc.) G.711, G.72x …: Algoritmos de compresión de audio H.261: Compresión de vídeo (conocido como px64). 42
Estándar H.261. Características de H.261: Formato de imagen: YCbCr CIF: 352×288 (opcional) QCIF: 176×144 (obligatorio) Reducción de color: 4:2:0 Tasa de cuadros/seg: como máximo 30 max.
Mecanismo de compresión similar a MPEG-1: Para la redundancia temporal se emplean mecanismos similares a MPEG, basados en macrobloques (16×16). H.261 define el concepto de GOB (Group Of Blocks) 1 GOB = 3×11 macrobloques (QCIF: 3 GOBs) 43
Estándar H.261. Sólo se definen dos tipos de cuadros: I y P. No existen secuencias predefinidas de cuadros. Decisión de codificación I o P para cada cuadro. Estimación de movimiento (motion estimation): Se realiza a nivel de macrobloque Búsqueda restringida en un área de +-15 pixels, usando sólo la información de luminancia (Y). Resultado de la búsqueda: Macrobloque del cuadro de anterior que más se parece al actual Cálculo de las diferencias (macrobloque error). Si superan un cierto umbral se codifican (DCT), si no se elimina el macrobloque error, utilizando sólo el vector de movimiento. Cuantificación lineal (menos costosa). Se siguen utilizando run-length y Huffman (VLC). 44
Estándar H.261. 45 (Gp:) PSC (Gp:) TR (Gp:) PType (Gp:) GOB1 (Gp:) GOB2 (Gp:) …. (Gp:) GOBm (Gp:) GOB Start (Gp:) Grp# (Gp:) Quant (Gp:) MB1 (Gp:) … (Gp:) MBn (Gp:) Addr (Gp:) Type (Gp:) Quant (Gp:) Vector (Gp:) CBP (Gp:) b0 (Gp:) b1 (Gp:) … (Gp:) b5 (Gp:) DC (Gp:) Run, Valor (Gp:) … (Gp:) Run, Valor (Gp:) EOB
Esquema del formato H.261
Otros estándares H.26x. H.263: Mejora, amplía y sustituye el H.261 De propósito general (no sólo para videoconf.) Incluye compensación de movimiento de "medio-píxel" Soporta cinco resoluciones (SQCIF, QCIF, CIF, 4CIF y 16CIF) Permite estimación de movimiento bidireccional y sin restricción en el tamaño de la ventana de búsqueda H.263+: Añade nuevas características a H.263 Escalabilidad SNR, espacial y temporal Predicción de los valores de los coeficientes de la DCT H.264: Mejora la eficiencia en codificación DCT con enteros y tam. bloque 4×4, compensación de movimiento con bloques de tamaño variable, etc. 46
Otros estándares H.26x. Comparación subjetiva MPEG-4 – H.264 47
Conclusiones Las imágenes son captadas por cámaras de vídeo que proporcionan una señal analógica RGB. La digitalización está basada en el estándar ITU-R En función de la calidad de vídeo deseada, existen diversos formatos de imagen, barrido, etc. Se definen distintos parámetros de red de importancia para el transporte de vídeo Algoritmos de compresión de vídeo Fundamentos: Redundancia temporal Algoritmos de estimación de movimiento: Alto coste computacional. Estándares de compresión: Familia MPEG: 1-2-4 Diseñados para procesar vídeo digital de calidad (Sector consumo). Familia ITU: H.261-3-4 Diseñados para comunicaciones audiovisuales en distintos tipos de redes (RDSI, IP, telefonía, etc.) 48
Introducción. Desde el punto de vista de la red: Un stream de vídeo ha de ser "paquetizado" para su transporte. La pérdida de paquetes implica una degradación de la calidad de vídeo que observa el destinatario. Es por ello que resulte de interés el estudio de técnicas que protejan el vídeo en su viaje al destino y que los errores detectados puedan ser "ocultados" al usuario final ? Video resilience. Desde el punto de vista del transporte de vídeo en sistemas y redes heterogéneos: Interoperabilidad de distintos codecs con bitstreams incompatibles en la red ? heterogeneous transcoding. Posibilidad de cambiar los parámetros de codificación (i.e. bitrate) de un mismo codec ? homogeneous transcoding. Desde el punto de vista de la aplicación: Las redes (i.e. Internet) tienen un comportamiento muy variable e impredecible en relación al ancho de banda disponible. Por ello, con el fin de optimizar el uso de recursos disponibles en la red y maximizar la calidad de vídeo entregada al destinatario, se requieren mecanismos de control de flujo extremo-a-extremo. 49
Control de flujo. Las técnicas de control de flujo deberán regular el bitrate de salida para conseguir la mejor relación calidad/productividad. El control de flujo es una herramienta que al mismo tiempo nos permite prevenir situaciones de congestión en la red. Para que un sistema de control de flujo funcione es necesario obtener de la red información acerca del ancho de banda disponible en cada momento (i.e. RTCP receiver reports). Existen diferentes formas de realizar un control de flujo: Cuantización variable (Variable-quantization) Resolución reducida (Reduced resolution) Codificación multinivel (Multi-layer coding) Etc..
50
Variabilidad del bitrate. Todos los estándares de compresión de vídeo producen de forma natural un bitstream con tasa de bits variable. Se fija el valor de "Qp" para obtener una calidad constante. Por contra, se puede variar el Qp (MB, GOB o Frame) para conseguir una tasa de bits constante a costa de una variabilidad en la calidad. La variabilidad viene fijada por la actividad espacial y temporal de la secuencia de vídeo: Un MB de un cuadro P, no se codifica si es muy similar al MB del cuadro de referencia. Dependiendo de la cantidad de movimiento en la escena, el número de MB que NO se codifican varía ? Variando también el bitrate. La correlación entre los pixels de un bloque de 8×8, dicta el número de bits necesario para codificar los 64 coeficientes resultantes de la transformada. Junto con el valor de Qp determinará el número de coeficiente nulos que aparecen y que posteriormente serán codificados con VLC en flujos bits de tamaño variable.
51
Variabilidad del bitrate (II). Parámetros de longitud fija y variable en un stream de vídeo H.263 La contribución de los parámetros de longitud variable en el bitrate final es mucho mayor que los de longitud fija, a pesar de ser menos. 52
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). 53 (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. 54
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 http://www.mpeg.org/MPEG/MSSG/tm5/Overview.html 55
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)
56
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) 57
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.
58
Feed-forward rate control.
59 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. 60
Control de flujo: Resolución reducida (2). Ejemplo de decodificador H.263 con procesamiento de resolución reducida 61
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
62
Control de flujo: Codificación multinivel (2). Ejemplo de MPEG-4, escalabilidad temporal, Qp=cte
63
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
64
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.
65 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) 66 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. 67
Página anterior | Volver al principio del trabajo | Página siguiente |