ES2973667T3 - Un codificador de video, un decodificador de video y métodos correspondientes - Google Patents
Un codificador de video, un decodificador de video y métodos correspondientes Download PDFInfo
- Publication number
- ES2973667T3 ES2973667T3 ES19862691T ES19862691T ES2973667T3 ES 2973667 T3 ES2973667 T3 ES 2973667T3 ES 19862691 T ES19862691 T ES 19862691T ES 19862691 T ES19862691 T ES 19862691T ES 2973667 T3 ES2973667 T3 ES 2973667T3
- Authority
- ES
- Spain
- Prior art keywords
- partition
- block
- information
- video
- tree
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 198
- 238000005192 partition Methods 0.000 claims abstract description 484
- 238000000638 solvent extraction Methods 0.000 claims abstract description 100
- 241000023320 Luma <angiosperm> Species 0.000 claims description 119
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 119
- 238000012545 processing Methods 0.000 claims description 100
- 230000004913 activation Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 230000011664 signaling Effects 0.000 abstract description 26
- 238000013139 quantization Methods 0.000 description 75
- 239000000872 buffer Substances 0.000 description 46
- 230000006854 communication Effects 0.000 description 35
- 238000004891 communication Methods 0.000 description 35
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 25
- 239000011449 brick Substances 0.000 description 22
- 239000013598 vector Substances 0.000 description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 16
- 238000011161 development Methods 0.000 description 13
- 230000018109 developmental process Effects 0.000 description 13
- 230000003044 adaptive effect Effects 0.000 description 12
- 238000001914 filtration Methods 0.000 description 12
- 238000003491 array Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 238000007781 pre-processing Methods 0.000 description 9
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000002123 temporal effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000002146 bilateral effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000009849 deactivation Effects 0.000 description 4
- 238000009499 grossing Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 241000385654 Gymnothorax tile Species 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000007727 signaling mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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 a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Closed-Circuit Television Systems (AREA)
Abstract
La presente divulgación proporciona un aparato de codificación y decodificación, así como un método de codificación y decodificación. En particular, la presente divulgación se refiere a la partición de bloques y a la señalización de los parámetros de partición en un flujo de bits. Un indicador de anulación en el encabezado de una región de imagen indica si un bloque se va a dividir o no de acuerdo con una primera información de restricción de partición. El indicador de anulación se incluye en el flujo de bits y el bloque se divide en consecuencia. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Un codificador de video, un decodificador de video y métodos correspondientes
CAMPO DE LA INVENCIÓN
Las realizaciones de la presente solicitud se refieren generalmente al campo de codificación de video y, más en particular, a la división y partición de bloques.
ANTECEDENTES DE LA INVENCIÓN
La codificación de video (codificación y decodificación de video) se utiliza en una amplia gama de aplicaciones de video digital, por ejemplo, difusión de televisión digital, transmisión de video a través de Internet y redes móviles, aplicaciones conversacionales en tiempo real tal como chat de video, videoconferencias, DVD y discos Blu-ray, sistemas de adquisición y edición de contenido de video y videocámaras de aplicaciones de seguridad.
Desde el desarrollo del enfoque de codificación de video híbrido basado en bloques en la norma H.261 en 1990, se desarrollaron nuevas técnicas e instrumentos de codificación de video que formaron la base para nuevas normas de codificación de video. Otras normas de codificación de video comprenden video MPEG-1, video MPEG-2, UIT-T H.262/MPEG-2, UIT-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Video (AVC), UIT-T H.265/Codificación de Video de Alta Eficiencia (HEVC), UIT-T H.266/Codificación Versátil de Video (VVC) y extensiones, por ejemplo escalabilidad y/o extensiones tridimensionales (3D), de estas normas. A medida que la creación y el uso de video se han vuelto más y más generalizados, el tráfico de video es la mayor carga en las redes de comunicación y el almacenamiento de datos, en consecuencia, uno de los objetivos de la mayoría de las normas de codificación de video fue lograr una reducción de la velocidad de bits en comparación con su predecesor sin sacrificar la calidad de imagen. Aunque la última codificación de video de alta eficiencia (HEVC) puede comprimir video aproximadamente el doble que AVC sin sacrificar la calidad, se desea una nueva técnica para comprimir adicionalmente video en comparación con HEVC.
El documento US2017/0280162A1 divulga un dispositivo para decodificar datos de video codificados.
XIU (interdigital) Xet al::"Description of SDR, HDR and 360° video coding technology proposal by InterDigital Communications and Dolby Laboratories", 122 congreso de MPEG; 20180416 - 20180420; San Diego; (grupo de expertos de imágenes en movimiento o ISO/IEC JTC1/SC29/WG11), n.° m42388, 14 de abril de 2018 (14-04-2018), XP030261692 propone soportar la adaptación de nivel de segmento/imagen de la granularidad del campo de movimiento obtenido mediante los modos ATMVP y STMVP.
BREVE DESCRIPCIÓN DE LA INVENCIÓN
Las realizaciones de la presente solicitud (o la presente descripción) proporcionan aparatos y métodos para codificación y decodificación de acuerdo con las reivindicaciones independientes.
Los objetos anteriores y otros objetos se logran por la materia de las reivindicaciones independientes. Otras formas de implementación son evidentes a partir de las reivindicaciones dependientes, la descripción y las figuras.
A partir de la norma, la definición de alguna característica es como sigue:
conjunto de parámetros de imagen (PPS): Una estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más imágenes codificadas completas como se determina por un elemento de sintaxis que se encuentra en cada cabecera de segmento.
conjunto de parámetros de secuencia (SPS): Estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más CVS completos como se determina por el contenido de un elemento de sintaxis encontrado en el PPS al que se hace referencia por un elemento de sintaxis encontrado en cada cabecera de segmento. cabecera de segmento: Una parte de un segmento codificado que contiene los elementos de datos pertenecientes al primer ladrillo o a todos los ladrillos representados en el segmento.
subimagen: Una región rectangular de una o más porciones dentro de una imagen.
Un segmento consiste de un número de mosaicos completos o solo una secuencia consecutiva de ladrillos completos de un mosaico.
mosaico: Una región rectangular de CTU dentro de una columna de mosaicos particular y una fila de mosaicos particular en una imagen.
Una imagen se divide en una o más filas de mosaicos y una o más columnas de mosaicos. Un mosaico es una secuencia de CTU que cubre una región rectangular de una imagen.
Un mosaico se divide en uno o más ladrillos, cada uno de los cuales consiste de un número de filas de CTU dentro del mosaico.
Un mosaico que no se particiona en múltiples ladrillos también se conoce como un ladrillo. Sin embargo, un ladrillo que es un subconjunto verdadero de un mosaico no se conoce como un mosaico.
Un segmento contiene un número de mosaicos de una imagen o un número de ladrillos de un mosaico.
Una subimagen contiene uno o más segmentos que cubren colectivamente una región rectangular de una imagen. Se soportan dos modos de segmentos, es decir, el modo de segmento de barrido de cuadrícula y el modo de segmento rectangular. En el modo de segmento de barrido de cuadrícula, un segmento contiene una secuencia de mosaicos en un barrido de cuadrícula de mosaico de una imagen. En el modo de segmento rectangular, un segmento contiene un número de ladrillos de una imagen que forman colectivamente una región rectangular de la imagen. Los ladrillos dentro de un segmento rectangular están en el orden de barrido de cuadrícula de ladrillo del segmento.
De acuerdo con un primer aspecto de la invención, se proporciona un método para decodificar un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el método de decodificación que comprende: obtener (una bandera de anulación del flujo de bits de video; cuando el valor de la bandera de anulación es un valor de anulación, obtener la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; y particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición.
Este enfoque permite que cada región de imagen tenga información de restricción de partición de sí misma, que no sea la información de restricción de partición para una pluralidad de región de imagen en el conjunto de parámetros, por lo que este enfoque permite un análisis de flujo de bits eficiente y, en particular, señalización de información de restricción de partición eficiente.
En donde la obtención de la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen puede comprender: obtener la primera información de restricción de partición para la región de imagen de los datos que representan la cabecera de región de imagen.
En donde el valor de anulación puede estar preestablecido.
En donde el valor sobresaliente comprende verdadero, falso, 0 o 1.
En donde la cabecera de región de imagen puede ser un conjunto o estructura que contiene los elementos de datos pertenecientes a toda o parte de la región de imagen.
En una forma de implementación posible del método de acuerdo con el primer aspecto como tal, el método de decodificación comprende además: obtener una bandera activada de anulación del flujo de bits de video, en donde el valor de la bandera activada de anulación es un valor de activación.
En donde el valor de activación puede estar preestablecido.
En donde el valor de activación comprende verdadero, falso, 0 o 1.
En una forma de implementación posible del método de acuerdo con el primer aspecto como tal, el método de decodificación comprende además: obtener una bandera activada de anulación del flujo de bits de video, en donde obtener la bandera de anulación del flujo de bits de video comprende: cuando el valor de la bandera activada de anulación es un valor de activación, obtener la bandera de anulación del flujo de bits de video.
En donde el valor de activación puede estar preestablecido.
En donde el valor de activación comprende verdadero, falso, 0 o 1.
Con la provisión de bandera activada de anulación, la anulación se puede controlar de manera eficiente, aumentando así la flexibilidad en el manejo de elementos de sintaxis relacionados con la partición de bloques. Se observa que cuando la bandera activada de anulación se establece en el valor de activación, la bandera de anulación se puede extraer adicionalmente del flujo de bits. De lo contrario, la bandera de anulación no se puede extraer del flujo de bits y no se aplica anulación en este caso. Más bien se puede usar una segunda o una tercera restricción de partición para particionar el bloque.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, el flujo de bits de video incluye además datos que representan un conjunto de parámetros del flujo de bits de video, y el método de decodificación comprende además: cuando el valor de la bandera activada de anulación es un valor de desactivación, particionar el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video. En donde la segunda información de restricción de partición puede ser del conjunto de parámetros o en el conjunto de parámetros.
En donde el conjunto de parámetros puede ser un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) o cualquier otro conjunto de parámetros.
En donde el valor de desactivación es diferente del valor de activación.
En donde el valor de desactivación puede estar preestablecido.
En donde el valor de desactivación comprende verdadero, falso, 0 o 1.
En donde cuando el valor de la bandera activada de anulación es un valor de desactivación, la primera información de restricción de partición puede no estar presente en el flujo de bits de video, y se puede inferir que el valor de la primera información de restricción de partición es igual al valor de la segunda información de restricción de partición. En donde el conjunto de parámetros puede ser un conjunto o una estructura que contiene elementos de sintaxis que se aplican a cero o más imágenes codificadas completas o secuencia de video codificada que comprende la región de imagen.
En donde el conjunto de parámetros es diferente de la cabecera de región de imagen.
Por ejemplo, la segunda información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido. Cualquier combinación/subconjunto de estos y parámetros adicionales se puede señalizar para configurar las restricciones de partición.
En donde la información del tamaño de nodo hoja de árbol cuádruple mínimo permitido puede ser un valor delta para obtener el valor del tamaño de nodo hoja de árbol cuádruple mínimo permitido. Por ejemplo, la información de tamaño de nodo hoja de árbol cuádruple mínimo permitido puede ser sps_log2_min_qt_size_intra_slices_minus2, sps_log2_min_qt_size_inter_slices_minus2 o log2_min_qt_size_minus2.
En donde la información de tamaño de nodo raíz de árbol ternario máximo permitido puede ser un valor delta para obtener el valor de tamaño de nodo raíz de árbol ternario máximo permitido. Por ejemplo, la información de tamaño de nodo raíz de árbol ternario máximo permitido puede ser sps_log2_diff_ctu_max_tt_size_intra_slices, sps_log2_diff_ctu_max_tt_size_inter_slices o log2_diff_ctu_max_tt_size.
En donde la información del tamaño de nodo raíz de árbol binario máximo permitido puede ser un valor delta para obtener el valor del tamaño de nodo raíz de árbol binario máximo permitido. Por ejemplo, la información de tamaño de nodo raíz de árbol binario máximo permitido puede ser sps_log2_diff_ctu_max_bt_size_intra_slices, sps_log2_diff_ctu_max_bt_size_inter_slices o log2_diff_ctu_max_bt_size.
Por ejemplo, la información de profundidad de árbol de tipo múltiple máximo puede ser sps_max_mtt_hierarchy_depth_inter_slices, sps_max_mtt_hierarchy_depth_intra_slices o max_mtt_hierarchy_depth. Además o alternativamente, la segunda información de restricción de partición comprende información de restricción de partición para un bloque en intramodo, o información de restricción de partición para un bloque en intermodo. . La segunda información de restricción de partición puede incluir tanto la información de restricción de partición para bloques en intramodo como información de restricción de partición para bloques en intermodo señalizado por separado. Sin embargo, la presente invención no se limita de esta manera y puede haber una información de restricción de partición común para la información de restricción de partición para bloques en intramodo e información de restricción de partición para bloques en intermodo.
En donde el bloque en intramodo, o el bloque en intermodo se refieren al conjunto de parámetros.
En donde el conjunto de parámetros puede comprender un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS).
En donde el bloque en intramodo puede estar dentro de una CTU en un segmento con slice_type igual a 2 (I) que se refiere al conjunto de parámetros o el bloque en intermodo puede estar dentro de una CTU en un segmento con slice_type igual a 0 (B) o 1 (P) que se refiere al conjunto de parámetros.
Además o alternativamente, la segunda información de restricción de partición comprende información de restricción de partición para un bloque de luma, y/o información de restricción de partición para un bloque de croma.
En donde el bloque luma, o el bloque croma se refiere al conjunto de parámetros.
En donde el conjunto de parámetros puede comprender un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS).
En donde el bloque de luma, o el bloque de croma puede estar dentro de una CTU en un segmento que se refiere al conjunto de parámetros.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, el flujo de bits de video incluye además datos que representan un conjunto de parámetros del flujo de bits de video, obtener una bandera activada de anulación del flujo de bits de video comprende obtener la bandera activada de anulación del conjunto de parámetros u obtener la bandera activada de anulación en el conjunto de parámetros.
En donde la obtención de la bandera activada de anulación del conjunto de parámetros puede comprender obtener la bandera activada de anulación de los datos que representan el conjunto de parámetros. En donde el conjunto de parámetros puede ser un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) o cualquier otro conjunto de parámetros.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, obtener la bandera de anulación del flujo de bits de video comprende obtener la bandera de anulación de la cabecera de región de imagen.
En donde la obtención de la bandera de anulación de la cabecera de región de imagen puede comprender obtener la bandera de anulación de los datos que representan la cabecera de región de imagen.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, la primera información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En donde la información del tamaño de nodo hoja de árbol cuádruple mínimo permitido puede ser un valor delta para obtener el valor del tamaño de nodo hoja de árbol cuádruple mínimo permitido. Por ejemplo, la información de tamaño de nodo hoja de árbol cuádruple mínimo permitido puede ser sps_log2_min_qt_size_intra_slices_minus2, sps_log2_min_qt_size_inter_slices_minus2 o log2_min_qt_size_minus2.
En donde la información de tamaño de nodo raíz de árbol ternario máximo permitido puede ser un valor delta para obtener el valor de tamaño de nodo raíz de árbol ternario máximo permitido. Por ejemplo, la información de tamaño de nodo raíz de árbol ternario máximo permitido puede ser sps_log2_diff_ctu_max_tt_size_intra_slices, sps_log2_diff_ctu_max_tt_size_inter_slices o log2_diff_ctu_max_tt_size.
En donde la información del tamaño de nodo raíz de árbol binario máximo permitido puede ser un valor delta para obtener el valor del tamaño de nodo raíz de árbol binario máximo permitido. Por ejemplo, la información de tamaño de nodo raíz de árbol binario máximo permitido puede ser sps_log2_diff_ctu_max_bt_size_intra_slices, sps_log2_diff_ctu_max_bt_size_inter_slices o log2_diff_ctu_max_bt_size.
Por ejemplo, la información de profundidad de árbol de tipo múltiple máximo puede ser sps_max_mtt_hierarchy_depth_inter_slices, sps_max_mtt_hierarchy_depth_intra_slices o max_mtt_hierarchy_depth. Por ejemplo, la región de imagen comprende un segmento, un mosaico o una subpágina, y la cabecera de región de imagen comprende una cabecera de segmento del segmento, una cabecera de mosaico del mosaico o una cabecera de la subpágina.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, el flujo de bits de video puede incluir además datos que representan un conjunto de parámetros del flujo de bits de video, y el método de decodificación comprende además: cuando el valor de la bandera de anulación no es el valor de anulación, particionar S230 el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros o particionar S230 el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video en el conjunto de parámetros.
En donde el conjunto de parámetros puede ser un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) o cualquier otro conjunto de parámetros.
En donde el valor de anulación es verdadero, el valor de la bandera de anulación no es el valor de anulación significa que el valor de la bandera de anulación es falso.
En donde el valor de anulación es 1, el valor de la bandera de anulación no es el valor de anulación significa que el valor de la bandera de anulación es 0.
De acuerdo con un segundo aspecto de la invención, un método para codificar un flujo de bits de video implementado por un dispositivo de codificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el método de codificación que comprende: determinar si particionar un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen; cuando se determina la partición del bloque es de acuerdo con la primera información de restricción de partición, particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición y configurar el valor de una bandera de anulación a un valor de anulación; e incluir los datos de la bandera de anulación en el flujo de bits de video.
En una forma de implementación posible del método de acuerdo con el segundo aspecto como tal, el método de codificación comprende además: determinar si se activa la partición del bloque de acuerdo con la primera información de restricción de partición; al determinar que se activa la partición del bloque de acuerdo con la primera información de restricción de partición, y establecer el valor de una bandera activada de anulación a un valor de activación; e incluir los datos de la bandera activada de anulación en el flujo de bits de video.
En donde la determinación de si particionar un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen comprende: al determinar que se activa la partición el bloque de acuerdo con la primera información de restricción de partición, determinar si la partición de un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen.
Por ejemplo, el flujo de bits de video incluye además datos que representan un conjunto de parámetros del flujo de bits de video, y el método de codificación comprende además: cuando se determina que no se activa la partición del bloque de acuerdo con la primera información de restricción de partición, particionar el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video en el conjunto de parámetros y configurar el valor de una bandera activada de anulación a un valor de desactivación. Además, o de forma alternativa, la segunda información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
Además o alternativamente, la segunda información de restricción de partición comprende información de restricción de partición para un bloque en intramodo, o información de restricción de partición para un bloque en intermodo. Por ejemplo, la segunda información de restricción de partición comprende información de restricción de partición para un bloque de luma, o información de restricción de partición para un bloque de croma.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del segundo aspecto o el segundo aspecto como tal, el flujo de bits de video incluye además datos que representan un conjunto de parámetros del flujo de bits de video, la bandera activada de anulación está en el conjunto de parámetros.
Por ejemplo, la bandera de anulación se encuentra en la cabecera de región de imagen.
Además o de forma alternativa a cualquiera de las realizaciones, la primera información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
Además o de forma alternativa a cualquiera de las realizaciones, la región de imagen comprende un segmento, un mosaico o una subpágina, y la cabecera de región de imagen comprende una cabecera de segmento del segmento, una cabecera de mosaico del mosaico o una cabecera de la subpágina.
Por ejemplo, el flujo de bits de video incluye además datos que representan un conjunto de parámetros del flujo de bits de video, el método de decodificación comprende además: cuando se determina que la partición del bloque no es de acuerdo con la primera información de restricción de partición, particionar (S360) el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video en el conjunto de parámetros, y configurar el valor de la bandera de anulación para no anular el valor.
El método de acuerdo con el segundo aspecto se puede extender a formas de implementación correspondientes a las formas de implementación del primer aparato de acuerdo con el primer aspecto. Por lo tanto, una forma de implementación del método comprende la o las características de la forma de implementación correspondiente del primer aparato.
Las ventajas de los métodos de acuerdo con el segundo aspecto son las mismas que aquellas para las formas de implementación correspondientes del primer aparato de acuerdo con el primer aspecto.
De acuerdo con un tercer aspecto de la invención, se proporciona un decodificador, que comprende: uno o más procesadores; y un medio de almacenamiento legible por computadora no transitorio acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el decodificador para llevar a cabo cualquiera de los métodos de decodificación mencionados anteriormente de acuerdo con el primer aspecto o cualquier implementación posible del primer aspecto. De acuerdo con un cuarto aspecto de la invención, se proporciona un codificador, que comprende: uno o más procesadores; y un medio de almacenamiento legible por computadora no transitorio acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el codificador para llevar a cabo el método de acuerdo con cualquiera de los métodos de decodificación mencionados anteriormente de acuerdo con el segundo aspecto o cualquier implementación posible del segundo aspecto.
De acuerdo con un quinto aspecto, se propone un medio de almacenamiento legible por computadora que tiene almacenadas instrucciones que, cuando se ejecutan, provocan que uno o más procesadores se configuren para codificar datos de video. Las instrucciones hacen que el uno o más procesadores realicen un método de acuerdo con el primer o segundo aspecto o cualquier implementación posible del primer o segundo aspecto.
De acuerdo con un sexto aspecto, la invención se refiere a un programa de computadora que comprende código de programa para realizar el método de acuerdo con el primer o segundo aspecto o cualquier realización posible del primer o segundo aspecto cuando se ejecuta en una computadora.
De acuerdo con un séptimo aspecto de la invención, se proporciona un decodificador para decodificar un flujo de bits de video, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el decodificador que comprende: una unidad de determinación de anulación para obtener una bandera de anulación del flujo de bits de video; una unidad de determinación de restricción de partición para, cuando el valor de la bandera de anulación es un valor de anulación, obtener la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; y una unidad de partición de bloque para particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición
El método de acuerdo con el primer aspecto de la invención se puede realizar por decodificador de acuerdo con el séptimo aspecto de la invención. Otras características y formas de implementación del decodificador de acuerdo con el tercer aspecto de la invención corresponden a las características y formas de implementación del método de acuerdo con el primer aspecto de la invención o cualquier implementación posible del primer aspecto. De acuerdo con un octavo aspecto de la invención, se proporciona un codificador para codificar un flujo de bits de video, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el codificador que comprende: una unidad de partición de bloque para particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición; un generador de flujo de bits para insertar la primera información de restricción de partición para la región de imagen en la cabecera de región de imagen y configurar el valor de una bandera de anulación a un valor de anulación; y para insertar la bandera de anulación en el flujo de bits de video.
El método de acuerdo con el segundo aspecto de la invención se puede realizar por el codificador de acuerdo con el octavo aspecto de la invención. Otras características y formas de implementación del codificador de acuerdo con el octavo aspecto de la invención corresponden a las características y formas de implementación del método de acuerdo con el segundo aspecto de la invención o cualquier implementación posible del segundo aspecto.
Por claridad, cualquiera de las realizaciones descritas en la presente se puede combinar con cualquiera de una o más de las otras realizaciones para crear una nueva realización dentro del alcance de la presente descripción.
De acuerdo con un noveno aspecto de la invención, se proporciona un flujo de bits de video, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el flujo de bits de video incluye además una bandera de anulación que especifica si la primera información de restricción de partición para la región de imagen está presente en la cabecera de región de imagen.
En una forma de implementación posible del método de acuerdo con el noveno aspecto como tal, el flujo de bits de video incluye además una bandera activada de anulación que especifica si la bandera de anulación está presente en la cabecera de región de imagen.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, la bandera activada de anulación está en el conjunto de parámetros o datos que representan el conjunto de parámetros.
En una forma de implementación posible del método de acuerdo con cualquier implementación anterior del primer aspecto o el primer aspecto como tal, la bandera de anulación está en la cabecera de región de imagen o datos que representan la cabecera de región de imagen.
Los detalles de una o más realizaciones se establecen en las figuras anexas y la descripción más adelante. Otras características, objetos y ventajas serán evidentes a partir de la descripción, dibujos y reivindicaciones.
BREVE DESCRIPCIÓN DE LAS FIGURAS
En las siguientes realizaciones de la invención se describen más detalladamente con referencia a las la figura y dibujos anexos, en los cuales:
La figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención;
La figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención;
La figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de video configurado para implementar realizaciones de la invención;
La figura 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de video configurado para implementar realizaciones de la invención;
La figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
La figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
La figura 6 es un diagrama ilustrativo de un ejemplo de partición de bloques usando una estructura de árbol binarioárbol cuádruple (QTBT).
La figura 7 es un diagrama ilustrativo de un ejemplo de estructura de árbol correspondiente a la partición de bloques usando la estructura QTBT de la figura 6.
La figura 8 es un diagrama ilustrativo de un ejemplo de tipos de partición de árbol ternario horizontal.
La figura 9 es un diagrama ilustrativo de un ejemplo de tipos de partición de árbol ternario vertical.
La figura 10 es un diagrama de flujo que ilustra un método de decodificación de acuerdo con una realización.
La figura 11 es un diagrama de flujo que ilustra un método de decodificación de acuerdo con una realización.
La figura 12 es un diagrama de bloques que ilustra un decodificador de ejemplo.
La figura 13 es un diagrama de bloques que ilustra un codificador de ejemplo.
La figura 14A es un diagrama de flujo que ilustra un método de codificación de acuerdo con una realización relacionada con la bandera de anulación.
La figura 14B es un diagrama de flujo que ilustra un método de codificación de acuerdo con una realización relacionada con bandera activada de anulación.
La figura 15 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema de suministro de contenido que realiza un servicio de suministro de contenido.
La figura 16 es un diagrama de bloques que muestra una estructura de un ejemplo de un dispositivo terminal.
En los siguientes signos de referencia idénticos se hace referencia a características idénticas o al menos funcionalmente equivalentes si no se especifica explícitamente lo contrario.
La figura 17 es un diagrama de bloques que muestra un ejemplo de un codificador de video configurado para implementar realizaciones de la invención;
La figura 18 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de video configurado para implementar realizaciones de la invención.
En los siguientes signos de referencia idénticos se hace referencia a características idénticas o al menos funcionalmente equivalentes si no se especifica explícitamente lo contrario.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN
En la siguiente descripción, se hace referencia a las figuras anexas, que forman parte de la descripción, y que muestran, a manera de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que se pueden utilizar realizaciones de la presente invención. Se entiende que las realizaciones de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las la figura. Por lo tanto, la siguiente descripción detallada no se debe tomar en un sentido limitante, y el alcance de la presente invención se define por las reivindicaciones anexas.
Por ejemplo, se entiende que una descripción en conexión con un método descrito también se puede mantener verdadera para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen uno o una pluralidad de pasos de método específicos, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar el paso de método descrito (por ejemplo, una unidad para realizar el paso o pluralidad de pasos, o una pluralidad de unidades para realizar cada uno o más de la pluralidad de pasos), incluso si esta unidad o más no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe con base en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir un paso para realizar la funcionalidad de la una o pluralidad de unidades (por ejemplo, un paso para realizar la funcionalidad de la una o pluralidad de unidades, o una pluralidad de pasos para realizar cada una la funcionalidad de una o más de la pluralidad de unidades), incluso si este paso o pluralidad de pasos no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones y/o aspectos de ejemplo descritos a continuación se pueden combinar entre sí, a menos que se indique específicamente lo contrario.
La codificación de video típicamente se refiere al procesamiento de una secuencia de imágenes, que forman el video o secuencia de video. En lugar del término “fotografía”, el término “cuadro” o “imagen” se puede usar como sinónimos en el campo de codificación de video. La codificación de video utilizada en la presente solicitud (o presente descripción) indica codificación de video o decodificación de video. La codificación de video se realiza en el lado fuente, que comprende típicamente procesar (por ejemplo mediante compresión) las imágenes de video originales para reducir la cantidad de datos necesarios para representar las imágenes de video (para almacenamiento y/o transmisión más eficiente). La decodificación de video se realiza en el lado de destino y generalmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de video. Se entenderá que las realizaciones que se refieren a “codificación” de imágenes de video (o imágenes en general, como se explicará más adelante) se refieren a “codificación” o “decodificación” para secuencia de video. La combinación de la parte de codificación y la parte de decodificación también se conoce como códec (codificación y decodificación).
En caso de codificación de video sin pérdida, las imágenes de video originales se pueden reconstruir, es decir, las imágenes de video reconstruidas tienen la misma calidad que las imágenes de video originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o transmisión). En caso de codificación de video con pérdida, se realiza compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de video, que no se pueden reconstruir completamente en el decodificador, es decir, la calidad de las imágenes de video reconstruidas es menor o peor en comparación con la calidad de las imágenes de video originales.
Varios normas de codificación de video desde H.261 pertenecen al grupo de “códecs de video híbridos con pérdidas” (es decir, combinan predicción espacial y temporal en el dominio de muestra y codificación de transformada 2D para aplicar cuantificación en el dominio de transformada). Cada imagen de una secuencia de video se particiona típicamente en un conjunto de bloques no superpuestos y la codificación se realiza típicamente a nivel de bloque. En otras palabras, en el codificador el video se procesa típicamente, es decir, se codifica, a nivel de bloque (bloque de video), por ejemplo, mediante el uso de predicción espacial (intraimagen) y predicción temporal (intercuadro) para generar un bloque de predicción, restar el bloque de predicción del bloque actual (bloque actualmente procesado/que se va a procesar) para obtener un bloque residual, transformar el bloque residual y cuantificar el bloque residual en el dominio de transformada para reducir la cantidad de datos que se van a transmitir (compresión), mientras que en el decodificador el procesamiento inverso en comparación con el codificador se aplica parcialmente al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento de decodificador de modo que ambos generarán predicciones idénticas (por ejemplo, intra e interpredicciones) y/o reconstrucciones para procesamiento, es decir, codificación, los bloques posteriores.
Como se usa en la presente, el término “bloque” se puede ser una porción de una imagen o un cuadro. Para mayor comodidad de descripción, las realizaciones de la invención se describen en la presente con referencia a Codificación de Video de Alta Eficiencia (HEVC) o el software de referencia de Codificación de Video Versátil (VC), desarrollado por el Equipo Conjunto de Colaboración en Codificación de Video (JCT-VC) del Grupo de Expertos en Codificación de Video UIT-T (VCEG) y el Grupo de Expertos en Fotografías en Movimiento (MPEG) I<s>O/IEC. Un experto en la técnica entenderá que las realizaciones de la invención no se limitan a HEVC o VVC. Puede hacer referencia a una CU, PU y TU. En HEVC, una CTU se divide en CU mediante el uso de una estructura de árbol cuádruple denotada como árbol de codificación. La decisión de si se debe codificar un área de imagen utilizando predicción interimagen (temporal) o intraimagen (espacial) se toma al nivel de CU. Cada CU se puede dividir además en una, dos o cuatro PU de acuerdo con el tipo de división PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador de una forma por PU. Después de obtener el bloque residual mediante la aplicación del proceso de predicción con base en el tipo de división PU, una CU se puede particionar en unidades de transformada (TU) de acuerdo con otra estructura de árbol cuádruple similar al árbol de codificación para la CU. En el desarrollo más reciente de la técnica de compresión de video, se utiliza partición de cuadro de árbol binario o árbol cuádruple (QTBT) para particionar un bloque de codificación. En la estructura de bloque QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se particiona primero mediante una estructura de árbol cuádruple. Los nodos hoja de árbol cuádruple se particionan adicionalmente mediante una estructura de árbol binario. Los nodos hoja de árbol binario se denominan unidades de codificación (CU), y esa segmentación se utiliza para predicción y procesamiento de transformada sin ninguna partición adicional. Esto significa que la CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación QTBT. En paralelo, la partición múltiple, por ejemplo, también se propuso que la partición de árbol ternario se usara junto con la estructura de bloque QTBT. El término “dispositivo” también puede ser “aparato”, “decodificador” o “codificador”.
En las siguientes realizaciones de un codificador 20, un decodificador 30 y un sistema de codificación 10 se describen con base en las figuras 1 a 3.
La figura 1A es un diagrama de bloques conceptual o esquemático que ilustra un sistema de codificación de ejemplo 10, por ejemplo, un sistema de codificación de video 10 que puede utilizar técnicas de esta presente solicitud (presente descripción). El codificador 20 (por ejemplo, codificador de video 20) y el decodificador 30 (por ejemplo, decodificador de video 30) del sistema de codificación de video representan ejemplos de dispositivos que se pueden configurar para realizar técnicas de acuerdo con varios ejemplos descritos en la presente solicitud. Como se muestra en la figura 1A, el sistema de codificación 10 comprende un dispositivo fuente 12 configurado para proporcionar datos codificados 13, por ejemplo, una imagen codificada 13, por ejemplo, a un dispositivo destino 14 para decodificar los datos codificados 13.
El dispositivo fuente 12 comprende un codificador 20 y puede comprender adicionalmente, es decir, opcionalmente, una fuente de imagen 16, una unidad de preprocesamiento 18, por ejemplo, una unidad de preprocesamiento de imágenes 18 y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imagen 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, para capturar una imagen del mundo real, y/o cualquier tipo de imagen o comentario (para codificación de contenido de pantalla, algunos textos en la pantalla también se consideran una parte de una imagen o imagen que se va a codificar) que genera un dispositivo, por ejemplo, un procesador de gráficos de computadora para generar una imagen animada por computadora, o cualquier tipo de dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen animada por computadora (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)) y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
Una imagen (digital) es o se puede considerar como un arreglo bidimensional o matriz de muestras con valores de intensidad. Una muestra en el arreglo también se puede referir como píxel (forma corta de elemento de imagen) o un pel. El número de muestras en dirección horizontal y vertical (o eje) del arreglo o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, típicamente se emplean tres componentes de color, es decir, la imagen puede estar representada o incluir tres matrices de muestras. En formato RBG o espacio de color, una imagen comprende un arreglo de muestras roja, verde y azul correspondiente. Sin embargo, en la codificación de video, cada píxel se representa típicamente en un formato de luminancia/crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen a escala de grises), mientras que los dos componentes de crominancia (o croma corta) Cb y Cr representan los componentes de cromaticidad o información de color. Por consiguiente, una imagen en formato YCbCr comprende un arreglo de muestra de luminancia de valores de muestra de luminancia (Y) y dos arreglos de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo un arreglo de muestras de luminancia.
La fuente de imagen 16 (por ejemplo, fuente de video 16) puede ser, por ejemplo, una cámara para capturar una imagen, una memoria, por ejemplo, una memoria de imágenes, que comprende o almacena una imagen capturada o generada previamente y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara local o integrada en el dispositivo fuente, la memoria puede ser una memoria local o integrada, por ejemplo, integrada en el dispositivo fuente. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen de una fuente de video externa, por ejemplo, un dispositivo de captura de imagen externa como una cámara, una memoria externa o un dispositivo generador de imagen externa, por ejemplo, un procesador, computadora o servidor de gráficos de computadora externo. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz alámbrica o inalámbrica, una interfaz óptica, de acuerdo con cualquier protocolo de interfaz patentado o normalizado. La interfaz para obtener los datos de imagen 17 puede ser la misma interfaz o una parte de la interfaz de comunicación 22.
A diferencia de la unidad de preprocesamiento 18 y el procesamiento realizado por la unidad de preprocesamiento 18, la imagen o datos de imagen 17 (por ejemplo datos de video 16) también se pueden referir como datos de imagen sin procesar o imagen sin procesar 17.
La unidad de preprocesamiento 18 se configura para recibir los datos de imagen (sin procesar) 17 y para realizar pre-procesamiento en los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El pre-procesamiento realizado por la unidad de preprocesamiento 18 puede, por ejemplo, comprender recorte, conversión de formato de color (por ejemplo de RGB a YCbCr), corrección de color o eliminación de ruido. Se puede entender que la unidad de preprocesamiento 18 puede ser un componente opcional. El codificador 20 (por ejemplo, codificador de video 20) se configura para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, por ejemplo, con base en la figura 2 o figura 4).
La interfaz de comunicación 22 del dispositivo fuente 12 se puede configurar para recibir los datos de imagen codificados 21 y transmitir los datos de imagen codificados 21 (o cualquier versión procesada adicionalmente de los mismos) a través del canal de comunicación 13 a otro dispositivo, por ejemplo, el dispositivo de destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa, o para procesar los datos de imagen codificados 21 para, respectivamente, antes de almacenar los datos codificados 13 y/o transmitir los datos codificados 13 a otro dispositivo, por ejemplo, el dispositivo de destino 14 o cualquier otro dispositivo para decodificación o almacenamiento.
El dispositivo de destino 14 comprende un decodificador 30 (por ejemplo, un decodificador de video 30) y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, una unidad de postprocesamiento 32 y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo destino 14 se configura para recibir los datos de imagen codificados 21 (o cualquier versión procesada adicional de los mismos) o los datos codificados 13, por ejemplo, directamente desde el dispositivo fuente 12 o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificados, y proporcionar los datos de imagen codificados 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 se pueden configurar para transmitir o recibir los datos de imagen codificados 21 o datos codificados 13 mediante un enlace de comunicación directa entre el dispositivo fuente 12 y el dispositivo destino 14, por ejemplo, una conexión inalámbrica o alámbrica directa, o mediante cualquier tipo de red, por ejemplo, una red inalámbrica o por cable o cualquier combinación de las mismas, o cualquier tipo de red pública y privada, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 se puede configurar, por ejemplo, para empaquetar los datos de imagen codificados 21 en un formato adecuado, por ejemplo, paquetes, y/o procesar los datos de imagen codificados usando cualquier tipo de codificación o procesamiento de transmisión para transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, se puede configurar, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión usando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetamiento de los datos codificados 13 para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 se pueden configurar como interfaces de comunicación unidireccionales como se indica mediante la flecha para los datos de imagen codificados 13 en la figura 1 que apuntan desde el dispositivo fuente 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y se pueden configurar, por ejemplo, para enviar y recibir mensajes, por ejemplo, para configurar una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de imagen codificados.
El decodificador 30 se configura para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificados 31 o una imagen decodificada 31 (se describirán más detalles a continuación, por ejemplo, con base en la figura 3 o figura 5).
El post-procesador 32 del dispositivo de destino 14 se configura para post-procesar los datos de imagen decodificados 31 (también llamados datos de imagen reconstruidos), por ejemplo, la imagen decodificada 31, para obtener datos de imagen post-procesados 33, por ejemplo, una imagen post-procesados 33. El post-procesamiento realizado por la unidad de postprocesamiento 32 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o re-muestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificados 31 para visualización, por ejemplo, por dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo destino 14 se configura para recibir los datos de imagen postprocesados 33 para visualizar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden, por ejemplo, comprender pantallas de cristal líquido (LCD), pantallas de diodos emisores de luz orgánicos (OLED), pantallas de plasma, proyectores , pantallas micro-led, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier tipo de otra pantalla.
Aunque la figura 1A representa el dispositivo fuente 12 y el dispositivo destino 14 como dispositivos separados, realizaciones de dispositivos también pueden comprender ambas funcionalidades, el dispositivo fuente 12 o funcionalidad correspondiente y el dispositivo destino 14 o funcionalidad correspondiente. En estas realizaciones, el dispositivo fuente 12 o funcionalidad correspondiente y el dispositivo destino 14 o funcionalidad correspondiente se pueden implementar usando el mismo hardware y/o software o mediante hardware y/o software separado o cualquier combinación de los mismos.
Como será evidente para el experto en base a la descripción, la existencia y (exacta) división de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo fuente 12 y/o dispositivo destino 14 como se muestra en la figura 1A puede variar dependiendo del dispositivo y aplicación reales.
Cada codificador 20 (por ejemplo, un codificador de video 20) y decodificador 30 (por ejemplo, un decodificador de video 30) se puede implementar como cualquiera de una variedad de circuiterías adecuadas, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), arreglos de compuertas programables en el campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un almacenamiento medio de almacenamiento legible por computadora adecuado y no transitorio y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Cualquiera de los anteriores (que incluyen hardware, software, una combinación de hardware y software, etc.) se puede considerar que es uno o más procesadores. Cada uno del codificador de video 20 y el decodificador de video 30 se pueden incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador combinado (códec) en un dispositivo respectivo.
El codificador 20 se puede implementar a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analiza con respecto al codificador 20de la figura 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente. El decodificador 30 se puede implementar a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analiza con respecto al decodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente. La circuitería de procesamiento se puede configurar para realizar las diversas operaciones descritas más adelante. Como se muestra en la figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un almacenamiento medio de almacenamiento legible por computadora adecuado y no transitorio y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Cualquiera del codificador de video20y el decodificador de video30se pueden integrar como parte de un codificador/decodificador combinado (códec) en un solo dispositivo, por ejemplo, como se muestra en la figura 1B.
El dispositivo fuente 12 se puede referir como un dispositivo de codificación de video o un aparato de codificación de video. El dispositivo de destino 14 se puede denominar dispositivo de decodificación de video o aparato de decodificación de video. El dispositivo fuente 12 y el dispositivo destino 14 pueden ser ejemplos de dispositivos de codificación de video o aparatos de codificación de video.
El dispositivo fuente 12 y el dispositivo destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen cualquier tipo de dispositivo portátil o estacionario, por ejemplo, notebook o computadoras laptop, teléfonos móviles, teléfonos inteligentes, tabletas o computadoras de tableta, cámaras, computadoras de escritorio, decodificadores, televisiones, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión en tiempo de video (tal como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de difusión, dispositivo transmisor de difusión o similares y pueden usar ningún o cualquier tipo de sistema operativo.
En algunos casos, el dispositivo fuente 12 y el dispositivo destino 14 pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo fuente 12 y el dispositivo destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, sistema de codificación de video 10 ilustrado en la figura 1A es meramente un ejemplo y las técnicas de la presente solicitud se pueden aplicar a configuraciones de codificación de video (por ejemplo, codificación de video o decodificación de video) que no incluyen necesariamente alguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten en tiempo real a través de una red o similares. Un dispositivo de codificación de video puede codificar y almacenar datos en memoria, y/o un dispositivo de decodificación de video puede recuperar y decodificar datos de memoria. En algunos ejemplos, la codificación y decodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos para memoria y/o recuperan y decodifican datos de memoria.
Para mayor comodidad de descripción, las realizaciones de la invención se describen en la presente, por ejemplo, con referencia a Codificación de Video de Alta Eficiencia (HEVC) o al software de referencia de Codificación de Video Versátil (VC), la norma de codificación de Video de próxima generación desarrollada por el Equipo Conjunto de Colaboración en Codificación de Video (JCT-VC) del Grupo de Expertos en Codificación de Video ITU-T (VCEG) y el Grupo de Expertos en Fotografías en Movimiento ISO/IEC (MPEG). Un experto en la técnica entenderá que las realizaciones de la invención no se limitan a HEVC o VVC.
Se debe entender que para cada uno de los ejemplos anteriores descritos con referencia al codificador de video 20, se puede configurar un decodificador de video 30 para realizar un proceso reciproco. Con respecto a señalización de elementos de sintaxis, se puede configurar un decodificador de video 30 para recibir y analizar este elemento de sintaxis y decodificar los datos de video asociados en consecuencia. En algunos ejemplos, el codificador de video 20 puede codificar por entropía uno o más elementos de sintaxis en el flujo de bits de video codificado. En estos ejemplos, el decodificador de video 30 puede analizar este elemento de sintaxis y decodificar los datos de video asociados en consecuencia.
La figura 1B es un diagrama ilustrativo de otro sistema de codificación de video de ejemplo 40 que incluye el codificador 20 de la figura 2 y/o el decodificador 30 de la figura 3 de acuerdo con una realización de ejemplo. El sistema 40 puede implementar técnicas de acuerdo con varios ejemplos descritos en la presente solicitud. En la implementación ilustrada, el sistema de codificación de video 40 puede incluir dispositivos de formación de imágenes 41, codificador de video 100, decodificador de video 30 (y/o un codificador de video implementado a través de circuitería lógica 47 de unidad o unidades de procesamiento 46), una antena 42, uno o más procesadores 43, uno o más almacenamientos de memoria 44 y/o un dispositivo de visualización 45.
Como se ilustra, los dispositivos de formación de imágenes 41, antena 42, unidad o unidades de procesamiento 46, circuitería lógica 47, codificador de video 20, decodificador de video 30, procesador o procesadores 43, almacenamiento o almacenamientos de memoria 44 y/o dispositivo de visualización 45 pueden tener capacidad de comunicación entre sí. Como se analizó, aunque se ilustra tanto con el codificador de video 20 como el decodificador de video 30, el sistema de codificación de video 40 puede incluir solo el codificador de video 20 o solo el decodificador de video 30 en varios ejemplos.
Como se muestra, en algunos ejemplos, sistema de codificación de video 40 puede incluir la antena 42. La antena 42 se puede configurar para transmitir o recibir un flujo de bits codificado de datos de video, a manera de ejemplo. Además, en algunos ejemplos, el sistema de codificación de video 40 puede incluir un dispositivo de visualización 45. El dispositivo de visualización 45 se puede configurar para presentar datos de video. Como se muestra, en algunos ejemplos, circuitería lógica 47 se puede implementar mediante unidades procesamiento 46. Las unidades de procesamiento 46 pueden incluir lógica de circuito integrado de aplicación específica (ASIC), procesadores de gráficos, procesadores de propósito general o similares. El sistema de codificación de video 40 también puede incluir procesadores opcionales 43, que pueden incluir de manera similar lógica de circuitos integrados de aplicación específica (ASIC), procesadores de gráficos, procesadores de propósito general o similares. En algunos ejemplos, la circuitería lógica 47 se puede implementar mediante hardware, hardware dedicado a codificación de video, o similares, y los procesadores 43 se pueden implementar mediante software de propósito general, sistemas operativos, o similares. Además, los almacenamientos de memoria 44 pueden ser cualquier tipo de memoria tal como memoria volátil (por ejemplo, memoria de acceso aleatorio estática (SRAM), memoria de acceso aleatorio dinámica (DRAM), etc.) o memoria no volátil (por ejemplo, memoria flash, etc.), etc. En un ejemplo no limitante, los almacenamientos memoria 44 se pueden implementar mediante memoria caché. En algunos ejemplos, la circuitería lógica 47 puede acceder a los almacenamientos de memoria 44 (para la implementación de una memoria intermedia de imágenes, a manera de ejemplo). En otros ejemplos, la circuitería lógica 47 y/o las unidades procesamiento 46 pueden incluir almacenamientos de memoria (por ejemplo, memoria caché o similares) para la implementación de una memoria intermedia de imágenes o similares.
En algunos ejemplos, el codificador de video 100 implementado a través de circuitería lógica pueden incluir una memoria intermedia de imágenes (por ejemplo, a través de ya sea unidades de procesamiento 46 o almacenamientos de memoria 44) y unidad de procesamiento de gráficos (por ejemplo, a través de unidades de procesamiento 46). La unidad de procesamiento de gráficos se puede acoplar comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento de gráficos puede incluir codificador de video 100 como se implementa a través de la circuitería lógica 47 para incorporar los diversos módulos como se analiza con respecto a la figura 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente. La circuitería de lógica se puede configurar para realizar las diversas operaciones descritas en la presente.
El decodificador video 30 se puede implementar de manera similar a como se implementa a través de la circuitería lógica 47 para incorporar los diversos módulos como se analiza con respecto al decodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente. En algunos ejemplos, el decodificador de video 30 se puede implementar a través de circuitería lógica pueden incluir una memoria intermedia de imágenes (por ejemplo, a través de ya sea unidades de procesamiento 420 o almacenamientos de memoria 44) y unidad de procesamiento de gráficos (por ejemplo, a través de unidades de procesamiento 46). La unidad de procesamiento de gráficos se puede acoplar comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento de gráficos puede incluir decodificador de video 30 como se implementa a través de la circuitería lógica 47 para incorporar los diversos módulos como se analiza con respecto a la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente.
En algunos ejemplos, la antena 42 del sistema de codificación de video 40 se puede configurar para recibir un flujo de bits codificado de datos de video. Como se analizó, el flujo de bits codificado puede incluir datos, indicadores, valores de índice, datos de selección de modo o similares asociados con la codificación de un cuadro de video como se analizó en la presente, tal como datos asociados con la partición de codificación (por ejemplo, coeficientes de transformada o coeficientes de transformada cuantificados, indicadores opcionales (como se analizó) y/o datos que definen la partición de codificación). El sistema de codificación de video 40 también puede incluir decodificador de video 30 acoplado a la antena 42 y configurado para decodificar el flujo de bits codificado. El dispositivo de visualización 45 se configura para presentar cuadros de video.
La figura 2 muestra un diagrama de bloques esquemático/conceptual de un codificador de video de ejemplo 20 que se configura para implementar las técnicas de la presente solicitud. En el ejemplo de la figura 2, el codificador de video 20 comprende una unidad de cálculo residual 204, una unidad de procesamiento de transformada 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210 y una unidad de procesamiento de transformada inversa 212, una unidad de reconstrucción 214, una memoria intermedia 216, una unidad de filtro de bucle 220, una memoria intermedia de imágenes decodificadas (DPB) 230, una unidad de procesamiento de predicción 260 y una unidad de codificación entrópica 270. La unidad de procesamiento de predicción 260 puede incluir una unidad de interpredicción 244, una unidad intrapredicción 254 y una unidad de selección de modo 262. La unidad de intrapredicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no se muestra). Un codificador de video 20 como se muestra en la figura 2 también se puede referir como codificador de video híbrido o un codificador de video de acuerdo con un códec de video híbrido.
Por ejemplo, la unidad de cálculo residual 204, la unidad de procesamiento de transformada 206, la unidad de cuantificación 208, la unidad de procesamiento de predicción 260 y la unidad de codificación entrópica 270 forman una ruta de señal directa del codificador 20, mientras que, por ejemplo, la unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, la memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de procesamiento de predicción 260 forman una ruta de señal inversa del codificador, en donde la ruta de señal inversa del codificador corresponde a la ruta de señal del decodificador (ver el decodificador 30 en la figura 3).
También se hace referencia a la unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de predicción intermedia 244 y la unidad de intrapredicción 254 que forman el “decodificador integrado” del codificador de video 20.
El codificador 20 se configura para recibir, por ejemplo, mediante la entrada 202, una imagen 201 o un bloque 203 de la imagen 201, por ejemplo, una imagen de una secuencia de imágenes que forman un video o secuencia de video. El bloque de imagen 203 también se puede referir como bloque de imagen actual o bloque de imagen a codificar, y la imagen 201 como imagen actual o imagen a codificar (en particular, en la codificación de video para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o decodificadas de la misma secuencia de video, es decir, la secuencia de video que también comprende la imagen actual).
Una imagen (digital) es o se puede considerar como un arreglo bidimensional o matriz de muestras con valores de intensidad. Una muestra en el arreglo también se puede referir como píxel (forma corta de elemento de imagen) o un pel. El número de muestras en dirección horizontal y vertical (o eje) del arreglo o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, típicamente se emplean tres componentes de color, es decir, la imagen puede estar representada o incluir tres matrices de muestras. En formato RBG o espacio de color, una imagen comprende un arreglo de muestras roja, verde y azul correspondiente. Sin embargo, en la codificación de video, cada píxel se representa típicamente en un formato de luminancia y crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen a escala de grises), mientras que los dos componentes de crominancia (o croma corta) Cb y Cr representan los componentes de cromaticidad o información de color. Por consiguiente, una imagen en formato YCbCr comprende un arreglo de muestra de luminancia de valores de muestra de luminancia (Y) y dos arreglos de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo un arreglo de muestras de luminancia. Por consiguiente, una imagen puede ser, por ejemplo, un arreglo de muestras de luma en formato monocromático o un arreglo de muestras de luma y dos arreglos correspondientes de muestras de croma en formato de color 4:2:0, 4:2: 2 y 4:4: 4:4. PARTICIÓN
Las realizaciones del codificador 20 pueden comprender una unidad de partición (no representada en la figura 2) configurada para particionar la imagen 201 en una pluralidad de bloques de imagen 203 (típicamente no superpuestos). Estos bloques también se pueden referir como bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (CTB) o unidades de árbol de codificación (CTU) (H.265/HEVC y VVC). La unidad de partición se puede configurar para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de video y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y particionar cada imagen en los bloques correspondientes.
En realizaciones adicionales, el codificador de video se puede configurar para recibir directamente un bloque 203 de la imagen 201, por ejemplo, uno, varios o todos los bloques que forman la imagen 201. El bloque de imagen 203 también se puede referir como bloque de imagen actual o bloque de imagen que se va a codificar.
En un ejemplo, la unidad de procesamiento de predicción 260 del codificador de video 20 se puede configurar para realizar cualquier combinación de las técnicas de partición descritas anteriormente.
Al igual que la imagen 201, el bloque 203 nuevamente es o se puede considerar como un arreglo bidimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de dimensión más pequeña que la imagen 201. En otras palabras, el bloque 203 puede comprender, por ejemplo, un arreglo de muestras (por ejemplo, un arreglo de luma en el caso de una imagen monocromática 201) o tres arreglos de muestras (por ejemplo, un arreglo de luma y dos arreglos de croma en el caso de una imagen de color 201) o cualquier otro número y/o tipo de arreglos dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. Por consiguiente, un bloque puede, por ejemplo, una matriz de muestras MxN (columna M por fila N) o una matriz MxN de coeficientes de transformada.
El codificador 20 como se muestra en la figura 2 se configura para codificar el bloque de imagen 201 por bloque, por ejemplo, la codificación y predicción se realizan por bloque 203.
Las realizaciones del codificador de video 20 como se muestra en la figura 2 se pueden configurar además para particionar y/o codificar la imagen mediante el uso de segmentos (también denominados segmentos de video), en donde una imagen se puede particionar o codificar mediante el uso de uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU) o uno o más grupos de bloques (por ejemplo, mosaicos (H.265/HEVC y VVC) o ladrillos (VVC)).
Las realizaciones del codificador de video 20 como se muestra en la figura 2 se pueden configurar adicionalmente para particonar y/o codificar la imagen mediante el uso de grupos de mosaicos/segmentos (también denominados grupos de mosaicos de video) y/o mosaicos (también denominados mosaicos de video), en donde una imagen se puede particionar o codificar mediante el uso de uno o más grupos de mosaicos/segmentos (típicamente no superpuestos), y cada grupo de mosaicos/segmentos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
CÁLCULO RESIDUAL
La unidad de cálculo residual 204 se configura para calcular un bloque residual 205 con base en el bloque de imagen 203 y un bloque de predicción 265 (detalles adicionales sobre el bloque de predicción 265 se proporcionan más adelante), por ejemplo restando valores de muestra del bloque de predicción 265 de valores de muestra del bloque de imagen 203, muestra por muestra (píxel por píxel) para obtener el bloque residual 205 en un dominio de muestra.
TRANSFORMADA
La unidad de procesamiento de transformada 206 se configura para aplicar una transformada, por ejemplo, una transformada discreta de coseno (DCT) o una transformada discreta de seno (DST), a los valores de muestra del bloque residual 205 para obtener coeficientes de transformada 207 en un dominio de transformada. Los coeficientes de transformada 207 también se pueden referir como coeficientes residuales de transformada y representan el bloque residual 205 en el dominio de transformada.
La unidad de procesamiento de transformada 206 se puede configurar para aplicar aproximaciones enteras de DCT/DST, tal como las transformadas especificadas para HEVC/H.265. En comparación con una transformada DCT ortogonal, estas aproximaciones enteras generalmente se modifican en escala por un factor determinado. Para preservar la norma del bloque residual que se procesa mediante transformadas directas e inversas, se aplican factores de modificación de escala adicionales como parte del proceso de transformada. Los factores de escala se eligen típicamente con base en ciertas limitaciones, como factores de escala que son una potencia de dos para operación de desplazamiento, profundidad de bits de los coeficientes de transformada, compensación entre precisión y costos de implementación, etc. Los factores de modificación de escala específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo, mediante la unidad de procesamiento de transformada inversa 212, en un decodificador 30 (y la transformada inversa correspondiente, por ejemplo, mediante la unidad de procesamiento de transformada inversa 212 en un decodificador 20) y los factores de modificación de escala correspondientes para la transformada directa, por ejemplo, mediante la unidad de procesamiento de transformada 206, en un codificador 20 se pueden especificar en consecuencia.
Se pueden configurar realizaciones del codificador de video 20 (respectivamente unidad de procesamiento de transformada 206) para emitir parámetros de transformada, por ejemplo, un tipo de transformada o transformada, por ejemplo, directamente o codificada o comprimida a través de la unidad de codificación entrópica 270, de modo que, por ejemplo, el decodificador de video 30 pueda recibir y usar los parámetros de transformada para decodificación. CUANTIFICACIÓN
La unidad de cuantificación 208 se configura para cuantificar los coeficientes de transformada 207 para obtener coeficientes de transformada cuantificados 209, por ejemplo mediante la aplicación de cuantificación escalar o cuantificación vectorial. Los coeficientes de transformada cuantificados 209 también se pueden referir como coeficientes residuales cuantificados 209. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformada 207. Por ejemplo, un coeficiente de transformada de n-bits se puede redondear hacia abajo a un coeficiente de transformada de m-bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación (QP). Por ejemplo para cuantificación escalar, se puede aplicar escalado diferente para lograr cuantificación más fina o más gruesa. Los tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de paso de cuantificación aplicable se puede indicar mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de paso de cuantificación aplicables. Por ejemplo, parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de paso de cuantificación grandes) o viceversa. La cuantificación puede incluir división por un tamaño de paso de cuantificación y descuantificación inversa o correspondiente, por ejemplo, por cuantificación inversa 210, puede incluir multiplicación por el tamaño de paso de cuantificación. Las realizaciones de acuerdo con algunas normas, por ejemplo, HEVC, se pueden configurar para usar un parámetro de cuantificación para determinar el tamaño de paso de cuantificación. En general, el tamaño de paso de cuantificación se puede calcular con base en un parámetro de cuantificación usando de una aproximación de punto fijo de una ecuación que incluye división. Se pueden introducir factores de modificación de escala adicionales para cuantificación y descuantificación para restaurar la norma del bloque residual, que se puede modificar debido a la modificación escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño de paso de cuantificación y el parámetro de cuantificación. En un ejemplo de implementación, se puede combinar transformada inversa y descuantificación. De manera alternativa, tablas de cuantificación personalizadas se pueden utilizar y señalizar desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en donde la pérdida aumenta con el aumento de tamaños de paso de cuantificación.
Se pueden configurar realizaciones del codificador de video 20 (respectivamente unidad de cuantificación 208) para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificados a través de la unidad de codificación entrópica 270, de modo que, por ejemplo, el decodificador de video 30 pueda recibir y aplicar los parámetros de cuantificación para decodificación.
La unidad de cuantificación inversa 210 se configura para aplicar la cuantificación inversa de la unidad de cuantificación 208 en los coeficientes cuantificados para obtener coeficientes descuantificados 211, por ejemplo, mediante la aplicación del inverso del esquema de cuantificación aplicado por la unidad de cuantificación 208 con base en o utilizando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también se pueden referir como coeficientes residuales descuantificados 211 y corresponden - aunque generalmente no son idénticos a los coeficientes de transformada debido a la pérdida por cuantificación - a los coeficientes de transformada 207.
La unidad de procesamiento de transformada inversa 212 se configura para aplicar la transformada inversa de la transformada aplicada por la unidad de procesamiento de transformada 206, por ejemplo una transformada inversa discreta de coseno (DCT) o transformada inversa discreta de seno (DST), para obtener un bloque de transformada inversa 213 en el dominio de muestra. El bloque de transformada inversa 213 también se puede referir como bloque descuantificado de transformada inversa 213 o bloque residual de transformada inversa 213.
La unidad de reconstrucción 214 (por ejemplo, sumador 214) se configura para sumar el bloque de transformada inversa 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Opcional, la unidad de memoria intermedia 216 (o “memoria intermedia” 216 para abreviar), por ejemplo una memoria intermedia de línea 216, se configura para almacenar en memoria intermedia o almacenar el bloque reconstruido 215 y los valores de muestra respectivos, por ejemplo, para intrapredicción. En realizaciones adicionales, el codificador se puede configurar para usar bloques reconstruidos sin filtrar y/o los valores de muestra respectivos almacenados en la unidad de memoria intermedia 216 para cualquier tipo de estimación y/o predicción, por ejemplo, intrapredicción.
Las realizaciones del codificador 20 se pueden configurar de modo que, por ejemplo, la unidad de memoria intermedia 216 no solo se use para almacenar los bloques reconstruidos 215 para intrapredicción 254, sino también para la unidad de filtro de bucle 220 (no se muestra en la figura 2) y/o de modo que, por ejemplo, la unidad de memoria intermedia 216 y la unidad de memoria intermedia de imágenes decodificadas 230 formen un memoria intermedia. Otras realizaciones adicionales se pueden configurar para usar bloques filtrados 221 y/o bloques o muestras de la memoria intermedia de imágenes decodificadas 230 (ambas no mostradas en la figura 2) como entrada o base para intrapredicción 254.
La unidad de filtro de bucle 220 (o “filtro de bucle" 220 para abreviar), se configura para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, por ejemplo para suavizar transiciones de píxeles o mejorar de otro modo la calidad de video. La unidad de filtro de bucle 220 pretende representar uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de afilado o suavizado o filtros colaborativos. Aunque la unidad de filtro de bucle 220 se muestra en la figura 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 se puede implementar como un filtro post-bucle. El bloque filtrado 221 también se puede referir como bloque reconstruido filtrado 221. La memoria intermedia de imágenes decodificadas 230 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro de bucle 220 realiza las operaciones de filtrado en los bloques de codificación reconstruidos.
La unidad de filtro de bucle 220 (o “filtro de bucle” corto 220), se configura para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, o en general, para filtrar muestras reconstruidas para obtener valores de muestra filtrados. La unidad de filtro de bucle se configura, por ejemplo, para suavizar transiciones de píxeles o mejorar de otro modo la calidad de video. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), una definición, filtros de suavizado o filtros colaborativos o cualquier combinación de los mismos. En un ejemplo, la unidad de filtro de bucle 220 puede comprender un filtro de desbloqueo, un filtro SAO y un filtro ALF. El orden del proceso de filtrado puede ser el filtro de desbloqueo, SAO y ALF. En otro ejemplo, se agrega un proceso llamado mapeo de luma con modificación de escala de croma (LMCS) (es decir, el remodelador adaptativo en bucle). Este proceso se realiza antes del desbloqueo. En otro ejemplo, el proceso de filtro de desbloqueo también se puede aplicar a bordes de subbloques internos, por ejemplo, bordes de subbloques afines, bordes de subbloques ATMVP, bordes de transformada de subbloque (SBT) y intrabordes de subpartición (ISP). Aunque la unidad de filtro de bucle 220 se muestra en la figura 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 se puede implementar como un filtro post-bucle. El bloque filtrado 221 también se puede referir como bloque reconstruido filtrado 221.
Se pueden configurar realizaciones del codificador de video 20 (respectivamente unidad de filtro de bucle 220) para emitir parámetros de filtro de bucle (tal como parámetros de filtro SAO o parámetros de filtro ALF o parámetros LMCS), por ejemplo, directamente o codificada a través de la unidad de codificación entrópica 270, de modo que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para decodificación.
Se pueden configurar realizaciones del codificador 20 (respectivamente unidad de filtro de bucle 220) para emitir parámetros de filtro de bucle (tal como información de desplazamiento adaptativa de muestra), por ejemplo directamente o entrópica codificada a través de la unidad de codificación entrópica 270 o cualquier otra unidad de codificación entrópica, de modo que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle para decodificación.
La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imágenes de referencia para su uso en codificación de datos de video mediante el codificador de video 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tal como memoria de acceso aleatorio dinámica (DRAM), que incluye DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La DPB 230 y la memoria intermedia 216 se pueden proporcionar mediante el mismo dispositivo de memoria o dispositivos de memoria separados. En algunos ejemplos, la memoria intermedia de imágenes decodificadas (DPB) 230 se configura para almacenar el bloque filtrado 221. La memoria intermedia de imágenes decodificadas 230 se puede configurar además para almacenar otros bloques previamente filtrados, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de imágenes diferentes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas, imágenes (y bloques y muestras de referencia correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques y muestras de referencia correspondientes), por ejemplo para interpredicción. En algún ejemplo, si el bloque reconstruido 215 se reconstruye pero sin filtrado en bucle, la memoria intermedia de imágenes decodificadas (DPB) 230 se configura para almacenar uno o más bloques reconstruidos no filtrados 215, o en general muestras reconstruidas no filtradas, por ejemplo, si el bloque reconstruido 215 no se filtra mediante la unidad de filtro de bucle 220, o cualquier otra versión procesada adicional de los bloques o muestras reconstruidas.
La unidad de procesamiento de predicción 260, también denominada unidad de procesamiento de predicción de bloques 260, se configura para recibir u obtener el bloque 203 (bloque actual 203 de la imagen actual 201) y datos de imagen reconstruidos, por ejemplo, muestras de referencia de la misma imagen (actual) de la memoria intermedia 216 y/o datos de imagen de referencia 231 de una o una pluralidad de imágenes previamente decodificadas de la memoria intermedia de imágenes decodificadas 230, y para procesar estos datos para predicción, es decir, para proporcionar un bloque de predicción 265, que puede ser un bloque interpredicho 245 o un bloque intrapredicho 255.
La unidad de selección de modo 262 se puede configurar para seleccionar un modo de predicción (por ejemplo, un modo de intra- o interpredicción) y/o un bloque de predicción correspondiente 245 o 255 para usarse como bloque de predicción 265 para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215. Las realizaciones de la unidad de selección de modo 262 se pueden configurar para seleccionar el modo de predicción (por ejemplo de aquellos soportados por la unidad de procesamiento de predicción 260), que proporciona la mejor coincidencia o, en otras palabras, el residuo mínimo (residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 262 se puede configurar para determinar el modo de predicción con base en la optimización de distorsión de velocidad (RDO), es decir, seleccionar el modo de predicción que proporciona una optimización de distorsión de velocidad mínima o cuya distorsión de velocidad asociada cumple al menos un criterio de selección de modo de predicción.
En lo siguiente, el procesamiento de predicción (por ejemplo, la unidad de procesamiento de predicción 260 y la selección de modo (por ejemplo, por la unidad de selección de modo 262) realizada por un codificador de ejemplo 20 se explicarán en más detalle.
Además o alternativamente a las realizaciones mencionadas anteriormente, en otras realizaciones de acuerdo con la figura 17, la unidad de selección de modo 260 comprende la unidad de partición 262, la unidad de interpredicción 244 y la unidad de intrapredicción 254, y se configura para recibir u obtener datos de imagen originales, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de imagen reconstruidos, por ejemplo, muestras reconstruidas filtradas y/o no filtradas o bloques de la misma imagen (actual) y/o de una o una pluralidad de imágenes previamente decodificadas, por ejemplo, de la memoria intermedia de imágenes decodificadas 230 u otras memorias intermedias (por ejemplo, memoria intermedia de línea, no mostrada). Los datos de imagen reconstruidos se utilizan como datos de imagen de referencia para predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 se puede configurar para determinar o seleccionar una partición para un modo de predicción de bloque actual (que incluye sin partición) y un modo de predicción (por ejemplo, un modo de intra- o interpredicción) y generar un bloque de predicción correspondiente 265, que se utiliza para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 se pueden configurar para seleccionar la partición y el modo de predicción (por ejemplo de aquellos soportados por o disponibles para la unidad de selección de modo 260), que proporcionan la mejor coincidencia o, en otras palabras, el residuo mínimo (residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 260 se puede configurar para determinar el modo de partición y predicción con base en la optimización de distorsión de velocidad (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de velocidad mínima. Términos como “mejor”, “mínimo”, "óptimo”, etc. en este contexto no se refieren necesariamente a un “mejor”, “mínimo”, “óptimo” general etc., pero también pueden hacer referencia al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “selección subóptima”, pero que reduce la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de partición 262 se puede configurar para particionar una imagen de una secuencia de video en una secuencia de unidades de árbol de codificación (CTU), y la CTU 203 se puede particionar adicionalmente en particiones o sub-bloques de bloques más pequeños (que forman nuevamente bloques), por ejemplo, iterativamente usando partición de árbol cuádruple (QT), partición binarias (BT) o partición de árbol triple (TT) o cualquier combinación de las mismas, y para realizar, por ejemplo, la predicción para cada una de las particiones o sub-bloques de bloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción se aplican a cada una de las particiones o sub-bloques de bloques.
En lo siguiente, la partición (por ejemplo, mediante la unidad de partición 260) y el procesamiento de predicción (por la unidad de interpredicción 244 y la unidad de intrapredicción 254) realizados por un codificador de video de ejemplo 20 se explicarán en más detalle.
Partición
La unidad de partición 262 se puede configurar para particionar una imagen de una secuencia de video en una secuencia de unidades de árbol de codificación (CTU), y la unidad de partición 262 puede particionar (o dividir) una unidad de árbol de codificación (CTU) 203 en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Para una imagen que tiene tres arreglos de muestras, una CTU consiste de un bloque de NxN de muestras de luma junto con dos bloques correspondientes de muestras de croma. El tamaño máximo permitido del bloque luma en una CTU se especifica para que sea 128x128 en el desarrollo de codificación de video versátil (VC), pero se puede especificar para que sea valor en lugar de 128x128 en el futuro, por ejemplo, 256x256. Las CTU de una imagen se pueden agrupar/reagrupar como grupos de segmentos/mosaicos, mosaicos o ladrillos. Un mosaico cubre una región rectangular de una imagen y un mosaico se puede dividir en uno o más ladrillos. Un ladrillo consiste de un número de filas de CTU dentro de un mosaico. Un mosaico que no se particiona en múltiples ladrillos se puede conocer como un ladrillo. Sin embargo, un ladrillo es un subconjunto verdadero de un mosaico y no se conoce como un mosaico. Hay dos modos de grupos de mosaicos soportados en VVC, es decir, el modo de grupo de segmentos/mosaicos de barrido de cuadrícula y el modo de segmento rectangular. En el modo de grupo de mosaicos de barrido de cuadrícula, un grupo de segmentos/mosaicos contiene una secuencia de mosaicos en el barrido de cuadrícula de cuadrícula de una imagen. En el modo de segmento rectangular, un segmento contiene un número de ladrillos de una imagen que forman colectivamente una región rectangular de la imagen. Los ladrillos dentro de un segmento rectangular están en el orden de barrido de cuadrícula de ladrillo del segmento. Estos bloques más pequeños (que también se pueden referir como sub-bloques) se pueden particionar adicionalmente en particiones aún más pequeñas. Esto también se refiere a la partición de árboles o partición jerárquica de árboles, en donde un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), se puede particionar recursivamente, por ejemplo, particionar en dos o más bloques de un siguiente nivel de árbol inferior, por ejemplo, nodos en nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques se pueden particionar nuevamente en dos o más bloques de un siguiente nivel inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que se termina la partición, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no se particionan adicionalmente también se conocen como bloques de hoja o nodos hoja del árbol. Un árbol que usa particiones en dos particiones se conoce como árbol binario (BT), un árbol que usa particiones en tres particiones se conoce como árbol ternario (TT), y un árbol que usa particiones en cuatro particiones se conoce como árbol cuádruple (QT).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres arreglos de muestras o un CTB de muestras de una imagen monocromática o una imagen que se codifica usando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. De manera correspondiente, un bloque de árbol de codificación (CTB) puede ser un bloque de muestras de NxN para algún valor de N de modo que la división de un componente en CTB sea una partición. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres arreglos de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifica usando tres planos de color y estructuras de sintaxis separadas utilizadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque de muestras de MxN para algunos valores de M y N de modo que la división de un CTB en bloques de codificación sea una partición.
En realizaciones, por ejemplo, de acuerdo con HEVC, una unidad de árbol de codificación (CTU) se puede dividir en CU mediante el uso de una estructura de árbol cuádruple denotada como árbol de codificación. La decisión de si se debe codificar un área de imagen utilizando predicción interimagen (temporal) o intraimagen (espacial) se toma al nivel de CU de hoja. Cada CU de hoja se puede dividir además en una, dos o cuatro PU de acuerdo con el tipo de división PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador de una forma por PU. Después de obtener el bloque residual mediante la aplicación del proceso de predicción con base en el tipo de división PU, una CU de hoja se puede particionar en unidades de transformada (TU) de acuerdo con otra estructura de árbol cuádruple similar al árbol de codificación para la CU.
En realizaciones, por ejemplo, de acuerdo con la norma de codificación de video más reciente actualmente en desarrollo, a la que se hace referencia como codificación de video versátil (VC), se utiliza una estructura de segmentación de divisiones binarias y ternarias para particionar una unidad de árbol de codificación. En la estructura de árbol de codificación dentro de una unidad de árbol de codificación, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, la unidad de árbol de codificación (CTU) se particiona primero mediante un árbol cuaternario. Luego, los nodos hoja de árbol cuaternario se pueden particionar adicionalmente mediante una estructura de árbol de tipo múltiple. Hay cuatro tipos de división en estructura de árbol de tipo múltiple, división binaria vertical (SPLIT_BT_VER), división binaria horizontal (SPLIT_BT_HOR), división ternaria vertical (SPLIT_TT_VER) y división ternaria horizontal (SPLIT_TT_HOR). Los nodos hoja de árbol de tipo múltiple se denominan unidades de codificación (CU), y a menos que la CU sea demasiado grande para la longitud de transformada máxima, esta segmentación se utiliza para predicción y procesamiento de transformada sin ninguna partición adicional. Esto significa que, en la mayoría de los casos, la CU, PU y TU tienen el mismo tamaño de bloque en el árbol cuádruple con estructura de bloque de codificación de árbol de tipo múltiple anidado. La excepción ocurre cuando la longitud máxima de transformada soportada es menor que el ancho o la altura del componente de color del CU. La VVC desarrolla un mecanismo de señalización único de la información de división de particiones en árbol cuádruple con estructura de árbol de codificación de tipo múltiple anidada. En el mecanismo de señalización, una unidad de árbol de codificación (CTU) se trata como la raíz de un árbol cuaternario y se divide primero mediante una estructura de árbol cuaternario. Cada nodo hoja de árbol cuaternario (cuando es lo suficientemente grande para permitirlo) se particiona adicionalmente mediante una estructura de árbol de tipo múltiple. En la estructura de árbol de tipo múltiple, se señala una primera bandera (mtt split_cu_flag) para indicar si el nodo se particiona adicionalmente; cuando un nodo se particiona adicionalmente, se señala una segunda bandera (mtt_split_cu_vertical_flag) para indicar la dirección de división, y luego se señala una tercera bandera (mtt_split_cu_binary_flag) para indicar si la división es una división binaria o una división ternaria. Con base en los valores de mtt_split_cu_vertical_flag y mtt_split_cu_binary_flag, el modo de división de árbol de tipo múltiple (MttSplitMode) de una CU se puede derivar mediante un decodificador con base en una regla predefinida o una tabla. Se debe señalar que, para un diseño determinado, por ejemplo, bloque de luma de 64x64 y diseño de procesamiento en paralelo de croma de 32x32 en decodificadores de hardware VVC, se prohíbe la división TT cuando el ancho o la altura de un bloque de codificación luma es mayor que 64, como se muestra en la figura 6. La división TT también está prohibida cuando el ancho o la altura de un bloque de codificación de croma es mayor que 32. El diseño de procesamiento en paralelo dividirá una imagen en unidades de datos de procesamiento en paralelo virtuales (VPDU) que se definen como unidades no superpuestas en una imagen. En los decodificadores de hardware, las VPDU sucesivas se procesan por múltiples etapas de procesamiento en paralelo simultáneamente. El tamaño de VPDU es aproximadamente proporcional al tamaño de memoria intermedia en la mayoría de las etapas de procesamiento en paralelo, por lo que es importante mantener el tamaño de VPDU pequeño. En la mayoría de los decodificadores de hardware, el tamaño de VPDU se puede configurar en el tamaño máximo de bloque de transformada (TB). Sin embargo, en VVC, la partición de árbol ternario (TT) y árbol binario (BT) puede conducir al aumento del tamaño de VPDU.
Además, se debe señalar que, cuando una parte de un bloque de nodo de árbol excede el límite de imagen inferior o derecho, el bloque de nodo de árbol se ve obligado a dividirse hasta que todas las muestras de cada CU codificada se ubican dentro de los límites de imagen.
Como un ejemplo, la herramienta de intra-subdivisiones (ISP) puede dividir bloques intrapredichos de luma vertical u horizontalmente en 2 o 4 subparticiones dependiendo del tamaño de bloque.
En un ejemplo, la unidad de selección de modo 260 del codificador de video 20 se puede configurar para realizar cualquier combinación de las técnicas de partición descritas en la presente.
Como se describió anteriormente, el codificador 20 se configura para determinar o seleccionar el mejor modo de predicción o un modo de predicción óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción. El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define en H.265, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define para VVC. Como ejemplo, varios modos de intrapredicción angular convencionales se reemplazan adaptativamente con modos de intrapredicción de ángulo ancho para los bloques no cuadrados, por ejemplo, como se define en VVC. Como otro ejemplo, para evitar operaciones de división para predicción DC, solo se utiliza el lado más largo para calcular el promedio de bloques no cuadrados. Y, los resultados de intrapredicción del modo plano se pueden modificar adicionalmente mediante un método de combinación de intrapredicción dependiente de posición (PDPC).
La unidad de intrapredicción 254 se configura para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción 265 de acuerdo con un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción 254 (o en general la unidad de selección de modo 260) se configura además para emitir parámetros de intrapredicción (o en información general indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad de codificación entrópica 270 en forma de elementos de sintaxis 266 para inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el decodificador de video 30 puede recibir y usar los parámetros de predicción para decodificación.
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente decodificadas, por ejemplo, almacenadas en la DBP 230) y otros parámetros de interpredicción, por ejemplo, si la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se utiliza para buscar un bloque de referencia que coincida mejor y/o por ejemplo, si se aplica interpolación de píxeles, por ejemplo, interpolación de medio/semi-píxel, cuarto de píxel, 1/16 de píxel o no.
Además de los modos de predicción anteriores, se puede aplicar un modo de salto, un modo directo y/u otro modo de interpredicción.
Por ejemplo, predicción de fusión extendida, la lista de candidatos de fusión de este modo se construye al incluir los siguientes cinco tipos de candidatos en orden: MVP espacial de CU vecinas espaciales, MVP temporal de CU co ubicadas, MVP basado en historial de una tabla FIFO, MVP promedio por pares y MV cero. Y se puede aplicar un refinamiento de vector de lado de decodificador (DMVR) basado en coincidencia bilateral para aumentar la precisión de los MV del modo de fusión. Modo de fusión con MVD (MMVD), que proviene del modo de fusión con diferencias de vector de movimiento. Se indica una bandera MMVD justo después de enviar una bandera de salto y una bandera de fusión para especificar si se utiliza el modo MMVD para una CU. Y se puede aplicar un esquema de resolución de vector de movimiento adaptativo (AMVR) a nivel de CU. La AMVR permite codificar MVD de la CU con diferente precisión. Dependiendo del modo de predicción para la CU actual, los MVD de la CU actual se pueden seleccionar de manera adaptativa. Cuando una CU se codifica en modo de fusión, se puede aplicar el modo combinado inter/intrapredicción (CIIP) a la CU actual. Se realiza un promedio ponderado de las señales inter e intrapredicción para obtener la predicción CIIP. La predicción compensada por movimiento afín, el campo de movimiento afín del bloque se describe mediante información de movimiento de vectores de movimiento de dos puntos de control (4 parámetros) o vectores de movimiento de tres puntos de control (6 parámetros). Predicción de vector de movimiento temporal basada en subbloques (SbTMVP), que es similar a la predicción de vector de movimiento temporal (TMVP) en HEVC, pero predice los vectores de movimiento de las sub-CU dentro de la CU actual. El flujo óptico bidireccional (BDOF), anteriormente denominado BIO, es una versión más simple que requiere mucho menos cálculo, especialmente en términos de número de multiplicaciones y el tamaño del multiplicador. Modo de partición de triángulo, en este modo, una CU se divide uniformemente en dos particiones en forma de triángulo, usando la división diagonal o la división anti-diagonal. Además, el modo bipredicción se extiende más allá del promedio simple para permitir el promedio ponderado de las dos señales de predicción.
Además de los modos de predicción anteriores, se puede aplicar un modo de salto y/o un modo directo.
La unidad de procesamiento de predicción 260 se puede configurar además para particionar el bloque 203 en particiones o sub-bloques de bloques de bloques más pequeños, por ejemplo iterativamente usando partición de árbol cuádruple (QT), partición binaria (BT) o partición de árbol ternario (TT) o cualquier combinación de las mismas, y para realizar, por ejemplo, la predicción para cada una de las particiones o subbloques de bloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción aplicados a cada una de las particiones o subbloques de bloques de bloques.
La unidad de intrapredicción 244 puede incluir unidad de estimación de movimiento (ME) (no se muestra en la figura 2) y unidad de compensación de movimiento (MC) (no se muestra en la figura 2). La unidad de estimación de movimiento se configura para recibir u obtener el bloque de imagen 203 (bloque de imagen actual 203 de la imagen actual 201) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para estimación de movimiento. Por ejemplo, una secuencia de video puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de o formar una secuencia de imágenes que forman una secuencia de video. El codificador 20 se puede configurar, por ejemplo, para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción a la unidad de estimación de movimiento (no mostrada en la figura 2). Este desplazamiento también se conoce como vector de movimiento (MV).
La unidad de compensación de movimiento se configura para obtener, por ejemplo, recibir, un parámetro de interpredicción y para realizar interpredicción con base en o mediante el uso del parámetro de interpredicción para obtener un bloque de interpredicción 265. La compensación de movimiento, realizada por unidad de compensación de movimiento (no mostrada en la figura 2), puede implicar recuperar o generar el bloque de predicción con base en el vector de movimiento/bloque determinado por estimación de movimiento, posiblemente realizando interpolaciones a precisión de subpíxeles. El filtrado de interpolación puede generar muestras de píxeles adicionales, aumentando así la cantidad de bloques de predicción candidatos que se pueden usar para codificar un bloque de imagen. Después de recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia. La unidad de compensación movimiento también puede generar elementos de sintaxis asociados con los bloques y el segmento de video para su uso por decodificador de video 30 en decodificación de los bloques de imagen del segmento de video.
La unidad de intrapredicción 254 se configura para obtener, por ejemplo, recibir, el bloque de imagen 203 (bloque de imagen actual) y uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques vecinos reconstruidos, de la misma imagen para intraestimación. El codificador 20 se puede configurar, por ejemplo, para seleccionar un modo de intrapredicción de una pluralidad de modos de intrapredicción(predeterminados).
Las realizaciones del codificador 20 se pueden configurar para seleccionar el modo de intrapredicción con base en un criterio de optimización, por ejemplo, residuo mínimo (por ejemplo, el modo de intrapredicción que proporciona el bloque de predicción 255 más similar al bloque de imagen actual 203) o distorsión de velocidad mínima.
La unidad de intrapredicción 254 se configura además para determinar con base en el parámetro de intrapredicción, por ejemplo, el modo de intrapredicción seleccionado, el bloque de intrapredicción 255. En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad de intrapredicción 254 también se configura para proporcionar un parámetro de intrapredicción, es decir, información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación entrópica 270. En un ejemplo, la unidad de intrapredicción 254 se puede configurar para realizar cualquier combinación de las técnicas de intrapredicción descritas más adelante.
La unidad de codificación entrópica 270 se configura para aplicar un algoritmo o esquema de codificación entrópica (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema VLC adaptativa al contexto (CALVC), un esquema de codificación aritmética, un esquema de codificación aritmética binaria adaptativa al contexto basada en sintaxis (CABAC), codificación entrópica de partición de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación entrópica) en los coeficientes residuales cuantificados 209, parámetros de interpredicción, parámetro de intrapredicción y/o parámetros de filtro de bucle, individual o conjuntamente (o no) para obtener datos de imagen codificados 21 que se pueden generar mediante la salida 272, por ejemplo, en forma de un flujo de bits codificado 21. El flujo de bits codificado 21 se puede transmitir al decodificador de video 30, o archivarse para su posterior transmisión o recuperación mediante el decodificador de video 30. La unidad de codificación entrópica 270 se puede configurar además para codificar por entropía los otros elementos de sintaxis para el segmento de video actual que se codifica.
Otras variaciones estructurales del codificador de video 20 se pueden usar para codificar el flujo de video. Por ejemplo, un codificador no basado en transformada 20 puede cuantificar la señal residual directamente sin la unidad de procesamiento de transformada 206 para determinados bloques o cuadros. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
La figura 3 muestra un decodificador de video de ejemplo 30 que se configura para implementar las técnicas de la presente solicitud. El decodificador de video 30 configurado para recibir datos de imagen codificados (por ejemplo, flujo de bits codificado) 21, por ejemplo, codificado por el codificador 100, para obtener una imagen decodificada 131. Durante el proceso de decodificación, el decodificador de video 30 recibe datos de video, por ejemplo, un flujo de bits de video codificado que representa bloques de imagen de un segmento de video codificado y elementos de sintaxis asociados del codificador de video 100.
En el ejemplo de la figura 3, el decodificador 30 comprende una unidad de decodificación entrópica 304, una unidad de cuantificación inversa 310, una unidad de procesamiento de transformada inversa 312, una unidad de reconstrucción 314 (por ejemplo, una memoria intermedia 316), un filtro de bucle 320, una memoria intermedia de imágenes decodificadas 330 y una unidad de procesamiento de predicción 360. La unidad de procesamiento de predicción 360 puede incluir una unidad de interpredicción 344, una unidad intrapredicción 354 y una unidad de selección de modo 362. El decodificador de video 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de video 100 de la figura 2.
Como se explica con respecto al codificador 20, también se hace referencia a la unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de interpredicción 344 y la unidad de intrapredicción 354 como que forman el “decodificador integrado” del codificador de video 20. Por consiguiente, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento de transformada inversa 312 puede ser idéntica en función al filtro de bucle 220 y la memoria intermedia de imágenes decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes decodificadas 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de video 20 se aplican de manera correspondiente a las respectivas unidades y funciones del decodificador de video 30.
La unidad de decodificación entrópica 304 se configura para realizar decodificación entrópica a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no mostrados en la figura 3), por ejemplo, (decodificados) cualquiera o todos los parámetros de interpredicción, parámetro intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación entrópica 304 se configura además para reenviar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad de procesamiento de predicción 360. El decodificador de video 30 puede recibir los elementos de sintaxis al nivel de segmento de video y/o al nivel de bloque de video.
La unidad de decodificación entrópica 304 se configura para analizar el flujo de bits 21 (o en general datos de imagen codificados 21) y realizar, por ejemplo, decodificación entrópica a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no mostrados en la figura 3), por ejemplo, cualquiera o todos los parámetros de interpredicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro intrapredicción (por ejemplo, modo o índice intrapredicción), parámetros de transformada, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación entrópica 304 se puede configurar para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad de codificación entrópica 270 del codificador 20. La unidad de decodificación entrópica 304 se puede configurar además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad de aplicación de modo 360 y otros parámetros a otras unidades del decodificador 30. El decodificador de video 30 puede recibir los elementos de sintaxis al nivel de segmento de video y/o al nivel de bloque de video. Además o como una alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden recibir y/o utilizar grupos de mosaicos y/o mosaicos y elementos de sintaxis respectivos.
La unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento de transformada inversa 312 puede ser idéntica en función a la unidad de procesamiento de transformada inversa 112, la unidad de reconstrucción 314 puede ser idéntica en función a la unidad de reconstrucción 114 , la memoria intermedia 316 puede ser idéntica en función a la memoria intermedia 116, el filtro de bucle 320 puede ser idéntico en función al filtro de bucle 120, y la memoria intermedia de imágenes decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes decodificadas 130.
Las realizaciones del decodificador 30 pueden comprender una unidad de partición (no representada en la figura 3). En un ejemplo, la unidad de procesamiento de predicción 360 del decodificador de video 30 se puede configurar para realizar cualquier combinación de las técnicas de partición descritas anteriormente.
La unidad de procesamiento de predicción 360 puede comprender una unidad de interpredicción 344 y una unidad intrapredicción 354, en donde la unidad interpredicción 344 se puede parecer a la unidad interpredicción 144 en función, y la unidad intrapredicción 354 puede parecerse a la unidad intrapredicción 154 en función. La unidad de procesamiento de predicción 360 se configura típicamente para realizar la predicción de bloques y/u obtener el bloque de predicción 365 a partir de los datos codificados 21 y para recibir u obtener (explícita o implícitamente) los parámetros relacionados con la predicción y/o la información sobre el modo de predicción seleccionado, por ejemplo, de la unidad de decodificación entrópica 304.
Cuando el segmento de video se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de procesamiento de predicción 360 se configura para generar el bloque de predicción 365 para un bloque de imagen del segmento de video actual con base en un modo de intrapredicción señalizado y datos de bloques previamente decodificados del cuadro o imagen actual. Cuando el cuadro de video se codifica como un segmento intercodificado (es decir, B o P), la unidad de intercodificación 344 (por ejemplo, unidad de compensación de movimiento) de la unidad de procesamiento de predicción 360 se configura para producir bloques de predicción 365 para un bloque de video del segmento de video actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación entrópica 304. Para interpredicción, los bloques de predicción se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador video 30 puede construir las listas de cuadros de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 330.
La unidad de predicción 360 se configura para determinar la información de predicción para un bloque de video del segmento de video actual mediante el análisis de los vectores de movimiento y otros elementos de sintaxis y utiliza la información de predicción para producir los bloques de predicción para el bloque de video actual que se decodifica. Por ejemplo, la unidad de procesamiento de predicción 360 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de video del segmento de video, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de video intercodificado del segmento, estado de interpredicción para cada bloque de video intercodificado del segmento y otra información para decodificar los bloques de video en el segmento de video actual.
La unidad de cuantificación inversa 310 se configura para cuantificar inversamente, es decir, descuantificar, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación entrópica 304. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado mediante el codificador de video 100 para cada bloque de video en el segmento de video para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debe aplicar.
La unidad de cuantificación inversa 310 se puede configurar para recibir parámetros de cuantificación (QP) (o en información general relacionada con la cuantificación inversa) y coeficientes cuantificados a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante unidad de decodificación entrópica 304) y para aplicar con base en los parámetros de cuantificación una cuantificación inversa en los coeficientes cuantificados decodificados 309 para obtener coeficientes decuantificados 311, que también se pueden referir como coeficientes de transformada 311.
La unidad de procesamiento de transformada inversa 312 se configura para aplicar una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxeles.
La unidad de procesamiento de transformada inversa 312 también se puede configurar para recibir coeficientes decuantificados 311, también denominados coeficientes de transformada 311, y para aplicar una transformada a los coeficientes decuantificados 311 para obtener bloques residuales reconstruidos 213 en el dominio de muestra. Los bloques residuales reconstruidos 213 también se pueden referir como bloques de transformada 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada de enteros inversa o un proceso de transformada inversa conceptualmente similar. La unidad de procesamiento de transformada inversa 312 se puede configurar adicionalmente para recibir parámetros de transformada o información correspondiente a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante unidad de decodificación entrópica 304) para determinar la transformada que se va a aplicar a los coeficientes decuantificados 311.
La unidad de reconstrucción 314 (por ejemplo, sumador 314) se configura para sumar el bloque de transformada inversa 313 (es decir, el bloque residual reconstruido 313) al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo, para suavizar transiciones de píxeles o mejorar de otro modo la calidad de video. En un ejemplo, la unidad de filtro de bucle 320 se puede configurar para realizar cualquier combinación de las técnicas de filtración descritas más adelante. La unidad de filtro de bucle 320 pretende representar uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de afilado o suavizado o filtros colaborativos. Aunque la unidad de filtro de bucle 320 se muestra en la figura 3 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 320 se puede implementar como un filtro post-bucle.
La unidad de filtro de bucle 320 también puede comprender uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), una definición, filtros de suavizado o filtros colaborativos o cualquier combinación de los mismos. En un ejemplo, la unidad de filtro de bucle 220 puede comprender un filtro de desbloqueo, un filtro SAO y un filtro ALF. El orden del proceso de filtrado puede ser el filtro de desbloqueo, SAO y ALF. En otro ejemplo, se agrega un proceso llamado mapeo de luma con modificación de escala de croma (LMCS) (es decir, el remodelador adaptativo en bucle). Este proceso se realiza antes del desbloqueo. En otro ejemplo, el proceso de filtro de desbloqueo también se puede aplicar a bordes de subbloques internos, por ejemplo, bordes de subbloques afines, bordes de subbloques ATMVP, bordes de transformada de subbloque (SBT) y intrabordes de subpartición (ISP).
Los bloques de video decodificados 321 en un cuadro o imagen dada se almacenan en la memoria intermedia de imágenes decodificadas 330, que almacena imágenes de referencia utilizadas para compensación de movimiento posterior.
Los bloques de video decodificados 321 de una imagen se almacenan en la memoria intermedia de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para compensación de movimiento posterior para otras imágenes y/o para visualización de salida, respectivamente.
El decodificador 30 se configura para emitir la imagen decodificada 331, por ejemplo, a través de la salida 332, para su presentación o visualización a un usuario.
Otras variaciones del decodificador de video 30 se pueden usar para decodificar el flujo de bits comprimido. Por ejemplo, el decodificador 30 puede producir el flujo de video de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador no basado en transformada 30 puede cuantificar inversamente la señal residual directamente sin la unidad de procesamiento de transformada inversa 312 para determinados bloques o cuadros. En otra implementación, el decodificador de video 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento de transformada inversa 312 combinadas en una sola unidad.
Además o alternativamente a las realizaciones mencionadas anteriormente, en otras realizaciones de acuerdo con la figura 18, la unidad de interpredicción 344 puede ser idéntica a la unidad de interpredicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intrapredicción 354 puede ser idéntica a la unidad de interpredicción 254 en función, y toma decisiones de división o partición y predicción con base en los parámetros de partición y/o predicción o información respectiva recibida a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante unidad decodificación entrópica 304). La unidad de aplicación de modo 360 se puede configurar para realizar la predicción (intra o interpredicción) por bloque con base en imágenes reconstruidas, bloques o muestras respectivas (filtradas o no filtradas) para obtener el bloque de predicción 365.
Cuando el segmento de video se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de aplicación de modo 360 se configura para generar el bloque de predicción 365 para un bloque de imagen del segmento de video actual con base en un modo de intrapredicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de video se codifica como un segmento intercodificado (es decir, B o P), la unidad de intercodificación 344 (por ejemplo, unidad de compensación de movimiento) de la unidad de aplicación de modo 360 se configura para producir bloques de predicción 365 para un bloque de video del segmento de video actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación entrópica 304. Para interpredicción, los bloques de predicción se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador video 30 puede construir las listas de cuadros de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 330. Lo mismo o similar se puede solicitar o mediante realizaciones mediante el uso de grupos de mosaicos (por ejemplo, grupos de mosaicos de video) y/o mosaicos (por ejemplo, mosaicos de video) además o alternativamente a segmentos (por ejemplo, segmentos de video), por ejemplo, un video se puede codificar mediante el uso de grupos de mosaicos y/o mosaicos I, P o B.
La unidad de aplicación de modo 360 se configura para determinar la información de predicción para un bloque de video del segmento de video actual mediante el análisis de los vectores de movimiento o información relacionada y otros elementos de sintaxis y utiliza la información de predicción para producir los bloques de predicción para el bloque de video actual que se decodifica. Por ejemplo, la unidad de aplicación de modo 360 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de video del segmento de video, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de video intercodificado del segmento, estado de interpredicción para cada bloque de video intercodificado del segmento y otra información para decodificar los bloques de video en el segmento de video actual. Lo mismo o similar se puede solicitar o mediante realizaciones mediante el uso de grupos de mosaicos (por ejemplo, grupos de mosaicos de video) y/o mosaicos (por ejemplo, mosaicos de video) además o alternativamente a segmentos (por ejemplo, segmentos de video), por ejemplo, un video se puede codificar mediante el uso de grupos de mosaicos y/o mosaicos I, P o B.
Las realizaciones del decodificador de video 30 como se muestra en la figura 3 se pueden configurar para particionar y/o decodificar la imagen mediante el uso de segmentos (también denominados segmentos de video), en donde una imagen se puede particionar o decodificar mediante el uso de uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU) o uno o más grupos de bloques (por ejemplo, mosaicos (H.265/HEVC y VVC) o ladrillos (v Vc )).
Las realizaciones del decodificador de video 30 como se muestra en la figura 3 se pueden configurar para particionar y/o decodificar la imagen mediante el uso de grupos de segmentos/mosaicos (también denominados grupos de mosaicos de video) y/o mosaicos (también denominados mosaicos de video), en donde una imagen se puede particionar o decodificar mediante el uso de uno o más grupos de segmentos/mosaicos (típicamente no superpuestos), y cada grupo de segmentos/mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Otras variaciones del decodificador de video 30 se pueden usar para decodificar los datos de imagen codificados 21. Por ejemplo, el decodificador 30 puede producir el flujo de video de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador no basado en transformada 30 puede cuantificar inversamente la señal residual directamente sin la unidad de procesamiento de transformada inversa 312 para determinados bloques o cuadros. En otra implementación, el decodificador de video 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento de transformada inversa 312 combinadas en una sola unidad.
Se debe entender que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de un paso actual se puede procesar adicionalmente y luego enviar al siguiente paso. Por ejemplo, después de filtrado de interpolación, derivación de vector de movimiento o filtrado de bucle, una operación adicional, tal como recorte o desplazamiento, se puede realizar en el resultado de procesamiento del filtrado de interpolación, derivación de vector de movimiento o filtrado de bucle.
La figura 4 es un diagrama esquemático de un dispositivo de codificación de video 400 de acuerdo con una realización de la descripción. El dispositivo de codificación de video 400 es adecuado para implementar las realizaciones descritas como se describe en la presente. En una realización, el dispositivo de codificación de video 400 puede ser un decodificador tal como decodificador de video 30 de la figura 1A o un codificador tal como codificador de video 20 de la figura 1A. En una realización, el dispositivo de codificación de video 400 puede ser uno o más componentes del decodificador de video 30 de la figura 1A o el codificador de video 20 de la figura 1A como se describió anteriormente.
El dispositivo de codificación de video 400 comprende puertos de ingreso 410 y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad de procesamiento central (CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos de egreso 450 para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de video 400 también puede comprender componentes óptico a eléctrico (OE) y componentes eléctrico a óptico (EO) acoplados a los puertos de ingreso 410, las unidades receptoras 420, las unidades transmisoras 440 y los puertos de egreso 450 para salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa por hardware y software. El procesador 430 se puede implementar como uno o más chips de CPU, núcleos (por ejemplo, como un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos de ingreso 410, unidades receptoras 420, unidades transmisoras 440, puertos de egreso 450 y memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. Por lo tanto, la inclusión del módulo de codificación 470 proporciona una mejora sustancial a la funcionalidad del dispositivo de codificación de video 400 y efectúa una transformación del dispositivo de codificación de video 400 a un estado diferente. Alternativamente, el módulo de codificación 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 comprende uno o más discos, unidades de cinta y unidades de estado sólido y se puede utilizar como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando estos programas se seleccionan para ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución de programa. La memoria 460 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria direccionable por contenido (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como cualquiera o ambos del dispositivo fuente 310 y el dispositivo destino 320 de la figura 1 de acuerdo con una realización de ejemplo. El aparato 500 puede implementar técnicas de la presente solicitud descritas anteriormente. El aparato 500 puede estar en forma de un sistema informático que incluye múltiples dispositivos informáticos o en forma de un único dispositivo informático, por ejemplo, un teléfono móvil, una computadora de tableta, una computadora portátil, una computadora portátil, una computadora de escritorio y similares.
Un procesador 502 en el aparato 500 puede ser una unidad de procesamiento central. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo o múltiples dispositivos capaces de manipular o procesar información ahora existente o desarrollada posteriormente. Aunque las implementaciones descritas se pueden poner en práctica con un único procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Se puede utilizar cualquier otro tipo adecuado de dispositivo de almacenamiento como la memoria 504. La memoria 504 puede incluir código y datos 506 a los que se accede por el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas de aplicación 510, los programas de aplicación 510 que incluyen al menos un programa que permite que el procesador 502 realice los métodos descritos en la presente. Por ejemplo, los programas de solicitud 510 pueden incluir aplicaciones 1 a N, que incluyen además una aplicación de codificación de video que realiza los métodos descritos en la presente. El aparato 500 también puede incluir memoria adicional en forma de un almacenamiento secundario 514, que puede, por ejemplo, ser una tarjeta de memoria utilizada con un dispositivo informático móvil. Debido a que las sesiones de comunicación de video pueden contener una cantidad significativa de información, se pueden almacenar en su totalidad o en parte en el almacenamiento secundario 514 y cargarse en la memoria 504 como sea necesario para el procesamiento. El aparato 500 también puede incluir uno o más dispositivos de salida, tal como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que se puede operar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 mediante el bus 512.
El aparato 500 también puede incluir uno o más dispositivos de salida, tal como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que se puede operar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 mediante el bus 512. Se pueden proporcionar otros dispositivos de salida que permiten que un usuario programe o utilice de otro modo el aparato 500 además de o como una alternativa a la pantalla 518. Cuando el dispositivo de salida es o incluye una pantalla, la pantalla se puede implementar de varias maneras, incluso mediante una pantalla de cristal líquido (LCD), una pantalla de tubo catódico (CRT), una pantalla de plasma o una pantalla de diodos emisores de luz (LED), tal como una pantalla de LED orgánicos (OLED).
El aparato 500 también puede incluir o estar en comunicación con un dispositivo de detección de imágenes 520, por ejemplo una cámara , o cualquier otro dispositivo de detección de imágenes 520 ahora existente o desarrollado posteriormente que puede detectar una imagen tal como la imagen de un usuario que opera el aparato 500. El dispositivo de detección de imágenes 520 se puede colocar de modo que se dirige hacia el usuario que opera el aparato 500. En un ejemplo, la posición y el eje óptico del dispositivo de detección de imágenes 520 se pueden configurar de modo que el campo de visión incluye un área que es directamente adyacente a la pantalla 518 y desde la cual la pantalla 518 es visible.
El aparato 500 también puede incluir o estar en comunicación con un dispositivo de detección de sonido 522, por ejemplo un micrófono, o cualquier otro dispositivo de detección de sonido ahora existente o desarrollado posteriormente que puede detectar sonidos cerca del aparato 500. El dispositivo de detección de sonido 522 se puede colocar de modo que se dirige hacia el usuario que opera el aparato 500 y se puede configurar para recibir sonidos, por ejemplo, voz u otras expresiones hechas por el usuario mientras el usuario opera el aparato 500.
Aunque la figura 5 representa el procesador 502 y la memoria 504 del aparato 500 como integrados en una sola unidad, se pueden utilizar otras configuraciones. Las operaciones del procesador 502 se pueden distribuir a través de múltiples máquinas (cada máquina tiene uno o más de procesadores) que se pueden acoplar directamente o a través de un área local u otra red. La memoria 504 se puede distribuir a través de múltiples máquinas, tal como una memoria basada en red o memoria en múltiples máquinas que realizan las operaciones del aparato 500. Aunque se representa aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto de múltiples buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a través de una red y puede comprender una sola unidad integrada tal como una tarjeta de memoria o múltiples unidades tal como múltiples tarjetas de memoria. Por lo tanto, el aparato 500 se puede implementar en una amplia variedad de configuraciones.
La codificación de video de próxima generación (NGVC) elimina la separación de los conceptos CU, PU y TU, y soporta más flexibilidad para las formas de partición CU. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
Además o alternativamente, TU o PU también se pueden obtener dividiendo la CU.
En J. An et al., "Block partitioning structure for next generation video coding”, Unión Internacional de Telecomunicaciones, COM16-C966, septiembre de 2015 (en adelante, “propuesta VCEG COM16-C966”), se propusieron técnicas de partición de árbol binario de árbol cuádruple (QTBT) para futuras normas de codificación de video más allá de HEVC. Las simulaciones han demostrado que la estructura QTBT propuesta es más eficiente que la estructura de árbol cuádruple en HEVC usado. En HEVC, la interpredicción para bloques pequeños se restringe para reducir el acceso de memoria de compensación de movimiento, y la interpredicción no es compatible con bloques de 4x4. En la QTBT del JEM, se eliminan estas restricciones.
En QTBT, una CU puede tener una forma cuadrada o rectangular. Como se muestra en la figura 6, una unidad de árbol de codificación (CTU) se divide primero mediante una estructura de árbol cuádruple. Los nodos hoja de árbol cuádruple se pueden particionar adicionalmente mediante una estructura de árbol binario. Hay dos tipos de división, división horizontal simétrica y división vertical simétrica, en la división de árbol binario. En cada caso, un nodo se divide al dividir el nodo por el centro, ya sea horizontal o verticalmente. Los nodos hoja de árbol binario se denominan unidades de codificación (CU), y esa segmentación se utiliza para predicción y procesamiento de transformada sin ninguna partición adicional. Esto significa que la CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación QTBT. Una CU a veces consiste de 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 segmentos P y B del formato croma 4:2:0 y a veces consiste 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 segmentos I.
Los siguientes parámetros se definen para el esquema de partición QTBT.
- Tamaño de CTU: el tamaño de nodo raíz de un árbol cuádruple, el mismo concepto que en HEVC
- MinQTSize: el tamaño de nodo hoja de árbol cuádruple árbol mínimo permitido
- MaxBTSize: el tamaño de nodo raíz de árbol binario máximo permitido
- MaxBTDepth: la profundidad de árbol binario máxima permitida
- MinBTSize: el tamaño de nodo hoja de árbol binario mínimo permitido
En un ejemplo de la estructura de partición QTBT, cuando el nodo de árbol cuádruple tiene un tamaño igual o menor que MinQTSize, no se considera ningún árbol cuádruple adicional. No se dividirá adicionalmente por el árbol binario ya que el tamaño excede el MaxBTSize. De lo contrario, el nodo hoja de árbol cuádruple se podría particionar adicionalmente mediante el árbol binario. Por lo tanto, el nodo hoja de árbol cuádruple también es el nodo raíz para el árbol binario y tiene la profundidad del árbol binario como 0. Cuando la profundidad del árbol binario alcanza MaxBTDepth (es decir, 4), no se considera ninguna división adicional. Cuando el nodo de árbol binario tiene un ancho igual a MinBTSize (es decir, 4), no se considera ninguna división horizontal adicional. De manera similar, cuando el nodo del árbol binario tiene una altura igual a MinBTSize, no se considera ninguna división vertical adicional. Los nodos hoja del árbol binario se procesan adicionalmente mediante predicción y procesamiento de transformada sin ninguna partición adicional. En el JEM, el tamaño máximo de CTU es de muestras luma de 256x256. Los nodos hoja del árbol binario (CU) se pueden procesar adicionalmente (por ejemplo, al realizar un proceso de predicción y un proceso de transformada) sin ninguna partición adicional.
La figura 6 ilustra un ejemplo de un bloque 30 (por ejemplo, un CTB) dividido usando técnicas de partición de QTBT. Como se muestra en la figura 6, usando técnicas de partición QTBT, cada uno de los bloques se divide simétricamente a través del centro de cada bloque. La figura 7 ilustra la estructura de árbol correspondiente a la partición de bloques de la figura 6. Las líneas sólidas en las figuras 7 indican división de árbol cuádruple y las líneas punteadas indican división de árbol binario. En un ejemplo, en cada nodo de división (es decir, sin hoja) del árbol binario, se indica un elemento de sintaxis (por ejemplo, una bandera) para indicar el tipo de división realizada (por ejemplo, horizontal o vertical), donde 0 indica división horizontal y 1 indica división vertical. Para la división de cuatro árboles, no existe la necesidad de indicar el tipo de división, ya que la división de árbol cuádruple siempre divide un bloque horizontal y verticalmente en 4 sub-bloques con un tamaño igual.
Como se muestra en la figura 7, en el nodo 50, el bloque 30 se divide en los cuatro bloques 31, 32, 33 y 34, mostrados en figura 6, usando partición QT. El bloque 34 no se divide adicionalmente y, por lo tanto, es un nodo hoja. En el nodo 52, el bloque 31 se divide además en dos bloques usando particiones Bt . Como se muestra en la figura 7, el nodo 52 se marca con un 1, lo que indica división vertical. Como tal, la división en el nodo 52 da como resultado el bloque 37 y el bloque incluye ambos bloques 35 y 36. Los bloques 35 y 36 se crean mediante una división vertical adicional en el nodo 54. En el nodo 56, el bloque 32 se divide además en dos bloques 38 y 39 usando particiones BT.
En el nodo 58, el bloque 33 se divide en 4 bloques de igual tamaño usando partición QT. Los bloques 43 y 44 se crean a partir de esta partición QT y no se dividen adicionalmente. En el nodo 60, el bloque superior izquierdo se divide primero usando división vertical de árbol binario que da por resultado el bloque 40 y un bloque vertical derecho. El bloque vertical derecho se divide luego usando la división de árbol binario horizontal en los bloques 41 y 42. El bloque inferior derecho creado a partir de la división de árbol cuádruple en el nodo 58, se divide en el nodo 62 usando la división de árbol binario horizontal en bloques 45 y 46. Como se muestra en la figura 7, el nodo 62 se marca con un 0, que indica división horizontal.
Además de QTBT, se propone una estructura de partición de bloques denominada árbol de tipo múltiple (MTT) para reemplazar BT en estructuras CU basadas en QTBT, lo que significa que una CTU se puede dividirse mediante partición QT en primer lugar para obtener un bloque de la CTU, y luego el bloque se puede dividir mediante partición MTT en segundo lugar.
La estructura de partición MTT sigue siendo una estructura de árbol recursivo. En MTT, se utilizan múltiples estructuras de partición diferentes (por ejemplo, dos o más). Por ejemplo, de acuerdo con las técnicas de MTT, se pueden usar dos o más estructuras de partición diferentes para cada nodo no de hoja respectivo de una estructura de árbol, a cada profundidad de la estructura de árbol. La profundidad de un nodo en una estructura de árbol se puede referir a la longitud de la trayectoria (por ejemplo, el número de divisiones) desde el nodo hasta la raíz de la estructura de árbol.
En MTT, hay dos tipos de partición, partición BT y partición de árbol ternario (TT). El tipo de partición se puede seleccionar de la partición BT y la partición TT. La estructura de partición TT difiere de la de las estructuras QT o BT, en que la estructura de partición TT no divide un bloque por el centro. La región central del bloque permanece junta en el mismo subbloque. A diferencia de QT, que produce cuatro bloques, o árbol binario, que produce dos bloques, la división de acuerdo con una estructura de partición TT produce tres bloques. Los tipos de partición de ejemplo de acuerdo con la estructura de partición TT incluyen tipos de partición simétrica (tanto horizontal como vertical), así como tipos de partición asimétrica (tanto horizontal como vertical). Además, los tipos de partición simétrica de acuerdo con la estructura de partición TT pueden ser desiguales/no uniformes o niveladas/uniformes. Los tipos de partición asimétrica de acuerdo con la estructura de partición TT son desiguales/no uniformes. En un ejemplo, una estructura de partición TT puede incluir al menos uno de los siguientes tipos de partición: árbol ternario simétrico uniforme/horizontal, árbol ternario simétrico uniforme/vertical, árbol ternario asimétrico desigual/no uniforme horizontal, árbol ternario simétrico desigual/no uniforme vertical, árbol ternario asimétrico desigual/no uniforme horizontal o tipos de partición de árbol ternario asimétrico desigual/no uniforme vertical.
En general, un tipo de partición de árbol ternario simétrico desigual/no uniforme es un tipo de partición que es simétrica alrededor de una línea central del bloque, pero donde al menos uno de los tres bloques resultantes no es del mismo tamaño que los otros dos. Un ejemplo preferido es donde los bloques laterales son 14 del tamaño del bloque, y el bloque central es 12 del tamaño del bloque. Un tipo de partición de árbol ternario simétrico nivelado/uniforme es un tipo de partición que es simétrica alrededor de una línea central del bloque, y los bloques resultantes son todos del mismo tamaño. Esta partición es posible si la altura o anchura del bloque, dependiendo de una división vertical u horizontal, es un múltiplo de 3. Un tipo de partición de árbol ternario asimétrico desigual/no uniforme es un tipo de partición que no es simétrica alrededor de una línea central del bloque, y donde al menos uno de los bloques resultantes no es del mismo tamaño que los otros dos.
La figura 8 es un diagrama conceptual que ilustra ejemplos opcionales de tipos de partición de árbol ternario horizontal. La figura 9 es un diagrama conceptual que ilustra ejemplos opcionales de tipos de partición de árbol ternario vertical. En ambas figuras 8 y figura 9, h representa la altura del bloque en muestras de luma o croma y w representa el ancho del bloque en muestras de luma o croma. Se señala que la línea central respectiva de un bloque no representa el límite del bloque (es decir, las particiones de árbol ternario no dividen un bloque a través de la línea central). Más bien, la línea central\ se utiliza para representar si un tipo de partición particular es simétrica o asimétrica con respecto a la línea central del bloque original. La línea central también se encuentra a lo largo de la dirección de la división.
Como se muestra en la figura 8, el bloque 71 se particiona con un tipo de partición simétrica horizontal nivelada/uniforme. El tipo de partición simétrica horizontal nivelada/uniforme produce mitades superior e inferior simétricas con respecto a la línea central del bloque 71. El tipo de partición simétrica horizontal nivelada/uniforme produce tres subbloques de igual tamaño, cada uno con una altura de h/3 y un ancho de w. El tipo de partición simétrica nivelada/uniforme horizontal es posible cuando la altura del bloque 71 es divisible uniformemente entre 3. El bloque 73 se particiona con un tipo de partición simétrica horizontal desigual/no uniforme. El tipo de partición simétrica horizontal desigual/no uniforme produce mitades superior e inferior simétricas con respecto a la línea central del bloque 73. El tipo de partición simétrica desigual/no uniforme horizontal produce dos bloques de igual tamaño (por ejemplo, los bloques superior e inferior con una altura de h/4) y un bloque central de un tamaño diferente (por ejemplo, un bloque central con una altura de h/2). En un ejemplo, de acuerdo con el tipo de partición simétrica desigual/no uniforme horizontal, el área del bloque central es igual a las áreas combinadas de los bloques superior e inferior. En algunos ejemplos, el tipo de partición simétrica desigual/no uniforme horizontal se puede preferir para bloques que tienen una altura que es una potencia de 2 (por ejemplo, 2, 4, 8, 16, 32, etc.).
El bloque 75 se particiona con un tipo de partición asimétrica horizontal desigual/no uniforme. El tipo de partición asimétrica desigual/no uniforme horizontal no produce una mitad superior e inferior simétricas con respecto a la línea central del bloque 75 (es decir, las mitades superior e inferior son asimétricas). En el ejemplo de la figura 8, el tipo de partición asimétrica horizontal desigual/no uniforme produce un bloque superior con altura de h/4, un bloque central con altura de 3h/8 y un bloque inferior con una altura de 3h/8. Por supuesto, se pueden usar otras disposiciones asimétricas.
Como se muestra en la figura 9, el bloque 81 se particiona con un tipo de partición simétrica nivelada/uniforme vertical. El tipo de partición simétrica vertical nivelada/uniforme produce mitades izquierda y derecha simétricas con respecto a la línea central del bloque 81. El tipo de partición simétrica nivelada/uniforme vertical produce tres subbloques de igual tamaño, cada uno con un ancho de w/3 y una altura de h. El tipo de partición simétrica nivelada/uniforme vertical es posible cuando el ancho del bloque 81 es divisible uniformemente entre 3.
El bloque 83 se particiona con un tipo de partición simétrica desigual/no uniforme vertical. El tipo de partición simétrica desigual/no uniforme vertical produce mitades izquierda y derecha simétricas con respecto a la línea central del bloque 83. El tipo de partición simétrica desigual/no uniforme vertical produce mitades izquierda y derecha simétricas con respecto a la línea central de 83. El tipo de partición simétrica desigual/no uniforme vertical produce dos bloques de igual tamaño (por ejemplo, los bloques izquierdo y derecho con un ancho de p/4) y un bloque central de un tamaño diferente (por ejemplo, un bloque central con un ancho de p/2). En un ejemplo, de acuerdo con el tipo de partición simétrica desigual/no uniforme vertical, el área del bloque central es igual a las áreas combinadas de los bloques izquierdo y derecho. En algunos ejemplos, el tipo de partición simétrica desigual/no uniforme vertical se puede preferir para bloques que tienen un ancho que es una potencia de 2 (por ejemplo, 2, 4, 8, 16, 32, etc.).
El bloque 85 se particiona con un tipo de partición asimétrica desigual/no uniforme vertical. El tipo de partición asimétrica desigual/no uniforme vertical no produce una mitad izquierda y derecha simétricas con respecto a la línea central del bloque 85 (es decir, las mitades izquierda y derecha son asimétricas). En el ejemplo de la figura 9, el tipo de partición asimétrica desigual/no uniforme vertical produce un bloque izquierdo con ancho de p/4, un bloque central con ancho de 3p/8 y un bloque derecho con un ancho de 3p/8. Por supuesto, se pueden usar otras disposiciones asimétricas.
Además de los parámetros para QTBT, los siguientes parámetros se definen para el esquema de partición MTT. - MaxBTSize: el tamaño de nodo raíz de árbol binario máximo permitido
- MinBtSize: el tamaño de nodo raíz de árbol binario mínimo permitido
- MaxMttDepth: la profundidad de árbol de tipo múltiple máxima
- Desplazamiento MaxMttDepth: el desplazamiento de profundidad de árbol de tipo múltiple máximo
- MaxTtSize: el tamaño de nodo raíz de árbol ternario máximo permitido
- MinTtSize: el tamaño de nodo raíz de árbol ternario mínimo permitido
- MinCbSize: el tamaño de bloque de codificación mínimo permitido
Las realizaciones de la descripción se pueden implementar por un codificador de video o un decodificador de video, tal como codificador de video 20 de la figura 2 o decodificador de video 30 de la figura 3, de acuerdo con una realización de la presente solicitud. Se pueden configurar uno o más elementos estructurales de codificador de video 20 o decodificador de video 30, que incluyen una unidad de partición, para realizar las técnicas de realizaciones de la descripción.
En [JVET-K1001-v4], reporte JVET AHG, J.-R.Ohm, G.J.Sulivan, http://phenix.int-evrv.fr/ivet/. el elemento de sintaxis de MinQtSizeY (log2_min_qt_size_intra_slices_minus2 y log2_min_qt_size_inter_slices_minus2) y el elemento de sintaxis de MaxMttDepth (max_hierarchy_depth_inter_slices y max_mtt_hierarchy_depth_intra_slices) se singularizan en SPS.
El elemento sintaxis de la diferencia entre el tamaño CTB de luma y MaxBtSizeY (log2_diff_ctu_max_bt_size) se indica en la cabecera de segmento.
CtbSizeY y el elemento de sintaxis log2_ctu_size_minus2 correspondiente indican el tamaño del tamaño de bloque de codificación máximo en términos de número de muestras de luma.
MinQtSizeY se define como el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU (unidad de árbol de codificación). El tamaño puede indicar el ancho o la altura del bloque en número de muestras. También podría indicar el ancho y la altura juntos en el caso de bloques cuadrados. Como ejemplo, si MinQtSizeY es igual a 16, un bloque de codificación que tiene un tamaño menor o igual que 16 no se puede dividir en bloque secundario usando el método de división de árbol cuádruple. En la técnica anterior MinQtSizeY, log2_min_qt_size_intra_slices_minus2 y log2_min_qt_size_inter_slices_minus2 se utilizan para indicar el tamaño de bloque de árbol cuádruple mínimo. Tenga en cuenta que la indicación del tamaño puede ser una indicación indirecta, lo que significa que log2_min_qt_size_intra_slices_minus2 podría ser el logaritmo binario (base 2) del número de muestras de luma del bloque de árbol cuádruple mínimo. MaxMttDepth se define como la profundidad de jerarquía máxima para las unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple o CTU. Una unidad de árbol de codificación (o CTB, bloque de árbol de codificación) describe el tamaño máximo de bloque que se utiliza para particionar un cuadro de imagen. MaxMttDepth describe el límite superior para el número de divisiones binarias o ternarias consecutivas que se pueden aplicar para obtener un bloque hijo. Como ejemplo, suponga que el tamaño de CTU es 128x128 (ancho igual a 128 y altura igual a 128), y MaxMttDepth es igual a 1. En este caso, el bloque principal (128x128 en tamaño) se puede dividir primero en dos bloques secundarios 128x64 usando división binaria. Sin embargo, los bloques secundarios no pueden aplicar ninguna división binaria consecutiva (para dar como resultado bloques secundarios 128x32 o 64x64) ya que se alcanza el número máximo de división binaria permitida. Se observa que MaxMttDepth puede controlar la profundidad de división binaria máxima o la profundidad de división ternaria máxima, o ambas al mismo tiempo. Si controla la división binaria y ternaria al mismo tiempo, 1 división binaria seguida de 1 división ternaria se puede contar como 2 divisiones jerárquicas. En la técnica anterior MaxMttDepth, max_mtt_hierarchy_depth_inter_slices y max_mtt_hierarchy_depth_intra_slices se utilizan para indicar la profundidad de jerarquía máxima para unidades de codificación resultantes de árbol de tipo múltiple
Se observa que los nombres de los elementos de sintaxis se utilizan tal como aparecen en la técnica anterior. Sin embargo, debe quedar claro que los nombres se pueden cambiar, por lo tanto, lo que debe considerarse importante es el significado lógico de los elementos de sintaxis.
MaxBtSizeY se define como el tamaño de luma máximo (ancho o alto), en términos de número de muestras, de un bloque de codificación que se puede dividir usando una división binaria. Como ejemplo, si MaxBtSizeY es igual a 64, un bloque de codificación que es más grande en tamaño, ya sea en ancho o altura, no se puede dividir usando división binaria. Esto significa que un bloque que tiene un tamaño 128x128 no se puede dividir usando división binaria, mientras que un bloque que tiene un tamaño 64x64 se puede dividir usando división binaria.
MinBtSizeY se define como el tamaño de luma mínimo (ancho o alto), en términos de número de muestras, de un bloque de codificación que se puede dividir usando una división binaria. Como un ejemplo, si MinBtSizeY es igual a 16, un bloque de codificación que es más pequeño o igual en tamaño, ya sea en ancho o altura, no se puede dividir usando división binaria. Esto significa que un bloque que tiene un tamaño 8x8 no se puede dividir usando división binaria, mientras que un bloque que tiene un tamaño 32x32 se puede dividir usando división binaria.
MinCbSizeY se define como el tamaño de bloque de codificación mínimo. Como un ejemplo, MinCbSizeY puede ser igual a 8, lo que significa que un bloque principal que tiene un tamaño 8x8 no se puede dividir usando cualquiera de los métodos de división ya que el bloque secundario resultante se determina que es más pequeño que MinCbSizeY en ancho o altura. De acuerdo con un segundo ejemplo, si MinCbSizeY es igual a 8, un bloque principal que tiene un tamaño 8x16 no se puede dividir usando, por ejemplo, división de árbol cuádruple, ya que los cuatro bloques secundarios resultantes tendrían un tamaño de 4x8 (ancho igual a 4 y altura igual a 8), y el ancho del ancho de los bloques secundarios resultantes sería menor que MinCbSizeY. En el segundo ejemplo se asumió que MinCbSizeY se aplica tanto al ancho como a la altura del bloque, aunque se pueden usar 2 elementos de sintaxis diferentes para limitar independientemente el ancho y la altura.
MinTbSizeY se define como el tamaño de bloque de transformada mínimo, en términos de número de muestras, de un bloque de codificación que se puede dividir usando una división ternaria. Como un ejemplo, si MinTbSizeY es igual a 16, un bloque de codificación que es más pequeño o igual en tamaño, ya sea en ancho o altura, no se puede dividir usando división ternaria. Esto significa que un bloque que tiene un tamaño 8x8 no se puede dividir usando división ternaria de, mientras que un bloque que tiene un tamaño 32x32 se puede dividir usando división ternaria.Sintaxis de conjunto de parámetros de secuencia RBSP (carga útil de secuencia de bytes sin procesar)(Sección 7.3.2.1 de [JVET-K1001-v4])
[Ed. (BB): SPS básico preliminar, sujeto a estudio adicional y pendiente de desarrollo de especificación adicional].
En estas tablas de sintaxis, en negritas están los elementos de sintaxis incluidos en el flujo de bits. Los elementos que no se muestran en negrita son condiciones o marcadores de posición para otras unidades de sintaxis.
Sintaxis de cabecera de segmento (Sección 7.3.3 de [JVET-K1001-v4])
[Ed. (BB): Cabecera de segmento básica preliminar, sujeta a estudio adicional y pendiente de desarrollo de especificación adicional].
La semántica de los elementos de sintaxis, es decir, cómo se deben interpretar los elementos de sintaxis incluidos en el flujo de bits, también se proporciona en una norma. A continuación, se proporciona la semántica para los elementos mencionados anteriormente.
Semántica de conjunto de parámetros de secuencia RBSP (Sección 7.4.3.1 de [JVET-K1001-v4]) log2_ctu_size_minus2más 2 especifica el tamaño de bloque de árbol de codificación luma de cada CTU.
Las variables CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC y PicHeightInSamplesC se derivan de la siguiente manera:
CtbLog2SizeY = log2_ctu_size_minus2 2
(7-5)
CtbSizeY = 1 << CtbLog2SizeY
(7-6)
MinCbLog2SizeY = 2
(7-7)
MinCbSizeY = 1 << MinCbLog2SizeY
(7-8)
MinTbSizeY = 4
(7-9)
MaxTbSizeY = 64
(7-10)
PicWidthlnCtbsY = Ceil(pic_width_in_luma_samples -f CtbSizeY)
(7-11)
PicHeightInCtbsY = Ceil(pic_height_in_luma_samples -f CtbSizeY)
(7-12)
PicSizeInCtbsY = PicWidthlnCtbsY * PicHeightInCtbsY
(7-13)
PicWidthlnMinCbsY = pic_width_in_luma_samples / MinCbSizeY
(7-14)
PicHeightlnMinCbsY = pic_height_in_luma_samples / MinCbSizeY
(7-15)
PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY
(7-16)
PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples
(7-17)
PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC
(7-18)
PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC
(7-19)
log2_min_qt_size_intra_slices_minus2más 2 especifica el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 2 (I). El valor de log2_m¡n_qt_s¡ze_intra_sl¡ces_m¡nus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive.
MinQtLog2SizeIntraY = log2_min_qt_size_intra_slices_minus2 2
(7-22)
[Ed. (BB): La hoja de un árbol cuádruple puede ser una unidad de codificación o la raíz de un árbol de tipo múltiple anidado].
log2_m¡n_qt_s¡ze_¡nter_slices_m¡nus2más 2 especifica el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 0 (B) o 1 (P). El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 2
(7-23)
max_mtt_hierarchy_depth_inter_sl¡cesespecifica la profundidad de jerarquía máxima para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 0 (B) o 1 (P). El valor max_mtt_hierarchy_depth_inter_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive.
max_mtt_h¡erarchy_depth_¡ntra_sl¡cesespecifica la profundidad de jerarquía máxima para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 2 (I). El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive.
Semánt¡ca de cabecera de segmento (Secc¡ón 7.4.4 de [JVET-K1001-v4])
log2_d¡ff_ctu_max_bt_s¡zeespecifica la diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando log2_diff_ctu_max_bt_size no está presente, se infiere que el valor de log2_diff_ctu_max_bt_size es igual a 2.
Las variables MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY y MaxMttDepth se derivan de la siguiente manera:
MinQtLog2SizeY = (slice_type = = I) ? MinQtLog2SizeIntraY : MinQtLog2SizeInterY
(7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
(7-26)
MinBtLog2SizeY = MinCbLog2SizeY
(7-27)
MaxTtLog2SizeY = (slice_type = = I) ? 5 : 6
(7-28)
MinTtLog2SizeY = MinCbLog2SizeY
(7-29)
MinQtSizeY = 1 << MinQtLog2SizeY
(7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY
(7-31)
MinBtSizeY = 1 << MinBtLog2SizeY
(7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY
(7-33)
MinTtSizeY = 1 << MinTtLog2SizeY
(7-34)
MaxMttDepth = (slice_type = = I) ? max_mtt_hierarchy_depth_intra_slices : max_mtt_hierarchy_depth_inter_slices (7-35)
[Ed. (BB): Actualmente el tamaño máximo TT es fijo (muestras de luma de 32x32 y muestras de croma correspondientes para segmentos I y muestras de luma de 64x64 y muestras de croma correspondientes para segmentos P/B), así como el tamaño máximo de BT para segmentos I (CtbLog2SizeY - 2, por ejemplo, muestras de luma de 32x32 y muestras de croma correspondientes para un tamaño de CTU de muestras de luma de 128x128)]. En larealización 1de la descripción:
La realización 1 se refiere a la señalización, en el SPS (conjuntos de parámetros de secuencia), de los elementos de sintaxis de alto nivel relacionados con restricción de partición (por ejemplo, MinQtSizeY, MaxMttDepht, MaxBtSizeY) individualmente por tipo de segmento y/o señalización de una bandera activada de anulación de restricción de partición (o desactivada).
En la cabecera de segmento, la señalización de la bandera de anulación de restricción de partición significa:
• Si la bandera es verdadera,
• anular elementos de sintaxis de alto nivel relacionados con la restricción de partición en la cabecera de segmento, aquí la anulación significa re-señalizar los elementos en la cabecera de segmento.
• De lo contrario,
• inferir los elementos de sintaxis de alto nivel relacionados con restricción de partición con los valores señalados desde SPS con base en el tipo de segmento.
En otras palabras, la bandera de anulación de restricción de partición se señaliza en la cabecera de segmento para indicar si uno o más parámetros de restricción de partición se señalizan en la cabecera de segmento o en un conjunto de parámetros tal como SPS. Se observa que el conjunto de parámetros no necesariamente tiene que ser SPS. Puede ser PPS, o cualquier otro tipo de conjunto de parámetros que se relacione, por ejemplo, con más de un segmento, por ejemplo, con una o más imágenes del video.
Alternativamente,
En el SPS, los elementos de sintaxis de alto nivel relacionados con restricción de partición (por ejemplo, MinQtSizeY, MaxMttDepht, MaxBtSizeY) se señalizan individualmente en parejas con base en una característica o índice, y se señaliza una bandera activada de anulación de partición (o desactivada).
En la cabecera de segmento, se señaliza la bandera de anulación de restricción de partición y:
si la bandera es verdadera,
anular elementos de sintaxis de alto nivel relacionados con la restricción de partición en la cabecera de segmento, aquí la anulación significa re-señalizar los elementos en la cabecera de segmento.
de lo contrario
inferir los elementos de sintaxis de alto nivel relacionados con restricción de partición con los valores señalados desde SPS con base en la característica o índice utilizado para individualizar la señalización.
Con respecto a la posición de señalización y anulación, alternativamente, por ejemplo:
la señalización de elementos de sintaxis de alto nivel relacionados con restricción de partición se puede realizar en un conjunto de parámetros y la operación de anulación se puede realizar en una cabecera de segmento.
la señalización de elementos de sintaxis de alto nivel relacionados con restricción de partición se puede realizar en un conjunto de parámetros y la operación de anulación se puede realizar en una cabecera de mosaico.
la señalización de elementos de sintaxis de alto nivel relacionados con restricción de partición se puede realizar en un primer conjunto de parámetros, y la operación de anulación se puede realizar en un segundo conjunto de parámetros.
la señalización de elementos de sintaxis de alto nivel relacionados con restricción de partición se puede realizar en la cabecera de segmento y la operación de anulación se puede realizar en la cabecera de mosaico.
En general, cuando la señalización de elementos de sintaxis de alto nivel relacionados con restricción de partición se realiza en un primer conjunto de parámetros y la operación de anulación se realiza en un segundo conjunto de parámetros, se puede lograr una codificación eficiente en el sentido de que el primer conjunto se refiere a áreas de imagen/video más grandes que el segundo conjunto de parámetros.
Ventaja técnica (por ejemplo, señalización en SPS, anulación en cabecera de segmento): La restricción de partición de alto nivel controla la compensación entre complejidad de partición y eficiencia de codificación de la partición. La invención asegura la flexibilidad para controlar la compensación por segmento individual.
Tanto el codificador como la decodificación realizan las mismas operaciones (correspondientes).
La modificación de sintaxis y semántica correspondiente basada en la técnica anterior se muestra a continuación:
Sintaxis de conjunto de parámetros de secuencia modificada RBSP (Sección 7.3.2.1 de [JVET-K1001-v4])[Ed. (BB): SPS básico preliminar, sujeto a estudio adicional y pendiente de desarrollo de especificación adicional].
Sintaxis de cabecera de segmento modificada (Sección 7.3.3 de [JVET-K1001-v4])
[Ed. (BB): Cabecera de segmento básica preliminar, sujeta a estudio adicional y pendiente de desarrollo de especificación adicional].
Semántica de conjunto de parámetros de secuencia modificada RBSP (Sección 7.4.3.1 de [JVET-K1001-v4])
partition_constraint_override_enabled_flagigual a 1 especifica la presencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS. partition_constraint_override_enabled_flag igual a 0 especifica la ausencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS.
sps_log2_min_qt_size_intra_slices_minus2más 2 especifica el tamaño de luma mínimo predeterminado de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que los tamaños de luma mínimos predeterminados de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anulen por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS . El valor de log2_min_qt_size_intra_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive.
sps_log2_min_qt_size_inter_slices_minus2más 2 especifica el tamaño de luma mínimo predeterminado de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que los tamaños de luma mínimos predeterminados de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anulen por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS . El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive.
sps_max_mtt_hierarchy_depth_inter_slicesespecifica la profundidad de jerarquía máxima predeterminada para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 0 (B) o 1 (P) que se refieren al SPS, a menos que las profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anulen por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_inter_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive.
sps_max_mtt_hierarchy_depth_¡ntra_sl¡cesespecifica la profundidad de jerarquía máxima predeterminada para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que las profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anule por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive.
sps_log2_diff_ctu_max_bt_s¡ze_¡ntra_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive.sps_log2_d¡ff_ctu_max_bt_s¡ze_¡nter_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive.
Semánt¡ca de cabecera de segmento mod¡f¡cada (Secc¡ón 7.4.4 de [JVET-K1001-v4]
part¡t¡on_constra¡nt_overr¡de_flagigual a 1 especifica que los parámetros de restricción de partición están presentes en la cabecera de segmento. partition_constraint_override_flag igual a 0 especifica que los parámetros de restricción de partición no están presentes en la cabecera de segmento. Cuando no está presente, se infiere que el valor de partition_cosntraints_override_flag es igual a 0.
log2_m¡n_qt_s¡ze_m¡nus2más 2 especifica el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU para el segmento actual. El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_min_qt_size_minus2 son iguales a sps_log2_min_qt_size_intra_slices_minus2 si slice_type es igual a 2 (I) y se infiere que es igual a sps_log2_min_qt_size_inter_slices_minus2 si slice_type es igual a 0 (B) o 1 (P).max_mtt_h¡erarchy_depthespecifica la profundidad de jerarquía máxima para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple para el segmento actual. El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de max_mtt_hierarchy_depth son iguales a sps_max_mtt_hierarchy_depth_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_max_mtt_hierarchy_depth_inter_slices con slice_type igual a 0 (B) o 1 (P).
log2_d¡ff_ctu_ctu_max_bt_s¡zeespecifica la diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria para el segmento actual. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_diff_ctu_max _bt_size son iguales a sps_log2_diff_ctu_max_bt_size_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_log2_diff_ctu_max_bt_size_inter_slices con slice_type igual a 0 (B) o 1 (P).
Las variables MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY y MaxMttDepth se derivan de la siguiente manera:
MinQtLog2SizeY = log2_min_qt_size_minus2 2
(7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
(7-26)
MinBtLog2SizeY = MinCbLog2SizeY
(7-27)
MaxTtLog2SizeY = (slice_type = = I) ? 5 : 6
(7-28)
MinTtLog2SizeY = MinCbLog2SizeY
(7-29)
MinQtSizeY = 1 << MinQtLog2SizeY
(7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY
(7-31)
MinBtSizeY = 1 << MinBtLog2SizeY
(7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY
(7-33)
MinTtSizeY = 1 << MinTtLog2SizeY
(7-34)
MaxMttDepth = 1 << max_mtt_hierarchy_depth
(7-35)
En una implementación alternativa de la realización 1 de la descripción se describe en lo siguiente:
El conjunto de parámetros de secuencia (SPS) contiene parámetros que se aplican a toda una secuencia de video codificada y no cambian de imagen a imagen dentro de una secuencia de video codificada (abreviatura de CVS). Todas las imágenes en la misma CVS usan el mismo SPS.
El PPS contiene parámetros que pueden cambiar para diferentes imágenes dentro de la misma secuencia de video codificada. Sin embargo, múltiples imágenes se pueden referir al mismo PPS, incluso aquellas con diferentes tipos de codificación de segmento (I, P y B).
Tal como se menciona en la realización 1 de la presente descripción, la restricción de partición de alto nivel controla la compensación entre complejidad de partición y eficiencia de codificación de la partición. Para abordar la ventaja del control flexible entre la complejidad y la eficiencia de codificación en la imagen/segmento individual, en lugar del método en la realización 1 (señalizar los elementos de sintaxis de restricción de partición en SPS y anular el elemento de sintaxis de restricción de partición en la cabecera de segmento con base en la bandera de anulación de restricción de partición, que se señaliza en la cabecera de segmento), los elementos de sintaxis de restricción de partición (MinQtSizeY, MaxMttDepth, MaxBtSizeY, MaxTtSizeY, etc.) se señalizan en PPS, con el fin de ajustar la compensación de la complejidad de partición y la eficiencia de codificación de la partición en el nivel de imagen. Si cada imagen utiliza PPS individual, entonces el ajuste se aplica para la imagen individual, si múltiples imágenes se refieren al mismo PPS, entonces se aplica el mismo ajuste para las imágenes.
La señalización de nivel de PPS de elementos de sintaxis de restricción de partición se puede señalizar en un grupo, por ejemplo, en el PPS se señaliza un indicador para MinQtSizeY, un indicador para MaxMttDepth, un indicador para MaxBtSizeY y un indicador para MaxTtSizeY, en este caso, la capacidad de ajuste de la compensación entre complejidad de partición y eficiencia de codificación de la partición es individualmente mediante diferentes imágenes. La señalización de nivel de PPS de elementos de sintaxis de restricción de partición también se puede señalizar en dos grupos con base en el tipo de segmento, por ejemplo, en PPS, se señalizan un indicador intrasegmento para MinQtSizeY, un indicador intersegmento para MinQtSizeY, un indicador intrasegmento para MaxMttDepth, un indicador intersegmento para MaxMttDepth, un indicador intrasegmento para MaxBtSizeY, un indicador intersegmento para MaxBtSizeY, un indicador intrasegmento para MaxTtSizeY y un indicador intersegmento para MaxTtSizeY, en este caso, la ajustabilidad de la compensación entre complejidad de partición y eficiencia de codificación de la partición es individualmente por el tipo de segmento (intra o inter).
La señalización de nivel de PPS de elementos de sintaxis de restricción de partición se puede señalizar en múltiples grupos con base en la identificación (por ejemplo, índice) de segmento, por ejemplo, si una imagen se divide en tres segmentos, en el PPS se señalizan tres indicadores diferentes con base en las identificaciones de segmento para MinQtSizeY, tres indicadores diferentes con base en las identificaciones de segmento para MaxMttDepth y tres indicadores diferentes con base en las identificaciones de segmento para MaxBtSizeY y tres indicadores diferentes con base en las identificaciones de segmento para MaxTtSizeY, en este caso, la capacidad de la compensación entre complejidad de partición y eficiencia de codificación de la partición es individualmente por segmento.
En comparación con el método en la realización 1, la ventaja de esta implementación alternativa es que la estructura de indicación se simplifica. En este método, para ajustar de forma flexible la compensación entre complejidad de partición y ganancia de codificación de la partición, no es necesaria la anulación del elemento de sintaxis de restricción de partición en la cabecera de segmento.
Por otro lado, la comparación con el método en la realización 1 esta implementación alternativa es limitada en algunos escenarios. Este método solo señaliza las restricciones de partición en PPS. Significa que no es posible ajustar la compensación entre complejidad de partición y ganancia de codificación de la partición individualmente por imágenes, si múltiples imágenes se refieren al mismo PPS. Además, si el ajuste solo es necesario para imágenes clave, este método indicará información redundante en el PPS.
La pluralidad de elementos de sintaxis de restricción de partición se señaliza a un nivel de conjunto de parámetros (tal como, PPS, VPS, SPS) o cabeceras (tal como una cabecera de imagen, cabecera de segmento o cabecera de mosaico).
En larealización 2de la descripción:
Las realizaciones, significan
• Los elementos de restricción de sintaxis de alto nivel de partición se pueden señalizar en SPS.
• Los elementos de restricción de sintaxis de alto nivel de partición se pueden anular en la cabecera de segmento.
• Los elementos de restricción de sintaxis de alto nivel de partición pueden usar valores predeterminados.
• BT y TT se pueden desactivar en SPS.
• BT y TT se pueden desactivar en la cabecera de segmento.
• La bandera activada para BT y TT (desactivada) se puede señalizar en SPS y anular en la cabecera de segmento. Ventaja técnica (por ejemplo, señalización en SPS, anulación en cabecera de segmento): La restricción de partición de alto nivel controla la compensación entre complejidad de partición y eficiencia de codificación de la partición. La invención asegura la flexibilidad para controlar la compensación por segmento individual. Para valores predeterminados y activación Bt Tt (función de desactivación), hay aún más flexibilidad para controlar los elementos. Tanto el codificador como la decodificación realizan las mismas operaciones (correspondientes).
Las modificaciones correspondientes basadas en la técnica anterior se muestran a continuación:
Sintaxis de conjunto de parámetros de secuencia modificada RBSP (Sección 7.3.2.1 de [JVET-K1001-v4])[Ed. (BB): SPS básico preliminar, sujeto a estudio adicional y pendiente de desarrollo de especificación adicional].
Sintaxis de cabecera de segmento modificada (Sección 7.3.3 de [JVET-K1001-v4])
[Ed. (BB): Cabecera de segmento básica preliminar, sujeta a estudio adicional y pendiente de desarrollo de especificación adicional].
Semántica de conjunto de parámetros de secuencia modificada RBSP (Sección 7.4.3.1 de [JVET-K1001-v4])
partition_constraint_control_present_flagigual a 1 especifica la presencia de elementos de sintaxis de control de restricción de partición en SPS. partition_constraint_control_present_flag igual a 0 especifica la ausencia de elementos de sintaxis de control de restricción de partición en SPS.
sps_btt_enabled_flagigual a 1 especifica que la operación de la partición de árbol de tipo múltiples se aplica para segmentos que se refieren al SPS en el que slice_btt_enable_flag no está presente. sps_btt_enabled_flag igual a 0 especifica que la operación de la partición de árbol de tipo múltiple no se aplica para segmentos que se refieren al SPS en el que slice_btt_enable_flag no está presente. Cuando no está presente, se infiere que el valor de sps_btt_enabled_flag es igual a 1.
partition_constraint_override_enabled_flagigual a 1 especifica la presencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS. partition_constraint_override_enabled_flag igual a 0 especifica la ausencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS. Cuando no está presente, se infiere que el valor de partition_constraint_override_enabled_flag es igual a 0.
sps_log2_min_qt_size_intra_slices_minus2más 2 especifica el valor inicial del tamaño de luma mínimo en el SPS de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que el valor inicial de los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anule por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_min_qt_size_intra_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que el valor de sps_log2_min_qt_size_intra_slices_minus2 es igual a 0.
sps_log2_min_qt_size_inter_slices_minus2más 2 especifica el valor inicial del tamaño de luma mínimo en el SPS de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que el valor inicial de los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anule por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que el valor de sps_log2_min_qt_size_inter_slices_minus2 es igual a 0.
sps_max_mtt_hierarchy_depth_inter_slicesespecifica el valor inicial de la profundidad de jerarquía máxima en el SPS para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 0 (B) o 1 (P) que se refieren al SPS, a menos que la profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anulen por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_inter_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente,
si sps_btt_enabled_flag es igual a 1
se infiere que el valor de sps_max_mtt_hierarchy_depth_slices es igual a 3.
De lo contrario
se infiere que el valor de sps_max_mtt_hierarchy_depth_slices es igual a 0.
sps_max_mtt_hierarchy_depth_intra_slicesespecifica el valor inicial de la profundidad de jerarquía máxima en el SPS para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 2 (I) que se refieren al SPS, a menos que la profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anulen por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente,
si sps_btt_enabled_flag es igual a 1
se infiere que el valor de sps_max_mtt_hierarchy_depth_intra_slices es igual a 3.
De lo contrario
se infiere que el valor de sps_max_mtt_hierarchy_depth_intra_slices es igual a 0.
sps_log2_diff_ctu_max_bt_size_intra_slicesespecifica el valor inicial de diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) en el SPS de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que el valor inicial de diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) en el SPS de un bloque de codificación que se puede dividir usando una división binaria se anule por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente,
si sps_btt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_bt_size_intra_slices se infiere que es igual a 2.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_bt_size_intra_intra_slices es igual a CtbLog2SizeY -MinCbLog2SizeY.
sps_log2_diff_ctu_max_bt_size_inter_slicesespecifica el valor inicial de diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) en el SPS de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que el valor inicial de diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) en el SPS de un bloque de codificación que se puede dividir usando una división binaria se anule por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente,
si sps_btt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_bt_size_inter_slices se infiere que es igual a 0.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_bt_size_inter_slices es igual a CtbLog2SizeY - MinCbLog2SizeY.
Semántica de cabecera de segmento modificada (Sección 7.4.4 de [JVET-K1001-v4]
partition_constraint_override_flagigual a 1 especifica que los parámetros de restricción de partición están presentes en la cabecera de segmento. partition_constraint_override_flag igual a 0 especifica que los parámetros de restricciones de partición no están presentes en la cabecera de segmento. Cuando no está presente, se infiere que el valor de partition_constraints_override_flag es igual a 0.
slice_btt_enabled_flagigual a 1 especifica que la operación de la partición de árbol de tipo múltiple se aplica para el segmento actual. slice_btt_enabled_flag igual a 0 especifica que la operación de la partición de árbol de tipo múltiple no se aplica para el segmento actual. Cuando slice_btt_enabled_flag no está presente, se infiere que es igual a sps_btt_enabled_flag.
log2_min_qt_size_minus2más 2 especifica el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU para el segmento actual. El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_min_qt_size_minus2 son iguales a sps_log2_min_qt_size_intra_slices_minus2 con slice_type es igual a 2 (I) y se infiere que es igual a sps_log2_min_qt_size_inter_slices_minus2 con slice_type es igual a 0 (B) o 1 (P).
max_mtt_hierarchy_depthespecifica la profundidad de jerarquía máxima para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple para el segmento actual. El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de max_mtt_hierarchy_depth son iguales a sps_max_mtt_hierarchy_depth_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_max_mtt_hierarchy_depth_inter_slices con slice_type igual a 0 (B) o 1 (P).
log2_diff_ctu_ctu_max_bt_sizeespecifica la diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria para el segmento actual. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_diff_ctu_max _bt_size son iguales a sps_log2_diff_ctu_max_bt_size_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_log2_diff_ctu_max_bt_size_inter_slices con slice_type igual a 0 (B) o 1 (P).
Las variables MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY y MaxMttDepth se derivan de la siguiente manera:
MinQtLog2SizeY = log2_min_qt_size_minus2 2
(7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
(7-26)
MinBtLog2SizeY = MinCbLog2SizeY
(7-27)
MaxTtLog2SizeY = (slice_type = = I) ? 5 : 6
(7-28)
MinTtLog2SizeY = MinCbLog2SizeY
(7-29)
MinQtSizeY = 1 << MinQtLog2SizeY
(7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY
(7-31)
MinBtSizeY = 1 << MinBtLog2SizeY
(7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY
(7-33)
MinTtSizeY = 1 << MinTtLog2SizeY
(7-34)
MaxMttDepth = 1 << max_mtt_hierarchy_depth
(7-35)
En larealización 3de la descripción:
Si el MaxTTSizeY (tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria) se señaliza en SPS (u otro conjunto de parámetros o cabecera de segmento), la realización 1 o realización 2 se podría aplicar de la misma manera que para los otros parámetros de partición mencionados anteriormente.
Ventaja técnica: La invención para la señalización del indicador de elementos de sintaxis MaxTtSizeY asegura que haya más flexibilidad para controlar los elementos.
Tanto el codificador como la decodificación realizan las mismas operaciones (correspondientes).
Los cambios de sintaxis se basan en la realización 1 o realización 2.
Sintaxis de conjunto de parámetros de secuencia modificada RBSP (Sección 7.3.2.1 de [JVET-K1001-v4])
Sintaxis de cabecera de segmento modificada (Sección 7.3.3 de [JVET-K1001-v4])
[Ed. (BB): Cabecera de segmento básica preliminar, sujeta a estudio adicional y pendiente de desarrollo de especificación adicional].
En larealización 4de la descripción:
Separe btt_enabled_flag de la realización 2 como bt_enalbed_flag y tt_eabled_flag para activar o desactivar división bt y tt por separado.
Ventaja técnica: señalizar la bandera de activación BT y la bandera de activación TT por separado proporciona más flexibilidad para controlar los elementos de sintaxis de restricción de partición.
Tanto el codificador como la decodificación realizan las mismas operaciones (correspondientes).
Los cambios de sintaxis y semánticos basados en la realización 2:
Sintaxis de conjunto de parámetros de secuencia modificada RBSP (Sección 7.3.2.1 de [JVET-K1001-v4])[Ed. (BB): SPS básico preliminar, sujeto a estudio adicional y pendiente de desarrollo de especificación adicional].
Sintaxis de cabecera de segmento modificada (Sección 7.3.3 de [JVET-K1001-v4])
[Ed. (BB): Cabecera de segmento básica preliminar, sujeta a estudio adicional y pendiente de desarrollo de especificación adicional].
Semántica de conjunto de parámetros de secuencia RBSP (Sección 7.4.3.1 de [JVET-K1001-v4])
partition_constraint_control_present_flagigual a 1 especifica la presencia de elementos de sintaxis de control de restricción de partición en SPS. partition_constraint_control_present_flag igual a 0 especifica la ausencia de elementos de sintaxis de control de restricción de partición en SPS.
sps_bt_enabled_flagigual a 1 especifica que la operación de la partición de árbol binario se aplica para segmentos que se refieren al SPS en el que slice_bt_enable_flag no está presente. sps_bt_enabled_flag igual a 0 especifica que la operación de la partición de árbol binario no se aplica para segmentos que se refieren al SPS en el que slice_bt_enable_flag no está presente. Cuando no está presente, se infiere que el valor de sps_bt_enabled_flag es igual a 1.
sps_tt_enabled_flagigual a 1 especifica que la operación de la partición de árbol ternario se aplica para segmentos que se refieren al SPS en el que slice_tt_enable_flag no está presente. sps_tt_enabled_flag igual a 0 especifica que la operación de la partición de árbol ternario no se aplica para segmentos que se refieren al SPS en el que slice_tt_enable_flag no está presente. Cuando no está presente, se infiere que el valor de sps_tt_enabled_flag es igual a 1.
partition_constraint_override_enabled_flagigual a 1 especifica la presencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS. partition_constraint_override_enabled_flag igual a 0 especifica la ausencia de partition_constraint_override_flag en las cabeceras de segmento para segmentos que se refieren al SPS. Cuando no está presente, se infiere que el valor de partition_constraint_override_enabled_flag es igual a 0.
sps_log2_min_qt_size_intra_slices_minus2más 2 especifica el tamaño de luma mínimo predeterminado de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que los tamaños de luma mínimos predeterminados de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anulen por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS . El valor de log2_min_qt_size_intra_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que el valor de sps_log2_min_qt_size_intra_slices_minus2 es igual a 0.
sps_log2_m¡n_qt_s¡ze_inter_sl¡ces_m¡nus2más 2 especifica el tamaño de luma mínimo predeterminado de un bloque de hoja resultante de la división de árbol cuádruple de una CTU en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que los tamaños de luma mínimos predeterminados de un bloque de hoja resultante de la división de árbol cuádruple de una CTU se anulen por los tamaños de luma mínimos de un bloque de hoja resultante de la división de árbol cuádruple de una CTU presente en la cabecera de segmento de las segmentos que se refieren al SPS . El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que el valor de sps_log2_min_qt_size_inter_slices_minus2 es igual a 0.
sps_max_mtt_hierarchy_depth_inter_sl¡cesespecifica la profundidad de jerarquía máxima predeterminada para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 0 (B) o 1 (P) que se refieren al SPS, a menos que las profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anulen por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_inter_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente,
si la sps_bt_enabled_flag es igual a 1 o sps_tt_enabled_flag es igual a 1
se infiere que el valor de sps_max_mtt_hierarchy_depth_slices es igual a 3.
De lo contrario
se infiere que el valor de sps_max_mtt_hierarchy_depth_slices es igual a 0.
sps_max_mtt_h¡erarchy_depth_¡ntra_sl¡cesespecifica la profundidad de jerarquía máxima predeterminada para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que las profundidades de jerarquía máximas predeterminadas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple se anule por las profundidades de jerarquía máximas para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor max_mtt_hierarchy_depth_intra_slices debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente,
si la sps_bt_enabled_flag es igual a 1 sps_tt_enabled_flag es igual a 1
se infiere que el valor de sps_max_mtt_hierarchy_depth_intra_slices es igual a 3.
De lo contrario
se infiere que el valor de sps_max_mtt_hierarchy_depth_intra_slices es igual a 0.
sps_log2_d¡ff_ctu_max_bt_s¡ze_¡ntra_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente,
si la sps_bt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_bt_size_intra_slices se infiere que es igual a 2.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_bt_size_intra_slices es igual a CtbLog2SizeY - MinCbLog2SizeY.sps_log2_d¡ff_ctu_max_bt_s¡ze_¡nter_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive.
Cuando no está presente,
si la sps_bt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_bt_size_inter_slices se infiere que es igual a 0.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_bt_size_inter_slices es igual a CtbLog2SizeY - MinCbLog2SizeY.sps_log2_d¡ff_ctu_max_tt_s¡ze_¡ntra_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria en segmentos con slice_type igual a 2 (I) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de sps_log2_diff_ctu_max_tt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente,
si la sps_tt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_tt_size_intra_slices se infiere que es igual a 2.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_tt_size_intra_slices es igual a CtbLog2SizeY - MinCbLog2SizeY.sps_log2_d¡ff_ctu_max_tt_s¡ze_¡nter_sl¡cesespecifica la diferencia predeterminada entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria en segmentos con slice_type igual a 0 (B) o 1 (P) que se refiere al SPS, a menos que las diferencias predeterminadas entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria se anulen por las diferencias entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división ternaria presente en la cabecera de segmento de las segmentos que se refieren al SPS. El valor de log2_diff_ctu_max_tt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente,
si la sps_tt_enabled_flag es igual a 1
el valor de sps_log2_diff_ctu_max_tt_size_inter_slices se infiere que es igual a 1.
De lo contrario
se infiere que el valor de sps_log2_diff_ctu_max_tt_size_inter_slices es igual a CtbLog2SizeY - MinCbLog2SizeY.
Semánt¡ca de cabecera de segmento mod¡f¡cada (Secc¡ón 7.4.4 de [JVET-K1001-v4]
part¡t¡on_constra¡nt_overr¡de_flagigual a 1 especifica que los parámetros de restricción de partición están presentes en la cabecera de segmento. partition_constraint_override_flag igual a 0 especifica que los parámetros de restricciones de partición no están presentes en la cabecera de segmento. Cuando no está presente, se infiere que el valor de parititon_constraints_override_flag es igual a 0.
sl¡ce_btt_enabled_flagigual a 1 especifica que la operación de la partición de árbol de tipo múltiple no se aplica para el segmento actual. slice_btt_enabled_flag igual a 0 especifica que la operación de la partición de árbol de tipo múltiple se aplica para el segmento actual. Cuando slice_btt_enabled_flag no está presente, se infiere que es igual a sps_btt_enabled_flag.
log2_m¡n_qt_s¡ze_m¡nus2más 2 especifica el tamaño de luma mínimo de un bloque de hoja resultante de la división de árbol cuádruple de una CTU para el segmento actual. El valor de log2_min_qt_size_inter_slices_minus2 debe estar comprendido entre 0 y CtbLog2SizeY - 2, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_min_qt_size_minus2 son iguales a sps_log2_min_qt_size_intra_slices_minus2 con slice_type es igual a 2 (I) y se infiere que es igual a sps_log2_min_qt_size_inter_slices_minus2 con slice_type es igual a 0 (B) o 1 (P).
max_mtt_h¡erarchy_depthespecifica la profundidad de jerarquía máxima para unidades de codificación resultantes de la división de árbol de tipo múltiple de una hoja de árbol cuádruple para el segmento actual. El valor max_mtt_hierarchy_depth_intra_sl¡ces debe estar comprendido entre 0 y CtbLog2SizeY - MinTbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de max_mtt_hierarchy_depth son iguales a sps_max_mtt_hierarchy_depth_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_max_mtt_hierarchy_depth_inter_slices con slice_type igual a 0 (B) o 1 (P).
log2_diff_ctu_ctu_max_bt_sizeespecifica la diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria para el segmento actual. El valor de log2_diff_ctu_max_bt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_diff_ctu_max _bt_size son iguales a sps_log2_diff_ctu_max_bt_size_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_log2_diff_ctu_max_bt_size_inter_slices con slice_type igual a 0 (B) o 1 (P).
log2_diff_ctu_max_tt_sizeespecifica la diferencia entre el tamaño CTB de luma y el tamaño de luma máximo (ancho o alto) de un bloque de codificación que se puede dividir usando una división binaria para el segmento actual. El valor de log2_diff_ctu_max_tt_size debe estar comprendido entre 0 y CtbLog2SizeY - MinCbLog2SizeY, ambos inclusive. Cuando no está presente, se infiere que los valores de log2_diff_ctu_max_tt_size son iguales a sps_log2_diff_ctu_max_tt_size_intra_slices con slice_type igual a 2 (I) y se infiere que son iguales a sps_log2_diff_ctu_max_tt_size_inter_slices con slice_type igual a 0 (B) o 1 (P).
Las variables MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY y MaxMttDepth se derivan de la siguiente manera:
MinQtLog2SizeY = log2_min_qt_size_minus2 2
(7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
(7-26)
MinBtLog2SizeY = MinCbLog2SizeY
(7-27)
MaxTtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_tt_size
(7-28)
MinTtLog2SizeY = MinCbLog2SizeY
(7-29)
MinQtSizeY = 1 << MinQtLog2SizeY
(7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY
(7-31)
MinBtSizeY = 1 << MinBtLog2SizeY
(7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY
(7-33)
MinTtSizeY = 1 << MinTtLog2SizeY
(7-34)
MaxMttDepth = 1 << max_mtt_hierarchy_depth
(7-35)
La figura 10 muestra el método correspondiente de decodificación de un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen. El método de decodificación comprende los pasos de obtener S110 una bandera de anulación (partition_constraint_override_flag) del flujo de bits de video; cuando el valor de la bandera de anulación es un valor de anulación (por ejemplo, 1), obtener S120 primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; particionar S130 un bloque de la región de imagen de acuerdo con la primera información de restricción de partición. Si la bandera no se establece, la información de restricción de partición se puede obtener de una fuente diferente de la cabecera de región de imagen. La región de la imagen puede ser segmento o mosaico.
La figura 11 muestra un diagrama de flujo que incorpora el diagrama de flujo de la figura 10. Además, el método ilustrado en el diagrama de flujo incluye los pasos de obtener S210 una bandera activada de anulación (partition_constraint_override_enabled_flag) del flujo de bits de video; en donde cuando el valor de la bandera activada de anulación es un valor de activación (por ejemplo, 1), obtener S110 la bandera de anulación del flujo de bits de video. Además, cuando el valor de la bandera de anulación no es el valor de anulación (por ejemplo, el valor de la bandera de anulación es 0), la partición S230 del bloque de la región de imagen se puede realizar de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros. Además, cuando el valor de la bandera activada de anulación es un valor de desactivación (por ejemplo, el valor de la bandera activada de anulación es 0), se puede realizar la partición S230 del bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros.
Para características específicas en las realizaciones de la presente invención, consultar las realizaciones de método de decodificación relacionadas anteriores. No se describen detalles nuevamente en la presente.
La figura 12 muestra un decodificador 1200 para decodificar un flujo de bits de video. El flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen. El decodificador comprende: una unidad de determinación de anulación 1210 para obtener una bandera de anulación del flujo de bits de video; una unidad de determinación de restricción de partición 1220 para, cuando el valor de la bandera de anulación es un valor de anulación, obtener la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; una unidad de partición de bloque 1230 para particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición.
Para funciones específicas de unidades en el decodificador 1200 en las realizaciones de la presente invención, consulte descripciones relacionadas de la realización de método de decodificación de la presente invención. No se describen detalles nuevamente en la presente.
Las unidades en el decodificador 1200 se pueden implementar mediante software o circuito.
El decodificador 1200 puede ser el decodificador 30, el dispositivo de codificación de video 400 o el aparato 500, o parte del decodificador 30, el dispositivo de codificación de video 400 o el aparato 500.
El codificador 1300 puede ser el codificador 20, dispositivo de codificación de video 400, o aparato 500, o parte del codificador 20, dispositivo de codificación de video 400, o aparato 500.
La figura 13 muestra un codificador 1300 para codificación de un flujo de bits de video, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen. El codificador comprende: una unidad de determinación de partición 1310 para determinar si particionar un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen; una unidad de partición de bloque 1320 para particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición, al determinar que la partición del bloque es de acuerdo con la primera información de restricción de partición; una unidad de configuración de bandera de anulación 1330 para configurar el valor de una bandera de anulación a un valor de anulación; y un generador de flujo de bits 1340 para insertar la bandera de anulación en el flujo de bits de video.
Para funciones específicas de unidades en el codificador 1300 en las realizaciones de la presente invención, consulte descripciones relacionadas de la realización de método de codificación de la presente invención. No se describen detalles nuevamente en la presente.
Las unidades en el codificador 1300 se pueden implementar mediante software o circuito.
El codificador 1300 puede ser el codificador 20, dispositivo de codificación de video 400, o aparato 500, o parte del codificador 20, dispositivo de codificación de video 400, o aparato 500.
La figura 14A muestra un diagrama de flujo de un método para codificar un flujo de bits de video implementado por un dispositivo de codificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen. El método de codificación comprende los pasos de: determinar S310 si la partición de un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen; al determinar que la partición del bloque es de acuerdo con la primera información de restricción de partición (“sí” en el paso S310), particionar S320 el bloque de la región de imagen de acuerdo con la primera información de restricción de partición y configurar S325 el valor de una bandera de anulación a un valor de anulación; e incluir S330 los datos de la bandera de anulación en el flujo de bits de video.
En algunas realizaciones de ejemplo, cuando se determina que la partición del bloque no es de acuerdo con la primera información de restricción de partición (“no” en la etapa S310), particionar S360 el bloque de la región de imagen de acuerdo con una segunda información de restricción de partición y configurar S365 el valor de una bandera de anulación a un valor de anulación.
La figura 14B muestra un método de codificación que comprende los pasos de: determinar S370 si se activa o no la partición del bloque de acuerdo con la primera información de restricción de partición. Al determinar que se activa (se determina que se activa) la partición del bloque de acuerdo con la primera información de restricción de partición, el método incluye configurar S340 el valor de una bandera activada de anulación a un valor de activación; e incluir S350 los datos de la bandera activada de anulación en el flujo de bits de video. Además, al determinar que se activa la partición del bloque de acuerdo con la primera información de restricción de partición (se determina que está), determinar S310 si la partición de un bloque de la región de imagen es de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen.
En algunas realizaciones de ejemplo, cuando se determina que la partición del bloque de acuerdo con la primera información de restricción de partición no está (se determina que está) activada (es decir, está desactivada), el método incluye configurar S380 el valor de una bandera activada de anulación a un valor de no activación (desactivación).
Para características específicas en las realizaciones de la presente invención, consultar las realizaciones de método de decodificación relacionadas anteriores. No se describen detalles nuevamente en la presente.
Lo siguiente es una explicación de las aplicaciones del método de codificación, así como el método de decodificación tal como se muestra en las realizaciones mencionadas anteriormente, y un sistema que las usa. La figura 14 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para realizar el servicio de distribución de contenido. Este sistema de suministro de contenido 3100 incluye el dispositivo de captura 3102, el dispositivo terminal 3106 y opcionalmente incluye la pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 a través del enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 descrito anteriormente. El enlace de comunicación 3104 incluye, pero no se limita a WIFI, Ethernet, Cable, inalámbrico (3G/4G/5G), USB, o cualquier tipo de combinación de los mismos, o similares.
El dispositivo de captura 3102 genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo de captura 3102 puede distribuir los datos a un servidor de transmisión en tiempo real (no mostrado en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo terminal 3106. El dispositivo de captura 3102 incluye, pero no se limita a, cámara, teléfono inteligente o almohadilla, computadora o computadora portátil, sistema de videoconferencia, PDA, dispositivo montado en vehículo, o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo fuente 12 como se describió anteriormente. Cuando los datos incluyen video, el codificador de video 20 incluido en el dispositivo de captura 3102 puede realizar realmente procesamiento de codificación de video. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 puede realizar realmente el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos codificados de video y audio al multiplexarlos conjuntamente. Para otros escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de video codificados no se multiplexan. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de video codificados al dispositivo terminal 3106 por separado. En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como teléfono inteligente o almohadilla 3108, computadora o computadora portátil 3110, grabadora de video de red (NVR)/grabadora de video digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferencia 3118, sistema de video vigilancia 3120, asistente digital personal (PDA) 3122, dispositivo montado en vehículo 3124, o una combinación de cualquiera de los mismos, o similares capaces de decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo destino 14 como se describió anteriormente. Cuando los datos codificados incluyen video, se prioriza el decodificador de video 30 incluido en el dispositivo terminal para realizar decodificación de video. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, teléfono inteligente o almohadilla 3108, computadora portátil 3110, grabadora de video de red (NVR)/grabadora de video digital (DVR) 3112, TV 3114, asistente digital personal (PDA) 3122, o dispositivo montado en vehículo 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal equipado sin pantalla, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de vigilancia de video 3120, se pone en contacto una pantalla externa 3126 en el mismo para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema realiza codificación o decodificación, se puede usar el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes, como se muestra en las realizaciones mencionadas anteriormente.
La figura 15 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe flujo del dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 analiza el protocolo de transmisión del flujo. El protocolo incluye, pero no se limita a, Protocolo de Transmisión en Tiempo Real (RTSP), Protocolo de Transferencia de Hipertexto (HTTP), Protocolo de Transmisión en tiempo real en Vivo HTTP (H<l>S), M<p>EG-DASH, Protocolo de Transporte en Tiempo Real (RTP), Protocolo de Mensajería en Tiempo Real (RTMP), o cualquier tipo de combinación de los mismos, o similares.
Después de que la unidad de procedimiento de protocolo 3202 procesa la secuencia, se genera el archivo de secuencia. El archivo se envía a una unidad de demultiplexación 3204. La unidad de demultiplexación 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de video codificados. Como se describió anteriormente, para algunos escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de video codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador de video 3206 y al decodificador de audio 3208 sin a través de la unidad de demultiplexación 3204.
Mediante el procesamiento de demultiplexación, se genera flujo elemental de video (ES), ES de audio y, opcionalmente, subtítulo. El decodificador de video 3206, que incluye el decodificador de video 30 como se explica en las realizaciones mencionadas anteriormente, decodifica el ES de video mediante el método de decodificación como se muestra en las realizaciones mencionadas anteriormente para generar cuadros de video, y alimenta estos datos a la unidad síncrona 3212. El decodificador de audio 3208, decodifica el ES de audio para generar cuadro de audio y alimenta estos datos a la unidad síncrona 3212. De manera alternativa, el cuadro de video se puede almacenar en una memoria intermedia (no mostrada en la figura 15) antes de alimentarlo a la unidad síncrona 3212. De forma similar, el cuadro de audio se puede almacenar en una memoria intermedia (no mostrada en la figura 15) antes de alimentarlo a la unidad síncrona 3212.
La unidad síncrona 3212 sincroniza el cuadro de video y el cuadro de audio y suministra el video/audio a una pantalla de video/audio 3214. Por ejemplo, la unidad síncrona 3212 sincroniza la presentación de la información de video y audio. La información se puede codificar en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos audiovisuales codificados y marcas de tiempo relativas a la distribución del flujo de datos en sí.
Si el subtítulo se incluye en el flujo, el decodificador de subtítulo 3210 decodifica el subtítulo y lo sincroniza con el cuadro de video y el cuadro de audio y suministra el video/audio/subtítulo a una pantalla de video/audio/subtítulo 3216.
La presente invención no se limita al sistema mencionado anteriormente, y ya sea el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes en las realizaciones mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil.
Operadores matemáticos
Los operadores matemáticos utilizados en esta solicitud son similares a aquellos utilizados en el lenguaje de programación C. Sin embargo, los resultados de las operaciones de división entera y cambio aritmético se definen con mayor precisión, y se definen operaciones adicionales, tal como exponenciación y división con valores reales. Las convenciones de numeración y conteo generalmente comienzan desde 0, por ejemplo, "el primero" es equivalente al 0-ésimo, "el segundo" es equivalente al 1-ero, etc.
Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x && yBooleano lógico "y" de x y y
x | | yBooleano lógico "o" de x y y
!Booleano lógico "no"
x ? y : zSi x es VERDADERO o no igual a 0, se evalúa al valor de y; de lo contrario, se evalúa al valor de z. Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
>Mayor que
>=Mayor o igual que
<Menor que
<=Menor o igual que
= =Igual a
!=No igual a
Cuando un operador relacional se aplica a un elemento o variable de sintaxis al que se le ha asignado el valor "na" (no aplicable), el valor "na" se trata como un valor distinto para el elemento o variable de sintaxis. Se considera que el valor "na" no es igual a ningún otro valor.
Operadores de nivel de bit
Los siguientes operadores de nivel de bit se definen de la siguiente manera:
& "y” a nivel de bit. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0.
| "o” a nivel de bit. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0.
A "exclusivo o" a nivel de bit. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0.
x >> yDesplazamiento aritmético derecho de una representación entera de complemento de dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits trasladados a los bits más significativos (MSB) como resultado del desplazamiento derecho tienen un valor igual al MSB de x antes de la operación de desplazamiento.
x << yDesplazamiento aritmético izquierdo de una representación entera de complemento de dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits trasladados a los bits menos significativos (LSB) como resultado del desplazamiento izquierdo tienen un valor igual a 0.
En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar o transmitir como una o más instrucciones o código en un medio legible por computadora y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por computadora pueden incluir medios de almacenamiento legibles por computadora, que corresponden a un medio tangible tal como medios de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite transferencia de un programa de computadora de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por computadora generalmente pueden corresponder a (1) medios de almacenamiento legibles por computadora tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se puede acceder por una o más computadoras o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para implementación de las técnicas descritas en esta descripción. Un producto de programa de computadora puede incluir un medio legible por computadora.
A manera de ejemplo y sin limitación, estos medios de almacenamiento legibles por computadora pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético, u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda utilizar para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante una computadora. Además, cualquier conexión se denomina apropiadamente un medio legible por computadora. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (DSL) o tecnologías inalámbricas tal como infrarrojo, radiofrecuencia y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tal como infrarrojo, radiofrecuencia y microondas se incluyen en la definición de medio. Se debe entender, sin embargo, que los medios de almacenamiento legibles por computadora y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que en su lugar se dirigen a medios de almacenamiento tangibles no transitorios. El disco digital y disco, como se usa en la presente, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, donde los discos generalmente reproducen datos magnéticamente, mientras que los discos digitales reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por computadora.
Las instrucciones de programa se puede ejecutar por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), arreglos lógicos programables en el campo (FPGA) u otros circuitería lógica integrada o discreta equivalentes. Por consiguiente, el término “procesador", como se usa en la presente, se puede referir a cualquiera de la estructura anterior o cualquier otra estructura adecuada para implementación de las técnicas descritas en la presente. Además, en algunos aspectos, la funcionalidad descrita en la presente se puede proporcionar dentro de módulos de software y/o hardware dedicados configurados para codificación y decodificación, o se incorporan en un códec combinado. Además, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta descripción se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un aparato inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Varios componentes, módulos o unidades se describen en esta descripción para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas descritas, pero no requieren necesariamente la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, se pueden combinar varias unidades en una unidad de hardware de códec o proporcionadas por una recolección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuado. En un ejemplo, se proporciona un método de codificación implementado por un dispositivo de codificación, que comprende: particionar un bloque de una región de imagen de acuerdo con información de restricción de partición; generar un flujo de bits que incluye uno o más elementos de sintaxis de restricción de partición, donde el uno o más elementos de sintaxis de restricción de partición indican la información de restricción de partición, donde el uno o más elementos de sintaxis de restricción de partición se señalizan a un nivel de conjunto de parámetros de imagen (PPS).
Por ejemplo, la información de restricción de partición comprende una o más seleccionadas de las siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY). Por ejemplo, en algunas realizaciones, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth) e información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY).
En algunas realizaciones, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
En cualquier método mencionado anteriormente, la información de restricción de partición comprende: N conjuntos o grupos de información de restricción de partición correspondiente a N tipos de segmentos, o N conjuntos o grupos de información de restricción de partición correspondiente a N índices de segmentos, y en donde cada conjunto o grupo de información de restricción de partición comprende uno o más seleccionados de los siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY); en donde N es un número entero positivo.
El método puede comprender: particionar un bloque de una región de imagen de acuerdo con información de restricción de partición; y generar un flujo de bits que incluye una pluralidad de elementos de sintaxis de restricción de partición, en donde la pluralidad de elementos de sintaxis de restricción de partición indican la información de restricción de partición, en donde la pluralidad de elementos de sintaxis de restricción de partición se señaliza a un nivel de conjunto de parámetros o una cabecera.
Por ejemplo, la pluralidad de elementos de sintaxis de restricción de partición se señaliza a cualquiera de un nivel de conjunto de parámetros de video (VPS), un nivel de conjunto de parámetros de secuencia (SPS), un nivel de conjunto de parámetros de imagen (PPS), una cabecera de imagen, una cabecera de segmento o una cabecera de mosaico.
En algunas implementaciones de ejemplo, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth) e información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY).
Por ejemplo, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
En algunas realizaciones, la información de restricción de partición comprende dos o más seleccionadas de las siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
Por ejemplo, la información de restricción de partición comprende: N conjuntos o grupos de información de restricción de partición correspondiente a N tipos de segmentos, o N conjuntos o grupos de información de restricción de partición correspondiente a N índices de segmentos, y en donde cada conjunto o grupo de información de restricción de partición comprende dos o más seleccionados de los siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY); en donde N es un número entero positivo. De acuerdo con una realización, se proporciona un método de decodificación implementado por un dispositivo de decodificación, que comprende: analizar desde un flujo de bits uno o más elementos de sintaxis de restricción de partición, donde el uno o más elementos de sintaxis de restricción de partición indican información de restricción de partición, en donde el uno o más elementos de sintaxis de restricción de partición se obtienen a partir de un nivel de conjunto de parámetros de imagen (PPS) del flujo de bits; y particionar un bloque de una región de imagen de acuerdo con la información de restricción de partición.
En algunas implementaciones, la información de restricción de partición comprende una o más seleccionadas de las siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
Por ejemplo, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth) e información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY). La información de restricción de partición puede comprender información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
En algunas realizaciones, la información de restricción de partición comprende: N conjuntos o grupos de información de restricción de partición correspondiente a N tipos de segmentos, o N conjuntos o grupos de información de restricción de partición correspondiente a N índices de segmentos, y en donde cada conjunto o grupo de información de restricción de partición comprende uno o más seleccionados de los siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY); en donde N es un número entero positivo. De acuerdo con una realización, se proporciona un método de decodificación implementado por un dispositivo de decodificación, que comprende: analizar desde un flujo de bits una pluralidad de elementos de sintaxis de restricción de partición, en donde la pluralidad de elementos de sintaxis de restricción de partición indican información de restricción de partición, en donde la pluralidad de elementos de sintaxis de restricción de partición se obtiene a partir de un nivel de conjunto de parámetros del flujo de bits o una cabecera del flujo de bits; y particionar un bloque de una región de imagen de acuerdo con la información de restricción de partición.
Por ejemplo, la pluralidad de elementos de sintaxis de restricción de partición se obtiene de cualquiera de un nivel de conjunto de parámetros de video (VPS), un nivel de conjunto de parámetros de secuencia (SPS), un nivel de conjunto de parámetros de imagen (PPS), una cabecera de imagen, una cabecera de segmento o una cabecera de mosaico.
Por ejemplo, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth) e información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY).
En algunas realizaciones, la información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
En algunas implementaciones, la información de restricción de partición comprende dos o más seleccionadas de las siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY).
Por ejemplo, la información de restricción de partición comprende: N conjuntos o grupos de información de restricción de partición correspondiente a N tipos de segmentos, o N conjuntos o grupos de información de restricción de partición correspondiente a N índices de segmentos, y en donde cada conjunto o grupo de información de restricción de partición comprende dos o más seleccionados de los siguientes: información de tamaño de nodo hoja de árbol cuádruple mínimo permitido (MinQtSizeY), información de profundidad de árbol de tipo múltiple máxima (MaxMttDepth), información de tamaño de nodo raíz de árbol binario máximo permitido (MaxBtSizeY) e información de tamaño de nodo raíz de árbol ternario máximo permitido (MaxTtSizeY); en donde N es un número entero positivo. En algunos ejemplos, la información de restricción de partición comprende información de restricción de partición correspondiente a diferentes tipos de segmento o correspondiente a diferentes índices de segmento.
Por ejemplo, la información de restricción de partición comprende información de restricción de partición en intramodo, y/o información de restricción de partición en intermodo.
En cualquiera de las realizaciones, la región de imagen comprende una imagen o una parte de la imagen.
En algunas realizaciones, cuando un valor de una bandera activada de partición de árbol de tipo múltiple del conjunto de parámetros de imagen (PPS) activa partición de árbol de tipo múltiple para el bloque, analizar la información de restricción de partición del conjunto de parámetros de imagen y aplicar partición de árbol de tipo múltiple al bloque de la región de imagen de acuerdo con la información de restricción de partición.
De acuerdo con una realización, se proporciona un codificador que comprende circuitería de procesamiento para llevar a cabo cualquiera de los métodos anteriores.
De acuerdo con una realización, se proporciona un decodificador que comprende circuitería de procesamiento para llevar a cabo cualquiera de los métodos anteriores.
De acuerdo con una realización, se proporciona un producto de programa de computadora que comprende un código de programa para realizar el método de acuerdo con cualquiera de los métodos anteriores.
De acuerdo con una realización, se proporciona un decodificador, que comprende: uno o más procesadores; y un medio de almacenamiento legible por computadora no transitorio acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el decodificador para llevar a cabo el método de acuerdo con cualquiera de los métodos de decodificación mencionados anteriormente.
De acuerdo con una realización, se proporciona un codificador, que comprende: uno o más procesadores; y un medio de almacenamiento legible por computadora no transitorio acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el codificador para llevar a cabo el método de acuerdo con cualquiera de los métodos de decodificación mencionados anteriormente.
De acuerdo con un primer aspecto, la invención se refiere a un método para decodificar un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video que incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el método de decodificación que comprende:
Obtener una bandera de anulación del flujo de bits de video;
Cuando el valor de la bandera de anulación (por ejemplo, partition_constraint_override_flag) anula el valor, obtener la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; Particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición. En una posible implementación, la partición de un bloque de la región de imagen de acuerdo con la primera información de restricción de partición comprende: particionar un bloque de la región de imagen en subbloques de acuerdo con la primera información de restricción de partición. El método de decodificación comprende además: reconstruir los subbloques.
En una implementación posible, en donde el método de decodificación comprende además:
Obtener una bandera activada de anulación del flujo de bits de video;
En donde cuando el valor de la bandera activada de anulación (por ejemplo, partition_constraint_override_enabled_flag) es un valor de activación, obtener la bandera de anulación del flujo de bits de video.
En una implementación posible, el método de decodificación comprende además:
Obtener una bandera presente de control de restricción de partición del flujo de bits de video;
En donde cuando el valor de la bandera presente de control de restricción de partición (por ejemplo, partition_constraint_control_present_flag) es verdadero, obtener la bandera activada de anulación del flujo de bits de video.
En una implementación posible, el flujo de bits de video que incluye además datos que representan un conjunto de parámetros del flujo de bits de video, y el valor de la bandera actual de control de restricción de partición es falso especifica la ausencia de elementos de sintaxis de control de restricción de partición en el conjunto de parámetros. En una implementación posible, el conjunto de parámetros es un conjunto de parámetros de imagen o un conjunto de parámetros de secuencia.
En una implementación posible, el flujo de bits de video que incluye además datos que representan un conjunto de parámetros del flujo de bits de video, y el método de decodificación comprende además:
Cuando el valor de la bandera activada de anulación es un valor de desactivación, particionar el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros.
En una implementación posible, o de forma alternativa, la segunda información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una implementación posible, la segunda información de restricción de partición comprende información de restricción de partición correspondiente a diferentes parámetros relacionados con regiones de imagen o correspondiente a diferente índice.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición en intramodo, o información de restricción de partición en intermodo.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición para bloque de luma, o información de restricción de partición para bloque de croma.
En una implementación posible, el flujo de bits de video que incluye además datos que representan un conjunto de parámetros del flujo de bits de video, obtener una bandera activada de anulación del flujo de bits de video comprende obtener la bandera activada de anulación del conjunto de parámetros.
En una implementación posible, obtener una bandera de anulación del flujo de bits de video comprende obtener la bandera de anulación de la cabecera de región de imagen.
En una implementación posible, o de forma alternativa, la primera información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una posible implementación, la región de imagen comprende un segmento o un mosaico, y la cabecera de región de imagen comprende una cabecera de segmento del segmento o una cabecera de mosaico del mosaico.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un conjunto de parámetros del flujo de bits de video, el método de decodificación comprende además:
Cuando el valor de la bandera de anulación no es el valor de anulación, particionar el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros.
En una posible implementación, cuando un valor de una bandera activada de partición de árbol de tipo múltiple (por ejemplo, slice_btt_enabled_flag) de la cabecera de región de imagen activa partición de árbol de tipo múltiple para el bloque, obtener la primera información de restricción de partición y aplicar partición de árbol de tipo múltiple al bloque de la región de imagen de acuerdo con la primera información de restricción de partición.
En una implementación posible, el flujo de bits de video que incluye además datos que representan un conjunto de parámetros del flujo de bits de video, cuando la bandera activada de partición de árbol de tipo múltiple de la cabecera de región de imagen no está presente y un valor de una bandera activada de partición de árbol de tipo múltiple (por ejemplo, sps_btt_enabled_flag) del conjunto de parámetros activa la partición de árbol de tipo múltiple para el bloque activa partición de árbol de tipo múltiple para el bloque, obtener segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros y aplicar paridad de árbol de tipo múltiple al bloque de la región de imagen de acuerdo con la segunda información de restricción de partición.
De acuerdo con un segundo aspecto, la invención se refiere a un método para decodificar un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video que incluye datos que representan un bloque y un primer conjunto de parámetros del flujo de bits de video, el método de decodificación que comprende:
Obtener una bandera de anulación del flujo de bits de video;
Cuando el valor de la bandera de anulación anula el valor, obtener la primera información de restricción de partición para el bloque del primer conjunto de parámetros;
Particionar el bloque de acuerdo con la primera información de restricción de partición.
En una posible implementación, en donde la partición del bloque de acuerdo con la primera información de restricción de partición comprende: particionar el bloque en subbloques de acuerdo con la primera información de restricción de partición. El método de decodificación comprende además: reconstruir los subbloques.
En una implementación posible, en donde el método de decodificación comprende además:
Obtener una bandera activada de anulación del flujo de bits de video;
En donde cuando el valor de la bandera activada de anulación es un valor de activación, obtener la bandera de anulación del flujo de bits de video.
En una implementación posible, en donde el método de decodificación comprende además:
Obtener una bandera presente de control de restricción de partición del flujo de bits de video;
En donde cuando el valor de la bandera presente de control de restricción de partición es verdadero, obtener la bandera activada de anulación del flujo de bits de video.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video, y el valor de la bandera actual de control de restricción de partición es falso especifica la ausencia de elementos de sintaxis de control de restricción de partición en el conjunto de parámetros.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video, y el método de decodificación comprende además: Cuando el valor de la bandera activada de anulación es un valor de desactivación, particionar el bloque de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del segundo conjunto de parámetros.
En una implementación posible, o de forma alternativa, la segunda información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una implementación posible, la segunda información de restricción de partición comprende información de restricción de partición correspondiente a diferentes parámetros relacionados con regiones de imagen representadas por el flujo de bits de video o correspondiente a diferente índice.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición en intramodo, o información de restricción de partición en intermodo.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición para bloque de luma, o información de restricción de partición para bloque de croma.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video, obtener una bandera activada de anulación del flujo de bits de video comprende obtener la bandera activada de anulación del segundo conjunto de parámetros.
En una implementación posible, la obtención de una bandera de anulación del flujo de bits de video comprende obtener la bandera de anulación del primer conjunto de parámetros.
En una implementación posible, o de forma alternativa, la primera información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video;
En donde el primer conjunto de parámetros es un conjunto de parámetros de imagen y el segundo conjunto de parámetros es un conjunto de parámetros de secuencia.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video, el método de decodificación comprende además:
Cuando el valor de la bandera de anulación no es el valor de anulación, particionar el bloque de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del segundo conjunto de parámetros. En una posible implementación, en donde cuando un valor de una bandera activada de partición de árbol de tipo múltiple del primer conjunto de parámetros activa partición de árbol de tipo múltiple para el bloque, obtener la primera información de restricción de partición y aplicar partición de árbol de tipo múltiple al bloque de acuerdo con la primera información de restricción de partición.
En una implementación posible, donde el flujo de bits de video que incluye además datos que representan un segundo conjunto de parámetros del flujo de bits de video, cuando la bandera activada de partición de árbol de tipo múltiple del primer conjunto de parámetros no está presente y un valor de una bandera activada de partición de árbol de tipo múltiple del segundo conjunto de parámetros activa partición de árbol de tipo múltiple para el bloque activa partición de árbol de tipo múltiple para el bloque, obtener segunda información de restricción de partición para el flujo de bits de video del segundo conjunto de parámetros y aplicar partición de árbol de tipo múltiple al bloque de acuerdo con la segunda información de restricción de partición.
De acuerdo con un tercer aspecto, la invención se refiere a un método para decodificar un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video que incluye datos una primera región de imagen y una primera cabecera de región de imagen de la primera región de imagen, el método de decodificación que comprende:
Obtener una bandera de anulación del flujo de bits de video;
Cuando el valor de la bandera de anulación anula el valor, obtener la primera información de restricción de partición para la primera región de imagen de la primera cabecera de región de imagen;
Particionar un bloque de la primera región de imagen de acuerdo con la primera información de restricción de partición.
En una posible implementación, en donde la partición del bloque de la primera región de imagen de acuerdo con la primera información de restricción de partición comprende: particionar el bloque de la primera región de imagen en subbloques de acuerdo con la primera información de restricción de partición. El método de decodificación comprende además: reconstruir los subbloques.
En una implementación posible, en donde el método de decodificación comprende además:
Obtener una bandera activada de anulación del flujo de bits de video;
En donde cuando el valor de la bandera activada de anulación es un valor de activación, obtener la bandera de anulación del flujo de bits de video.
En una implementación posible, en donde el método de decodificación comprende además:
Obtener una bandera presente de control de restricción de partición del flujo de bits de video;
En donde cuando el valor de la bandera presente de control de restricción de partición es verdadero, obtener la bandera activada de anulación del flujo de bits de video.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda región de imagen y una segunda cabecera de región de imagen de la segunda región de imagen, y el valor de la bandera actual de control de restricción de partición es falso especifica la ausencia de elementos de sintaxis de control de restricción de partición en la segunda cabecera de región de imagen.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda región de imagen y una cabecera de segunda región de imagen de la segunda región de imagen, y el método de decodificación comprende además:
Cuando el valor de la bandera activada de anulación es un valor de desactivación, particionar el bloque de la primera región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video de la segunda cabecera de región de imagen, en donde la segunda región de imagen comprende el bloque de la primera región de imagen.
En una implementación posible, o de forma alternativa, la segunda información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una implementación posible, la segunda información de restricción de partición comprende información de restricción de partición correspondiente a diferentes parámetros relacionados con regiones de imagen representadas por el flujo de bits de video o correspondiente a diferente índice.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición en intramodo, o información de restricción de partición en intermodo.
En una posible implementación, la segunda información de restricción de partición comprende información de restricción de partición para bloque de luma, o información de restricción de partición para bloque de croma.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda región de imagen y una segunda cabecera de región de imagen de la segunda región de imagen, obtener una bandera activada de anulación del flujo de bits de video comprende obtener la bandera activada de anulación de la segunda cabecera de región de imagen.
En una implementación posible, obtener una bandera de anulación del flujo de bits de video comprende obtener la bandera de anulación de la primera cabecera de región de imagen.
En una implementación posible, o de forma alternativa, la primera información de restricción de partición comprende información de tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de profundidad de árbol de tipo múltiple máxima, información de tamaño de nodo raíz de árbol ternario máximo permitido o información de tamaño de nodo raíz de árbol binario máximo permitido.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda región de imagen y una cabecera de segunda región de imagen de la segunda región de imagen;
En donde la primera cabecera de región de imagen es una cabecera de segmento y la segunda cabecera de región de imagen es una cabecera de mosaico, y la primera región de imagen es un segmento y la segunda región de imagen es un mosaico, y el mosaico comprende el segmento; o,
La primera cabecera de región de imagen es una cabecera de mosaico y la segunda cabecera de región de imagen es cabecera de segmento, y la primera región de imagen es un mosaico y la segunda región de imagen es un segmento, y el segmento comprende el mosaico.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda región de imagen y una cabecera de segunda región de imagen de la segunda región de imagen, el método de decodificación comprende además:
Cuando el valor de la bandera de anulación no es el valor de anulación, particionar el bloque de la primera región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video de la segunda cabecera de región de imagen, en donde la segunda región de imagen comprende el bloque de la primera región de imagen.
En una posible implementación, en donde cuando un valor de una bandera activada de partición de árbol de tipo múltiple de la primera cabecera de región de imagen activa partición de árbol de tipo múltiple para el bloque, obtener la primera información de restricción de partición y aplicar partición de árbol de tipo múltiple al bloque de la primera región de imagen de acuerdo con la primera información de restricción de partición.
En una implementación posible, en donde el flujo de bits de video que incluye además datos que representan una segunda cabecera de región de imagen del flujo de bits de video, cuando la bandera activada de partición de árbol de tipo múltiple de la primera cabecera de región de imagen no está presente y un valor de una bandera activada de partición de árbol de tipo múltiple de la segunda cabecera de región de imagen activa partición de árbol de tipo múltiple para el bloque activa partición de árbol de tipo múltiple para el bloque, obtener segunda información de restricción de partición para el flujo de bits de video de la segunda cabecera de región de imagen y aplicar partición de árbol de tipo múltiple al bloque de la región de imagen de acuerdo con la segunda información de restricción. De acuerdo con un cuarto aspecto, la invención se refiere a un aparato para decodificar una secuencia de video que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador realice el método de acuerdo con el primer aspecto, el segundo aspecto o el tercer aspecto, o cualquier realización posible del primer aspecto, el segundo aspecto o el tercer aspecto.
De acuerdo con un quinto aspecto, se propone un medio de almacenamiento legible por computadora que tiene almacenadas instrucciones que, cuando se ejecutan, provocan que uno o más procesadores se configuren para codificar datos de video. Las instrucciones hacen que el uno o más procesadores realicen un método de acuerdo con el primer aspecto, el segundo aspecto o el tercer aspecto, o cualquier realización posible del primer aspecto, el segundo aspecto o el tercer aspecto.
De acuerdo con un sexto aspecto, la invención se refiere a un programa de computadora que comprende código de programa para realizar el método de acuerdo con el primer aspecto, el segundo aspecto o el tercer aspecto, o cualquier realización posible del primer aspecto, el segundo aspecto o el tercer aspecto cuando se ejecuta en una computadora.
En resumen, la presente descripción proporciona un aparato de codificación y decodificación, así como un método de codificación y decodificación. En particular, la presente descripción se refiere a partición de bloques y señalización de parámetros de partición en un flujo de bits. Una bandera de anulación en una cabecera de región de imagen indica si se va a particionar o no un bloque de acuerdo con una primera información de restricción de partición. La bandera de anulación se incluye en el flujo de bits y el bloque se divide en consecuencia.
Claims (15)
1. Un método para decodificar un flujo de bits de video implementado por un dispositivo de decodificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el flujo de bits de video comprende además datos que representan un conjunto de parámetros del flujo de bits de video,caracterizado por queel método de decodificación comprende:
obtener (S210) una bandera activada de anulación del conjunto de parámetros del flujo de bits de video, en donde el conjunto de parámetros es un conjunto de parámetros de secuencia, SPS;
cuando el valor de la bandera activada de anulación es un valor de activación, obtener (S110) una bandera de anulación de la cabecera de región de imagen del flujo de bits de video, en donde la bandera de anulación indica si la primera información de restricción de partición de la cabecera de región de imagen o la segunda información de restricción de partición del conjunto de parámetros se debe utilizar para particionar un bloque de la región de imagen, en donde la primera información de restricción de partición comprende información de un tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de una profundidad de árbol de tipo múltiple máxima, información de un tamaño de nodo raíz de árbol ternario máximo permitido o información de un tamaño de nodo raíz de árbol binario máximo permitido, y en donde la segunda información de restricción de partición comprende información del tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de la profundidad de árbol de tipo múltiple máxima, información del tamaño de nodo raíz de árbol ternario máximo permitido o información del tamaño de nodo raíz de árbol binario máximo permitido;
cuando el valor de la bandera de anulación es un valor de anulación, obtener (S120) la primera información de restricción de partición para la región de imagen de la cabecera de región de imagen; y
particionar (S130) el bloque de la región de imagen de acuerdo con la primera información de restricción de partición; cuando el valor de la bandera activada de anulación es un valor de desactivación, particionar (S230) el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición del conjunto de parámetros.
2. El método de decodificación de la reivindicación 1, en donde la primera información de restricción de partición se señaliza en una cabecera de imagen del flujo de bits de video.
3. El método de decodificación de la reivindicación 1, en donde la segunda información de restricción de partición comprende información de restricción de partición para un bloque en intramodo, o información de restricción de partición para un bloque en intermodo.
4. El método de decodificación de la reivindicación 1, en donde la segunda información de restricción de partición comprende información de restricción de partición para un bloque de luma, o información de restricción de partición para un bloque de croma.
5. El método de decodificación de cualquiera de las reivindicaciones 1 a 4, en donde el método de decodificación comprende además:
cuando el valor de la bandera de anulación no es el valor de anulación, particionar (S230) el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video del conjunto de parámetros.
6. Un método para codificar un flujo de bits de video implementado por un dispositivo de codificación, en donde el flujo de bits de video incluye datos que representan una región de imagen y una cabecera de región de imagen de la región de imagen, el flujo de bits de video comprende además datos que representan un conjunto de parámetros del flujo de bits de video,caracterizado por queel método de codificación comprende:
determinar (370) si está activado particionar un bloque de la región de imagen de acuerdo con la primera información de restricción de partición;
cuando se determina que está activado particionar el bloque de acuerdo con la primera información de restricción de partición, determinar si particionar (S310) el bloque está de acuerdo con la primera información de restricción de partición en la cabecera de región de imagen o una segunda información de restricción de partición del conjunto de parámetros, en donde la primera información de restricción de partición comprende información de un tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de una profundidad de árbol de tipo múltiple máxima, información de un tamaño de nodo raíz de árbol ternario máximo permitido o información de un tamaño de nodo raíz de árbol binario máximo permitido, y en donde la segunda información de restricción de partición comprende información del tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de la profundidad de árbol de tipo múltiple máxima, información del tamaño de nodo raíz de árbol ternario máximo permitido o información del tamaño de nodo raíz de árbol binario máximo permitido;
y configurar (S340) el valor de una bandera activada de anulación a un valor de activación;
cuando se determina que particionar el bloque está de acuerdo con la primera información de restricción de partición, particionar (S320) el bloque de acuerdo con la primera información de restricción de partición y configurar (S325) el valor de una bandera de anulación a un valor de anulación; e
incluir (S330) los datos de la bandera de anulación en la cabecera de región de imagen del flujo de bits de video; cuando se determina que no está activado particionar el bloque de acuerdo con la primera información de restricción de partición, particionar el bloque de acuerdo con la segunda información de restricción de partición en el conjunto de parámetros y configurar el valor de la bandera activada de anulación a un valor de desactivación; e
incluir (S350) los datos de la bandera activada de anulación en el conjunto de parámetros del flujo de bits de video, en donde el conjunto de parámetros es un conjunto de parámetros de secuencia, SPS.
7. El método de codificación de la reivindicación 6, en donde la primera información de restricción de partición se señaliza en una cabecera de imagen del flujo de bits de video.
8. El método de codificación de la reivindicación 6, en donde la segunda información de restricción de partición comprende información de restricción de partición en intramodo, o información de restricción de partición en intermodo.
9. El método de codificación de la reivindicación 6, en donde la segunda información de restricción de partición comprende información de restricción de partición para bloque de luma, o información de restricción de partición para bloque de croma.
10. El método de codificación de cualquiera de las reivindicaciones 6 a 9, en donde el método de codificación comprende además:
cuando se determina que la partición del bloque no es de acuerdo con la primera información de restricción de partición, particionar (S360) el bloque de la región de imagen de acuerdo con la segunda información de restricción de partición para el flujo de bits de video en el conjunto de parámetros, y configurar (S365) el valor de la bandera de anulación para no anular el valor.
11. Un producto de programa de computadora que comprende un código de programa para realizar el método de acuerdo con cualquiera de las reivindicaciones 1 a 10.
12. Un codificador, que comprende:
uno o más procesadores; y
un medio de almacenamiento legible por computadora no transitorio acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el codificador para llevar a cabo el método de acuerdo con cualquiera de las reivindicaciones 1 a 10.
13. Un codificador que comprende circuitos de procesamiento para llevar a cabo el método de acuerdo con cualquiera de las reivindicaciones 1 a 10.
14. Un medio legible por computadora no transitorio que porta un código de programa que, cuando se ejecuta por un dispositivo de computadora, hace que el dispositivo de computadora realice el método de cualquiera de las reivindicaciones 1 a 10.
15. Un flujo de bits de video codificado, en donde el flujo de bits de video comprende datos que representan una región de imagen, una cabecera de región de imagen de la región de imagen y un conjunto de parámetros del flujo de bits de video,caracterizado por queel flujo de bits de video comprende además una bandera de anulación en la cabecera de región de imagen, en donde la bandera de anulación indica si se debe utilizar la primera información de restricción de partición de la cabecera de región de imagen o la segunda información de restricción de partición del conjunto de parámetros para particionar un bloque de la región de imagen, en donde el flujo de bits de video comprende además una bandera activada de anulación en el conjunto de parámetros, en donde el conjunto de parámetros es un conjunto de parámetros de secuencia, SPS, en donde la bandera activada de anulación indica si está activado particionar el bloque de la región de imagen de acuerdo con la primera información de restricción de partición; en donde la primera información de restricción de partición comprende información de un tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de una profundidad de árbol de tipo múltiple máxima, información de un tamaño de nodo raíz de árbol ternario máximo permitido o información de un tamaño de nodo raíz de árbol binario máximo permitido, y en donde la segunda información de restricción de partición comprende información del tamaño de nodo hoja de árbol cuádruple mínimo permitido, información de la profundidad de árbol de tipo múltiple máxima, información del tamaño de nodo raíz de árbol ternario máximo permitido o información del tamaño de nodo raíz de árbol binario máximo permitido.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862733076P | 2018-09-18 | 2018-09-18 | |
US201862733074P | 2018-09-18 | 2018-09-18 | |
US201862742263P | 2018-10-05 | 2018-10-05 | |
PCT/CN2019/106529 WO2020057572A1 (en) | 2018-09-18 | 2019-09-18 | A video encoder, a video decoder and corresponding methods |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2973667T3 true ES2973667T3 (es) | 2024-06-21 |
Family
ID=69888378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES19862691T Active ES2973667T3 (es) | 2018-09-18 | 2019-09-18 | Un codificador de video, un decodificador de video y métodos correspondientes |
Country Status (16)
Country | Link |
---|---|
US (3) | US11070804B2 (es) |
EP (2) | EP4366310A1 (es) |
JP (2) | JP7355829B2 (es) |
KR (2) | KR102660119B1 (es) |
CN (2) | CN112740689B (es) |
AU (2) | AU2019344400C1 (es) |
BR (3) | BR112020025569A2 (es) |
CA (1) | CA3113219A1 (es) |
DK (1) | DK3847818T3 (es) |
ES (1) | ES2973667T3 (es) |
HU (1) | HUE065870T2 (es) |
MX (1) | MX2021003167A (es) |
PL (1) | PL3847818T3 (es) |
PT (1) | PT3847818T (es) |
WO (1) | WO2020057572A1 (es) |
ZA (1) | ZA202102113B (es) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201500846TA (en) * | 2012-09-26 | 2015-05-28 | Panasonic Ip Corp America | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus |
US11418793B2 (en) * | 2018-10-04 | 2022-08-16 | Qualcomm Incorporated | Adaptive affine motion vector coding |
CN110430431B (zh) * | 2019-06-25 | 2021-10-22 | 浙江大华技术股份有限公司 | 视频解码方法、芯片、装置、计算机设备和存储介质 |
CA3134855A1 (en) * | 2019-06-26 | 2020-12-30 | Tencent America LLC | Implicit quadtree or binary-tree geometry partition for point cloud coding |
US11496774B2 (en) * | 2019-08-27 | 2022-11-08 | Tencent America LLC | Header syntax for QT/BT/TT size |
AU2019232797A1 (en) * | 2019-09-17 | 2021-04-01 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a block of video samples |
WO2021107622A1 (ko) * | 2019-11-28 | 2021-06-03 | 엘지전자 주식회사 | 영상/비디오 코딩 방법 및 장치 |
WO2021202385A1 (en) * | 2020-03-29 | 2021-10-07 | Alibaba Group Holding Limited | High level syntax control of loop filter |
US20210314567A1 (en) * | 2020-04-04 | 2021-10-07 | Qualcomm Incorporated | Block partitioning for image and video coding |
US11451811B2 (en) | 2020-04-05 | 2022-09-20 | Tencent America LLC | Method and apparatus for video coding |
WO2021207055A1 (en) | 2020-04-05 | 2021-10-14 | Bytedance Inc. | High level control of filtering in video coding |
WO2021236400A1 (en) * | 2020-05-18 | 2021-11-25 | Beijing Dajia Internet Information Technology Co., Ltd. | Signaling of syntax elements in video coding |
WO2023198110A1 (en) * | 2022-04-13 | 2023-10-19 | Mediatek Inc. | Block partitioning image and video data |
WO2024149251A1 (en) * | 2023-01-10 | 2024-07-18 | Mediatek Inc. | Methods and apparatus of cross-component model merge mode for video coding |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260614B2 (en) * | 2000-11-10 | 2007-08-21 | Sharp Laboratories Of America | Methods and systems for scalable streaming of images with client-side control |
US9743081B2 (en) * | 2009-07-07 | 2017-08-22 | Thomson Licensing | Methods and apparatus for collaborative partition coding for region based filters |
US8711963B2 (en) * | 2010-02-11 | 2014-04-29 | Samsung Electronics Co., Ltd. | Unified feedback frame for supporting a plurality of feedback modes and a multiple-input multiple-output (MIMO) communication system using the unified feedback frame |
US20110194613A1 (en) * | 2010-02-11 | 2011-08-11 | Qualcomm Incorporated | Video coding with large macroblocks |
US9313514B2 (en) * | 2010-10-01 | 2016-04-12 | Sharp Kabushiki Kaisha | Methods and systems for entropy coder initialization |
US9055305B2 (en) * | 2011-01-09 | 2015-06-09 | Mediatek Inc. | Apparatus and method of sample adaptive offset for video coding |
US8526495B2 (en) * | 2010-11-22 | 2013-09-03 | Mediatek Singapore Pte. Ltd. | Apparatus and method of constrained partition size for high efficiency video coding |
US20130251022A1 (en) | 2011-06-10 | 2013-09-26 | Telefonaktiebolaget L M Ericsson (Publ) | Signaling of end of slices |
RU2604680C2 (ru) | 2011-07-11 | 2016-12-10 | Сан Пэтент Траст | Способ декодирования изображений, способ кодирования изображений, устройство декодирования изображений, устройство кодирования изображений и устройство кодирования и декодирования изображений |
US9538200B2 (en) * | 2012-01-19 | 2017-01-03 | Qualcomm Incorporated | Signaling of deblocking filter parameters in video coding |
US20130188717A1 (en) * | 2012-01-20 | 2013-07-25 | Qualcomm Incorporated | Motion prediction in svc using partition mode without split flag |
US20150043639A1 (en) | 2012-03-20 | 2015-02-12 | Samsung Electronics Co., Ltd. | Method and device for coding scalable video on basis of coding unit of tree structure, and method and device for decoding scalable video on basis of coding unit of tree structure |
CN104247423B (zh) * | 2012-03-21 | 2018-08-07 | 联发科技(新加坡)私人有限公司 | 可伸缩视频编码***的帧内模式编码方法和装置 |
US9800869B2 (en) * | 2012-06-15 | 2017-10-24 | Google Technology Holdings LLC | Method and apparatus for efficient slice header processing |
US9602827B2 (en) * | 2012-07-02 | 2017-03-21 | Qualcomm Incorporated | Video parameter set including an offset syntax element |
CN114786016A (zh) * | 2012-07-02 | 2022-07-22 | 韩国电子通信研究院 | 图像编码/解码方法和非暂时性计算机可读记录介质 |
US9648335B2 (en) * | 2013-07-12 | 2017-05-09 | Qualcomm Incorporated | Bitstream restrictions on picture partitions across layers |
US10110895B2 (en) * | 2013-12-13 | 2018-10-23 | Qualcomm Incorporated | Signaling of simplified depth coding (SDC) for depth intra- and inter-prediction modes in 3D video coding |
CN104935940B (zh) * | 2014-03-17 | 2018-02-16 | 寰发股份有限公司 | 基于深度的块分割的信号传递方法 |
US10715833B2 (en) * | 2014-05-28 | 2020-07-14 | Apple Inc. | Adaptive syntax grouping and compression in video data using a default value and an exception value |
CN107637081A (zh) * | 2015-06-16 | 2018-01-26 | 夏普株式会社 | 图像解码装置以及图像编码装置 |
WO2017008263A1 (en) * | 2015-07-15 | 2017-01-19 | Mediatek Singapore Pte. Ltd. | Conditional binary tree block partitioning structure |
CN109274974B (zh) | 2015-09-29 | 2022-02-11 | 华为技术有限公司 | 图像预测的方法及装置 |
US20170272758A1 (en) * | 2016-03-16 | 2017-09-21 | Mediatek Inc. | Video encoding method and apparatus using independent partition coding and associated video decoding method and apparatus |
US10623774B2 (en) * | 2016-03-22 | 2020-04-14 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
EP3449630B1 (en) * | 2016-05-28 | 2024-07-10 | Mediatek Inc. | Method and apparatus of current picture referencing for video coding |
WO2018030746A1 (ko) * | 2016-08-08 | 2018-02-15 | 엘지전자(주) | 영상의 처리 방법 및 이를 위한 장치 |
EP3306938A1 (en) * | 2016-10-05 | 2018-04-11 | Thomson Licensing | Method and apparatus for binary-tree split mode coding |
US10779004B2 (en) * | 2016-10-12 | 2020-09-15 | Mediatek Inc. | Methods and apparatuses of constrained multi-type-tree block partition for video coding |
US20180109812A1 (en) * | 2016-10-14 | 2018-04-19 | Media Tek Inc. | Block partitioning using tree structures |
US20180309508A1 (en) * | 2017-04-21 | 2018-10-25 | U.S.A. as represented by the Administrator of NASA | Providing Continuous Two-Way High-Speed Data Transfer for Leo Based Satellites |
US20180367818A1 (en) * | 2017-06-15 | 2018-12-20 | Futurewei Technologies, Inc. | Block Partition Structure in Video Compression |
KR102586674B1 (ko) * | 2017-07-04 | 2023-10-06 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 경계 강제 파티션에 대한 개선 |
AU2019392557A1 (en) * | 2018-12-04 | 2021-06-24 | Vid Scale, Inc. | Tile group partitioning |
KR102392701B1 (ko) * | 2019-01-15 | 2022-04-28 | 엘지전자 주식회사 | 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치 |
EP3917143A4 (en) * | 2019-01-23 | 2022-09-07 | LG Electronics Inc. | VIDEO SIGNAL PROCESSING METHOD AND DEVICE |
US10742972B1 (en) * | 2019-03-08 | 2020-08-11 | Tencent America LLC | Merge list construction in triangular prediction |
US11856231B2 (en) * | 2019-05-30 | 2023-12-26 | Sharp Kabushiki Kaisha | Systems and methods for signaling hypothetical reference decoder parameters in video coding |
US20220256160A1 (en) * | 2019-06-18 | 2022-08-11 | Lg Electronics Inc. | Image decoding method for performing bdpcm on basis of block size and device therefor |
US20230145618A1 (en) * | 2020-03-20 | 2023-05-11 | Canon Kabushiki Kaisha | High level syntax for video coding and decoding |
-
2019
- 2019-09-18 CN CN201980061251.1A patent/CN112740689B/zh active Active
- 2019-09-18 DK DK19862691.3T patent/DK3847818T3/da active
- 2019-09-18 CN CN202110999225.2A patent/CN114071165B/zh active Active
- 2019-09-18 BR BR112020025569-6A patent/BR112020025569A2/pt active Search and Examination
- 2019-09-18 PL PL19862691.3T patent/PL3847818T3/pl unknown
- 2019-09-18 EP EP23213872.7A patent/EP4366310A1/en active Pending
- 2019-09-18 JP JP2021538887A patent/JP7355829B2/ja active Active
- 2019-09-18 PT PT198626913T patent/PT3847818T/pt unknown
- 2019-09-18 KR KR1020217011246A patent/KR102660119B1/ko active IP Right Grant
- 2019-09-18 AU AU2019344400A patent/AU2019344400C1/en active Active
- 2019-09-18 BR BR122023024004-9A patent/BR122023024004A2/pt active Search and Examination
- 2019-09-18 WO PCT/CN2019/106529 patent/WO2020057572A1/en active Application Filing
- 2019-09-18 CA CA3113219A patent/CA3113219A1/en active Pending
- 2019-09-18 EP EP19862691.3A patent/EP3847818B1/en active Active
- 2019-09-18 MX MX2021003167A patent/MX2021003167A/es unknown
- 2019-09-18 KR KR1020247013015A patent/KR20240056655A/ko active Application Filing
- 2019-09-18 BR BR122023023994-6A patent/BR122023023994A2/pt active Search and Examination
- 2019-09-18 HU HUE19862691A patent/HUE065870T2/hu unknown
- 2019-09-18 ES ES19862691T patent/ES2973667T3/es active Active
-
2020
- 2020-08-27 US US17/005,292 patent/US11070804B2/en active Active
-
2021
- 2021-03-29 ZA ZA2021/02113A patent/ZA202102113B/en unknown
- 2021-06-30 US US17/363,544 patent/US11930171B2/en active Active
-
2023
- 2023-06-29 JP JP2023107167A patent/JP2023115314A/ja active Pending
- 2023-09-14 AU AU2023229559A patent/AU2023229559A1/en active Pending
-
2024
- 2024-01-17 US US18/414,481 patent/US20240244202A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2973667T3 (es) | Un codificador de video, un decodificador de video y métodos correspondientes | |
ES2946909T3 (es) | Método, aparato y producto de programa informático para interpredicción | |
AU2019342803B2 (en) | Apparatus and method for inverse quantization | |
ES2966479T3 (es) | Un codificador, un decodificador y métodos correspondientes para la intrapredicción | |
JP2022140481A (ja) | ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法 | |
ES2972326T3 (es) | Un codificador, un decodificador y métodos correspondientes para el modo de fusión | |
US11477494B2 (en) | Relation between partition constraint elements | |
WO2021159962A1 (en) | An encoder, a decoder and corresponding methods for subpicture signalling in sequence parameter set | |
CN114679583B (zh) | 视频编码器、视频解码器及对应方法 | |
ES2967903T3 (es) | Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación | |
ES2946487T3 (es) | Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar |