ES2877362T3 - Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo - Google Patents

Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo Download PDF

Info

Publication number
ES2877362T3
ES2877362T3 ES17729289T ES17729289T ES2877362T3 ES 2877362 T3 ES2877362 T3 ES 2877362T3 ES 17729289 T ES17729289 T ES 17729289T ES 17729289 T ES17729289 T ES 17729289T ES 2877362 T3 ES2877362 T3 ES 2877362T3
Authority
ES
Spain
Prior art keywords
partitioning
node
child nodes
partitioned
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17729289T
Other languages
English (en)
Inventor
Krit Panusopone
Seungwook Hong
Yue Yu
Limin Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Arris Enterprises LLC
Original Assignee
Arris Enterprises LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arris Enterprises LLC filed Critical Arris Enterprises LLC
Priority claimed from PCT/US2017/034590 external-priority patent/WO2017205700A1/en
Application granted granted Critical
Publication of ES2877362T3 publication Critical patent/ES2877362T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un aparato para decodificar datos de video que comprende uno o más procesadores configurados para: recibir un tren de bits que indica cómo se particionó una unidad de árbol de codificación en unidades de codificación de acuerdo con una estructura de particionamiento que permite que los nodos raíz se particionen con particionamiento binario simétrico y con particionamiento ternario asimétrico, en donde un nodo raíz puede particionarse de forma recursiva mediante el uso de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico; analizar dicho tren de bits para determinar cómo se particionó la unidad de árbol de codificación mediante el uso de particionamiento de árbol cuaternario, dicho particionamiento binario simétrico y/o dicho particionamiento ternario asimétrico; analizar dicho tren de bits para determinar una simetría de dicho particionamiento, para determinar si al menos uno de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se usó para particionar una unidad de codificación padre en nodos hijos, en donde dicho particionamiento binario simétrico divide un nodo padre de dicha unidad de codificación padre en nodos hijos de igual tamaño, y el particionamiento ternario asimétrico divide un nodo padre ya sea en un particionamiento horizontal o en un particionamiento vertical, pero no un particionamiento mixto horizontal y vertical, en tres nodos hijos en donde dos de los tres nodos hijos son de igual tamaño y en donde un tercio de los tres nodos hijos es el doble del tamaño de cada uno de dichos dos de los tres nodos hijos que son de dichos tamaños iguales, donde dichos dos de los tres nodos hijos están más lejos de un centro de un nodo padre respectivo con dicho tercer de los tres nodos hijo que se particiona y que está en dicho centro; identificar cada uno de los nodos hijos dentro de cada unidad de codificación padre respectiva, en donde un nodo puede particionarse de forma recursiva en nodos más pequeños, en donde tanto dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se permiten en la estructura de particionamiento en cualquier orden durante un particionamiento recursivo de un nodo raíz o un nodo padre; y decodificar los nodos hijos identificados.

Description

DESCRIPCIÓN
Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo Reivindicación de prioridad
Esta Solicitud reivindica la prioridad de conformidad con 35 U.S.C § 119(e) de la Solicitud Provisional de Estados Unidos publicada anteriormente con Núm. de serie 62/341,325, publicada el 25 de mayo de 2016, de la Solicitud Provisional de Estados Unidos con Núm. de serie 62/408,696, publicada el 14 de octubre de 2016 y de la Solicitud Provisional de Estados Unidos publicada anteriormente con Núm. de serie 62/414,060, presentada el 28 de octubre de 2016.
Campo técnico
La presente descripción se refiere al campo de la codificación de videos, particularmente un esquema de particionamiento en bloques para JVET que permite el particionamiento de árbol binario, ternario y cuaternario, de manera simétrica y/o asimétrica, en una estructura de árbol binario, ternario, cuaternario (BTQT).
Antecedentes
Las mejoras técnicas en los estándares de codificación de video en evolución ilustran la tendencia de aumentar la eficiencia de la codificación para permitir velocidades de bits más altas, resoluciones más altas y una mejor calidad de video. El Equipo Conjunto de Exploración de Video está desarrollando un nuevo esquema de codificación de video denominado JVET. Al igual que otros esquemas de codificación de video como HEVC (codificación de video de alta eficiencia), JVET es un esquema de codificación predictiva espacial y temporal híbrido basada en bloques. Sin embargo, con relación a HEVC, JVET incluye muchas modificaciones en la estructura, sintaxis, restricciones y mapeo del tren de bits para la generación de imágenes decodificadas. JVET se ha implementado en codificadores y decodificadores de modelo de exploración conjunta (JEM).
El documento US 2011/134998 A1 describe la codificación de video por predicción de movimiento mediante el uso de partición arbitraria, y un método y aparato para la decodificación de video por predicción de movimiento mediante el uso de partición arbitraria. El documento WO 2014/120367 A1 describe transformaciones paramétricas adaptativas de contenido para la codificación de video de próxima generación.
Resumen
La invención es un aparato para la decodificación de datos de video como se reivindicó en la reivindicación 1 y un método para la decodificación de datos de video como se reivindicó en la reivindicación 4.
Breve Descripción de los Dibujos
Se explican más detalles de la presente invención con la ayuda de los dibujos adjuntos en los que:
La Figura 1 representa la división de un fotograma en una pluralidad de Unidades de Árbol de Codificación (CTU). La Figura 2 representa un particionamiento ilustrativo de una CTU en unidades de codificación (CU) mediante el uso de particionamiento de árbol cuaternario y particionamiento binario simétrico.
La Figura 3 representa una representación de árbol cuaternario más árbol binario (QTBT) del particionamiento de la Figura 2.
La Figura 4A representa cuatro posibles tipos de particionamiento binario asimétrico de una CU en dos CU más pequeñas.
La Figura 4B representa una división ilustrativa de una CTU en Unidades de Codificación (CU) que incluye el uso del particionamiento representado en la Figura 4A.
La Figura 4C representa una representación de árbol cuaternario más árbol binario (QTBT) del particionamiento de la Figura 4B.
La Figura 5A representa un particionamiento ilustrativo de una CTU mediante el uso de un particionamiento de árbol cuaternario para producir cuatro nodos cuadrados iguales.
La Figura 5B ilustra el particionamiento binario para dividir un nodo padre en dos nodos hijos del mismo tamaño de forma simétrica.
La Figura 5C ilustra un ejemplo de particionamiento ternario para una estructura de codificación de árbol binario, ternario, cuaternario (BTQT).
La Figura 5D representa varios tipos de particionamiento asimétrico de un nodo padre en dos nodos hijos de tamaños desiguales.
La Figura 5E representa varios tipos de particionamiento ternario en las que un nodo padre se particiona asimétricamente en tres nodos hijos
La Figura 5F ilustra modalidades para restricciones adicionales colocadas en el particionamiento BTQT, donde cada uno de los Tipos 1-4 proporciona variaciones en la partición vertical y/u horizontal.
La Figura 6A ilustra un ejemplo de un BTQT propuesto que incluye particionamiento mediante el uso de particionamiento asimétrico de acuerdo con las técnicas descritas
La Figura 6B representa una representación BTQT del particionamiento de la Figura 6A.
La Figura 6C ilustra un ejemplo de sintaxis para el particionamiento que incluye tanto nodos cuadrados (SN) como nodos restringidos (RN).
La Figura 7 representa un diagrama de bloques simplificado para la codificación CU en un codificador JVET. La Figura 8 representa 67 posibles modos de intrapredicción para componentes de luma en JVET.
La Figura 9 representa un diagrama de bloques simplificado para la codificación CU en un decodificador JVET. La Figura 10 representa una modalidad de un método de codificación CU en un decodificador JVET.
La Figura 11 representa una modalidad de un sistema informático adaptado y/o configurado para procesar un método de codificación CU.
La Figura 12 es un diagrama de flujo que ilustra un método para realizar las técnicas descritas.
La Figura 13 es una vista de alto nivel de un dispositivo fuente y un dispositivo de destino que puede incorporar características de los sistemas y dispositivos descritos en la presente descripción.
Descripción detallada
En la presente descripción se describe una estructura de bloque de codificación flexible para JVET que permite múltiples estructuras de árbol llamadas estructuras de particionamiento de árbol binario, ternario, cuaternario (BTQT). Como se describe, las modalidades para BTQT admiten particionamiento binario asimétrico (AP). En las modalidades, BTQT se diseña de manera que no tenga muchas restricciones y no requiera una complejidad excesiva.
La Figura 1 representa la división de un fotograma en una pluralidad de Unidades de árbol de codificación (CTU) 100. Un fotograma puede ser una imagen en una secuencia de video, que puede incluir una pluralidad de fotogramas. Un fotograma puede incluir una matriz o un conjunto de matrices, con valores de píxeles que representan medidas de intensidad en la imagen. Los valores de los píxeles pueden definirse para representar el color y el brillo en la codificación de video a todo color, donde los píxeles se dividen en tres canales. Por ejemplo, en un espacio de color YCbCr, los píxeles pueden tener un valor de luminancia, Y, que representa la intensidad del nivel de gris en la imagen, y dos valores de crominancia, Cb y Cr, que representan la medida en que el color difiere del gris al azul y al rojo. En otras modalidades, los valores de los píxeles pueden representarse con valores en diferentes espacios de color o modelos. La resolución del video puede determinar el número de píxeles en un fotograma. Una resolución más alta puede significar más píxeles y una mejor definición de la imagen, pero también puede generar mayores requisitos de ancho de banda, almacenamiento y transmisión.
Los fotogramas de una secuencia de vídeo, o más específicamente las unidades de árbol de codificación dentro de cada fotograma, se pueden codificar y decodificar mediante el uso de JVET. JVET es un esquema de codificación de video desarrollado por el Equipo Conjunto de Exploración de Video. Se implementaron versiones de JVET en codificadores y decodificadores JEM (Modelo de Exploración Conjunto). Al igual que otros esquemas de codificación de video como HEVC (codificación de video de alta eficiencia), JVET es un esquema de codificación predictiva espacial y temporal híbrido basada en bloques. Durante la codificación con JVET, un fotograma se divide primero en bloques cuadrados denominados CTU 100, como se muestra en la Figura 1. Por ejemplo, las CTU 100 pueden ser cuadrados de 128x128 píxeles.
La Figura 2 representa un particionamiento ilustrativo de una CTU 100 en CU 102, las cuales son las unidades básicas de predicción en la codificación. La unidad de codificación puede representarse por una región (en términos de píxeles/muestras de luma) y es un nodo final de la CTU particionada.
Generalmente, la decisión de codificar un área de imagen mediante el uso de predicción interimagen (temporal) o intraimagen (espacial) se puede tomar en el nivel de la unidad de codificación, de manera que un segmento se divide en una secuencia de CTU durante el proceso de codificación. Cada CTU 100 en un fotograma puede particionarse en una o más CU (Unidades de codificación) 102. Las CU 102 pueden usarse para la predicción y la transformación como se describe más abajo. A diferencia de HEVC, en una o más modalidades en JVET, las CU 102 pueden ser rectangulares o cuadradas. Además, en una o más modalidades, las CU de JVET pueden codificarse sin unidades de predicción o unidades de transformación, lo que elimina la separación de los conceptos de CU, PU y TU y admite flexibilidad para formas de partición de CU adicionales para coincidir mejor con las características locales de los datos de video. En una o más modalidades, el codificador incluye un proceso para probar una pluralidad de modos de codificación que no requiere más particionamiento para la predicción y la transformación, lo que puede reducir los costos, la complejidad y el tiempo de codificación. En algunos casos, el particionamiento de las Cu 102 todavía puede denominarse particionamiento en unidades de predicción o unidades de transformación. Las CU 102 pueden ser tan grandes como sus CTU raíz 100, o ser subdivisiones más pequeñas de una CTU raíz 100 tan pequeñas como unidades 4x4.
En JVET, una CTU 100 puede particionarse en CU 102 de acuerdo con un esquema de árbol cuaternario más árbol binario (QTBT) en el que la CTU 100 puede dividirse en unidades cuadradas de acuerdo con un particionamiento de árbol cuaternario o binario, y esas unidades cuadradas pueden dividirse horizontal y/o verticalmente según árbol cuaternario o árboles binarios. Por ejemplo, los nodos hijos de una división binaria pueden dividirse más mediante el uso de particionamiento binario. Por lo tanto, el esquema de codificación QTBT de JVET puede ser más flexible que la estructura árbol cuaternario (QT) de HEVC porque además del particionamiento a QT de un nodo padre en nodos hijos de igual tamaño, QTBT permite el particionamiento binario (BP) de un nodo padre en nodos hijos horizontal o verticalmente. La estructura QTBT introducida, por lo tanto, representa un árbol en el que un nodo padre puede dividirse mediante el uso de árbol cuaternario en cuatro nodos hijos, o al usar otros métodos de particionamiento, como se describe con más detalle más abajo. Cada uno de los nodos hijos puede convertirse en un nodo padre para otra división en nodos hijos adicionales. Aunque, en una o más modalidades, una vez que se produce una división binaria, es posible que no se permita más particionamiento de árbol cuaternario.
En algunas modalidades, JVET puede limitar el particionamiento binario a particionamiento simétrico en la porción de árbol binario de un QTBT, en el cual los nodos padres pueden dividirse por la mitad vertical u horizontalmente a lo largo de una línea media. A manera de ejemplo no limitativo, la Figura 2 muestra una CTU 100 particionada en CU 102, con líneas continuas que indican una división de árbol cuaternario y líneas discontinuas que indican una división simétrica de árbol binario. Como se ilustra, la división binaria permite la división horizontal simétrica y la división vertical para definir la estructura de la CTU y su subdivisión en CU.
Se observa que el término bloque de codificación se usa generalmente para definir una región que cubre un componente particular (por ejemplo, luma) y puede diferir en la ubicación espacial cuando se considera un submuestreo de croma como tal como 4:2:0. También se usa un bloque para describir la forma de las CTU y CU, pero los términos deben quedar claros en el contexto. Por ejemplo, como se describe con más detalle más abajo, una CU a veces incluye bloques de codificación (CB) de diferentes componentes de color, por ejemplo, una CU contiene un CB de luma y dos CB de croma en el caso de los segmentos P y B de formato croma 4:2:0 y, a veces, consta de un CB de un solo componente, por ejemplo, una CU contiene solo un CB de luma o solo dos CB de croma en el caso de los segmentos I. En una o más modalidades, la CTU incluye un bloque de árbol de codificación de luma y los correspondientes bloques de árbol de codificación de croma y elementos de sintaxis, que pueden particionarse en bloques más pequeños mediante el uso de una estructura de árbol y señalización árbol cuaternario-plus, donde la sintaxis de la estructura de árbol de la CTU especifica el tamaño y las posiciones de sus bloques de codificación de luma y de croma.
La Figura 3 muestra una representación QTBT del particionamiento de la Figura 2 mediante el uso de una estructura de árbol. El árbol puede usarse para representar un conjunto finito de nodos con un nodo raíz único. En una estructura de árbol, las muestras se pueden procesar en unidades de bloques de árbol de codificación. A cada bloque de árbol de codificación se le puede asignar una partición, la partición señaliza para identificar los tamaños de bloque para la interpredicción o intrapredicción y para la codificación de transformación. El particionamiento puede ser un particionamiento recursivo de árbol cuaternario o, como se muestra en la presente descripción, un método de árbol cuaternario más particionamiento, que contempla mucha más flexibilidad para la estructura de árbol de codificación. La división de un componente en bloques de árbol de codificación es un particionamiento.
Una CTU, tal como CTU 100, es un tipo de bloque de árbol de codificación que representa un cuadrado NxN completo de muestras de imágenes para algún valor de N, donde el primer nodo raíz en la jerarquía más alta de la estructura de árbol (profundidad 0) se asocia con todo el bloque de árbol de codificación o CTU. Un nodo raíz con profundidad 0 puede particionarse en dos o más nodos hijos, también denominados en la presente descripción nodos hoja. Por ejemplo, un nodo de árbol cuaternario podría particionarse más mediante un árbol binario, donde el nodo hoja de árbol cuaternario es también el nodo raíz de árbol binario que tiene una profundidad de árbol binario como 0. Además, aunque cada uno de los nodos separados de un nodo anterior puede ser nodos hijos o nodos hoja, dichos nodos también son nodos padres cuando el nodo hijo se particiona más en nodos hijos adicionales. Por lo tanto, un nodo puede existir como nodo padre y como nodo hijo, y un nodo raíz también puede denominarse en la presente descripción como nodo padre.
La estructura de árbol se divide entre múltiples ramas y una sola rama puede incluir varios nodos, hasta que se alcanza una hoja final a lo largo de cada rama, que se denomina como la unidad de codificación. Por lo tanto, un nodo hoja final en una rama dividida de forma recursiva también se denomina en la presente descripción nodo hoja terminal o nodo hijo final. En conjunto, estos nodos hoja finales representan el conjunto final de unidades de codificación (CU) que forman la CTU y no se particionará más. Por lo tanto, donde un nodo hoja representa una unidad de codificación, los términos pueden usarse indistintamente, y debe entenderse que un nodo hoja final corresponde a la unidad de codificación final a lo largo de la rama respectiva.
El nodo raíz de la Figura 3 se muestra dividido mediante el uso de particionamiento de árbol cuaternario que da como resultado cuatro hijos iguales. Cada uno de los cuatro nodos que se ramifican desde el nodo raíz son, por lo tanto, nodos hijos. Como se muestra en la Figura 3, los cuadrados representados por los nodos hoja de árbol cuaternario pueden dividirse simétricamente cero o más veces mediante el uso de árboles binarios, los nodos hoja son de árbol cuaternario nodos hijos, pero también nodos padres de árboles binarios, donde un nodo raíz puede referirse a nodos padres en varias profundidades de la estructura de árbol. El nodo padre de una división binaria representa un bloque padre que puede particionarse más en dos bloques o nodos hijos. En cada nivel de la porción de árbol binario, un nodo cuadrado puede dividirse simétricamente, ya sea vertical u horizontalmente. Un indicador puesto en "0" indica que el nodo cuadrado se divide simétricamente de manera horizontal, mientras que un indicador puesto en "1" indica que el nodo cuadrado se divide simétricamente de manera vertical.
En una o más modalidades, JVET puede permitir particionamiento binario simétrico o particionamiento binario asimétrico en una porción de árbol binario de un QTBT. En una o más modalidades, el particionamiento asimétrico o asimétrico puede ocurrir a cualquier profundidad en la estructura de árbol. El particionamiento asimétrico de movimiento (AMP) se permitió en un contexto diferente en HEVC cuando se particionan unidades de predicción (PU). Sin embargo, para particionar las CU 102 en JVET de acuerdo con una estructura QTBT, el particionamiento binario asimétrico puede llevar a un particionamiento mejorado con relación al particionamiento binario simétrico, cuando las áreas correlacionadas de una CU 102 no se colocan a ambos lados de una línea media que atraviesa el centro de la CU 102. A manera de ejemplo no limitativo, cuando una CU 102 representa un objeto cerca del centro de la CU y otro objeto al lado de la CU 102, la CU 102 puede particionarse asimétricamente para colocar cada objeto en CU 102 separadas más pequeñas, de diferentes tamaños.
La Figura 4A representa cuatro tipos posibles de particionamiento binario asimétrico en los que una CU 102 se divide en dos CU 102 más pequeñas a lo largo de una línea que atraviesa la longitud o la altura de la CU 102, de manera que uno de los CU 102 más pequeños es el 25 % del tamaño de la CU padre 102 y la otra es el 75 % del tamaño de la CU padre 102. Los cuatro tipos de particionamientos binarios asimétricos que se muestran en la Figura 4A permiten que una CU 102 se divida a lo largo de una línea (a) 25 % del camino desde el lado izquierdo de la CU 102, (b) 25 % del camino desde el lado derecho de la CU 102, (c) 25 % del camino desde la parte superior de la CU 102, o (d) el 25 % del camino desde la parte inferior de la CU 102. En modalidades alternativas, se puede colocar en cualquier otra posición una línea de particionamiento asimétrico en la que se divide una CU 102, de manera que la CU 102 no se divide simétricamente por la mitad. Por ejemplo, la división puede ser del 30 % y el 70 %, o del 20 % y el 80 %. Sin embargo, las limitaciones para el particionamiento que se basan en el tamaño de la unidad de codificación padre y/o la partición anterior se describen en más detalle más abajo.
La Figura 4B representa un ejemplo no limitativo de una CTU 100 particionada en CU 102 mediante el uso un esquema que permite tanto el particionamiento binario simétrico como el particionamiento binario asimétrico en la porción de árbol binario de un QTBT. En la Figura 4B, las líneas discontinuas muestran líneas de particionamiento binario asimétrico, en las que una CU 102 padre se particionó mediante el uso de uno de los tipos de particionamiento que se muestran en la Figura 4A.
La Figura 4C muestra una representación QTBT del particionamiento e la Figura 4B. En la Figura 4C, dos líneas continuas que se extienden desde un nodo indican un particionamiento simétrico en la porción de árbol binario de un QTBT, mientras que dos líneas discontinuas que se extienden desde un nodo indican un particionamiento asimétrico en la porción de árbol binario.
La sintaxis puede codificarse en el tren de bits que indica cómo se particionó una CTU 100 en las CU 102. Un tren de bits puede comprender una secuencia de bits, en la forma de un tren unitario de capa de abstracción de red (NAL) o un flujo de bits que forma la representación de imágenes codificadas y datos asociados que forman una o más secuencias de vídeo codificadas. Una sintaxis puede referirse a un elemento de datos representado en el tren de bits, también denominado elemento de sintaxis. Cada estructura de sintaxis que incluye cero o más elementos de sintaxis presentes juntos en el tren de bits puede incluirse en la unidad NAL y pueden presentarse en un orden especificado.
Como se describe con más detalle más abajo, un elemento de sintaxis puede ser un indicador que es una variable o un elemento de sintaxis de un solo bit que puede tomar uno de dos valores posibles: 0 y 1, o el elemento de sintaxis puede tener múltiples descriptores o valores disponibles. Una sintaxis puede ser una declaración o un elemento con un descriptor asociado. El elemento de sintaxis puede ser una expresión usada para especificar las condiciones de existencia, tipo y cantidad de la sintaxis. Cuando aparece un elemento de sintaxis, este puede especificar qué elemento de sintaxis analizar del tren de bits. Un puntero de tren de bits puede avanzar a la siguiente posición después del elemento de sintaxis en el proceso de análisis del tren de bits.
A manera de ejemplo no limitativo, la sintaxis puede codificarse en el tren de bits de manera que indique qué nodos se dividieron con particionamiento de árbol cuaternario, cuáles se dividieron con particionamiento binario simétrico y cuáles se dividieron con particionamiento binario asimétrico. De manera similar, la sintaxis puede codificarse en el tren de bits para los nodos divididos con particionamiento binario asimétrico de manera que indican qué tipo de particionamiento binario asimétrico se usó, tal como uno de los cuatro tipos que se muestran en la Figura 4A. Por lo tanto, el particionamiento y organización de una estructura de árbol puede expresarse mediante una serie de banderas o elementos de sintaxis. Además, se puede señalar un elemento de sintaxis para indicar qué tipo de división (es decir, horizontal o vertical) se usa, donde un ejemplo de bandera con un valor 0 indica división horizontal y 1 indica división vertical. En algunos casos, tal como el particionamiento de árbol cuaternario, la señalización puede no ser necesaria ya que el particionamiento de árbol cuaternario es una división igual horizontal y verticalmente en 4 subbloques iguales.
Los ejemplos de nodos hijos y su particionamiento que se incluyen en la presente descripción demuestran que un nodo hijo puede dividirse o particionarse en unidades de codificación finales más pequeñas. Un nodo raíz puede representar la CTU completa y también se denomina nodo padre cuando se particiona en nodos hijos. Por lo tanto, un nodo puede representar tanto un bloque padre como un bloque hijo porque los nodos hijos se convierten en nodos padre si/cuando se particionan.
Aunque en esta descripción se representan modalidades adicionales, como se describe más abajo con respecto a la Figura 6B, la Figura 4C representa una estructura QTBT donde se colocaron una combinación de restricciones. Los parámetros pueden configurarse para controlar la división de acuerdo con QTBT, tal como el tamaño de la CTU, los tamaños mínimos para los nodos hoja de árbol cuaternario y/o binario, el tamaño máximo para el nodo raíz de árbol binario y la profundidad máxima para los árboles binarios. Por ejemplo, los nodos pueden dividirse de forma recursiva en nodos más pequeños hasta que se haya producido un tamaño mínimo de unidad de codificación o un número máximo de particiones. Además pueden colocarse restricciones que limiten el tipo de particionamiento permitido en dependencia de otros factores, tal como el tipo de particionamiento previo de dicho nodo padre. Por ejemplo, si el nodo hijo es el resultado de un particionamiento binario, pueden implicarse restricciones con respecto al tipo de particionamiento adicional permitido, si lo hubiera. En otro ejemplo, si el nodo hijo es el resultado de un particionamiento asimétrico, pueden estar implicadas restricciones con respecto al tipo de particionamiento adicional permitido, si lo hubiera. Debe entenderse que una o más de las restricciones representadas pueden eliminarse o definirse mediante una combinación de subconjunto de las que se muestran.
Como se representa en la Figura 4C, en una o más modalidades, el uso de particionamiento asimétrico puede limitarse a dividir las CU 102 de los nodos hoja de la(s) porción(es) de árbol cuaternario de un QTBT, donde el particionamiento asimétrico no está permitido excepto en el nodo hoja de un árbol cuaternario. En una o más modalidades, las CU 102 en los nodos hijos que se dividieron a partir de un nodo padre mediante el uso del particionamiento de árbol cuaternario en la porción de árbol cuaternario pueden ser las CU 102 finales, tales como la c Tu 102a. En una o más modalidades, las CU 102 en los nodos hijos divididos a partir del nodo padre mediante el uso del particionamiento de árbol cuaternario pueden dividirse más mediante el uso de al menos uno de los particionamientos de árbol cuaternario 102be, los particionamientos binarios simétricos 102f, 102g y/o los particionamientos binarios asimétricos 102h, 102i. En una o más modalidades, los nodos hijos en la(s) porción(es) de árbol binario que se dividieron mediante el uso de particionamientos binarios simétricos pueden ser CU finales 102, tales como 102f. En una o más modalidades, los nodos hijos en la porción de árbol binaria dividida mediante el uso de particionamientos binarios simétricos pueden dividirse más de forma recursiva una o más veces mediante el uso de solo particionamientos binarios simétricos, tales como 102j, 102k. En una o más modalidades, los nodos hijos en la porción de árbol binario que se dividieron de un nodo hoja QT mediante el uso de particionamiento binario asimétrico pueden ser CU finales 102, tales como 102h, 102i, sin permitir más divisiones.
En modalidades en donde el uso de particionamiento asimétrico se limita a dividir nodos hoja de árbol cuaternario, la complejidad de la búsqueda puede reducirse y/o limitarse los bits de sobrecarga. En una o más modalidades de JVET, se puede imponer una condición que prohíba el particionamiento de árbol cuaternario en un nodo de árbol binario, de manera que un nodo hijo con particionamiento binario no pueda particionarse más mediante el uso de árbol cuaternario. En cualquier escenario, el particionamiento asimétrico en una estructura QTBT puede emplearse mediante el uso de las técnicas descritas para limitar la señalización de sobrecarga, de manera que no se requiera una señalización de sobrecarga excesiva. Por ejemplo, en las modalidades en las que solo los nodos hoja de árbol cuaternario se dividen con particionamiento asimétrico, el uso de particionamiento asimétrico puede indicar directamente el final de una rama de la porción QT sin otra sintaxis o señalización adicional. Este tipo de señalización también puede denominarse señalización implícita, es decir, para señalar qué opción se selecciona al usar la información disponible en el decodificador para tomar una decisión sin una señal o indicador explícitos. Tal técnica puede ser más eficiente cuando otro elemento de sintaxis incluye inherentemente información que el indicador explícito proporciona de manera redundante. De manera similar, para las modalidades en las que los nodos particionados asimétricamente no pueden particionarse más, el uso de particionamiento asimétrico en un nodo también puede indicar directamente que sus nodos hijos particionados asimétricamente son CU finales 102 sin otra sintaxis o señalización adicional.
Una o más modalidades descritas en la presente descripción incluyen esquemas en los que el particionamiento asimétrico solo se permite en el nivel inferior de una porción de árbol cuaternario de una estructura QTBT propuesta, lo que no permite más divisiones para nodos particionados asimétricamente. Tales limitaciones, por ejemplo, no se permite más particionamiento a un nodo hijo si su padre tenía particionamiento asimétrico, pueden imponerse en base a la complejidad del codificador/decodificador. Además, como se describe con más detalle más abajo, para las dimensiones de un bloque hijo que es un producto del particionamiento asimétrico y no es un cuadrado, más divisiones asimétricas que crean relaciones no enteras con respecto a los otros nodos hijos y el nodo padre raíz puede requerir complejidad de codificación adicional para diseñar un proceso de transformación para el tamaño no entero. No se admite la transformación de tamaño impar.
Si un nodo usa particionamiento de árbol cuaternario, por lo tanto, el nodo puede tener hijos y los hijos pueden usar particionamiento de árbol cuaternario, particionamiento binario y/o particionamiento asimétrico. Pero, en las modalidades en donde el particionamiento asimétrico solo se permite en el nivel inferior, si un nodo usa el particionamiento asimétrico, no se permiten más divisiones para ese nodo. Además, en las modalidades, si un nodo usa particionamiento binario, el nodo puede tener hijos pero sus nodos hijos solo pueden usar particionamiento binario. Las Figuras 4B y 4C ilustran un ejemplo de un QTBT con particionamiento asimétrico.
En modalidades alternativas, tal como cuando es menos preocupante limitar la complejidad de la búsqueda y/o limitar el número de bits de sobrecarga, el particionamiento asimétrico puede usarse para dividir nodos generados con particionamiento de árbol cuaternario, particionamiento binario simétrico y/o particionamiento binario asimétrico. En algunos casos, un enfoque flexible para el particionamiento puede ser demasiado flexible y requerir operaciones de codificador muy complejas, o pueden ser demasiado restrictivas y dar como resultado un rendimiento de codificación subóptimo.
Las Figuras 5A-5E proporcionan ejemplos de particionamiento flexible en JVET de manera modular y logran flexibilidad mientras se logra una menor complejidad del codificador. Como se describió, múltiples estructuras de árbol pueden admitirse, tal como particionamiento de árbol binario, ternario y cuaternatrio (BTQT) y pueden admitirse uno o más tipos de división, tal como divisiones horizontales o verticales. BTQT admite además particionamiento binario asimétrico. En el BTQT propuesto, se admiten cuatro métodos de particionamiento: particionamiento de árbol cuaternario, particionamiento binario, particionamiento ternario y particionamiento asimétrico, y en las modalidades los métodos de particionamiento pueden ocurrir en cualquier orden sin límites en el tipo de operaciones de particionamiento que ocurren de forma recursiva dentro de una CTU (o, que se visualiza mediante el uso de árbol de codificación, sin límites en el particionamiento mostrado en serie, o de forma recursiva, a lo largo de una rama derivada de un nodo raíz BTQT. La sintaxis que representa la estructura de árbol y el orden de procesamiento de las CU generadas puede especificar el orden donde es importante o puede señalar un indicador cuando no se necesita un orden de procesamiento específico para generar el árbol mediante el decodificador.
Como se describió anteriormente, el particionamiento empleado puede estar sujeto a determinadas restricciones. Por ejemplo, un nodo puede particionarse de forma recursiva hasta que su nivel o profundidad de nivel alcance un nivel o profundidad de nivel máximos permisibles. El proceso de división para el nodo puede indicarse de forma recursiva, y pueden definirse elementos de sintaxis para la última unidad de codificación que no se particiona más, o un nodo hoja final, en el nivel. La división recursiva se refiere al particionamiento sucesivo que ocurre dentro de un solo nodo. Cuando un nodo hijo se divide, se convierte en un nodo padre que tiene nodos hijos, y cada nodo hijo sucesivo que resulta de particionamiento sucesivo es el resultado de particionamiento recursivo.
La Figura 5A ilustra el particionamiento de árbol cuaternario para dividir un nodo padre en cuatro nodos hijos del mismo tamaño en forma cuadrada. Los nodos hijos de dicho particionamiento de árbol cuaternario son nodos cuadrados (SN).
La Figura 5B ilustra el particionamiento binario para dividir un nodo padre en dos nodos hijos del mismo tamaño de forma simétrica. Los nodos hijos del particionamiento binario se denominan nodos binarios (BN).
La Figura 5C ilustra un ejemplo de particionamiento ternario, que es una división del nodo padre en 3 nodos hijos de tamaños desiguales de manera asimétrica (por ejemplo, al menos un nodo hijo es más grande que los otros dos).
Las Figuras 5D y Figura 5E representan ejemplos no limitativos de particionamiento binario y ternario asimétricos que admiten particionamientos modulares, que pueden usarse en combinación. En tales ejemplos, el particionamiento asimétrico divide un nodo padre en dos nodos hijos de tamaños desiguales de una manera asimétrica (uno es más grande que el otro), tal como se muestra en la Figura 5D, o tres nodos hijos de tamaño desigual de forma asimétrica, tal como la que se muestra en la Figura 5E. Para la partición en tres nodos, tal como se muestra en el Tipo 1 y el Tipo 2 en la Figura 5E, en una o más modalidades, un nodo hijo puede ser más grande que los otros dos nodos hijos iguales más pequeños. En una o más modalidades del particionamiento ternario de la Figura 5E, los tres nodos hijos pueden tener un tamaño desigual, un primer nodo más grande que los otros dos y un segundo nodo más grande que un tercero pero más pequeño que el primero. El particionamiento asimétrico, particionamiento binario y ternario, como se muestra en las Figuras 5D-5E, pueden usarse juntos sin problemas.
Como se describe en la presente descripción, se pueden modificar las estructuras de codificación flexibles que permiten el particionamiento asimétrico como parte de una estructura BTQT. Las técnicas descritas y que se describen en más detalle más abajo incluyen un ejemplo de particionamiento mediante el uso de árbol cuaternario, al particionar después las unidades hijo resultantes de la partición de árbol cuaternario mediante el uso de particionamiento binario o ternario.
Las Figuras 5D y 5E representan el particionamiento asimétrico de un nodo padre en dos nodos hijos de tamaños desiguales de una manera de biparticionamiento asimétrico para el BTQT propuesto. En la Figura 5D, el nodo padre puede ser un nodo cuadrado que resulta del particionamiento de árbol cuaternario de un nodo raíz, por ejemplo, donde más particionamiento da como resultado que el nodo hijo B sea tres veces más grande que el nodo hijo A para una relación de 3:1. Cada uno de los tipos 1, 2, 3 y 4 representados en la Figura 5D se particionan de manera diferente en dirección horizontal o vertical, pero con la misma relación de 3:1. En modalidades, el nodo hijo más grande del particionamiento asimétrico es un nodo restringido y el nodo hijo más pequeño es un nodo binario, de manera que en la Figura 5D el nodo hijo A denota un nodo binario (BN) y el nodo hijo B denota un nodo restringido (RN), donde el tamaño del nodo hijo B es mayor que el nodo hijo A.
la Figura 5E representa el particionamiento ternario en el que un nodo padre se particiona asimétricamente en tres nodos hijos de tamaño desigual de manera asimétrica, donde al menos un nodo es dos veces más grande que los otros dos, para una relación de tamaño de 2:1:1. Por ejemplo, los nodos hijos A y C denotan nodos binarios más pequeños y el nodo hijo B denota el nodo binario más grande, donde el tamaño de B es dos veces el tamaño del nodo hijo A y dos veces el tamaño del nodo hijo C, donde los nodos hijos A y C son de igual tamaño. Los nodos hijos resultantes de este tipo de particionamiento ternario pueden considerarse nodos ternarios. Y como ocurre con la Figura 5D, cada uno de los tipos 1 y 2 representados en la Figura 5E se particionan de forma diferente en dirección horizontal o vertical.
Las estructuras de bloques son críticas para los sistemas de compresión de video. Una estructura de particionamiento que admita árbol binario, árbol ternario y árbol cuaternario puede proporcionar una ganancia de codificación significativa sobre una estructura QTBT, sin embargo, los bits de sobrecarga pueden ser demasiado altos debido a la cantidad de redundancia para llegar a determinados resultados de particionamiento.
Como se ilustra en las modalidades ilustrativas, el particionamiento puede restringirse de determinadas formas y tales restricciones pueden usarse en combinación. Al imponer reglas sobre el particionamiento pueden imponerse restricciones para usar las técnicas de particionamiento de una manera más eficiente. Por ejemplo, es posible que no se permita que se produzca una división ternaria como resultado de divisiones binarias asimétricas sucesivas. Como se describe en más detalle más abajo, puede incluirse una sintaxis específica para la división ternaria y se puede evitar la necesidad de divisiones binarias asimétricas sucesivas para lograr una división ternaria.
Por ejemplo, un ejemplo de particionamiento para un BTQT propuesto puede incluir las siguientes reglas:
1. si un nodo usa particionamiento de árbol cuaternario, los nodos hijos pueden ser nodos cuadrados que pueden usar al menos una de particionamiento de árbol cuaternario, particionamiento binario, particionamiento ternario y/o particionamiento asimétrico;
2. si un nodo usa particionamiento asimétrico (tal como el particionamiento asimétrico 3:1 que se muestra en la Figura 5D), los nodos hijos pueden incluir un nodo binario y un nodo restringido, donde el nodo binario secundario puede usar además particionamiento binario, particionamiento ternario o particionamiento asimétrico, y
3. si un nodo usa particionamiento binario o ternarias, los nodos hijos son nodos binarios y cada uno de ellos puede usar particionamiento binario, particionamiento ternario o particionamiento asimétrico.
En las formas de modalidad, el nodo restringido (el nodo hijo más grande) en el particionamiento ternario puede no permitir más particionamiento del nodo restringido. En modalidades alternativas, se permite más particionamiento del nodo restringido, o se permite en algunas circunstancias y no en otras. Hay varias reglas posibles para los nodos restringidos. Por ejemplo, el particionamiento binario, el particionamiento ternario o el particionamiento asimétrico pueden aplicarse a un nodo restringido cuando se permite tal particionamiento. En las modalidades, solo se permite el particionamiento ternario para el nodo restringido.
Las particiones ilustradas por las Figuras 5D y 5E son ejemplos de métodos de particionamiento asimétrico binario y ternario, pero debe entenderse que puede haber diferentes relaciones de tamaño entre tres nodos hijos que resultan de una o más técnicas de particionamiento. Por ejemplo, el nodo hijo más grande resultante del particionamiento puede ser cuatro veces más grande que los nodos hijos más pequeños (4:1:1) en el particionamiento ternario o el nodo hijo más pequeño en el caso del particionamiento binario (4:1). En una o más modalidades, los nodos hijos también son asimétricos, tal como una relación de 4:2:1, o cualquier otra división asimétrica que da como resultado nodos hijos de diferentes tamaños (por ejemplo, 7:4:3, 5:2:1, 2 5:1:1). En otras palabras, puede haber más de dos métodos AP y/o proporciones de tamaño entre los nodos hijos de cada AP, donde las proporciones de tamaño para el particionamiento asimétrico pueden ser diferentes de 1.
La Figura 5F ilustra modalidades para restricciones adicionales colocadas en el particionamiento QTBT, donde cada uno de los Tipos 1-4 proporciona variaciones en la partición vertical y/u horizontal. Pueden ser convenientes restricciones adicionales para reducir la sobrecarga. Por ejemplo, los nodos binarios que son nodos hijos de un nodo padre restringido pueden dividirse de manera que el nodo binario más grande se encuentre junto a los nodos binarios complementarios de su nodo padre restringido, y se particiona de manera que el nodo binario más pequeño tenga la misma dimensión que el nodo complementario binario de su nodo padre restringido. Las formas sombreadas de la Figura 5E denotan el nodo padre restringido y las formas no sombreadas denotan el BN complementario. Como se describió en la presente descripción, un nodo puede estar restringido cuando el nodo no tiene un tamaño NxN, así se restringe realizar más particionamiento a partir de un particionamiento binario simétrico. Se observa que en el caso del particionamiento ternario, el arreglo y tamaño del nodo hijo resultante o de la unidad de codificación pueden ser los mismos que los que se realizan para múltiples pasos del particionamiento binario, pero el particionamiento ternario puede requerir menos etapas. Por ejemplo, la Figura 5C representa el ejemplo de particionamiento ternario que es distinto del particionamiento binario.
Para agregar un control de complejidad que admita la implementación modular, puede emplearse un parámetro llamado límite de discrepancia de tamaño (SDL) para limitar el tamaño más pequeño de BN y RN. Este parámetro establece un tamaño mínimo de nodo hijo en base a la relación de sus dimensiones horizontal y vertical, lo que se denomina como discrepancia de tamaño (SD), como se describe en la ecuación 1 más abajo. Por ejemplo, en modalidades ilustrativas cuando SDL se establece en 4, no se permite un BN de tamaño 32x4 o un RN de tamaño 12x64. Cuando se aplica un parámetro SDL, puede eliminarse un parámetro de profundidad BT máxima en una o más modalidades.
SD = máx(ancho, altura)/mín(ancho, altura) (1)
Figura 6A ilustra un ejemplo de un BTQT propuesto que incluye particionamiento mediante el uso de particionamiento asimétrico de acuerdo con las técnicas descritas con una opción adicional para particionamiento ternario. Por ejemplo, los nodos particionados asimétricamente se muestran más particionados mediante el uso de particionamiento binario o asimétrico. La Figura 6B representa la estructura de árbol de la estructura de bloques de la Figura 6A.
En la Figura 6B, la línea discontinua más larga muestra el particionamiento asimétrico de acuerdo con el particionamiento asimétrico de la Figura 5D y la línea discontinua más corta muestra el particionamiento asimétrico de acuerdo con el particionamiento ternario de la Figura 5E. La señalización de sobrecarga de este ejemplo del BTQT propuesto (que también puede incluir las restricciones adicionales de la Figura 5E), es similar a la sintaxis de QTBT en la Figura 4B y 4C, pero con una modificación para permitir el particionamiento asimétrico y el particionamiento ternario de acuerdo con lo que se muestra en la Figura 5E, donde el particionamiento recursivo de tipos binario o ternario y/o asimétrica o simétrica puede usarse dentro de la misma CTU, es decir, a lo largo de una misma rama derivada del nodo raíz, y/o para permitir tanto el particionamiento simétrico como asimétrico dentro de la misma rama en cualquier orden. Como se ilustra en los ejemplos de las FIGS 5C-5D y Figura 6A y 6B, el particionamiento asimétrico y el particionamiento binario pueden usarse juntas sin problemas.
Puede ser conveniente mantener la dimensión con valores enteros. Por ejemplo, si una dimensión de nodo padre es 3N, los hijos deben tener dimensiones de 2N y N. En otro ejemplo, si una dimensión de nodo padre es 4N, sus hijos pueden tener dimensiones de 3N y N o 2N y 2n , siempre que el multiplicador N sea un valor entero. Por lo tanto, en una o más modalidades, las condiciones de particionamiento pueden definirse para evitar partes secundarias no enteras del todo donde a la unidad de codificación más pequeña se le asigna un valor de 1, donde el todo es una unidad de codificación padre cuadrada. En otras palabras, las condiciones pueden establecerse de manera que una relación de tamaños de unidades hijo que en conjunto forman un nodo padre cuadrado tendrá una relación igual a: 1 (tamaño de la unidad de codificación más pequeña):(un valor entero). Por lo tanto, los nodos hijos que resultan del particionamiento tendrán un valor de tamaño entero en una relación de su tamaño a la unidad hijo más pequeña que tiene el tamaño 1 parte del total de cualquier unidad de codificación padre cuadrada en la ascendencia del nodo hijo.
Mediante el uso de la modalidad de la Figura 6A como un ejemplo, el nodo raíz que abarca todo el cuadrado que se muestra en la Figura 6A se particiona en árbol cuaternario en cuatro partes iguales, tal como 102a en el cuadrante inferior izquierdo de la Figura 6A. En el cuadrante inferior derecho de la Figura 6A y con referencia a la Figura 6B, se producen cuatro operaciones de particionamiento adicionales en el nodo padre cuadrado representado por este nodo cuadrado de árbol cuaternario. Para los fines de este ejemplo, asuma que el nodo padre cuadrado de árbol cuaternario es el nodo A, que después del particionamiento incluye los nodos hijos 102p, 102q, 102j, 102r y 102s.
Comenzando con todo el nodo padre cuadrado A, primero se produce una partición 3:1 que da como resultado un nodo hijo B más grande (representado por 102j 102p 102q) y un nodo hijo C más pequeño (representado por 102r 102s). El nodo hijo C pequeño se particiona más asimétricamente en 3:1, en unidades hijo D (102r) y E (102s). El nodo B más grande se particiona mediante el uso particionamiento asimétrico 1:2, en una unidad hijo más grande F (102j) y un nodo hijo más pequeño G (102p 102q). El nodo hijo G más pequeño se particiona simétricamente en binario en H 102p e I 102q.
De acuerdo con las reglas de ejemplos anteriores y si existe un requisito para una relación de enteros, cada vez que se particiona una unidad hijo, las unidades hijo resultantes dentro de un nodo padre cuadrado deben tener un tamaño que tenga un valor de relación entero con relación al tamaño de la unidad de codificación más pequeña con un valor asignado de 1 y con relación al tamaño de la unidad padre cuadrada. Por ejemplo, suponga que el nodo padre cuadrado A tiene 4 partes y se particiona de acuerdo con una relación de 3N:1n , el nodo hijo B (102j+102p+102q) representa 3 partes del nodo cuadrado A (3N) y el nodo hijo C representa 1 parte del nodo cuadrado A (1N), respectivamente, para una relación de 3:1. Cuando el nodo hijo B que tiene un tamaño 3N es 2:1 particionado en F y G, F (102j) representa 2 partes del nodo cuadrado A (1N) y G (102p 102q) representa 1 parte del nodo cuadrado A (1N), respectivamente, para una relación entre los nodos C:F:G de 1, donde el nodo hijo C representa 1 parte del todo para un total de 4. Por lo tanto, al asignar la unidad de codificación más pequeña en la pluralidad de unidades de codificación que componen un nodo padre cuadrado a un valor de 1 parte del todo, cada nodo hijo tiene una representación de tamaño entero con relación a la unidad de codificación más pequeña y con relación al todo. Además, la suma de las relaciones asignadas para la pluralidad de unidades de codificación suma el total.
De acuerdo con las reglas, en el punto de particionamiento, el nodo hijo B (representado por 102j 102p 102q) no se pudo particionar en binario, ya que B tiene un tamaño 3N del total que tiene un tamaño 4N en una relación de 3:1 con la unidad C. Una partición binaria de B daría como resultado nodos hijos, cada uno con un tamaño de 1,5 del nodo cuadrado A con relación al tamaño de C de 1. Por lo tanto, las unidades hijo de tamaño no entero con relación a la unidad de codificación padre cuadrada no se permiten de acuerdo con estas reglas. Los límites en una relación con no enteros, tal como el ejemplo anterior 1,5:1,5:1, reconocen los procesos de codificación y decodificación que pueden depender de proporciones no enteras, evitando así más modificaciones para admitir proporciones no enteras. Es posible que se coloquen límites adicionales en el particionamiento para satisfacer las necesidades de los codificadores en términos de memoria y requisitos computacionales.
En otro ejemplo, la unidad hijo G incluye las unidades hijo 102p y 102q que resultan de un particionamiento binario de la porción G. Suponiendo que las partes C y F forman el resto del nodo padre cuadrado A, cada unidad hijo H (102p) e I (102q) representan la unidad más pequeña, a cada una se le asigna un tamaño 1 para fines de la relación. Por lo tanto, la relación de H:I:C:F = 1:1:2:1, todos los valores enteros que, cuando se suman, son iguales a las 4 partes del nodo cuadrado completo A.
Para mantener relaciones enteras de tamaños de bloques de codificación hijos con relación a un nodo raíz (o padre) con una dimensión NxN, el particionamiento de un nodo que tiene un tamaño que es un valor impar con relación a partes del todo es limitada, de manera que el nodo puede ser un nodo restringido como se describió anteriormente. Por otro lado, el particionamiento binario de un nodo raíz cuadrado daría como resultado dos nodos hijos, cada uno con 1 parte de 2 del nodo raíz cuadrado para una relación de 1:1. Si uno de esos nodos hijos se particiona más mediante el uso de particionamiento 3:1, a la unidad hijo más pequeña en el nodo raíz cuadrado se le asigna un tamaño de 1N, la relación de partes es 4:3:1 para un total de 8 = 2N. Por lo tanto, se puede considerar que el nodo raíz cuadrado tiene 8 partes, el nodo hijo más grande tiene 3 partes de 8, el nodo más pequeño del particionamiento 3:1 tiene 1 parte de 8 y el nodo hijo resultante de la primera partición tiene 4 partes del 8. Por lo tanto, incluso con las limitaciones que se colocaron, existen muchas opciones flexibles para el particionamiento asimétrico y simétrico dentro de una CTU.
En una o más modalidades, se contemplan relaciones no enteras a diferencia de las modalidades anteriores, sin embargo se reconoce que se requerirían modificaciones al codificador y decodificador HEVC existentes para las unidades de codificación de tales tamaños variables.
Una unidad de árbol de codificación puede representarse y codificarse como una estructura de árbol recursiva, y la estructura de árbol puede expresarse mediante una serie de banderas. Para una estructura BTQT, la primera sintaxis a codificar puede ser una bandera que indique si habrá o no más particionamiento. Si hay más particionamiento, puede usarse una segunda sintaxis para indicar si debe usarse particionamiento horizontal o vertical. Entonces, una tercera sintaxis codificada puede ser una bandera que indique si se va a usar un particionamiento simétrico o un particionamiento asimétrico; por ejemplo, simétrico, BP, particionamiento binario asimétrico que se muestra en la Figura 5D, o particionamiento ternario asimétrico como se muestra en la Figura 5E. Si se usa el particionamiento que se muestra en la Figura 5D o Figura 5E, también puede usarse una cuarta sintaxis para indicar si el primer nodo hijo es más grande que el segundo nodo (y el tercer nodo, para particionamiento ternario).
La Figura 6C ilustra un ejemplo de sintaxis para el particionamiento que incluye tanto nodos cuadrados (SN) como nodos restringidos (RN), donde los nodos restringidos en este ejemplo se representan por formas sombreadas. Los elementos de sintaxis pueden estar incluidos en un tren de bits y pueden estar en una secuencia ordenada. Los elementos de sintaxis pueden encontrarse en un encabezado del tren de bits, por ejemplo. Como se describe con más detalle más abajo, los procesos de decodificación pueden ocurrir basándose en elementos de sintaxis en un encabezado de tren de bits o diapositiva de imagen. Un elemento de sintaxis también puede denominarse palabra de código o bandera en una estructura de sintaxis. La sintaxis de cada elemento de sintaxis se codifica y señaliza en el tren de bits. Los elementos de sintaxis describen cómo se puede reconstruir la señal de video en el decodificador. Por ejemplo, para una CTU, los elementos de sintaxis relacionados describen el particionamiento de la CTU en unidades de codificación y la representación del particionamiento de la CTU en la estructura de árbol. El decodificador puede analizar la estructura de sintaxis para identificar cada uno de los elementos de sintaxis o banderas dentro de la estructura para determinar cómo se particionaron la CTU y cada CU. Aunque una palabra de código o una bandera puede ser un elemento de sintaxis que tiene un solo bit, pueden definirse múltiples piezas de información mediante el uso de múltiples valores para una bandera y, si es necesario, pueden usarse bits adicionales para señalar opciones adicionales.
La Figura 6C proporciona una representación visual de una estructura de sintaxis que tiene múltiples capas de elementos de sintaxis codificados para señalizar información sobre cómo se particionó y codificó el nodo raíz. Se usan indicadores de ejemplo para cada elemento de sintaxis, y debe entenderse que la convención de nomenclatura de dichos elementos de sintaxis y/o banderas puede variar. Como se ilustra en este ejemplo, una primera sintaxis que se codificará para un nodo raíz es una bandera, por ejemplo, flag.quadtree_partitioning, que indica si se usa ("QP") o no ("Sin división QP") el particionamiento de árbol cuaternario. Como se muestra en la dirección "QP" en la Figura 6C, el particionamiento de árbol cuaternario puede resultar en cuatro nodos hijos cuadrados de igual tamaño. Dicha unidad particionada en árbol cuaternario puede particionarse más, aunque en este ejemplo no se representan más particionamiento a manera de ejemplo.
Si el elemento de sintaxis flag.quadtree_partitioning indica "Sin división QP", no se usó el particionamiento de árbol cuaternario. La bandera flag.partitioningmethod puede ser una segunda bandera que, una vez determinó por una primera bandera que no se usó QP, la segunda bandera indica si el método sin-QP se usará o no. Alternativamente, el indicador flag.partitioning_method puede usarse para indicar tanto si se usa o no el particionamiento de árbol cuaternario (por ejemplo, valor 0 para árbol cuaternario y cualquier otro valor para "sin QP") y también para señalar el tipo de método de particionamiento sin árbol cuaternario que se usó (por ejemplo, valor 1-4, 1 = binario, 2 = AP, 3 = ternario, etc.).
Como se muestra en la Figura 6C, el "sin QP" que se señala en el elemento de sintaxis puede indicar que se aplica una técnica de particionamiento que no es QP, y el ejemplo 'Sin división" indica que el nodo no se divide mediante ningún método de particionamiento. La sintaxis "Sin división" puede aplicarse a cualquier profundidad de la estructura de árbol en un punto en el que un nodo hijo no se divide más.
Si hay más particionamiento mediante el uso de un método de particionamiento sin QP, puede señalarse una tercera sintaxis para indicar si deben particionarse en dirección horizontal o vertical. Ambos ejemplos de una dirección de particionamiento vertical y una dirección de particionamiento horizontal se proporcionan en la Figura 6 y la estructura de sintaxis de ejemplo se denomina, a manera de ejemplo, flag.particioning_direction.
Para cualquiera de las direcciones de particionamiento vertical u horizontal identificadas, puede usarse una sintaxis adicional para identificar qué método de particionamiento se aplica, por ejemplo, particionamiento asimétrico, binario o ternario, mediante el uso de una sintaxis tal como flag.partitioning_symmetry u otro tipo de sintaxis flag.partitioningmethod. Además, para el método de particionamiento y para el particionamiento vertical u horizontal, otra sintaxis a codificar y las señales pueden ser una bandera, por ejemplo, flag.symmetry, que indica si la técnica sin QP usará particionamiento simétrico o asimétrico (por ejemplo, particionamiento binario, particionamiento ternario, el particionamiento asimétrico que se muestran en la Figura 5C). La sintaxis flag.symmetry o una sintaxis adicional, tal como el método flag.partitioning, puede codificarse para señalar detalles para la técnica de particionamiento. Por ejemplo, la Figura 6C muestra un ejemplo de tanto particionamiento asimétrico (AP) como particionamiento binario, que podría incluir de forma alternativa o adicional otras particiones asimétricas.
Con fines ilustrativos, la Figura 6C proporciona ejemplos de particionamiento AP y particionamiento binario en este nivel en el árbol de codificación, y ejemplos tanto en las direcciones de particionamiento vertical y horizontal, donde la bandera flag.symmetry puede indicar si el método de particionamiento es simétrico o asimétrico. En este ejemplo, las unidades hijo con particionamiento binario no se particionan más y representan los nodos hoja finales en la estructura de árbol. En el siguiente nivel, sin embargo, los nodos hijos AP se muestran más particionados. En el ejemplo que se muestra en la Figura 6C, los nodos hijos de AP se particionan mediante el uso de particionamiento asimétrico, tal como el particionamiento asimétrico 3:1 ("AP") que se muestra en la Figura 5D o particionamiento ternario, como se muestra en la Figura 5E. Como se describió anteriormente, el particionamiento de AP en base a la relación 3:1 puede ser una restricción para un nodo, donde el particionamiento de un nodo padre mediante el uso de particionamiento AP puede ser solo al menos uno de los particionamientos asimétricos 3:1 o un particionamiento ternario.
Para el particionamiento señalado como una partición en la dirección vertical u horizontal con particionamiento asimétrico, se puede señalar además una sintaxis para indicar qué nodo hijo es el nodo hijo más grande y/o qué nodo hijo (o nodos hijo en el caso del particionamiento ternario) es el nodo hijo más pequeño. El ejemplo de la Figura 6C usa el elemento de sintaxis llamado flag.split_type para indicar qué tipo de división ocurre. Como se describió anteriormente con respecto a las Figuras 5C o 5D, la señalización para el particionamiento en vertical directamente puede identificar el Tipo 1 (nodo hijo más grande a la derecha) o el Tipo 2 (nodo hijo más grande a la izquierda) para el particionamiento vertical. De manera similar, en la dirección horizontal, la señalización identifica el Tipo 3 (nodo hijo más grande en la parte inferior) o el Tipo 4 (nodo hijo más grande en la parte superior). Como se describió anteriormente con respecto a la Figura 5E, la señalización flag.split_type para una unidad hijo ternaria particionada puede identificar el Tipo 1, donde la unidad más grande está en el medio de un nodo padre particionado horizontalmente o el Tipo 2, donde la unidad mayor está en el medio de una unidad de codificación padre particionada verticalmente.
En las modalidades para las que se usa el particionamiento asimétrico, se puede señalar una bandera que identifica la relación del particionamiento asimétrico. Figura 6C proporciona un ejemplo en donde dicha sintaxis se denomina flag.asymmetric_ratio. Por ejemplo, la bandera puede identificar que la operación de particionamiento AP fue un particionamiento asimétrico 3:1 o un particionamiento asimétrico 2:1. Mientras que el bloque ternario particionado que se muestra en la Figura 6C no se muestra con más particionamiento, debe entenderse en base a esta descripción que pueden permitirse particionamiento adicional, por ejemplo, las porciones binarias se permiten con más particionamiento ternario. En una o más modalidades, puede usarse la misma sintaxis para indicar tanto si el primer nodo hijo es mayor que el segundo como la relación de tal división. En una o más modalidades, la misma bandera puede incluir la relación, así como también el posicionamiento del nodo hijo más grande en comparación con el nodo hijo más pequeño (por ejemplo, Tipo 1, Tipo 2, etc., descrito anteriormente), donde un orden del primera hijo y segundo hijo puede estar predeterminado. Por ejemplo, flag.asymmetric_ratio para una división vertical podría tener un valor 1 para una división 3:1 y un valor 2 para una división 1:3, lo que indica una relación de tamaño del nodo más grande como 3 veces el tamaño del nodo más pequeño, donde el valor 1 para una relación de 3:1 indica que el nodo hijo a la izquierda es el nodo más grande y el valor 2 para una relación de 1:3 indica que el nodo hijo a la derecha de la división vertical es más grande.
De manera similar, la sintaxis para una relación simétrica, tal como flag.symmetric_ratio, puede indicar una relación para un nodo hijo ternario particionado. La relación puede identificar 3:1 si el nodo hijo más grande tiene tres partes en relación con el tamaño de los nodos hijos iguales de una parte. En las modalidades, la relación puede identificar 1:3:1 para especificar que el nodo del medio es el más grande (3x). En las modalidades, la relación puede identificar una relación, por ejemplo, 3:1:1 y otra sintaxis identifica qué nodo es el más grande. En las modalidades, la relación identifica más de dos tamaños, tal como 3:2:1 o 4:3:1:1, en dependencia de la división y si se usa una sintaxis separada para especificar cómo se disponen los tamaños dentro de la unidad de codificación.
Para un particionamiento asimétrico 3:1 tal como la que se muestra en la Figura 5D o particionamiento ternario que se muestra en la Figura 5E, una restricción impuesta puede ser que el nodo hijo mayor resultante sea un nodo restringido. Un elemento de sintaxis que se muestra como una bandera flag.restricted en la Figura 6C puede ser una sintaxis incluida que indica si se permiten o no más particionamiento. Por lo tanto, el elemento de sintaxis flag.restricted puede identificar qué unidades hijo están restringidas, tal como la que se muestra por cada una de las unidades hijo sombreadas en la Figura 6C.
Las restricciones pueden ser impuestas por las reglas de codificación y decodificación, por ejemplo, tal como si el nodo hijo más grande resultante de un nodo asimétrico 3:1 no tiene permitido más particionamiento. Por ejemplo, el nodo hijo más pequeño resultante del nodo particionado verticalmente 3:1 de Tipo 1 (que se muestra como la rama más a la izquierda en la Figura 6C) puede particionarse más, tal como mediante el uso de un particionamiento 2:1, y el nodo más grande resultante del nodo con particionado verticalmente 3:1 de Tipo 1 puede estar restringido para más particionamiento y se representa como una unidad de codificación final en el tren de bits (que se muestra como una forma sombreada en la hilera final en la Figura 6C, que se deriva de la rama izquierda de la estructura QTBT). En la Figura 6C se muestran ejemplos adicionales donde el nodo hijo más grande resultante de un particionamiento asimétrico 3:1 es un nodo restringido y no se divide más antes de la codificación y la señalización.
Después de la división de árbol cuaternario, la división de árboles ternarios y/o la división de árboles binarios mediante el uso de las estructuras QTBT o BTQT descritas anteriormente, las formas representadas por los nodos hoja finales de QTBT o los nodos hoja finales de BTQT pueden representar las CU finales 102 que se codificarán, tal como la codificación mediante el uso interpredicción o intrapredicción. Además, la estructura de bloques puede admitir la característica de que luma y croma tienen una estructura de árbol separada. Actualmente, para los segmentos P y B, los CTB de luma y croma en una CTU comparten la misma estructura de árbol. Para los segmentos I, el CTB de luma se particiona en Cu mediante una estructura de árbol, y los CTB de croma se particionan en CU de croma mediante otra estructura QTBT. En una o más modalidades, una CU en un segmento I puede incluir un bloque de codificación del componente de luma o bloques de codificación de dos componentes de croma. En una o más modalidades, una CU en P y segmento B una CU consiste de bloques de codificación de los tres componentes de color. En una o más modalidades, los árboles de luma y croma pueden compartirse para un segmento I.
En modalidades alternativas, JVET puede usar una estructura de bloque de codificación de dos niveles como alternativa a, o extensión del particionamiento QTBT descrito anteriormente. En la estructura de bloques de codificación de dos niveles, una CTU 100 puede particionarse primero en un nivel alto en unidades base (BU). A continuación, las unidades base pueden particionarse en un nivel bajo en unidades operativas (OU).
En las formas de modalidad que emplean la estructura de bloques de codificación de dos niveles, en el nivel alto, una CTU 100 puede particionarse en BU de acuerdo con una de las estructuras QTBT descritas anteriormente, o de acuerdo con una estructura de árbol cuaternario (QT) tal como la que se usa en HEVC en la que los bloques solo pueden dividirse en cuatro subbloques de igual tamaño. A manera de ejemplo no limitativo, una CTU 102 puede particionarse en BU de acuerdo con la estructura QTBT descrita anteriormente con respecto a las Figuras 5-6, de manera que los nodos hoja en la porción de árbol cuaternario pueden dividirse mediante el uso de particionamiento de árbol cuaternario, particionamiento binario simétrico o particionamiento binario asimétrico. En este ejemplo, los nodos hoja finales del QTBT pueden ser BU en lugar de CU.
En el nivel inferior de la estructura de bloques de codificación de dos niveles, cada BU particionada de la CTU 100 puede particionarse más en una o más OU. En algunas modalidades, cuando la BU es cuadrada, puede dividirse en OU mediante el uso de particionamiento de árbol cuaternario o particionamiento binario, tales como particionamiento binario asimétrico o simétrico. Sin embargo, cuando la BU no es cuadrada, puede dividirse en OU mediante el uso solo de particionamiento binario. Limitar el tipo de particionamiento que puede usarse para las BU no cuadradas puede limitar el número de bits que se usan para señalar el tipo de particionamiento que se usa para generar las BU.
Aunque la discusión más abajo describe la codificación de CU 102, las BU y OU pueden codificarse en lugar de las CU 102 en modalidades que usan la estructura de bloques de codificación de dos niveles. A manera de ejemplos no limitativos, las BU pueden usarse para operaciones de codificación de nivel superior, tal como intrapredicción o interpredicción, mientras que las OU más pequeñas pueden usarse para operaciones de codificación de nivel inferior, tal como transformaciones, y generar coeficientes de transformación. En consecuencia, la sintaxis se codificará para las BU que indiquen si están codificadas con intrapredicción o interpredicción, o información que identifique modos particulares de intrapredicción o vectores de movimiento que se usan para codificar las BU. De manera similar, la sintaxis de las OU puede identificar operaciones de transformación particulares o coeficientes de transformación cuantificados que se usan para codificar las unidades organizativas.
La Figura 7 representa un diagrama simplificado para la codificación de CU en un codificador JVET, que puede producir un tren de bits JVET compatible. Las etapas principales de la codificación de video incluyen el particionamiento para identificar las CU 102 como se describió anteriormente, seguido de la codificación de CU 102 mediante el uso la predicción en 704 o 706, la generación de una CU 710 residual en 708, la transformación en 712, la cuantificación en 716 y la codificación por entropía en 720. El codificador y el proceso de codificación que se ilustran en la Figura 7 también pueden incluir procesos que duplican el proceso de decodificación empleado por un decodificador, descrito en más detalle más abajo, de manera que el codificador generará predicciones idénticas para los datos posteriores. Por lo tanto, la representación de la imagen final puede ser un duplicado de la salida del decodificador y almacenarse en una memoria intermedia de referencia que se usará para una predicción de imagen.
Dada una CU 102 actual, el codificador puede obtener una CU 702 de predicción, ya sea espacialmente mediante el uso de la intrapredicción en 704 o temporalmente mediante el uso de la interpredicción en 706. La idea básica de la codificación de predicción es transmitir una señal diferencial o residual entre la señal original y una predicción para la señal original. En el lado del receptor, la señal original puede reconstruirse sumando el residual y la predicción, como se describirá más abajo. Debido a que la señal diferencial tiene una correlación más baja que la señal original, se necesitan menos bits para su transmisión.
Una secuencia de unidades de codificación puede formar un segmento, y uno o más segmentos pueden formar una imagen. Un segmento puede incluir uno o más fragmentos de segmentos, cada uno en su propia unidad NAL. Un segmento o segmento de segmento puede incluir información de encabezado para el segmento o tren de bits. Un segmento es una estructura de datos que se puede decodificar independientemente de otros segmentos de la misma imagen, en términos de codificación por entropía, predicción de señal y reconstrucción de señal residual. Un segmento puede ser una imagen completa o una región de una imagen.
Un segmento, tal como una imagen completa o una porción de una imagen, codificado por completo con CU 102 intrapredichos puede ser un segmento I que puede decodificarse sin referencia a otros segmentos y, como tal, puede ser un posible punto en donde puede comenzar la decodificación. Un segmento codificado con al menos algunas CU interpredichas puede ser un segmento predictivo (P) o bipredictivo (B) que puede decodificarse en base a una o más imágenes de referencia. Los segmentos P pueden usar intrapredicción e interpredicción con segmentos codificados previamente. Por ejemplo, los segmentos P pueden comprimirse más que los segmentos I mediante el uso de interpredicción, pero necesitan la codificación de un segmento previamente codificado para codificarlos. Los segmentos B pueden usar datos de segmentos previos y/o posteriores para su codificación, mediante el uso de intrapredicción o interpredicción mediante el uso de una predicción interpolada de dos fotogramas diferentes, aumentando así la precisión del proceso de estimación de movimiento. En algunos casos, los segmentos P y los segmentos B también pueden codificarse también o alternativamente mediante el uso de copia intrabloque, en donde se usan datos de otras porciones del mismo segmento.
Como se discutirá más abajo, la intrapredicción o interpredicción pueden realizarse en base a las CU 734 reconstruidas a partir de las CU 102 codificadas previamente, tal como las CU vecinas 102 o las CU 102 en las imágenes de referencia.
Cuando una CU 102 se codifica espacialmente con intrapredicción en 704, se puede encontrar un modo de intrapredicción que predice mejor los valores de píxeles de la CU 102 en base a muestras de las CU vecinas 102 en la imagen.
Al codificar el componente de luma de una CU, el codificador puede generar una lista de modos de intrapredicción candidatos. Aunque HEVC tenía 35 posibles modos de intrapredicción para los componentes de luma, en JVET hay 67 modos de intrapredicción posibles para los componentes de luma. Estos incluyen un modo plano que usa un plano tridimensional de valores generados a partir de píxeles vecinos, un modo DC que usa valores promediados de píxeles vecinos y los 65 modos direccionales que se muestran en la Figura 8 que usan valores copiados de píxeles vecinos a lo largo de las direcciones indicadas.
Al generar una lista de modos de intrapredicción candidatos para el componente de luma de una CU, el número de modos candidatos en la lista puede depender del tamaño de la CU. La lista de candidatos puede incluir: un subconjunto de los 35 modos de HEVC con los costos más bajos de SATD (Suma de la diferencia de transformación absoluta); nuevos modos direccionales para JVET agregados que se acercan a los candidatos que se encuentran en los modos HEVC; y modos de un conjunto de seis modos más probables (MPM) para la CU 102 que se identifican en base a los modos de intrapredicción que se usan para bloques vecinos codificados previamente, así como también una lista de modos predeterminados.
Al codificar los componentes de croma de una CU, también se puede generar una lista de modos de intrapredicción candidatos. La lista de modos candidatos puede incluir modos generados con la proyección de modelos lineales de componentes cruzados a partir de muestras de luma, modos de intrapredicción encontrados para CB de luma en determinadas posiciones colocadas en el bloque de croma y modos de predicción de croma encontrados previamente para bloques vecinos. El codificador puede encontrar los modos candidatos en las listas con los costos de distorsión de tasa más bajos y usar esos modos de intrapredicción al codificar los componentes de luma y croma de la CU. Por ejemplo, puede usarse un proceso de optimización de la distorsión de velocidad del codificador de la estructura QTBT para determinar la mejor forma de particionamiento en bloques. La sintaxis puede codificarse en el tren de bits que indica los modos de intrapredicción que se usan para codificar cada CU 102.
Una vez que se seleccionan los mejores modos de intrapredicción para una CU 102, el codificador puede generar una CU 402 de predicción mediante el uso esos modos. Cuando los modos que se seleccionan son modos direccionales, puede usarse un filtro de 4 tap para mejorar la precisión direccional. Las columnas o filas en la parte superior o en el lado izquierdo del bloque de predicción pueden ajustarse con filtros de predicción de fronteras, tal como filtros de 2 o 3 tap.
La predicción CU 702 puede suavizarse más con un proceso de combinación de intrapredicción dependiente de la posición (PDPC) que ajusta una predicción CU 702 generada en base a muestras filtradas de bloques vecinos mediante el uso de muestras sin filtrar de bloques vecinos, o suavizado de muestra de referencia adaptativo mediante el uso de filtros paso bajo de 3 tap o 5 tap para procesar muestras de referencia.
Cuando una CU 102 se codifica temporalmente con interpredicción en 706, se puede encontrar un conjunto de vectores de movimiento (MV) que apunta a muestras en imágenes de referencia que predicen mejor los valores de píxeles de la CU 102. La interpredicción explota la redundancia temporal entre segmentos al representar un desplazamiento de un bloque de píxeles en un segmento. El desplazamiento se determina de acuerdo con el valor de los píxeles en los segmentos anteriores o siguientes a través de un proceso llamado compensación de movimiento. Los vectores de movimiento y los índices de referencia asociados que indican el desplazamiento de píxeles con relación a una imagen de referencia particular pueden proporcionarse en el tren de bits a un decodificador, junto con el residual entre los píxeles originales y los píxeles con compensación de movimiento. El decodificador puede usar los vectores de movimiento residuales y señalizados y los índices de referencia para reconstruir un bloque de píxeles en un segmento reconstruido.
En JVET, la precisión del vector de movimiento se puede almacenar en 1/16 pel, y la diferencia entre un vector de movimiento y el vector de movimiento predicho de una CU puede codificarse con una resolución de un cuarto de pel o una resolución de un pel entero.
En JVET, los vectores de movimiento se pueden encontrar para múltiples sub-CU dentro de una CU 102, mediante el uso de técnicas tal como la predicción de vector de movimiento temporal avanzado (ATMVP), la predicción de vector de movimiento espacio-temporal (STMVP), la predicción de compensación de movimiento afín, la derivación de vector de movimiento con patrón coincidente (PMMVD) y/o flujo óptico bidireccional (BIO).
Mediante el uso de ATMVP, el codificador puede encontrar un vector temporal para la CU 102 que apunta a un bloque correspondiente en una imagen de referencia. El vector temporal se puede encontrar en base a los vectores de movimiento y las imágenes de referencia encontradas para las CU vecinas 102 previamente codificadas. Mediante el uso del bloque de referencia señalado por un vector temporal para toda la CU 102, se puede encontrar un vector de movimiento para cada sub-CU dentro de la CU 102.
STMVP puede encontrar vectores de movimiento para sub-CU escalando y promediando los vectores de movimiento encontrados para bloques vecinos previamente codificados con interpredicción, junto con un vector temporal.
La predicción de compensación de movimiento afín puede usarse para predecir un campo de vectores de movimiento para cada sub-CU en un bloque, en base a dos vectores de movimiento de control que se encontraron para las esquinas superiores del bloque. Por ejemplo, los vectores de movimiento para sub-CU se pueden derivar en base a los vectores de movimiento de la esquina superior encontrados para cada bloque 4x4 dentro de la CU 102.
PMMVD puede encontrar un vector de movimiento inicial para la CU 102 actual mediante el uso del emparejamiento bilateral o el emparejamiento de plantillas. La coincidencia bilateral puede mirar la CU 102 actual y los bloques de referencia en dos imágenes de referencia diferentes a lo largo de una trayectoria de movimiento, mientras que la coincidencia de plantillas puede mirar los bloques correspondientes en la CU 102 actual y una imagen de referencia identificada por una plantilla. El vector de movimiento inicial encontrado para la CU 102 puede luego refinarse individualmente para cada sub-CU.
BIO puede usarse cuando la interpredicción se realiza con bipredicción basándose en imágenes de referencia anteriores y posteriores, y permite encontrar vectores de movimiento para sub-CU basándose del gradiente de la diferencia entre las dos imágenes de referencia.
En algunas situaciones, la compensación de iluminación local (LIC) puede usarse en el nivel de CU para encontrar valores para un parámetro de factor de escala y un parámetro de desplazamiento, en base a en muestras vecinas a la CU 102 actual y las muestras correspondientes vecinas a un bloque de referencia identificado por un vector de movimiento candidato. En JVET, los parámetros de LIC pueden cambiar y señalizarse en el nivel de CU.
Para algunos de los métodos anteriores, los vectores de movimiento encontrados para cada una de las sub-CU de una CU pueden señalarse a los decodificadores en el nivel de la CU. Para otros métodos, tal como PMMVD y BIO, la información de movimiento no se señaliza en el tren de bits para ahorrar sobrecarga, y los decodificadores pueden derivar los vectores de movimiento a través de los mismos procesos.
Una vez que se han encontrado los vectores de movimiento para una CU 102, el codificador puede generar una CU 702 de predicción mediante el uso de esos vectores de movimiento. En algunos casos, cuando se encuentran vectores de movimiento para sub-CU individuales, puede usarse la Compensación de movimiento de Bloques de Sobrecarga (OBMC) cuando se genera una CU 702 de predicción combinando esos vectores de movimiento con vectores de movimiento encontrados previamente para una o más sub-CU vecinas.
Cuando se usa la bipredicción, JVET puede usar el refinamiento del vector de movimiento del lado del decodificador (DMVR) para encontrar vectores de movimiento. DMVR permite encontrar un vector de movimiento en base a dos vectores de movimiento que se encontraron para la bipredicción mediante el uso de un proceso de coincidencia de plantilla bilateral. En DMVR, se puede encontrar una combinación ponderada de predicciones CU 702 generadas con cada uno de los dos vectores de movimiento, y los dos vectores de movimiento pueden refinarse reemplazándolos con nuevos vectores de movimiento que indiquen mejor la predicción combinada CU 702. Los dos vectores de movimiento refinados pueden usarse para generar la predicción final CU 702.
En 708, una vez que se ha encontrado una predicción CU 702 con intrapredicción en 704 o interpredicción en 706 como se describió anteriormente, el codificador puede restar la predicción CU 702 de la actual CU 102 para encontrar una CU 710 residual.
El codificador puede usar una o más operaciones de transformación en 712 para convertir la CU 710 residual en coeficientes de transformación 714 que expresan la CU 710 residual en un dominio de transformación, tal como mediante el uso de una transformación de bloque de coseno discreto (transformada DCT) para convertir datos en el transformar dominio. JVET permite más tipos de operaciones de transformación que HEVC, incluidas las operaciones DCT-II, DST-VII, DST-VII, DCT-VIII, DST-I y DCT-V. Las operaciones de transformación permitidas pueden agruparse en subconjuntos, y el codificador puede señalar una indicación de qué subconjuntos y qué operaciones específicas en esos subconjuntos se usaron. En algunos casos, pueden usarse transformaciones de tamaño de bloque grande para poner a cero los coeficientes de transformación de alta frecuencia en CU 102 mayores que un determinado tamaño, de manera que solo se mantengan los coeficientes de transformación de frecuencia más baja para esas CU 102.
En algunos casos, se puede aplicar una transformada secundaria no separable dependiente del modo (MDNSST) a los coeficientes de transformación de baja frecuencia 714 después de una transformación directa de núcleo. La operación MDNSST puede usar una transformación Hypercube-Givens (HyGT) en base a datos de rotación. Cuando se usa, el codificador puede señalar un valor de índice que identifica una operación MDNSST particular.
En 716, el codificador puede cuantificar los coeficientes de transformación 714 en coeficientes de transformación cuantificados 716. La cuantificación de cada coeficiente puede calcularse dividiendo un valor del coeficiente por una etapa de cuantificación, que se deriva de un parámetro de cuantificación (QP). En algunas modalidades, el Qstep se define como 2 (QP-4)/6. Debido a que los coeficientes de transformación de alta precisión 714 se pueden convertir en coeficientes de transformación cuantificados 716 con un número finito de valores posibles, la cuantificación puede ayudar con la compresión de datos. Por lo tanto, la cuantificación de los coeficientes de transformación puede limitar la cantidad de bits generados y enviados por el proceso de transformación. Sin embargo, mientras que la cuantificación es una operación con pérdidas y la pérdida por cuantificación no puede recuperarse, el proceso de cuantificación presenta un equilibrio entre la calidad de la secuencia reconstruida y la cantidad de información necesaria para representar la secuencia. Por ejemplo, un valor de QP más bajo puede dar como resultado un video decodificado de mejor calidad, aunque puede requerirse una mayor cantidad de datos para la representación y transmisión. Por el contrario, un valor alto de QP puede resultar en secuencias de video reconstruidas de menor calidad pero con menores necesidades de datos y ancho de banda.
JVET puede usar técnicas de cuantificación adaptativa basadas en varianza, lo que permite que cada CU 102 use un parámetro de cuantificación diferente para su proceso de codificación (en lugar de usar el mismo QP de fotograma en la codificación de cada CU 102 del fotograma). Las técnicas de cuantificación adaptativa que se basan en la varianza reducen de forma adaptativa el parámetro de cuantificación de determinados bloques mientras que lo aumentan en otros. Para seleccionar un QP específico para una CU 102, se calcula la varianza de la CU. En resumen, si la varianza de una CU es mayor que la varianza promedio del fotograma, se puede establecer un QP más alto que el QP del fotograma para la CU 102. Si la CU 102 presenta una varianza menor que la varianza promedio del fotograma, se puede asignar un QP menor.
En 720, el codificador puede encontrar los bits de compresión finales 722 mediante codificación por entropía los coeficientes de transformación cuantificados 718. La codificación por entropía tiene como objetivo eliminar las redundancias estadísticas de la información que se va a transmitir. En JVET, CABAC (Codificación Aritmética Ainaria Adaptativa al Contexto) puede usarse para codificar los coeficientes de transformación cuantificados 718, la cual usa medidas de probabilidad para eliminar las redundancias estadísticas. Para las CU 102 con coeficientes de transformación cuantificados distintos de cero 718, los coeficientes de transformación cuantificados 718 pueden convertirse en binarios. Cada bit ("bin") de la representación binaria puede codificarse mediante el uso de un modelo de contexto. Una CU 102 puede separarse en tres regiones, cada una con su propio conjunto de modelos de contexto para usar con píxeles dentro de esa región.
Se pueden realizar varias pasadas de escaneo para codificar los contenedores. Durante las pasadas para codificar los primeros tres bins (bin0, bin1 y bin2), se puede encontrar un valor de índice que indica qué modelo de contexto usar para el bin, al hallar la suma de esa posición de bin en hasta cinco coeficientes de transformación cuantificados vecinos previamente codificados 718 identificados por una plantilla.
Un modelo de contexto puede basarse en las probabilidades de que el valor de un bin sea '0' o '1'. A medida que se codifican los valores, las probabilidades en el modelo de contexto se pueden actualizar en base al número real de valores '0' y '1' encontrados. Aunque HEVC usó tablas fijas para reinicializar los modelos de contexto para cada nueva imagen, en JVET las probabilidades de los modelos de contexto para nuevas imágenes entre predicciones se pueden inicializar en base a modelos de contexto desarrollados para imágenes interpredichas previamente codificadas.
El codificador puede producir un tren de bits que contiene bits codificados por entropía 722 de las CU 710 residuales, información de predicción, tal como modos de intrapredicción seleccionados o vectores de movimiento, indicadores de cómo las CU 102 se particionaron a partir de una CTU 100 de acuerdo con la estructura QTBT, y/u otra información sobre el video codificado. El tren de bits se puede decodificar mediante un decodificador como se describe más abajo.
Además de usar los coeficientes de transformación cuantificados 718 para encontrar los bits de compresión finales 722, el codificador también puede usar los coeficientes de transformación cuantificados 718 para generar CU reconstruidas 734 siguiendo el mismo proceso de decodificación que utilizaría un decodificador para generar CU reconstruidas 734. Por lo tanto, una vez que el codificador ha calculado y cuantificado los coeficientes de transformación, los coeficientes de transformación cuantificados 718 pueden transmitirse al lazo de decodificación en el codificador. Después de la cuantificación de los coeficientes de transformación de una CU, un lazo de decodificación permite al codificador generar una CU 734 reconstruida idéntica a la que genera el decodificador en el proceso de decodificación. En consecuencia, el codificador puede usar las mismas CU reconstruidas 734 que un decodificador usaría para las CU vecinas 102 o imágenes de referencia cuando se realiza una intrapredicción o una interpredicción para una nueva CU 102. Las CU reconstruidas 102, los segmentos reconstruidos o los fotogramas reconstruidos completos pueden servir como referencias para más etapas de predicción.
En el lazo de decodificación del codificador (y ver más abajo, para las mismas operaciones en el decodificador) para obtener valores de píxeles para la imagen reconstruida, se puede realizar un proceso de descuantificación. Para descuantificar un fotograma, por ejemplo, se multiplica un valor cuantificado para cada píxel de un fotograma para la etapa de cuantificación, por ejemplo, (etapa Q) descrito anteriormente, para obtener coeficientes de transformación descuantificados reconstruidos 726. Por ejemplo, en el proceso de decodificación que se muestra en la Figura 7 en el codificador, los coeficientes de transformación cuantificados 718 de una CU 710 residual pueden decuantificarse en 724 para encontrar los coeficientes de transformación descuantificados 726. Si se realizó una operación MDNSST durante la codificación, esa operación se puede revertir después de la descuantificación.
En 728, los coeficientes de transformación descuantificados 726 se pueden transformar de forma inversa para encontrar una CU 730 residual reconstruida, tal como al aplicar una DCT a los valores para obtener la imagen reconstruida. En 732, la CU 730 residual reconstruido se puede agregar a una CU 702 de predicción correspondiente encontrado con intrapredicción en 704 o interpredicción en 706, para encontrar una CU 734 reconstruida. Mientras que en algunas modalidades el codificador puede realizar intrapredicción en 704 como se describió anteriormente, en otras modalidades el codificador puede seguir el proceso descrito en la presente descripción para el emparejamiento de plantilla intrapredicción para generar una predicción CU 702 de la misma manera que un decodificador usaría emparejamiento de plantilla para intrapredicción si la información que identifica el modo intrapredicción que se usa para la CU 102 se omite del tren de bits.
En 736, se pueden aplicar uno o más filtros a los datos reconstruidos durante el proceso de decodificación (en el codificador o, como se describe más abajo, en el decodificador), ya sea a nivel de imagen o nivel CU. Por ejemplo, el codificador puede aplicar un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) y/o un filtro de lazo adaptativo (ALF). El proceso de decodificación del codificador puede implementar filtros para estimar y transmitir a un decodificador los parámetros de filtro óptimos que pueden abordar posibles artefactos en la imagen reconstruida. Estas mejoras aumentan la calidad objetiva y subjetiva del video reconstruido. En el filtrado de desbloqueo, los píxeles cerca de una frontera de sub-CU pueden modificarse, mientras que en SAO, los píxeles en una CTU 100 pueden modificarse mediante el uso de una clasificación de desplazamiento de borde o de desplazamiento de banda. El ALF de JVET puede usar filtros con formas circularmente simétricas para cada bloque de 2x2. Se puede señalar una indicación del tamaño y la identidad del filtro que se usa para cada bloque de 2x2.
Si las imágenes reconstruidas son imágenes de referencia, pueden almacenarse en una memoria intermedia de referencia 738 para la interpredicción de futuras CU 102 en 706.
Durante las etapas anteriores, JVET permite que se usen operaciones de recorte adaptativas de contenido para ajustar los valores de color para que encajen entre los límites de recorte inferior y superior. Los límites de recorte pueden cambiar para cada segmento y los parámetros que identifican los límites se pueden señalar en el tren de bits.
La Figura 9 representa un diagrama de bloques simplificado para la codificación CU en un decodificador JVET. Un decodificador es una modalidad de un proceso de decodificación, que es un proceso especificado para JVET que lee un tren de bits y deriva imágenes decodificadas de este. Un proceso en este contexto describe la decodificación de elementos de sintaxis. Un tren de bits de conforme a JVET puede incluir datos de fragmentos de segmento para cada unidad de árbol de codificación de una imagen codificada, de manera que la división de las imágenes en cortes o fragmentos de segmento y luego en unidades de árbol de codificación puede formar el particionamiento de la imagen. La imagen codificada puede ser una representación codificada de una imagen. En una o más modalidades, la imagen codificada puede comprender unidades VCL NAL con un valor particular dentro de una unidad de acceso, y puede incluir todas las unidades de árbol de codificación en la imagen.
Como se describió anteriormente, la Figura 3 es un ejemplo de una representación de árbol de codificación que se proporciona a través de elementos de sintaxis en el tren de bits al decodificador, donde el decodificador puede recrear la partición de la unidad de árbol de codificación en base a cada nodo hijo, y la unidad de codificación padre representada por la sintaxis en el tren de bits. Por lo tanto, el proceso de decodificación puede invocarse cuando se analiza la sintaxis de datos de fragmento de segmento o la sintaxis de la unidad de árbol de codificación.
Un decodificador JVET puede recibir un tren de bits que contiene información sobre las CU codificadas 102. El tren de bits puede indicar cómo se particionaron las CU 102 de una imagen a partir de una CTU 100 de acuerdo con una estructura QTBT. A manera de ejemplo no limitativo, el tren de bits puede identificar cómo se particionaron las CU 102 de cada CTU 100 en un QTBT mediante el uso de particionamiento de árbol cuaternario, particionamiento binario simétrico y/o particionamiento binario asimétrico. El tren de bits también puede indicar información de predicción para las CU 102, tales como modos de intrapredicción o vectores de movimiento, y los bits 902 que representan las CU residuales codificadas por entropía. En algunas modalidades, el codificador puede haber omitido información en el tren de bits acerca de los modos de intrapredicción utilizados para codificar algunas o todas las CU 102 codificadas mediante intrapredicción y, como tal, el decodificador puede usar la coincidencia de plantillas para intrapredicción como se describe más abajo con respecto a las siguientes figuras.
En 904, el decodificador puede decodificar los bits codificados en entropía 902 mediante el uso de los modelos de contexto CABAC señalados en el tren de bits por el codificador. El decodificador puede utilizar parámetros señalados por el codificador para actualizar las probabilidades de los modelos de contexto de la misma manera que se actualizaron durante la codificación.
Después de invertir la codificación de entropía en 904 para encontrar los coeficientes de transformación cuantificados 906, el decodificador puede descuantificarlos en 908 para encontrar los coeficientes de transformación descuantificados 910. Si se realizó una operación MDNSST durante la codificación, el decodificador puede invertir esa operación después de la descuantificación.
En 912, los coeficientes de transformación descuantificados 910 se pueden transformar de forma inversa para encontrar una CU 914 residual reconstruida. En 916, la CU 914 residual reconstruida se puede agregar a una CU 926 de predicción correspondiente encontrada con intrapredicción en 922 o interpredicción en 924, para encontrar una CU 918 reconstruida.
En 920, se pueden aplicar uno o más filtros a los datos reconstruidos, ya sea a nivel de imagen o de CU. Por ejemplo, el decodificador puede aplicar un filtro de desbloqueo, un filtro de desplazamiento de muestra adaptativo (SAO) y/o un filtro de lazo adaptativo (ALF). Como se describió anteriormente, los filtros en lazo ubicados en el lazo de decodificación del codificador pueden usarse para estimar parámetros de filtro óptimos para aumentar la calidad objetiva y subjetiva de un fotograma. Estos parámetros se transmiten al decodificador para filtrar el fotograma reconstruido en 920 para coincidir con el fotograma reconstruido filtrado en el codificador.
Una vez que se han generado imágenes reconstruidas encontrando CU reconstruidas 918 y al aplicar filtros señalizados, el decodificador puede emitir las imágenes reconstruidas como salida de vídeo 928. Si se van a usar imágenes reconstruidas como imágenes de referencia, se pueden almacenar en una memoria intermedia de referencia 930 para la interpredicción de futuras CU 102 en 924.
La Figura 10 representa una modalidad de un método de codificación de CU 1000 en un decodificador JVET. En la modalidad que se representa en la Figura 10, en la etapa 1002 se puede recibir un tren de bits codificado 902 y luego en la etapa 1004 se puede determinar el modelo de contexto CABAC asociado con el tren de bits codificado 902 y luego se puede decodificar el tren de bits codificado 902 mediante el uso del modelo de contexto CABAC que se determina en la etapa 1006.
En la etapa 1008, los coeficientes de transformación cuantificados 906 asociados con el tren de bits codificado 902 pueden determinarse y los coeficientes de transformación descuantificados 910 pueden determinarse entonces a partir de los coeficientes de transformación cuantificados 906 en la etapa 1010.
En la etapa 1012, se puede determinar si se realizó una operación MDNSST durante la codificación y/o si el tren de bits 902 contiene indicaciones de que se aplicó una operación de MDNSST al tren de bits 902. Si se determina que se realizó una operación MDNSST durante el proceso de codificación o el tren de bits 902 contiene indicaciones de que se aplicó una operación MDNSST al tren de bits 902, entonces puede implementarse una operación MDNSST inversa 1014 antes de que se realice una operación de transformación inversa 912 en el tren de bits 902 en la etapa 1016. Alternativamente, se puede realizar una operación de transformación inversa 912 en el tren de bits 902 en la etapa 1016 sin la aplicación de una operación MDNSST inversa en la etapa 1014. La operación de transformación inversa 912 en la etapa 1016 puede determinar y/o construir una CU 914 residual reconstruida.
En la etapa 1018, la CU 914 residual reconstruida de la etapa 1016 se puede combinar con una CU 918 de predicción. La CU 918 de predicción puede ser una CU 922 de intrapredicción determinada en la etapa 1020 y una unidad 924 de interpredicción determinada en la etapa 1022.
En la etapa 1024, se pueden aplicar uno o más filtros 920 a la CU 914 reconstruida y sacarlas en la etapa 1026. En algunas modalidades, los filtros 920 pueden no aplicarse en la etapa 1024.
En algunas modalidades, en la etapa 1028, la CU 918 reconstruida se puede almacenar en una memoria intermedia de referencia 930.
La ejecución de las secuencias de instrucciones necesarias para practicar las modalidades puede realizarse mediante un sistema informático 1100 como se muestra en la Figura 11. En una modalidad, la ejecución de las secuencias de instrucciones se realiza mediante un único sistema informático 1100. De acuerdo con otras modalidades, dos o más sistemas informáticos 1100 acoplados por un enlace de comunicación 1115 pueden realizar la secuencia de instrucciones en coordinación entre sí. Aunque más abajo se presentará una descripción de un solo sistema informático 1100, debe entenderse que se puede emplear cualquier número de sistemas informáticos 1100 para poner en práctica las modalidades.
Ahora se describirá un sistema informático 1100 de acuerdo con una modalidad con referencia a la Figura 11, que es un diagrama de bloques de los componentes funcionales de un sistema informático 1100. Como se usa en la presente descripción, el término sistema informático 1100 se usa ampliamente para describir cualquier dispositivo informático que pueda almacenar y ejecutar independientemente uno o más programas.
Cada sistema informático 1100 puede incluir una interfaz de comunicación 1114 acoplada al bus 1106. La interfaz de comunicación 1114 proporciona una comunicación bidireccional entre los sistemas informáticos 1100. La interfaz de comunicación 1114 de un sistema informático respectivo 1100 transmite y recibe señales eléctricas, electromagnéticas u ópticas, que incluyen flujos de datos que representan varios tipos de información de señales, por ejemplo, instrucciones, mensajes y datos. Un enlace de comunicación 1115 enlaza un sistema informático 1100 con otro sistema informático 1100. Por ejemplo, el enlace de comunicación 1115 puede ser una LAN, en cuyo caso la interfaz de comunicación 1114 puede ser una tarjeta LAN, o el enlace de comunicación 1115 puede ser una PSTN, en cuyo caso la interfaz de comunicación 1114 puede ser una red digital de servicios integrados (RDSI) o un módem, o el enlace de comunicación 1115 puede ser Internet, en cuyo caso la interfaz de comunicación 1114 puede ser un módem de acceso telefónico, de cable o inalámbrico.
Un sistema informático 1100 puede transmitir y recibir mensajes, datos e instrucciones, incluido el programa, es decir, la aplicación, el código, a través de su respectivo enlace de comunicación 1115 y su interfaz de comunicación 1114. El código de programa recibido puede ser ejecutado por el(los) respectivo(s) procesador(es) 1107 a medida que se recibe, y/o se puede almacenar en el dispositivo de almacenamiento 1110, u otros medios no volátiles asociados, para su posterior ejecución.
En una modalidad, el sistema informático 1100 funciona junto con un sistema de almacenamiento de datos 1131, por ejemplo, un sistema de almacenamiento de datos 1131 que contiene una base de datos 1132 que es fácilmente accesible por el sistema informático 1100. El sistema informático 1100 se comunica con el sistema de almacenamiento de datos 1131 a través de una interfaz de datos 1133. Una interfaz de datos 1133, que está acoplada al bus 1106, transmite y recibe señales eléctricas, electromagnéticas u ópticas, que incluyen flujos de datos que representan varios tipos de información de señales, por ejemplo, instrucciones, mensajes y datos. En modalidades, las funciones de la interfaz de datos 1133 pueden ser realizadas por la interfaz de comunicación 1114.
El sistema informático 1100 incluye un bus 1106 u otro mecanismo de comunicación para comunicar instrucciones, mensajes y datos, colectivamente, información y uno o más procesadores 1107 acoplados con el bus 1106 para procesar información. El sistema informático 1100 incluye además una memoria principal 1108, tal como una memoria de acceso aleatorio (RAM) u otro dispositivo de almacenamiento dinámico, acoplado al bus 1106 para almacenar datos dinámicos e instrucciones para ser ejecutadas por el procesador o los procesadores 1107. La memoria principal 1108 también puede usarse para almacenar datos temporales, es decir, variables u otra información intermedia durante la ejecución de instrucciones por parte del procesador 1107.
El sistema informático 1100 puede incluir además una memoria de sólo lectura (ROM) 1109 u otro dispositivo de almacenamiento estático acoplado al bus 1106 para almacenar datos estáticos e instrucciones para el procesador o los procesadores 1107. Un dispositivo de almacenamiento 1110, tal como un disco magnético o un disco óptico, también se puede proporcionar y acoplar al bus 1106 para almacenar datos e instrucciones para el procesador o procesadores 1107.
Un sistema informático 1100 puede acoplarse a través del bus 1106 a un dispositivo de visualización 1111, tal como, pero sin limitarse a, un tubo de rayos catódicos (CRT) o un monitor de pantalla de cristal líquido (LCD), para mostrar información a un usuario. Un dispositivo de entrada 1112, por ejemplo, alfanumérico y otras teclas, se acopla al bus 1106 para comunicar información y selecciones de comandos al procesador o procesadores 1107.
De acuerdo con una modalidad, un sistema informático individual 1100 realiza operaciones específicas mediante sus respectivos procesadores 1107 ejecutando una o más secuencias de una o más instrucciones contenidas en la memoria principal 1108. Dichas instrucciones se pueden leer en la memoria principal 1108 desde otro medio que se puede usar por computadora, tal como la ROM 1109 o el dispositivo de almacenamiento 1110. La ejecución de las secuencias de instrucciones contenidas en la memoria principal 1108 hace que el procesador o los procesadores 1107 realicen los procesos descritos en la presente descripción. En modalidades alternativas, pueden usarse circuitos cableados en lugar de o en combinación con instrucciones de software. Por lo tanto, las modalidades no se limitan a ninguna combinación específica de circuitos de hardware y/o software.
El término "medio que se puede usar por computadora", como se usa en la presente descripción, se refiere a cualquier medio que proporcione información o pueda usarse por el procesador 1107. Un medio de este tipo puede adoptar muchas formas, que incluyen, pero no se limitan a, medios no volátiles, volátiles y de transmisión. Los medios no volátiles, es decir, los medios que pueden retener información en ausencia de energía, incluyen la ROM 1109, CD ROM, cinta magnética y discos magnéticos. Los medios volátiles, es decir, los medios que no pueden retener información en ausencia de energía, incluyen la memoria principal 1108. Los medios de transmisión incluyen cables coaxiales, cables de cobre y fibra óptica, incluidos los cables que comprende el bus 1106. Los medios de transmisión también pueden adoptar la forma de ondas portadoras; es decir, ondas electromagnéticas que se pueden modular, como en frecuencia, amplitud o fase, para transmitir señales de información. Adicionalmente, los medios de transmisión pueden adoptar la forma de ondas acústicas o de luz, tal como las generadas durante las comunicaciones de datos por ondas de radio e infrarrojos. En la memoria descriptiva anterior, las modalidades se han descrito con referencia a elementos específicos de estas. Sin embargo, será evidente que pueden hacerse varias modificaciones y cambios sin apartarse del espíritu y alcance más amplios de las modalidades. Por ejemplo, el lector debe comprender que el orden y la combinación específicos de las acciones del proceso que se muestran en los diagramas de flujo del proceso que se describen en la presente descripción son simplemente ilustrativos, y que el uso de acciones del proceso diferentes o adicionales, o puede usarse una combinación u orden diferente de las acciones del proceso para promulgar las modalidades. En consecuencia, la especificación y los dibujos deben considerarse en un sentido ilustrativo en lugar de restrictivo
Debe tenerse en cuenta además que la presente invención se puede implementar en una variedad de sistemas informáticos. Las diversas técnicas descritas en la presente descripción se pueden implementar en hardware o software, o una combinación de ambos. Preferentemente, las técnicas se implementan en programas de computadora que se ejecutan en computadoras programables que incluyen cada una un procesador, un medio de almacenamiento que puede leerse por el procesador (incluyendo memoria volátil y no volátil y/o elementos de almacenamiento), al menos un dispositivo de entrada, y al menos un dispositivo de salida. El código de programa se aplica a los datos ingresados mediante el uso del dispositivo de entrada para realizar las funciones descritas anteriormente y para generar información de salida. La información de salida se aplica a uno o más dispositivos de salida. Cada programa se implementa preferentemente en un lenguaje de programación orientado a objetos o de procedimiento de alto nivel para comunicarse con un sistema informático. Sin embargo, los programas se pueden implementar en lenguaje de ensamble o de máquina, si se desea. En cualquier caso, el lenguaje puede ser un lenguaje compilado o interpretado. Cada uno de estos programas de computadora se almacena preferentemente en un medio o dispositivo de almacenamiento (por ejemplo, ROM o disco magnético) que es legible por una computadora programable de propósito general o especial para configurar y operar la computadora cuando el medio de almacenamiento o dispositivo es leído por la computadora para realizar los procedimientos descritos anteriormente. El sistema también se puede considerar implementado como un medio de almacenamiento legible por computadora, configurado con un programa de computadora, donde el medio de almacenamiento así configurado hace que una computadora funcione de una manera específica y predefinida. Además, los elementos de almacenamiento de las aplicaciones informáticas ilustrativas pueden ser bases de datos informáticas de tipo relacional o secuencial (archivo plano) que son capaces de almacenar datos en diversas combinaciones y configuraciones.
La Figura 12 es un diagrama de flujo que ilustra un método para realizar las técnicas descritas, pero debe entenderse que las técnicas descritas en la presente descripción con respecto a las figuras restantes capturan de manera similar los métodos disponibles mediante el uso de las técnicas descritas. Como se ilustra en la Figura 12, un codificador o decodificador JVET, tal como los descritos en las Figuras 7, 9 y 13, pueden recibir un tren de bits en 1202 que indica cómo se particionó una unidad de árbol de codificación en unidades de codificación, como un tren de bits con una estructura de sintaxis tal como la que se muestra en la Figura 6C. En 1204, el codificador o decodificador puede analizar el tren de bits para determinar cada uno de un método de particionamiento (por ejemplo, binario, árbol cuaternario, ternario), un tipo de particionamiento (por ejemplo, una división vertical u horizontal en cual tipo se muestra en la Figura 5, por ejemplo). En 1206, el codificador o decodificador puede identificar cada una de las unidades de codificación secundarias dentro de cada unidad padre respectiva para formar una representación de estructura de árbol. En 1208, el codificador puede codificar las unidades de codificación de acuerdo con la estructura de árbol para proporcionarlas a un decodificador, o el codificador puede proporcionar las unidades de codificación de codificación a un proceso de decodificación interno como se describió con respecto a la Figura 7. En 1208, un decodificador puede decodificar las unidades de codificación identificadas de acuerdo con la estructura de árbol mediante el uso de procesos JVET.
La Figura 13 es una vista de alto nivel de un dispositivo fuente 12 y un dispositivo de destino 10 que puede incorporar características de los sistemas y dispositivos descritos en la presente descripción. Como se muestra en la Figura 12, el sistema de codificación de video de ejemplo 10 incluye un dispositivo fuente 12 y un dispositivo de destino 14 donde, en este ejemplo, el dispositivo fuente 12 genera datos de video codificados. En consecuencia, el dispositivo fuente 12 puede denominarse dispositivo de codificación de vídeo. El dispositivo de destino 14 puede decodificar los datos de video codificados generados por el dispositivo fuente 12. En consecuencia, el dispositivo de destino 14 puede denominarse dispositivo decodificador de vídeo. El dispositivo fuente 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo.
El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo fuente 12 a través de un canal 16. El canal 16 puede comprender un tipo de medio o dispositivo capaz de mover los datos de video codificados desde el dispositivo fuente 12 al dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender un medio de comunicación que permite al dispositivo fuente 12 transmitir datos de video codificados directamente al dispositivo de destino 14 en tiempo real.
En este ejemplo, el dispositivo fuente 12 puede modular los datos de video codificados de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de video modulados al dispositivo de destino 14. El medio de comunicación puede comprender un medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base u otro equipo que facilite la comunicación desde el dispositivo fuente 12 al dispositivo de destino 14. En otro ejemplo, el canal 16 puede corresponder a un medio de almacenamiento que almacena los datos de video codificados generados por el dispositivo fuente 12.
En el ejemplo de la Figura 12, el dispositivo fuente 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 28 puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo fuente 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captura de video, por ejemplo, una cámara de video, un archivo de video que contiene datos de video capturados previamente, una interfaz de alimentación de video para recibir datos de video de un proveedor de contenido de video, y/o un sistema de gráficos por computadora para generar datos de video, o una combinación de tales fuentes.
El codificador de video 20 puede codificar los datos de video capturados, precapturados o generados por computadora. El codificador 20 de vídeo puede recibir una imagen de entrada y almacenarla en la memoria de fotogramas de entrada 21. El procesador 23 de propósito general puede cargar información desde aquí y realizar la codificación. El programa para impulsar el procesador de propósito general puede cargarse desde un dispositivo de almacenamiento, tal como los módulos de memoria de ejemplo que se representan en la Figura 12. El procesador de propósito general puede usar la memoria de procesamiento 22 para realizar la codificación, y la salida de la información de codificación por el procesador general puede almacenarse en una memoria intermedia, tal como la memoria intermedia de salida 26.
El codificador de video 20 puede incluir un módulo de remuestreo 25 que puede configurarse para codificar (por ejemplo, codificar) datos de video en un esquema de codificación de video escalable que define al menos una capa base y al menos una capa de mejora. El módulo de remuestreo 25 puede volver a muestrear al menos algunos datos de vídeo como parte de un proceso de codificación, en donde el remuestreo se puede realizar de manera adaptativa mediante el uso filtros de remuestreo.
Los datos de vídeo codificados, por ejemplo, un tren de bits codificados, pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 28 del dispositivo fuente 12. En el ejemplo de la Figura 12, el dispositivo de destino 14 incluye una interfaz de entrada 38, un decodificador 30 de vídeo y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 38 del dispositivo de destino 14 recibe datos de video codificados por el canal 16. Los datos de video codificados pueden incluir una variedad de elementos de sintaxis generados por el codificador de video 20 que representan los datos de video. Dichos elementos de sintaxis pueden incluirse con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
Los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento o un servidor de archivos para un acceso posterior por el dispositivo de destino 14 para decodificar y/o reproducir. Por ejemplo, el tren de bits codificado puede almacenarse temporalmente en la memoria intermedia de entrada 31 y luego cargarse en el procesador 33 de propósito general. El programa para impulsar el procesador de propósito general puede cargarse desde un dispositivo de almacenamiento o memoria. El procesador de propósito general puede usar una memoria de proceso 32 para realizar la decodificación. El decodificador de video 30 también puede incluir un módulo de remuestreo 35 similar al módulo de remuestreo 25 empleado en el codificador de video 20.
Figura 12 representa el módulo de remuestreo 35 por separado del procesador de propósito general 33, pero un experto en la técnica apreciará que la función de remuestreo puede ser realizada por un programa ejecutado por el procesador de propósito general, y el procesamiento en el codificador de video se puede lograr mediante el uso de uno o más procesadores. La imagen o imágenes decodificadas pueden almacenarse en la memoria intermedia de fotogramas de salida 36 y luego enviarse a la interfaz de entrada 38.
El dispositivo de visualización 38 puede estar integrado o ser externo al dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también puede configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 38 muestra los datos de vídeo decodificados a un usuario.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con un estándar de compresión de vídeo. ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) están estudiando la posible necesidad de estandarizar la tecnología de codificación de video futura con una capacidad de compresión que excede significativamente el estándar actual de Codificación de Video de Alta Eficiencia HEVC (incluyendo sus extensiones actuales y extensiones a corto plazo para la codificación de contenido de pantalla y la codificación de alto rango dinámico). Los grupos están trabajando juntos en esta actividad de exploración en un esfuerzo de colaboración conjunto conocido como el Equipo Conjunto de Exploración de Video (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en esta área. Una captura reciente del desarrollo de JVET se describe en "Algorithm Description of Joint Exploration Test Model 5 (JEM 5)", JVET-E1001-V2, escrito por J. Chen, E. Alshina, G. Sullivan, J. Ohm, J Boyce.
Adicional o alternativamente, el codificador de video 20 y el decodificador de video 30 pueden operar de acuerdo con otros estándares de propiedad o de la industria que funcionan con las características de JVET descritas. Por lo tanto, otros estándares tal como el estándar ITU-T H.264, denominado alternativamente como MPEG-4, Parte 10, Codificación Avanzada de Video (AVC), o extensiones de dichos estándares. Por lo tanto, aunque se han desarrollado recientemente para JVET, las técnicas de esta descripción no se limitan a ninguna técnica o estándar de codificación particular. Otros ejemplos de estándares y técnicas de compresión de video incluyen MPEG-2, ITU-T H.263 y formatos de compresión patentados o de acceso abierto y formatos relacionados.
El codificador de video 20 y el decodificador de video 30 pueden implementarse en hardware, software, microprograma o cualquiera de sus combinaciones. Por ejemplo, el codificador de video 20 y el decodificador 30 pueden emplear uno o más procesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas lógicas programables en campo (FPGA), lógica discreta o cualquiera de sus combinaciones. Cuando el codificador de video 20 y el decodificador 30 se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio, legible por computadora y puede ejecutar las instrucciones en hardware mediante el uso de uno o más procesadores para realizar las técnicas. de esta descripción. Cada uno de los codificadores de vídeo 20 y decodificador de vídeo 30 se puede incluir en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
Los aspectos del tema descrito en la presente descripción pueden describirse en el contexto general de instrucciones ejecutables por computadora, tales como módulos de programa, que se ejecutan por una computadora, tal como los procesadores de propósito general 23 y 33 descritos anteriormente. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. Los aspectos del tema descrito en la presente descripción también se pueden practicar en entornos informáticos distribuidos donde las tareas se realizan mediante dispositivos de procesamiento remoto que están conectados a través de una red de comunicaciones. En un entorno informático distribuido, los módulos de programa pueden estar ubicados en medios de almacenamiento informáticos tanto locales como remotos, incluidos dispositivos de almacenamiento de memoria.
Entre los ejemplos de memoria se incluyen la memoria de acceso aleatorio (RAM), la memoria de solo lectura (ROM) o ambas. La memoria puede almacenar instrucciones, tal como código fuente o código binario, para realizar las técnicas descritas anteriormente. La memoria también puede usarse para almacenar variables u otra información intermedia durante la ejecución de instrucciones para ser ejecutadas por un procesador, tal como el procesador 23 y 33.
Un dispositivo de almacenamiento también puede almacenar instrucciones, instrucciones, tales como código fuente o código binario, para realizar las técnicas descritas anteriormente. Un dispositivo de almacenamiento puede almacenar adicionalmente datos que se usan y manipulan por el procesador de la computadora. Por ejemplo, un dispositivo de almacenamiento en un codificador de video 20 o un decodificador de video 30 puede ser una base de datos a la que se accede mediante el sistema informático 23 o 33. Otros ejemplos de dispositivo de almacenamiento incluyen memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), un disco duro, un disco magnético, un disco óptico, un CD-ROM, un DVD, una memoria flash, una tarjeta de memoria USB o cualquier otro medio a partir del cual una computadora pueda leer.
Una memoria o dispositivo de almacenamiento puede ser un ejemplo de un medio de almacenamiento legible por ordenador no transitorio para su uso por o en relación con el codificador y/o decodificador de vídeo. El medio de almacenamiento legible por ordenador no transitorio contiene instrucciones para controlar un sistema informático a configurar para realizar funciones descritas por modalidades particulares. Las instrucciones, cuando se ejecutan por uno o más procesadores informáticos, pueden configurarse para realizar lo que se describe en modalidades particulares.
Además, se observa que algunas modalidades se han descrito como un proceso que se puede representar como un diagrama de flujo o diagrama de bloques. Aunque cada uno puede describir las operaciones como un proceso secuencial, muchas de las operaciones se pueden realizar en paralelo o simultáneamente. Además, se puede reorganizar el orden de las operaciones. Un proceso puede tener etapas adicionales que no se incluyen en las figuras.
Se pueden implementar modalidades particulares en un medio de almacenamiento legible por ordenador no transitorio para su uso por o en relación con el sistema, aparato, sistema o máquina de ejecución de instrucciones. El medio de almacenamiento legible por ordenador contiene instrucciones para controlar un sistema informático para realizar un método descrito por modalidades particulares. El sistema informático puede incluir uno o más dispositivos informáticos. Las instrucciones, cuando se ejecutan por uno o más procesadores de computadora, pueden configurarse para realizar lo que se describe en modalidades particulares
Como se usa en la descripción de la presente descripción y en todas las reivindicaciones que siguen, "un", "una" y "el" incluyen referencias en plural a menos que el contexto lo indique claramente de cualquier otra manera. Además, como se usa en la descripción de la presente descripción y en todas las reivindicaciones que siguen, el significado de "en" incluye "en" y "en" a menos que el contexto lo indique claramente de cualquier otra manera.
La invención se expone en el conjunto de reivindicaciones adjuntas.

