SMPTE ST 2117-1 , [1] conocido informalmente como VC-6 , es un formato de codificación de vídeo . [2]
El códec VC-6 está optimizado para aplicaciones de codificación intermedia, mezzanine o de contribución. [2] Por lo general, estas aplicaciones implican la compresión de composiciones terminadas para edición, contribución, distribución primaria, archivo y otras aplicaciones donde es necesario preservar la calidad de la imagen lo más cerca posible del original, al mismo tiempo que se reducen las tasas de bits y se optimizan los requisitos de procesamiento, energía y almacenamiento. VC-6, al igual que otros códecs de esta categoría [3] [4], utiliza solo compresiones intra-cuadro , donde cada cuadro se almacena de forma independiente y se puede decodificar sin dependencias de ningún otro cuadro. [5] El códec implementa compresión sin pérdida y con pérdida , según los parámetros de codificación que se hayan seleccionado. Se estandarizó en 2020. V-Nova ha implementado variantes anteriores del códec desde 2015 bajo el nombre comercial Perseus. El códec se basa en estructuras de datos jerárquicas llamadas s-trees y no implica compresión por transformada DCT o wavelet . El mecanismo de compresión es independiente de los datos que se comprimen y se puede aplicar tanto a píxeles como a otros datos que no sean imágenes. [6]
A diferencia de los códecs basados en DCT , VC-6 se basa en estructuras jerárquicas y repetibles de árboles s que son similares a los árboles cuádruples modificados . Estas estructuras simples proporcionan capacidades intrínsecas, como paralelismo masivo [7] y la capacidad de elegir el tipo de filtrado utilizado para reconstruir imágenes de mayor resolución a partir de imágenes de menor resolución. [8] En el estándar VC-6 [2] se proporciona un muestreador ascendente desarrollado con una red neuronal convolucional en bucle para optimizar el detalle en la imagen reconstruida, sin requerir una gran sobrecarga computacional. La capacidad de navegar espacialmente dentro del flujo de bits VC-6 en múltiples niveles [2] también proporciona la capacidad de que los dispositivos de decodificación apliquen más recursos a diferentes regiones de la imagen, lo que permite que las aplicaciones de región de interés operen en flujos de bits comprimidos sin requerir una decodificación de la imagen de resolución completa. [9]
En la NAB Show de 2015, V-Nova afirmó "ganancias de compresión promedio de 2x–3x, en todos los niveles de calidad, en escenarios operativos prácticos en tiempo real frente a H.264 , HEVC y JPEG2000 ". [10] Hacer este anuncio el 1 de abril antes de una importante feria comercial atrajo la atención de muchos expertos en compresión. [11] Desde entonces, V-Nova ha implementado y licenciado la tecnología, conocida en ese momento como Perseus, [10] tanto en aplicaciones de contribución como de distribución en todo el mundo, incluidas Sky Italia , [12] Fast Filmz, [13] [14] Harmonic Inc y otras. Una variante de la tecnología optimizada para mejorar el códec de distribución pronto se estandarizará como MPEG-5 Part-2 LCEVC . [15] [16] [17]
El estándar [2] describe un algoritmo de compresión que se aplica a planos de datos independientes. Estos planos pueden ser píxeles RGB o RGBA originados en una cámara, píxeles YCbCr de una fuente de video centrada en TV convencional o algún otro plano de datos. Puede haber hasta 255 planos de datos independientes, y cada plano puede tener una cuadrícula de valores de datos de dimensiones de hasta 65535 x 65535. [18] El estándar SMPTE ST 2117-1 se centra en la compresión de planos de valores de datos, típicamente píxeles. Para comprimir y descomprimir los datos en cada plano, VC-6 utiliza representaciones jerárquicas de una pequeña estructura similar a un árbol que lleva metadatos utilizados para predecir otros árboles. Hay 3 estructuras fundamentales repetidas en cada plano. [2]
La estructura de compresión principal en VC-6 es el árbol s. Es similar a la estructura de árbol cuádruple común en otros esquemas. Un árbol s está compuesto por nodos dispuestos en una estructura de árbol, donde cada nodo se vincula a 4 nodos en la siguiente capa. El número total de capas por encima del nodo raíz se conoce como la altura del árbol s . La compresión se logra en un árbol s mediante el uso de metadatos para indicar si los niveles se pueden predecir con el transporte selectivo de datos de mejora en el flujo de bits. Cuantos más datos se puedan predecir, menos información se enviará y mejor será la relación de compresión . [6] [2]
El estándar [2] define una tabla como el nodo raíz, o la capa más alta de un árbol s , que contiene nodos para otro árbol s. Al igual que los árboles s genéricos a partir de los cuales se construyen, las tablas se organizan en capas con metadatos en los nodos que indican si se predicen o transmiten capas superiores en el flujo de bits. [6]
Las estructuras jerárquicas de s-tree y tableau en el estándar [2] se utilizan para transportar mejoras (llamadas resid-vals) y otros metadatos para reducir la cantidad de datos sin procesar que deben transportarse en la carga útil del flujo de bits. La herramienta jerárquica final es una capacidad para organizar los tableaux, de modo que los datos de cada plano (es decir, los píxeles) se puedan descuantificar en diferentes resoluciones y usarse como predictores para resoluciones más altas. Cada una de estas resoluciones está definida por el estándar [2] como un escalón. Cada escalón dentro de un plano se identifica por un índice , donde un índice más negativo indica una resolución baja y un índice más grande y más positivo indica una resolución más alta.
VC-6 es un ejemplo de codificación intra-cuadro , donde cada imagen se codifica sin hacer referencia a otras imágenes. También es intra-plano, donde no se utiliza información de un plano para predecir otro plano. Como resultado, el flujo de bits VC-6 contiene toda la información de todos los planos de una sola imagen. [2] Una secuencia de imágenes se crea concatenando los flujos de bits de varias imágenes o empaquetándolos en un contenedor como MXF , Quicktime o Matroska .
El flujo de bits VC-6 se define en el estándar [2] mediante pseudocódigo, y se ha demostrado un decodificador de referencia basado en esa definición. El encabezado primario es la única estructura fija definida por el estándar [2] . El encabezado secundario contiene información de marcadores y tamaño en función de los valores del encabezado primario. El encabezado terciario se calcula por completo y luego la estructura de carga útil se deriva de los parámetros calculados durante la decodificación del encabezado [2].
La norma [2] define un proceso denominado reconstrucción de planos para decodificar imágenes a partir de un flujo de bits. El proceso comienza con el escalón que tiene el índice más bajo. No se utilizan predicciones para este escalón. En primer lugar, se utilizan las reglas del flujo de bits para reconstruir los residuos. A continuación, se realizan procesos de desparsificación y descodificación de entropía para llenar la cuadrícula con valores de datos en cada coordenada. A continuación, estos valores se descuantifican para crear valores de rango completo que se pueden utilizar como predicciones para el escalón con el siguiente índice más alto. Cada escalón utiliza el sobremuestreador especificado en el encabezado para crear un plano predicho a partir del escalón inferior que se añade a la cuadrícula de residuos del escalón actual que se puede sobremuestrear como predicción para el siguiente escalón. [19]
El escalón final de resolución completa, definido por el estándar, está en el índice 0, y sus resultados se muestran, en lugar de usarse para otro escalón. [2]
El estándar [2] define una serie de muestreadores ascendentes básicos [20] para crear predicciones de mayor resolución a partir de escalones de menor resolución. Hay dos muestreadores ascendentes lineales, bicúbicos y nítidos, y un muestreador ascendente de vecino más cercano.
Se definen seis muestreadores ascendentes no lineales diferentes [2] mediante un conjunto de procesos y coeficientes que se proporcionan en formato JSON . [20] Estos coeficientes se generaron utilizando técnicas de redes neuronales convolucionales [21] .
{{cite book}}
: |journal=
ignorado ( ayuda ){{cite book}}
: |journal=
ignorado ( ayuda )