Una inter-trama es una trama en un flujo de compresión de video que se expresa en términos de una o más tramas vecinas. La parte "inter" del término se refiere al uso de la predicción entre tramas . Este tipo de predicción intenta aprovechar la redundancia temporal entre tramas vecinas, lo que permite tasas de compresión más altas.
Predicción entre cuadros
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 marco codificado previamente, denominado marco 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 ser codificado por 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 denomina estimación de movimiento .
En la mayoría de los casos, el codificador funcionará correctamente, 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. Estos 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. Usando ambos elementos, el decodificador podrá recuperar los píxeles sin procesar del bloque. La siguiente imagen muestra todo el proceso de forma gráfica:
Este tipo de predicción tiene algunos pros y contras:
- Si todo va bien, el algoritmo podrá encontrar un bloque coincidente con poco error de predicción de modo que, una vez transformado, el tamaño total del vector de movimiento más el error de predicción sea menor que el tamaño de una codificación sin procesar.
- Si el algoritmo de coincidencia de bloques no logra encontrar una coincidencia adecuada, el error de predicción será considerable. Por lo tanto, el tamaño total del vector de movimiento más el error de predicción será mayor que la codificación sin procesar. En este caso, el codificador haría una excepción y enviaría una codificación sin procesar para ese bloque específico.
- Si el bloque emparejado en la trama de referencia también se ha codificado usando la predicción entre tramas, los errores cometidos para su codificación se propagarán al siguiente bloque. Si cada cuadro se codificara utilizando esta técnica, no habría forma de que un decodificador se sincronizara con un flujo de video porque sería imposible obtener las imágenes de referencia.
Debido a estos inconvenientes, se debe utilizar un marco de referencia periódico confiable y en el tiempo para que esta técnica sea eficiente y útil. Ese marco de referencia se conoce como intracuadro , que es 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 fotogramas I (imágenes intracodificadas) suelen unirse en un GOP (grupo de imágenes). El I-frame no necesita información adicional para decodificarse y puede usarse como una referencia confiable. Esta estructura también permite lograr una periodicidad de trama I, que es necesaria para la sincronización del decodificador.
Tipos de tramas
La diferencia entre los fotogramas P y los fotogramas B es el marco de referencia que pueden utilizar.
Marco en P
P-frame es el término utilizado para definir las imágenes pronosticadas hacia adelante. La predicción se hace a partir de una imagen anterior, principalmente un fotograma I o un fotograma P, por lo que requieren 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
B-frame 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)
De forma similar a 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 marcos B no se utilizan como referencia para hacer más predicciones 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 ), las tramas B pueden usarse como referencia para una mejor explotación de la redundancia temporal. [2] [3]
Estructura típica de grupo de imágenes (GOP)
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 primero y el segundo fotogramas B. El segundo fotograma P se predice también utilizando el primer fotograma I. Ambos fotogramas P se unen para predecir el tercer y cuarto fotogramas B. El esquema se muestra en la siguiente imagen:
Esta estructura sugiere un problema porque el cuarto fotograma (un fotograma P) es necesario para predecir el segundo y el tercero (fotogramas B). Por lo tanto, necesitamos transmitir el cuadro P antes que los cuadros B y retrasará la transmisión (será necesario mantener el cuadro P). Esta estructura tiene puntos fuertes:
- Minimiza el problema de posibles áreas descubiertas.
- Los fotogramas P y los fotogramas B necesitan menos datos que los fotogramas I, por lo que se transmiten menos datos.
Pero tiene puntos débiles:
- Aumenta la complejidad del decodificador, lo que puede significar que se necesita más memoria para reorganizar las tramas y un poquito más de potencia de procesamiento.
- Las tramas B pueden introducir una dependencia de decodificación que inevitablemente aumenta la latencia de decodificación.
Mejoras en la predicción entre cuadros H.264
Las mejoras más importantes de esta técnica con respecto al estándar H.264 anterior son:
- Partición de bloque más flexible
- Resolución de compensación de movimiento de hasta ¼ de píxel
- Varias referencias
- Macrobloque mejorado directo / de omisión
Partición de bloque 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.
La trama 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 la posición de medio píxel se obtienen aplicando un filtro de longitud 6.
H = [1-5 20 20-5 1]
Por ejemplo:
b = A - 5B + 20C + 20D - 5E + F
Los píxeles en la 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 marco para codificarlo en otros marcos 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.
Varias referencias
Múltiples referencias a la estimación de movimiento permiten encontrar la mejor referencia en 2 búferes 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 una calidad de imagen mejorada en escenas donde hay cambios de plano, zoom o cuando se revelan nuevos objetos.
Macrobloque mejorado directo / de omisión
Los modos Skip y Direct 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 se codifica un bloque sin enviar errores residuales o vectores de movimiento. El codificador solo registrará que es 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 Lista 1, ubicado en la misma posición para deducir el vector de movimiento. El bloque Lista 1 usa un bloque Lista 0 como referencia.
- Espacial
- Predice el movimiento de macrobloques vecinos en la misma trama. 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 de color rosa son bloques codificados en modo directo / omitir. Como podemos ver, se utilizan con mucha frecuencia, principalmente en B-frames.
Información Adicional
Aunque el uso del término "marco" es común en el uso informal, en muchos casos (como en los estándares internacionales para la codificación de video por MPEG y VCEG ) se aplica un concepto más general utilizando la palabra "imagen" en lugar de "marco". , donde una imagen puede ser un fotograma completo o un solo campo entrelazado .
Los códecs de video como MPEG-2 , H.264 u Ogg Theora reducen la cantidad de datos en una secuencia siguiendo fotogramas clave con uno o más inter fotogramas. Por lo general, estos fotogramas se pueden codificar utilizando una velocidad de bits inferior a la necesaria para los fotogramas clave porque gran parte de la imagen es normalmente similar, por lo que solo es necesario codificar las partes cambiantes.
Ver también
Referencias
- ^ https://forum.doom9.org/showpost.php?p=1228631&postcount=12
- ^ http://www.ramugedia.com/hierarchical-b-frames-or-b-pyramid
- ^ https://web.archive.org/web/20141118124738/http://mewiki.project357.com/wiki/X264_Settings#b-pyramid
- ^ https://forum.doom9.org/showthread.php?t=129364
- ^ "Salida de estadísticas X264, la parte" ref B L1 " . Archivado desde el original el 22 de noviembre de 2014.
- Software H.264: http://iphome.hhi.de/suehring/tml/download/
- T.Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Descripción general del estándar de codificación de video H.264 / AVC . Transacciones IEEE sobre circuitos y sistemas para tecnología de video, vol. 13, No. 7, julio de 2003