Claims (1)

  1. REIVINDICACIONES
    Un aparato para decodificar datos de video que comprende uno o más procesadores configurados para:
    recibir un tren de bits que indica cómo se particionó una unidad de árbol de codificación en unidades de codificación de acuerdo con una estructura de particionamiento que permite que los nodos raíz se particionen con particionamiento binario simétrico y con particionamiento ternario asimétrico, en donde un nodo raíz puede particionarse de forma recursiva mediante el uso de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico;
    analizar dicho tren de bits para determinar cómo se particionó la unidad de árbol de codificación mediante el uso de particionamiento de árbol cuaternario, dicho particionamiento binario simétrico y/o dicho particionamiento ternario asimétrico;
    analizar dicho tren de bits para determinar una simetría de dicho particionamiento, para determinar si al menos uno de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se usó para particionar una unidad de codificación padre en nodos hijos, en donde dicho particionamiento binario simétrico divide un nodo padre de dicha unidad de codificación padre en nodos hijos de igual tamaño, y el particionamiento ternario asimétrico divide un nodo padre ya sea en un particionamiento horizontal o en un particionamiento vertical, pero no un particionamiento mixto horizontal y vertical, en tres nodos hijos en donde dos de los tres nodos hijos son de igual tamaño y en donde un tercio de los tres nodos hijos es el doble del tamaño de cada uno de dichos dos de los tres nodos hijos que son de dichos tamaños iguales, donde dichos dos de los tres nodos hijos están más lejos de un centro de un nodo padre respectivo con dicho tercer de los tres nodos hijo que se particiona y que está en dicho centro;
    identificar cada uno de los nodos hijos dentro de cada unidad de codificación padre respectiva, en donde un nodo puede particionarse de forma recursiva en nodos más pequeños,
    en donde tanto dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se permiten en la estructura de particionamiento en cualquier orden durante un particionamiento recursivo de un nodo raíz o un nodo padre; y decodificar los nodos hijos identificados.
    El aparato de acuerdo con la reivindicación 1, en donde si el nodo padre se particiona mediante el uso de particionamiento de árbol cuaternario, los nodos hijos producidos a partir de la partición son nodos cuadrados y se permite más particionamiento de los nodos cuadrados mediante el uso de al menos uno de particionamiento de árbol cuaternario, particionamiento binario simétrico y/o particionamiento ternario asimétrico.
    El aparato de acuerdo con la reivindicación 1, en donde si el nodo padre se particiona mediante el uso de particionamiento ternario asimétrico, los nodos hijos producidos a partir de la partición incluyen al menos un nodo restringido, que se restringe para particionamiento adicional.
    Un método para la decodificación datos de video, el método que comprende:
    recibir un tren de bits que indica cómo se particionó una unidad de árbol de codificación en unidades de codificación de acuerdo con una estructura de particionamiento que permite que los nodos raíz se particionen con particionamiento binario simétrico y con particionamiento ternario asimétrico, en donde un nodo raíz puede particionarse de forma recursiva mediante el uso de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico;
    analizar dicho tren de bits para determinar cómo se particionó la unidad de árbol de codificación mediante el uso de particionamiento de árbol cuaternario, dicho particionamiento binario simétrico y/o dicho particionamiento ternario asimétrico;
    analizar dicho tren de bits para determinar una simetría de dicho particionamiento, para determinar si al menos uno de dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se usó para particionar una unidad de codificación padre en nodos hijos, en donde dicho particionamiento binario simétrico divide un nodo padre de dicha unidad de codificación padre en nodos hijos de igual tamaño, y el particionamiento ternario asimétrico divide un nodo padre ya sea en un particionamiento horizontal o en un particionamiento vertical, pero no un particionamiento mixto horizontal y vertical, en tres nodos hijos en donde dos de los tres nodos hijos son de igual tamaño y en donde un tercio de los tres nodos hijos es el doble del tamaño de cada uno de dichos dos de los tres nodos hijos que son de dichos tamaños iguales, donde dichos dos de los tres nodos hijos están más lejos de un centro de un nodo padre respectivo con dicho tercer de los tres nodos hijo que se particiona y que está en dicho centro;
    identificar cada uno de los nodos hijos dentro de cada unidad de codificación padre respectiva, en donde un nodo puede particionarse de forma recursiva en nodos más pequeños,
    en donde tanto dicho particionamiento ternario asimétrico y/o dicho particionamiento binario simétrico se permiten en la estructura de particionamiento en cualquier orden durante un particionamiento recursivo de un nodo raíz o un nodo padre; y decodificar los nodos hijos identificados.
