stringtranslate.com

marco intermedio

Un intercuadro es un cuadro en un flujo de compresión de video que se expresa en términos de uno o más cuadros vecinos. La parte "inter" del término se refiere al uso de predicción entre cuadros . Este tipo de predicción intenta aprovechar la redundancia temporal entre fotogramas vecinos, lo que permite tasas de compresión más altas.

Predicción entre fotogramas

Una trama intercodificada se divide en bloques conocidos como macrobloques . Después de eso, en lugar de codificar directamente los valores de píxeles sin procesar para cada bloque, el codificador intentará encontrar un bloque similar al que está codificando en un cuadro previamente codificado, denominado cuadro de referencia . Este proceso se realiza mediante un algoritmo de coincidencia de bloques . Si el codificador tiene éxito en su búsqueda, el bloque podría codificarse mediante un vector, conocido como vector de movimiento , que apunta a la posición del bloque coincidente en el marco de referencia. El proceso de determinación del vector de movimiento se llama estimación de movimiento .

En la mayoría de los casos, el codificador tendrá éxito, pero es probable que el bloque encontrado no coincida exactamente con el bloque que está codificando. Es por eso que el codificador calculará las diferencias entre ellos. Esos valores residuales se conocen como error de predicción y deben transformarse y enviarse al decodificador.

En resumen, si el codificador logra encontrar un bloque coincidente en un marco de referencia, obtendrá un vector de movimiento que apunta al bloque coincidente y un error de predicción. Utilizando ambos elementos, el decodificador podrá recuperar los píxeles sin procesar del bloque. La siguiente imagen muestra todo el proceso gráficamente:

Proceso de predicción entre cuadros. En este caso, ha habido un cambio de iluminación entre el bloque en el marco de referencia y el bloque que se está codificando: esta diferencia será el error de predicción de este bloque.

Este tipo de predicción tiene algunos pros y contras:

Debido a estos inconvenientes, se debe utilizar un marco de referencia confiable y periódico para que esta técnica sea eficiente y útil. Ese marco de referencia se conoce como Intra-cuadro , que está estrictamente intracodificado, por lo que siempre se puede decodificar sin información adicional.

En la mayoría de los diseños, hay dos tipos de marcos intermedios: marcos P y marcos B. Estos dos tipos de fotogramas y los I-frames (imágenes intracodificadas) suelen unirse en un GOP (Grupo de imágenes). El I-frame no necesita información adicional para ser decodificado y puede usarse como una referencia confiable. Esta estructura también permite lograr una periodicidad de fotograma I, que es necesaria para la sincronización del decodificador.

Tipos de marco

La diferencia entre los marcos P y los marcos B es el marco de referencia que pueden utilizar.

marco P

Cuadro P es el término utilizado para definir las imágenes previstas hacia adelante. La predicción se realiza a partir de una imagen anterior, principalmente un fotograma I o un fotograma P, por lo que requiere menos datos de codificación (≈50% en comparación con el tamaño del fotograma I).

La cantidad de datos necesarios para realizar esta predicción consiste en vectores de movimiento y coeficientes de transformación que describen la corrección de la predicción. Implica el uso de compensación de movimiento .

marco B

Cuadro B es el término para imágenes predichas bidireccionalmente. Este tipo de método de predicción ocupa menos datos de codificación que los fotogramas P en general (≈25% en comparación con el tamaño del fotograma I) porque la predicción se realiza a partir de un fotograma anterior o posterior o de ambos. (Los fotogramas B también pueden ser menos eficientes que los fotogramas P en ciertos casos, [1] por ejemplo: codificación sin pérdidas)

Al igual que los fotogramas P, los fotogramas B se expresan como vectores de movimiento y coeficientes de transformación. Para evitar un error de propagación creciente, los fotogramas B no se utilizan como referencia para realizar predicciones adicionales en la mayoría de los estándares de codificación. Sin embargo, en los métodos de codificación más nuevos (como H.264/MPEG-4 AVC y HEVC ), los fotogramas B se pueden utilizar como referencia para una mejor explotación de la redundancia temporal. [2] [3]

Estructura típica de grupo de imágenes (GOP)

Ilustración de dependencias del esquema del grupo de imágenes IBBPBB... El tiempo va de izquierda a derecha.

La estructura típica de grupo de imágenes (GOP) es IBBPBBP... El fotograma I se utiliza para predecir el primer fotograma P y estos dos fotogramas también se utilizan para predecir el primer y segundo fotograma B. El segundo cuadro P se predice también utilizando el primer cuadro I. Ambos fotogramas P se unen para predecir el tercer y cuarto fotograma B. El esquema se muestra en la siguiente imagen:

Esta estructura sugiere un problema porque el cuarto cuadro (un cuadro P) es necesario para predecir el segundo y el tercero (cuadros B). Por lo tanto, necesitamos transmitir el fotograma P antes que los fotogramas B y esto retrasará la transmisión (será necesario conservar el fotograma P). Esta estructura tiene puntos fuertes:

Pero tiene puntos débiles:

Mejoras en la predicción entre cuadros H.264

Las mejoras más importantes de la técnica H.264 respecto a los estándares anteriores (especialmente MPEG-2 ) son:

Partición de bloques más flexible

Partición de bloque de luminancia de 16×16 ( MPEG-2 ), 16×8, 8×16 y 8×8. El último caso permite la división del bloque en nuevos bloques de 4×8, 8×4 o 4×4.

El cuadro a codificar se divide en bloques de igual tamaño como se muestra en la imagen de arriba. Cada predicción de bloque será bloques del mismo tamaño que las imágenes de referencia, compensados ​​por un pequeño desplazamiento.

Resolución de compensación de movimiento de hasta ¼ de píxel

Los píxeles en una posición de medio píxel se obtienen aplicando un filtro de longitud 6.

H = [1 -5 20 20 -5 1], es decirmedio píxel "b"=A - 5B + 20C + 20D - 5E + F

Los píxeles en una posición de un cuarto de píxel se obtienen mediante interpolación bilineal .

Mientras que MPEG-2 permitía una resolución de ½ píxel, Inter frame permite una resolución de hasta ¼ de píxel. Eso significa que es posible buscar un bloque en el cuadro para codificarlo en otros cuadros de referencia, o podemos interpolar píxeles inexistentes para encontrar bloques que se adapten aún mejor al bloque actual. Si el vector de movimiento es un número entero de unidades de muestras, eso significa que es posible encontrar en las imágenes de referencia el bloque compensado en movimiento. Si el vector de movimiento no es un número entero, la predicción se obtendrá a partir de píxeles interpolados mediante un filtro interpolador en direcciones horizontal y vertical.

Múltiples referencias

Las referencias múltiples a la estimación de movimiento permiten encontrar la mejor referencia en 2 buffers posibles (Lista 0 para imágenes pasadas, Lista 1 para imágenes futuras) que contienen hasta 16 fotogramas en total. [4] [5] La predicción de bloques se realiza mediante una suma ponderada de bloques de la imagen de referencia. Permite mejorar la calidad de imagen en escenas donde hay cambios de plano, zoom o cuando se revelan nuevos objetos.

Macrobloque directo/saltado mejorado

Los modos Saltar y Directo se utilizan con mucha frecuencia, especialmente con fotogramas B. Reducen significativamente el número de bits a codificar. Se hace referencia a estos modos cuando un bloque se codifica sin enviar errores residuales o vectores de movimiento. El codificador sólo registrará que se trata de un Macrobloque de Omisión. El decodificador deducirá el vector de movimiento del bloque codificado en modo directo/salto de otros bloques ya decodificados.

Hay dos formas de deducir el movimiento:

Temporal
Utiliza el vector de movimiento de bloque del cuadro de la Lista 1, ubicado en la misma posición para deducir el vector de movimiento. El bloque Lista 1 utiliza un bloque Lista 0 como referencia.
Espacial
Predice el movimiento de los macrobloques vecinos en el mismo cuadro. Un posible criterio podría ser copiar el vector de movimiento de un bloque vecino. Estos modos se utilizan en zonas uniformes de la imagen donde no hay mucho movimiento.

En la figura anterior, los bloques rosas son bloques codificados en modo directo/salto. Como vemos, se utilizan con mucha frecuencia, principalmente en marcos B.

Información adicional

Aunque el uso del término "cuadro" es común en el uso informal, en muchos casos (como en los estándares internacionales para codificación de vídeo mediante MPEG y VCEG ) se aplica un concepto más general utilizando la palabra "imagen" en lugar de "cuadro". , donde una imagen puede ser un fotograma completo o un único campo entrelazado .

Los códecs de vídeo como MPEG-2 , H.264 u Ogg Theora reducen la cantidad de datos en una secuencia siguiendo los fotogramas clave con uno o más fotogramas intermedios. Por lo general, estos fotogramas se pueden codificar utilizando una velocidad de bits más baja que la necesaria para los fotogramas clave porque gran parte de la imagen suele ser similar, por lo que sólo es necesario codificar las partes cambiantes.

Ver también

Referencias

  1. ^ "Foro de Doom9 - Ver publicación única - Pregunta x264 sin pérdidas".
  2. ^ "Marcos B jerárquicos o pirámide B: compresión de vídeo".
  3. ^ "Configuración de X264 - MeWiki". mewiki.project357.com . Archivado desde el original el 18 de noviembre de 2014 . Consultado el 12 de enero de 2022 .
  4. ^ "Una pregunta de novato sobre el fotograma B en AVC - Foro de Doom9".
  5. ^ "Salida de estadísticas X264, la parte" ref B L1 ". Archivado desde el original el 22 de noviembre de 2014.