ES17729289T 2016-05-25 2017-05-25 Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo Active ES2877362T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662341325P 2016-05-25 2016-05-25
US201662408696P 2016-10-14 2016-10-14
US201662414060P 2016-10-28 2016-10-28
PCT/US2017/034590 WO2017205700A1 (en) 2016-05-25 2017-05-25 Binary, ternary and quad tree partitioning for jvet coding of video data

Publications (1)

Publication Number Publication Date
ES2877362T3 true ES2877362T3 (es) 2021-11-16

Family

ID=65030629

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17729289T Active ES2877362T3 (es) 2016-05-25 2017-05-25 Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo

Country Status (4)

Country Link
EP (3) EP3855742B1 (es)
ES (1) ES2877362T3 (es)
PL (1) PL3446483T3 (es)
PT (1) PT3446483T (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11240499B2 (en) * 2019-05-24 2022-02-01 Tencent America LLC Method and apparatus for video coding

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101484280B1 (ko) * 2009-12-08 2015-01-20 삼성전자주식회사 임의적인 파티션을 이용한 움직임 예측에 따른 비디오 부호화 방법 및 장치, 임의적인 파티션을 이용한 움직임 보상에 따른 비디오 복호화 방법 및 장치
WO2014120369A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive partitioning for prediction and coding for next generation video

Also Published As

Publication number Publication date
EP4224859A3 (en) 2023-09-20
EP3446483B1 (en) 2021-04-21
EP3446483A1 (en) 2019-02-27
EP4224859A2 (en) 2023-08-09
EP3855742B1 (en) 2023-07-05
PT3446483T (pt) 2021-06-23
EP3855742A1 (en) 2021-07-28
PL3446483T3 (pl) 2021-10-25

Similar Documents

Publication Publication Date Title
US11652992B2 (en) JVET quadtree plus binary tree (QTBT) structure with multiple asymmetrical partitioning
US11677945B2 (en) General block partitioning method
US10567808B2 (en) Binary ternary quad tree partitioning for JVET
US11902519B2 (en) Post-filtering for weighted angular prediction
US11509936B2 (en) JVET coding block structure with asymmetrical partitioning
KR20200027009A (ko) 인트라 모드 jvet 코딩
ES2877362T3 (es) Particionamiento de árbol binario, ternario y cuaternario para la codificación JVET de datos de vídeo
EP3446482B1 (en) General block partitioning method