ES2755573T3 - Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción - Google Patents
Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción Download PDFInfo
- Publication number
- ES2755573T3 ES2755573T3 ES16705364T ES16705364T ES2755573T3 ES 2755573 T3 ES2755573 T3 ES 2755573T3 ES 16705364 T ES16705364 T ES 16705364T ES 16705364 T ES16705364 T ES 16705364T ES 2755573 T3 ES2755573 T3 ES 2755573T3
- Authority
- ES
- Spain
- Prior art keywords
- candidate
- block
- atmvp
- motion
- list
- 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
- 230000033001 locomotion Effects 0.000 title claims abstract description 585
- 239000013598 vector Substances 0.000 title claims abstract description 356
- 230000002123 temporal effect Effects 0.000 title claims abstract description 81
- 230000004927 fusion Effects 0.000 claims abstract description 115
- 238000000034 method Methods 0.000 claims description 111
- 238000003860 storage Methods 0.000 claims description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims description 17
- 230000008569 process Effects 0.000 description 43
- 238000013139 quantization Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000009795 derivation Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000155 melt Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 102100027397 Cilia- and flagella-associated protein 100 Human genes 0.000 description 1
- 102100022183 E3 ubiquitin-protein ligase MIB1 Human genes 0.000 description 1
- 101000725206 Homo sapiens Cilia- and flagella-associated protein 100 Proteins 0.000 description 1
- 101000973503 Homo sapiens E3 ubiquitin-protein ligase MIB1 Proteins 0.000 description 1
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for 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/46—Embedding additional information in the video signal during the compression process
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo: una memoria configurada para almacenar datos de vídeo; y un codificador de vídeo configurado para: formar, para un bloque actual de los datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual, caracterizado por que el codificador de vídeo está configurado además para: formar la lista de candidatos de fusión incluyendo, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), en el que el candidato de ATMVP indica que el bloque actual se debe predecir usando un bloque identificado por el candidato de ATMVP que se divide en una pluralidad de subbloques, teniendo cada uno de la pluralidad de subbloques conjuntos respectivos de información de movimiento; codificar un índice en la lista de candidatos de fusión que identifique al candidato de ATMVP de la pluralidad de candidatos de fusión en la lista de candidatos de fusión; y basado en el índice que identifica al candidato de ATMVP, codificar el bloque actual de datos de vídeo, en el que para codificar el bloque actual de datos de vídeo, el codificador de vídeo está configurado para codificar subbloques del bloque actual usando la información de movimiento respectiva de los subbloques del bloque identificado por el candidato de ATMVP.
Description
DESCRIPCIÓN
Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional estadounidense número 62/107.933 presentada el 26 de enero de 2015.
CAMPO TÉCNICO
[0002] Esta divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[0003] Las capacidades del vídeo digital se pueden incorporar a una amplia gama de dispositivos, que incluye televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de codificación de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), ITU-T H.265, también denominada Codificación de Vídeo de Alta Eficacia (HEVC) y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente, implementando dichas técnicas de codificación de vídeo.
[0004] Las técnicas de codificación de vídeo incluyen la predicción espacial (intra-imagen) y/o la predicción temporal (inter-imagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que para algunas técnicas también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intracodificado (I) de una imagen se codifican usando la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un corte intercodificado (P o B) de una imagen pueden usar la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas y las imágenes de referencia se pueden denominar tramas de referencia.
[0005] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y de acuerdo con los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que a continuación se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar a fin de producir un vector unidimensional de coeficientes de transformada, y se puede aplicar la codificación por entropía para lograr aún más compresión.
SUMARIO
[0006] En general, esta divulgación describe técnicas relacionadas con la codificación (por ejemplo, codificación o descodificación) de información de movimiento para un bloque de datos de vídeo. Más en particular, un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) se puede configurar para codificar información de movimiento para un bloque actual (por ejemplo, una unidad de predicción (PU) actual) usando la predicción de vector de movimiento temporal avanzada (ATMVP). La ATMVP en general implica el uso de un vector de movimiento temporal para identificar una unidad de predicción correspondiente que se divide en sub-PU. En lugar de dividir la PU actual en sub-PU, el vector de movimiento temporal puede simplemente identificar el bloque correspondiente que se divide en sub-PU, teniendo cada una su propia información de movimiento, y el codificador de vídeo se puede configurar para predecir partes correspondientes del bloque actual usando la información de movimiento de las respectivas sub-PU. Evitando dividir activamente el bloque actual, la información de señalización de sobrecoste se puede reducir para el bloque actual, al tiempo que todavía se logra una predicción de grano fino para partes del bloque actual que de otro modo podrían resultar de dividir el bloque actual en sub-PU.
[0007] En un ejemplo, un procedimiento de codificación de datos de vídeo incluye formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de
movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0008] En otro ejemplo, un dispositivo para codificar datos de vídeo incluye una memoria configurada para almacenar datos de vídeo y un codificador de vídeo configurado para formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0009] En otro ejemplo, un dispositivo para codificar datos de vídeo incluye medios para formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), medios para codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y medios para codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0010] En otro ejemplo, un medio de almacenamiento legible por ordenador ha almacenado en el mismo instrucciones que, cuando se ejecutan, provocan que un procesador forme, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codifique un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codifique el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0011] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0012]
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar técnicas para implementar la predicción de vector de movimiento temporal avanzada (ATMVP).
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP).
La figura 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede implementar técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP).
La figura 4 es un diagrama conceptual que ilustra candidatos vecinos espaciales en la Codificación de Vídeo de Alta Eficacia (HEVC).
La figura 5 es un diagrama conceptual que ilustra la predicción de vector de movimiento temporal (TMVP) en HEVC.
La figura 6 es un diagrama conceptual que ilustra una estructura de predicción para 3D-HEVC de ejemplo.
La figura 7 es un diagrama conceptual que ilustra la predicción de movimiento de inter-vista basada en sub-PU en 3D-HEVC.
La figura 8 es un diagrama conceptual que ilustra la predicción de movimiento sub-PU a partir de una imagen de referencia.
La figura 9 es un diagrama conceptual que ilustra imágenes relevantes en ATMVP (similar a TMVP).
La figura 10 es un diagrama de flujo que ilustra un procedimiento de ejemplo para añadir un candidato de ATMVP a una lista de candidatos durante un proceso de codificación de acuerdo con las técnicas de esta divulgación.
La figura 11 es un diagrama de flujo que ilustra un procedimiento de ejemplo para añadir un candidato de ATMVP a una lista de candidatos durante un proceso de decodificación de acuerdo con las técnicas de esta divulgación.
DESCRIPCIÓN DETALLADA
[0013] En general, esta divulgación se refiere a la predicción de vector de movimiento en códecs de vídeo. Más específicamente, la predicción del vector de movimiento temporal avanzada se logra recogiendo los vectores de movimiento en un nivel de subbloque (sub-PU) para un bloque dado (unidad de predicción).
[0014] Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus ampliaciones de codificación de vídeo escalable (SVC) y de codificación de vídeo de múltiples vistas (MVC). Otro proyecto conjunto de MVC se describe en "Advanced video coding for generic audiovisual services", Recomendación ITU-T H.264, marzo de 2010.
[0015] Además, existe una norma de codificación de vídeo de nuevo desarrollo, a saber la Codificación de Vídeo de Alta Eficacia (HEVC), desarrollada por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos sobre Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos sobre Imágenes en Movimiento (MPEG) de ISO/IEC. Un proyecto reciente de la HEVC está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip. La norma HEVC también se presenta conjuntamente en la Recomendación ITU-T H.265 y la norma internacional ISO/IEC 23008-2, ambas tituladas "Codificación de vídeo de alta eficacia", y ambas publicadas en octubre de 2014.
[0016] Información de movimiento: Para cada bloque, un conjunto de información de movimiento puede estar disponible. Un conjunto de información de movimiento contiene información de movimiento para las direcciones de predicción hacia delante y hacia atrás. Aquí, las direcciones de predicción hacia delante y hacia atrás son dos direcciones de predicción de un modo de predicción bidireccional y los términos "hacia delante" y "hacia atrás" no tienen necesariamente un significado geométrico; en cambio, corresponden a la lista de imágenes de referencia 0 (RefPicList0) y a la lista de imágenes de referencia 1 (RefPicList1) de una imagen actual. Cuando solo está disponible una lista de imágenes de referencia para una imagen o un corte, solo está disponible la RefPicList0 y la información de movimiento de cada bloque de un corte siempre es hacia delante.
[0017] Para cada dirección de predicción, la información de movimiento debe contener un índice de referencia y un vector de movimiento. En algunos casos, por simplicidad, se puede hacer referencia a un vector de movimiento por sí mismo, de manera que se suponga que tiene un índice de referencia asociado. Se usa un índice de referencia para identificar una imagen de referencia en la lista de imágenes de referencia actuales (RefPicList0 o RefPicList1). Un vector de movimiento tiene un componente horizontal y otro vertical.
[0018] El recuento de orden de imágenes (POC) se usa ampliamente en las normas de codificación de vídeo para identificar el orden de visualización de una imagen. Aunque existen casos en los que dos imágenes dentro de una secuencia de vídeo codificado pueden tener el mismo valor de POC, típicamente no ocurre dentro de una secuencia de vídeo codificado. Cuando están presentes múltiples secuencias de vídeo codificado en un flujo de bits, las imágenes con un mismo valor de POC pueden estar más cercanas entre sí en términos de orden de descodificación. Los valores de POC de las imágenes se usan típicamente para la construcción de la lista de imágenes de referencia, la obtención de un conjunto de imágenes de referencia como en la HEVC y el ajuste a escala del vector de movimiento.
[0019] Estructura de macrobloque (MB) en la codificación de vídeo avanzada (AVC) (H.264): En H.264/AVC, cada inter macrobloque (MB) se puede dividir en cuatro formas diferentes:
• Una división de MB de 16x16
• Dos divisiones de MB de 16x8
• Dos divisiones de MB de 8x16
• Cuatro divisiones de MB de 8x8
[0020] Diferentes divisiones de MB en un MB pueden tener diferentes valores del índice de referencia para cada dirección (RefPicList0 o RefPicList1).
[0021] Cuando un MB no está dividido en cuatro divisiones de MB de 8x8, tiene solo un vector de movimiento para cada división de MB en cada dirección.
[0022] Cuando un MB se divide en cuatro divisiones de MB de 8x8, cada división de MB de 8x8 se puede dividir además en subbloques, cada uno de los cuales puede tener un vector de movimiento diferente en cada dirección. Existen cuatro formas diferentes de obtener subbloques a partir de una división de MB de 8x8:
• un subbloque de 8x8
• dos subbloques de 8x4
• dos subbloques de 4x8
• cuatro subbloques de 4x4
[0023] Cada subbloque puede tener un vector de movimiento diferente en cada dirección. Por lo tanto, un vector de movimiento está presente en un nivel igual a mayor que el subbloque.
[0024] Modo directo temporal en AVC: En AVC, el modo directo temporal se puede habilitar bien en el nivel de MB o de división de MB para el modo de salto o directo en los cortes B. Para cada división de MB, los vectores de movimiento del bloque coubicado con la división de MB actual en la RefPicList1[0] del bloque actual se usan para obtener los vectores de movimiento. Cada vector de movimiento en el bloque coubicado se ajusta a escala basado en las distancias de POC.
[0025] Modo directo espacial en AVC: En AVC, un modo directo también puede predecir información de movimiento de los vecinos espaciales.
[0026] Estructura de la unidad de codificación (CU) en la codificación de vídeo de alta eficacia (HEVC): En la HEVC, la unidad de codificación más grande en un corte se denomina un bloque de árbol de codificación (CTB) o unidad de árbol de codificación (CTU). Una CTB contiene un árbol cuaternario cuyos nodos son unidades de codificación.
[0027] El tamaño de una CTB puede variar desde 16x16 a 64x64 en el perfil principal de la HEVC, aunque, técnicamente, se puede prestar soporte a tamaños de CTB de 8x8. Una unidad de codificación (CU) podría ser del mismo tamaño que una CTB y tan pequeña como 8x8. Cada CU está codificada con un modo. Cuando una CU está intercodificada, la CU se puede dividir además en 2 o 4 unidades de predicción (PU) o quedar en una única PU cuando otra división no es aplicable. Cuando dos PU están presentes en una CU, pueden ser rectángulos de mitad de tamaño o de tamaño de dos rectángulos con un % o % del tamaño de la CU.
[0028] Cuando la CU está inter-codificada, está presente un conjunto de información de movimiento para cada PU. Además, cada PU se codifica con un modo único de interpredicción para obtener el conjunto de información de movimiento.
[0029] Predicción de movimiento en HEVC: En la norma HEVC, hay dos modos de interpredicción, denominados modos de fusión (el salto se considera un caso especial de fusión) y de predicción de vector de movimiento avanzada (AMVP) respectivamente para una unidad de predicción (PU).
[0030] Tanto en el modo AMVP como de fusión, se mantiene una lista de candidatos de vector de movimiento (MV) para predictores de vector de movimiento múltiples. El (los) vector(es) de movimiento, así como los índices de referencia en el modo de fusión, de la PU actual se generan tomando un candidato de la lista de candidatos de MV.
[0031] La lista de candidatos de MV contiene hasta 5 candidatos para el modo de fusión y solo dos candidatos para el modo de AMVP. Un candidato de fusión puede contener un conjunto de información de movimiento, por ejemplo, vectores de movimiento correspondientes a ambas listas de imágenes de referencia (lista 0 y lista 1) y los índices de referencia. Si un candidato de fusión se identifica mediante un índice de fusión, las imágenes de referencia se usan para la predicción de los bloques actuales, así como se determinan los vectores de movimiento asociados. Sin embargo, en el modo de AMVP, para cada dirección de predicción potencial bien de la lista 0 o la lista 1, un índice de referencia necesita ser señalizado explícitamente, conjuntamente con un índice de MVP, a la lista de candidatos de MV, ya que el candidato de AMVP solo contiene un vector de movimiento. En el modo de AMVP, los vectores de movimiento predichos se pueden refinar aún más.
[0032] Como se puede observar anteriormente, un candidato de fusión corresponde a un conjunto completo de información de movimiento, mientras que un candidato de AMVP contiene solo un vector de movimiento para una dirección de predicción e índice de referencia específicos.
[0033] Los candidatos para ambos modos se obtienen de forma similar a partir de los mismos bloques vecinos espaciales y temporales.
[0034] El diseño sub-PU para un códec de vídeo 2D, especialmente el referido a la TMVP avanzada, puede encontrar los siguientes problemas. Se puede lograr un proceso de predicción de vector de movimiento temporal basado en sub
PU definiendo dicho proceso como un candidato adicional, a saber, un candidato de ATMVP. Sin embargo, existen las siguientes cuestiones de diseño para dicho candidato de ATMVP:
1. Aunque un candidato de ATMVP se puede insertar como un candidato adicional como TMVP, no se conoce la posición de dicho candidato de ATMVP, así como tampoco la interacción con el candidato de TMVP para lograr una mayor eficacia de codificación.
2. No está claro cómo definir la disponibilidad del candidato de ATMVP; sería de alta complejidad si todos los vectores de movimiento de todas las sub-PU se verificaran para determinar si un candidato de ATMVP no está disponible y, por tanto, se puede insertar en el candidato de ATMVP.
3. Puede ser necesario el proceso de depuración con un candidato de ATMVP; sin embargo, la depuración con dicho candidato puede ser complicado.
4. Diversos otros detalles de diseño para el candidato de ATMVP para lograr el mejor equilibrio entre la eficacia y la complejidad de codificación siguen siendo desconocidos.
[0035] La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar técnicas para implementar la predicción de vector de movimiento temporal avanzada (ATMVP). Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados que se van a descodificar en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 por medio de un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, equipos telefónicos de mano tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0036] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar por medio del medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que puede transportar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación para habilitar el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación, inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0037] En algunos ejemplos, se pueden emitir datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de varios medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento por medio de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores ejemplares de ficheros incluyen un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0038] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de cualquiera de una variedad de aplicaciones de multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por internet, tales como la transmisión
continua adaptativa dinámica por HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para prestar soporte a una transmisión de vídeo unidireccional o bidireccional, a fin de prestar soporte a aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0039] En el ejemplo de la figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP). En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo externo 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0040] El sistema 10 ilustrado de la figura 1 es simplemente un ejemplo. Las técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP) se pueden realizar por cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se realizan por un dispositivo de codificación de vídeo, las técnicas también se pueden realizar por un codificador/descodificador de vídeo, denominado típicamente como un "CÓDEC". Además, las técnicas de esta divulgación también se pueden realizar por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificación y descodificación de vídeo. De ahí que el sistema 10 pueda prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo o la videotelefonía.
[0041] El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, el origen de vídeo 18 puede generar datos basados en gráficos de ordenador como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o videoteléfonos. Sin embargo, como se menciona anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o cableadas. En cada caso, el codificador de vídeo 20 puede codificar el vídeo capturado, precapturado o generado por ordenador. Después, la información de vídeo codificada se puede emitir por la interfaz de salida 22 a un medio legible por ordenador 16.
[0042] El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusión inalámbrica o una transmisión de red cableada, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Bluray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, por medio de transmisión por red. De forma similar, un dispositivo informático de una instalación de producción de un medio, tal como una instalación de acuñación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
[0043] La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también se usa por el descodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, los GOP. El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0044] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC), ampliaciones a la norma HEVC, o normas posteriores, tal como ITU-T H.266. De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, parte 10, codificación de vídeo avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular.
Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar cada uno integrados con un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y programas informáticos, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ser conformes al protocolo multiplexador ITU H.223 o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0045] El codificador de vídeo 20 y el descodificador de vídeo 30 se pueden implementar cada uno como cualquiera de una variedad de circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), arreglos de compuertas programables en el campo (FPGA), lógica discreta, programas informáticos, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en programas informáticos, un dispositivo puede almacenar instrucciones para el programa informático en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0046] El JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de la HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo, denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes, de acuerdo, por ejemplo, con la norma ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, la HEVC HM puede proporcionar hasta treinta y tres modos de codificación de intrapredicción.
[0047] En general, el modelo de explotación del HM describe que una trama o imagen de vídeo se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU), que incluyen tanto muestras de luminancia como de crominancia. Los datos sintácticos dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la unidad de codificación más grande en términos del número de píxeles. Un corte incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo se puede dividir en uno o más cortes. Cada bloque de árbol se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, con un nodo raíz correspondiente al bloque de árbol. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
[0048] Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU se pueden definir de manera recursiva y pueden depender de si la CU está dividida en sub-CU. Si una CU no está dividida adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hojas, incluso si no existe ninguna división explícita de la CU hoja original. Por ejemplo, si una CU de tamaño 16x16 no se divide adicionalmente, las cuatro sub-CU de 8x8 también se denominarán CU hojas aunque la CU de 16x16 nunca se dividiera.
[0049] Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto porque una CU no tiene una distinción de tamaño. Por ejemplo, un bloque de árbol se puede dividir en cuatro nodos hijos (también denominados sub-CU) y cada nodo hijo puede a su vez ser un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final, no dividido, denominado nodo hoja del árbol cuaternario, comprende un nodo de codificación, también denominado una CU hoja. Los datos sintácticos asociados con un flujo de bits codificado pueden definir un número máximo de veces en que se puede dividir un bloque de árbol, denominada profundidad de CU máxima, y también pueden definir un tamaño mínimo de los nodos de codificación. En consecuencia, un flujo de bits también puede definir la unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para referirse a cualquiera de una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en la H.264/AVC).
[0050] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe tener conformación cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados con una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo de salto o directo, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden dividir para tener una conformación no cuadrada. Los datos sintácticos asociados con una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener una conformación cuadrada o no cuadrada (por ejemplo, rectangular).
[0051] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para CU diferentes. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU dada definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT se pueden denominar unidades de transformada (TU). Los valores de diferencias de píxeles asociados a las TU se pueden transformar para generar coeficientes de transformada, que se pueden cuantificar.
[0052] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada mediante intramodo se pueden incluir datos para la PU en un árbol cuaternario residual (RQT), que puede incluir datos que describen un modo de intrapredicción para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada mediante intermodo, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
[0053] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Las unidades de transformada se pueden especificar usando un RQT (también denominado estructura de árbol cuaternario de TU), como se analiza anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro unidades de transformada. A continuación, cada unidad de transformada se puede dividir adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, se puede denominar una TU hoja. En general, para la intracodificación, todas las TU hojas que pertenecen a una CU hoja comparten el mismo modo de intrapredicción. Es decir, el mismo modo de intrapredicción se aplica en general para calcular valores predichos para todas las TU de una CU hoja. Para la intracodificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de intrapredicción, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que una PU. Para la intracodificación, una PU puede estar coubicada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la CU hoja correspondiente.
[0054] Además, las TU de las CU hojas también se pueden asociar con respectivas estructuras de datos de árbol cuaternario, denominadas árboles cuaternarios residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se divide la CU hoja en las TU. El nodo raíz de un árbol cuaternario de una TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuaternario de CU corresponde en general a un bloque de árbol (o LCU). Las TU del RQT que no están divididas se denominan TU hojas. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique de otro modo.
[0055] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en un encabezado del GOP, un encabezado de una o más de las imágenes, o en otras ubicaciones, que describen una cantidad de imágenes incluidas en el GOP. Cada corte de una imagen puede incluir datos sintácticos de corte que describen un modo de codificación para el corte respectivo. El codificador de vídeo 20 funciona típicamente sobre bloques de vídeo dentro de cortes de vídeo individuales a fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variados y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[0056] En un ejemplo, el HM admite la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una Cu particular es 2Nx2N, el HM admite la intrapredicción en tamaños de PU de 2Nx2N o NxN, y la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida entre un 25 % y un 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una "n" seguida de una indicación de "arriba", "abajo", "izquierda" o "derecha". Por tanto, por ejemplo, "2NxnU" se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente, con una PU de 2Nx0,5N encima y una PU de 2Nx1,5N debajo.
[0057] En esta divulgación, "NxN" y "N por N" se pueden usar de manera intercambiable para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los
píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0058] Tras la codificación intrapredictiva o interpredictiva, usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos sintácticos que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado el dominio de píxel) y las TU pueden comprender coeficientes en el dominio de transformada, tras la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de enteros, una transformada ondícula o una transformada conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU, incluyendo los datos residuales para la CU y, a continuación, transformar las TU para producir coeficientes de transformada para la CU.
[0059] Tras cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos de, o todos, los coeficientes. Por ejemplo, un valor de n bits se puede redondear hacia abajo hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0060] Después de la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración puede estar diseñada para colocar los coeficientes de energía más alta (y, por lo tanto, de frecuencia más baja) en la parte delantera de la matriz y para colocar los coeficientes de energía más baja (y, por lo tanto, de frecuencia más alta) en la parte trasera de la matriz. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados, para producir un vector serializado que se pueda codificar por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos sintácticos asociados con los datos de vídeo codificados, para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[0061] Para realizar la codificación CABAC, el codificador de vídeo 20 puede asignar un contexto, dentro de un modelo de contexto, a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son distintos de cero o no. Para realizar la codificación CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la codificación VLC se pueden construir de modo que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de la codificación VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0062] De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 se pueden configurar para realizar cualquiera de o todas las siguientes técnicas que se muestran en la lista enumerada a continuación, solas o en cualquier combinación:
1. Posición del candidato de ATMVP, si se inserta, por ejemplo, como una lista de candidatos de fusión
a. Supóngase que los candidatos espaciales y el candidato de TMVP se insertan en una lista de candidatos de fusión en un determinado orden. El candidato de ATMVP se puede insertar en cualquier posición relativamente fija de esos candidatos.
i. En una alternativa, por ejemplo, el candidato de ATMVP se puede insertar en la lista de candidatos de fusión después de los dos primeros candidatos espaciales, por ejemplo, A1 y B1;
ii. En una alternativa, por ejemplo, el candidato de ATMVP se puede insertar después de los primeros tres candidatos espaciales, por ejemplo, A1 y B1 y B0;
iii. En una alternativa, por ejemplo, el candidato de ATMVP se puede insertar después de los primeros cuatro candidatos, por ejemplo, A1, B1, B0 y A0.
iv. En una alternativa, por ejemplo, el candidato de ATMVP se puede insertar justo antes del candidato de TMVP.
v. En una alternativa, por ejemplo, el candidato de ATMVP se puede insertar justo después del candidato de TMVP.
b. De forma alternativa, la posición del candidato de ATMVP en la lista de candidatos se puede señalizar en el flujo de bits. Las posiciones de otros candidatos, incluyendo el candidato de TMVP, se pueden indicar adicionalmente.
2. La verificación de disponibilidad del candidato de ATMVP se puede aplicar accediendo a un solo conjunto de información de movimiento. Cuando dicho conjunto de información no está disponible, por ejemplo, estando un bloque intracodificado, se considera que todo el candidato de ATMVP no está disponible. En ese caso, el ATMVP no se insertará en la lista de fusión.
a. Una posición central, o una sub-PU central se usa únicamente para verificar la disponibilidad del candidato de ATMVP. Cuando se usa una sub-PU central, se elige la sub-PU central para que cubra la posición central (por ejemplo, la posición central 3, con una coordenada relativa de (W/2, H/2) a la muestra superior-izquierda de la Pu , en la que WxH es el tamaño de la PU). Dicha posición o sub-PU central se puede usar junto con el vector temporal para identificar un bloque correspondiente en la imagen de origen de movimiento. Se identifica un conjunto de información de movimiento del bloque que cubre la posición central de un bloque correspondiente.
3. Conjunto representativo de información de movimiento para la PU codificada por ATMVP de una sub-PU.
a. Para formar el candidato de ATMVP, primero se forma el conjunto representativo de información de movimiento.
b. Dicho conjunto representativo de información de movimiento se puede derivar de una posición fija o una sub-PU fija. Se puede elegir de la misma manera que la del conjunto de información de movimiento usado para determinar la disponibilidad del candidato de ATMVP, como se describe en la viñeta n.° 2.
c. Cuando una sub-PU ha identificado su propio conjunto de información de movimiento y no está disponible, se establece para que sea igual al conjunto representativo de información de movimiento.
d. Si el conjunto representativo de información de movimiento se establece como una sub-PU, no se necesita almacenamiento de movimiento adicional en el lado del descodificador para la CTU o corte actual en el peor de los casos.
e. Dicho conjunto representativo de información de movimiento se usa en todos los escenarios cuando los procesos de descodificación requieren que toda la PU esté representada por un conjunto de información de movimiento, incluyendo la depuración, de modo que el proceso se use para generar candidatos de fusión bipredictivos combinados.
4. El candidato de ATMVP se depura con el candidato de TMVP y se pueden considerar las interacciones entre TMVP y ATMVP; las técnicas detalladas se enumeran a continuación:
a. La depuración de un candidato basado en sub-PU, por ejemplo, un candidato de ATMVP con un candidato normal, se puede realizar usando el conjunto representativo de información de movimiento (como en la viñeta n.° 3) para dicho candidato basado en sub-PU. Si dicho conjunto de información de movimiento es el mismo que un candidato de fusión normal, los dos candidatos se consideran iguales.
b. De forma alternativa, además, se realiza una verificación para determinar si el ATMVP contiene múltiples conjuntos diferentes de información de movimiento para múltiples sub-Pus; si se identifican al menos dos conjuntos diferentes, el candidato basado en sub-PU no se usa para la depuración, es decir, se considera que es diferente a cualquier otro candidato; de otro modo se puede usar para depurar (por ejemplo, se puede depurar durante el proceso de depuración).
c. De forma alternativa, además, el candidato de ATMVP se puede depurar con los candidatos espaciales, por ejemplo, los candidatos izquierdo y superior solamente, con posiciones indicadas como A1 y B1.
d. De forma alternativa, solo se forma un candidato a partir de la referencia temporal, bien siendo el candidato de ATMVP o el candidato de TMVP. Cuando ATMVP está disponible, el candidato es ATMVP; de otro modo, el candidato es TMVP. Dicho candidato se inserta en la lista de candidatos de fusión en una posición similar a la posición de TMVP. En este caso, el número máximo de candidatos se puede mantener sin cambios.
i. De forma alternativa, TMVP siempre está deshabilitado incluso cuando ATMVP no está disponible.
ii. De forma alternativa, TMVP se usa solo cuando ATMVP no está disponible.
e. De forma alternativa, cuando ATMVP está disponible y TMVP no está disponible, se usa un conjunto de información de movimiento de un sub-PU como candidato de TMVP. En este caso, además, no se aplica el proceso de depuración entre ATMVP y TMVP.
f. De forma alternativa, o adicionalmente, el vector temporal usado para ATMVP también se puede usar para TMVP, de modo que no sea necesario usar la posición inferior derecha o la posición central 3 como se usa para TMVP actual en HEVC.
i. De forma alternativa, la posición identificada por el vector temporal y las posiciones inferior derecha y central 3 se consideran conjuntamente para proporcionar un candidato de TMVP disponible.
5. Se admiten múltiples verificaciones de disponibilidad para ATMVP para dar posibilidades más altas de que el candidato de ATMVP sea más exacto y eficaz. Cuando el candidato de ATMVP actual de la imagen de origen de movimiento identificado por el primer vector temporal (por ejemplo, como se muestra en la figura 9) no está disponible, otras imágenes se pueden considerar como imagen de origen de movimiento. Cuando se considera otra imagen, puede estar asociada con un segundo vector temporal diferente, o puede estar asociada simplemente con un segundo vector temporal ajustado a escala a partir del primer vector temporal que apunta al candidato de ATMVP no disponible.
a. Un segundo vector temporal puede identificar a un candidato de ATMVP en una segunda imagen de origen de movimiento y se puede aplicar la misma verificación de disponibilidad. Si está disponible el candidato de ATMVP según se derive de la segunda imagen de origen de movimiento, se deriva el candidato de ATMVP y no es necesario verificar ninguna otra imagen; de otro modo, se deben verificar otras imágenes como imágenes de origen de movimiento.
b. Las imágenes que se van a verificar pueden ser aquellas en las listas de imágenes de referencia de la imagen actual, con un orden dado. Para cada lista, las imágenes se verifican en el orden ascendente del índice de referencia. La lista X se verifica primero y las imágenes en la lista Y (siendo 1-X) siguen.
i. La lista X se elige de modo que la lista X sea la lista que contiene la imagen coubicada usada para TMVP. ii. De forma alternativa, X simplemente se establece en 1 o 0.
c. Las imágenes que se van a verificar son aquellas identificadas por vectores de movimiento de los vecinos espaciales, con un orden dado.
6. Una división de la PU a la que se aplica la ATMVP actual puede ser 2Nx2N, NxN, 2NxN, Nx2N o divisiones de división de movimiento asimétrico (AMP), tal como 2NxN/2.
a. De forma alternativa, además, si se pueden permitir otros tamaños de división, también se puede admitir ATMVP, y dicho tamaño puede incluir, por ejemplo, 64x8.
b. De forma alternativa, el modo solo se puede aplicar a ciertas divisiones, por ejemplo, 2Nx2N.
7. El candidato de ATMVP se marca como un tipo diferente de candidato de fusión.
8. Al identificar un vector (vector temporal como en la primera fase) a partir de vecinos, se pueden verificar en orden múltiples posiciones vecinas, por ejemplo, aquellas usadas en la construcción de listas de candidatos de fusión. Para cada uno de los vecinos, los vectores de movimiento correspondientes a la lista de imágenes de referencia 0 (lista 0) o la lista de imágenes de referencia 1 (lista 1) se pueden verificar en orden. Cuando hay dos vectores de movimiento disponibles, los vectores de movimiento en la lista X se pueden verificar primero y seguidamente la lista Y (siendo Y igual a 1-X), de modo que la lista X es la lista que contiene la imagen coubicada usada para TMVP. En ATMVP, se usa un vector temporal que se añade como un desplazamiento de cualquier posición central de una sub-PU, en la que puede ser necesario desplazar los componentes del vector temporal a números enteros. Dicha posición central desplazada se usa para identificar una unidad más pequeña a la que se pueden asignar vectores de movimiento, por ejemplo, con un tamaño de 4x4 que cubra la posición central actual.
a. De forma alternativa, los vectores de movimiento correspondientes a la lista 0 se pueden verificar antes que los correspondientes a la lista 1;
b. De forma alternativa, los vectores de movimiento correspondientes a la lista 1 se pueden verificar antes que los correspondientes a la lista 0;
c. De forma alternativa, todos los vectores de movimiento correspondientes a la lista X en todos los vecinos espaciales se verifican en orden, seguidos de los vectores de movimiento correspondientes a la lista Y (siendo Y
igual a 1-X). Aquí, la lista "X" puede ser la lista que indica dónde pertenece la imagen coubicada, o simplemente establecerse en 0 o 1.
d. El orden de los vecinos espaciales puede ser el mismo que el usado en el modo de fusión HEVC.
9. Cuando en la primera fase de identificación de un vector temporal no se incluye información que identifica una imagen de referencia, la imagen de origen de movimiento como se muestra en la figura 9, se puede establecer simplemente para que sea una imagen fija, por ejemplo, la imagen coubicada usada para TMVP.
a. En dicho caso, el vector solo se puede identificar a partir de los vectores de movimiento que apuntan a dicha imagen fija.
b. En dicho caso, el vector solo se puede identificar a partir de los vectores de movimiento que apuntan a cualquier imagen pero además ajustados a escala hacia la imagen fija.
10. Cuando en la primera fase de identificación de un vector consiste en identificar una imagen de referencia, la imagen de origen de movimiento como se muestra en la figura 9, una o más de las siguientes verificaciones adicionales se pueden aplicar para un vector de movimiento candidato.
a. Si el vector de movimiento está asociado con una imagen o corte que está intracodificado, dicho vector de movimiento se considera no disponible y no se puede usar para convertirlo al vector.
b. Si el vector de movimiento identifica un bloque intra (por ejemplo, añadiendo la coordenada central actual con el vector de movimiento) en la imagen asociada, dicho vector de movimiento se considera no disponible y no se puede usar para convertirlo al vector.
11. Cuando se encuentra en la primera fase de identificación de un vector, los componentes del vector se pueden establecer en (mitad del ancho de la PU actual, mitad de la altura de la PU actual), de modo que identifique una posición de píxel inferior derecha en la imagen de origen de movimiento. Aquí (x, y) indica un componente horizontal y vertical de un vector de movimiento.
a. De forma alternativa, los componentes del vector se pueden establecer en (suma(mitad del ancho de la PU actual, M), suma(mitad de la altura de la PU actual, N)) donde la función suma(a, b) devuelve la suma de a y b. En un ejemplo, cuando la información de movimiento se almacena en la unidad 4x4, M y N se establecen ambas para que sean iguales a 2. En otro ejemplo, cuando la información de movimiento se almacena en la unidad 8x8, M y N se establecen ambas para que sean iguales a 4.
12. El tamaño de subbloque/sub-PU cuando se aplica ATMVP se señaliza en un conjunto de parámetros, por ejemplo, conjunto de parámetros de secuencia del conjunto de parámetros de imagen. El tamaño varía desde el tamaño de PU menor hasta el tamaño de la CTU. El tamaño también se puede predefinir o señalizar. El tamaño puede ser, por ejemplo, tan pequeño como 4x4. De forma alternativa, el tamaño del subbloque/sub-PU se puede derivar basado en el tamaño de PU o CU. Por ejemplo, el subbloque/sub-PU se puede establecer igual a max (4x4, (ancho de CU)>> M). El valor de M se puede predefinir o señalizar en el flujo de bits.
13. El número máximo de candidatos a la fusión se puede incrementar en 1 debido al hecho de que ATMVP se puede considerar como un nuevo candidato de fusión. Por ejemplo, en comparación con HEVC, que toma hasta 5 candidatos en una lista de candidatos de fusión después de la depuración, el número máximo de candidatos de fusión se puede incrementar a 6.
a. De forma alternativa, la depuración con el candidato de TMVP convencional o la unificación con el candidato de TMVP convencional se puede realizar para ATMVP de modo que el número máximo de candidatos de fusión se pueda mantener sin cambios.
b. De forma alternativa, cuando se identifica que ATMVP está disponible, un candidato vecino espacial se excluye de la lista de candidatos de fusión, por ejemplo, se excluye el último candidato vecino espacial en orden de obtención.
14. Cuando se considera que múltiples vectores de movimiento vecinos espaciales derivan el vector temporal, se puede calcular una similitud de vector de movimiento basado en los vectores de movimiento vecinos de la PU actual, así como en los vectores de movimiento vecinos identificados por un vector temporal específico que se establece igual a un vector de movimiento. El que dé lugar a la similitud más alta de movimiento se puede elegir como el vector temporal final.
a. En una alternativa, para cada vector de movimiento desde una posición vecina N, el vector de movimiento identifica un bloque (mismo tamaño que la PU actual) en la imagen de origen de movimiento, en el que su posición
vecina N contiene un conjunto de información de movimiento. Este conjunto de vectores de movimiento se compara con el conjunto de información de movimiento como en la posición vecina N del bloque actual.
b. En otra alternativa, para cada vector de movimiento desde una posición vecina N, el vector de movimiento identifica un bloque en la imagen de origen de movimiento, en el que sus posiciones vecinas contienen múltiples conjuntos de información de movimiento. Estos múltiples conjuntos de vectores de movimiento se comparan con los múltiples conjuntos de información de movimiento de las posiciones vecinas de la PU actual en las mismas posiciones relativas. Se calcula una similitud de información de movimiento. Por ejemplo, la PU actual tiene los siguientes conjuntos de información de movimiento de A1, B1, A0 y B0, indicados como MIA1, MIB1, MIA0 y MIB0. Para un vector temporal TV, identifica un bloque correspondiente a la PU en la imagen de origen de movimiento. Dicho bloque tiene información de movimiento de las mismas posiciones relativas A1, B1, A0 y B0, y se indican como TMIA1, TMIB1, TMIA0 y TMIB0. La similitud de movimiento según se determine por TV se calcula como
MStv= X_(Ne{A1,B1,A0,B0})®^MVSim(^MI^_N,^TMI^_N)^', en la que MVSim define la similitud entre dos conjuntos de información de movimiento.
c. En los dos casos anteriores, se puede usar la similitud de movimiento MVSim, en la que los dos parámetros de entrada son los dos conjuntos de información de movimiento, conteniendo cada uno hasta dos vectores de movimiento y dos índices de referencia. Cada par de los vectores de movimiento en la lista X están realmente asociados con imágenes de referencia en diferentes listas X de diferentes imágenes, la imagen actual y la imagen de origen de movimiento. Para cada uno de los dos vectores de movimiento MVXN y TMVXN (siendo X igual a 0 o 1), la diferencia del vector de movimiento MVDXN se puede calcular como MVXN - TMVXN. Después, la
diferencia MVSimX se calcula como, por ejemplo, abs(^MVDX^ _N [0])+ abs( lMVDX^_N [1]), o (^MVDX^_N [0]*
l i MVDX JiJ._N [0]+ ^MVDX _N [1]*l iMVDX J¿ .J_N [1]). Si ambos conjuntos de información de movimiento contienen vectores de movimiento disponibles, MVSim se establece igual a MVSim0 MVSim1.
i. A fin de tener un cálculo unificado de la diferencia de movimiento, ambos vectores de movimiento se deben ajustar a escala hacia la misma imagen fija, que puede ser, por ejemplo, la primera imagen de referencia RefPicListX[0] de la lista X de la imagen actual.
ii. Si la disponibilidad del vector de movimiento en la lista X del primer conjunto y la disponibilidad del vector de movimiento en la lista X del segundo conjunto son diferentes, es decir, un índice de referencia es -1 mientras que el otro no, dichos dos conjuntos de movimiento de la información se consideran no similares en la dirección X. Si los dos conjuntos no son similares en ambos conjuntos, la función MVSim final puede devolver un gran valor T, que se puede, por ejemplo, considerar como infinito.
iii. De forma alternativa, para un par de conjuntos de información de movimiento, si uno se predice de la lista X (siendo X igual a 0 o 1) pero no de la lista Y (siendo Y igual a 1-X) y el otro tiene el mismo estado, se puede usar una ponderación entre 1 y 2 (por ejemplo, MVSim es igual a MVSimX *1.5). Cuando un conjunto solo se predice de la lista X y el otro solo se predice de la lista Y, MVSim se establece en el gran valor T.
iv. De forma alternativa, para cualquier conjunto de información de movimiento, siempre que esté disponible un vector de movimiento, se producirán ambos vectores de movimiento. En el caso de que solo esté disponible un vector de movimiento (correspondiente a la lista X), se ajusta a escala para formar el vector de movimiento correspondiente a la otra lista Y.
d. De forma alternativa, el vector de movimiento se puede medir en base a las diferencias entre los píxeles vecinos de la PU actual y los píxeles vecinos del bloque (mismo tamaño que la PU actual) identificados por el vector de movimiento. El vector de movimiento que da lugar a la diferencia más pequeña se puede elegir como el vector temporal final.
15. Al derivar el vector temporal del bloque actual, los vectores de movimiento y/o vectores temporales de bloques vecinos que están codificados con ATMVP pueden tener una prioridad más alta que los vectores de movimiento de otros bloques vecinos.
a. En un ejemplo, solo los vectores temporales de los bloques vecinos se verifican primero, y el primero disponible se puede establecer en el vector temporal del bloque actual. Solo cuando dichos vectores temporales no están presentes, se verifican además los vectores de movimiento normales. En este caso, los vectores temporales para bloques codificados por ATMVP se deben almacenar.
b. En otro ejemplo, solo los vectores de movimiento de los bloques vecinos codificados por ATMVP se verifican primero, y el primero disponible se puede establecer en el vector temporal del bloque actual. Solo cuando dichos vectores temporales no están presentes, se verifican además los vectores de movimiento normales.
c. En otro ejemplo, solo los vectores de movimiento de los bloques vecinos codificados por ATMVP se verifican primero, y el primero disponible se puede establecer en el vector temporal del bloque actual. Si dichos vectores de movimiento no están disponibles, la verificación del vector temporal continúa de manera similar a la viñeta 15a.
d. En otro ejemplo, los vectores temporales de los bloques vecinos se verifican primero, el primero disponible se puede establecer en el vector temporal del bloque actual. Si dichos vectores de movimiento no están disponibles, la verificación del vector temporal continúa de manera similar a la viñeta 15b.
e. En otro ejemplo, los vectores temporales y los vectores de movimiento de los bloques vecinos codificados por ATMVP se verifican primero, el primero disponible se puede establecer en el vector temporal del bloque actual. Solo cuando dichos vectores temporales y vectores de movimiento no están presentes, se verifican además los vectores de movimiento normales.
16. Cuando se considera que múltiples vectores de movimiento vecinos espaciales derivan el vector temporal, se puede elegir un vector de movimiento de modo que minimice la distorsión que se calcula a partir del dominio de píxel, por ejemplo, se puede usar la equiparación entre plantillas para derivar el vector temporal de modo que se selecciona el que dé lugar a un coste de equiparación mínimo como el vector temporal final.
17. La derivación de un conjunto de información de movimiento a partir de un bloque correspondiente (en la imagen de origen de movimiento) se realiza de manera que cuando un vector de movimiento esté disponible en el bloque correspondiente para cualquier lista X (indica que el vector de movimiento sea MVX), para la sub-PU actual del candidato de ATMVP, el vector de movimiento se considera como disponible para la lista X (ajustando a escala el MVX). Si el vector de movimiento no está disponible en el bloque correspondiente para cualquier lista X, se considera que el vector de movimiento no está disponible para la lista X.
a. De forma alternativa, cuando el vector de movimiento en el bloque correspondiente no está disponible para la lista X pero está disponible para la lista 1 - X (indicado 1 - X por Y e indica que el vector de movimiento sea MVY), el vector de movimiento todavía se considera disponible para la lista X (ajustando a escala el MVY hacia la imagen de referencia diana en la lista X).
b. De forma alternativa, o además, cuando ambos vectores de movimiento en el bloque correspondiente para la lista X y la lista Y (igual a 1 -X) están disponibles, los vectores de movimiento de la lista X y de la lista Y no se usan necesariamente para ajustar a escala y generar los dos vectores de movimiento de una sub-PU actual mediante ajuste a escala.
i. En un ejemplo, al formular el candidato de ATMVP, la verificación de bajo retardo como se hace en TMVP se aplica a cada sub-PU. Si para cada imagen (indicada por refPic) en cada lista de imágenes de referencia del corte actual, el valor del recuento de orden de imagen (POC) de refPic es más pequeño que el POC del corte actual, el corte actual se considera con modo de bajo retardo. En este modo de bajo retardo, los vectores de movimiento de la lista X y de la lista Y se ajustan a escala para generar los vectores de movimiento de una sub-PU actual para la lista X y la lista Y, respectivamente. Cuando no está en el modo de bajo retardo, solo se elige un vector de movimiento MVZ de MVX o MVY y se ajusta a escala para generar los dos vectores de movimiento para una sub-PU actual. Similar a TMVP, en dicho caso Z se establece igual a collocated_from_10_flag, lo que significa que depende de si la imagen coubicada como en TMVP está en la lista X o en la lista Y de la imagen actual. De forma alternativa, Z se establece como sigue: si la imagen de origen de movimiento se identifica a partir de la lista X, se establece Z en X. De forma alternativa, además, cuando las imágenes de origen de movimiento pertenecen a ambas listas de imágenes de referencia, y RefPicList0[idx0] es la imagen de origen de movimiento que está presente primero en la lista 0 y RefPicList(1)[idx1] es la imagen de origen de movimiento que está presente primero en la lista 1, se establece Z en 0 si idxO es más pequeño o igual que idx1, y de otro modo se establece en 1.
18. La imagen de origen de movimiento se puede señalizar, por ejemplo, generada por el codificador de vídeo 20 en un flujo de bits codificado. En detalle, un indicador que indica si la imagen de origen de movimiento es de la lista 0 o de la lista 1 se señaliza para un corte B. De forma alternativa, además, se puede señalizar un índice de referencia a una lista 0 o a una lista 1 de la imagen actual para identificar la imagen de origen de movimiento.
19. Al identificar un vector temporal, se considera que un vector no está disponible (por tanto, se pueden considerar otros) si apunta a un bloque intracodificado en la imagen de origen de movimiento asociada.
[0063] La implementación de las diversas técnicas de esta divulgación se analiza a continuación. Se supone que la ATMVP se implementa encima de la versión 1 de HEVC. Puede que no se aplique la compresión de movimiento a imágenes de referencia y se pueden habilitar bloques más pequeños con compensación de movimiento bidireccional.
[0064] Señalización de ATMVP en SPS:
atmvp_sub_pu_size puede estar presente en SPS.
atmvp_sub_pu_size puede especificar el tamaño de las sub-PU de una PU codificada con el modo ATMVP. Es en el intervalo de 2 a 6, inclusive. El tamaño de sub-PU para ATMVP, (spuWidth, spuHeight) se deriva como min (w, 1<< atmvp_sub_pu_size) by min(h, 1<< atmvp_sub_pu_size), en la que w x h es el tamaño de una PU actual.
[0065] De forma alternativa, tanto el ancho como la altura de los tamaños de sub-PU se señalizan por separado en SPS.
[0066] De forma alternativa, los tamaños de sub-PU se señalizan frente al tamaño de la CTU o el tamaño de unidad de codificación más pequeño.
[0067] Se deriva una variable atmvpEnableFlag para que sea igual a 1 si atmvp_sub_pu_size es más pequeño que un tamaño de CTU (por ejemplo, 6 como en la versión 1 de HEVC), y 0, de otro modo.
[0068] Señalización de ATMVP en el encabezado del corte: five_minus_max_num_merge_cand especifica el número máximo de candidatos MVP de fusión admitidos en el corte restado de 5. El número máximo de candidatos MVP de fusión, MaxNumMergeCand se deriva como:
MaxNumMergeCand = (atmvpEnableFlag? 6: 5) -f ivem in usm axnum m ergecand (7-41)
[0069] El valor de five_minus_max_num_merge_cand se limitará de modo que MaxNumMergeCand esté en el intervalo de 1 a (atmvpEnableFlag? 6: 5), inclusive.
[0070] De forma alternativa, five_minus_max_num_merge_cand se cambia a six_minus_max_num_merge_cand y la semántica es como sigue:
six_minus_max_num_merge_cand especifica el número máximo de candidatos MVP de fusión admitidos en el corte restado de 6. El número máximo de candidatos MVP de fusión, MaxNumMergeCand se deriva como MaxNumMergeCand = 6 - six_minus_max_num_merge_cand (7-41)
[0071] De forma alternativa, max_num_merge_cand_minus1 se señaliza directamente.
[0072] En algunos ejemplos, otros cambios sintácticos son innecesarios, y un candidato de ATMVP se identifica mediante un idx de fusión, que puede estar en el intervalo de 0 a 5, inclusive.
[0073] Procesos de descodificación relacionados con ATMVP: Los siguientes procesos de descodificación se pueden implementar, por ejemplo, mediante el descodificador de vídeo 30, para formular un candidato de ATMVP e incluirlo como parte de la lista de candidatos de fusión:
[0074] Identificación del vector temporal de la primera fase:
[0075] Establecer la variable mtSrcPOC en el valor POC de la imagen coubicada usada en TMVP, tV en un vector cero y atmvpAvaFlag se establece en 0.
[0076] Para cada una de las posiciones N de las posiciones vecinas espaciales, siendo A1, B1, B0, A0 y B2, se aplica lo siguiente:
• dir se establece igual a collocated_from_10_flag;
• Para X siendo igual a dir a través de (1 -dir), inclusive, si el corte actual es un corte B, o simplemente X siendo igual a 0 si el corte actual no es un corte B, se aplica lo siguiente:
◦ Cuando el bloque vecino N está disponible y no está intracodificado, y RefIdxX[N] es mayor o igual a 0 (indica que MVLX[N] y RefIdxX[N] son el vector de movimiento y el índice de referencia del bloque vecino N correspondiente a RefPicListX), se aplican las siguientes etapas en orden:
■ mtSrcPOC se establece igual al valor POC de RefPicListX[ RefIdxX[N]];
■ tV se establece igual a MVLX[N];
■ atmvpAvaFlag se establece en 1;
■ terminar este proceso.
[0077] Identificación de un origen de movimiento disponible:
Establecer una lista de imágenes para que sea CanPicATMVP para que sea una lista vacía.
CanPicATMVP[0] se establece para que sea la imagen con un valor POC igual a mtSrcPOC. i se establece igual a 1;
MotionSrcPic es una imagen vacía y se puede actualizar como se especifica a continuación.
[0078] Para cada una de la lista X de imágenes de referencia disponibles, se aplica lo siguiente:
• dir se establece igual a collocated_from_10_flag;
◦ Para X siendo igual a dir a través de (1 -dir), inclusive, si el corte actual es un corte B, o simplemente X siendo igual a 0 si el corte actual no es un corte B, se aplica lo siguiente:
◦ Para cada idx desde 0 hasta num_ref_active_1X_minus1;
■ CanPicATMVP[i++] = RefPicListX[idx];
[0079] Dejar que (CurrPosX, CurrPosY) sea la coordenada de la posición de píxel superior izquierda de la PU actual.
[0080] Para n siendo igual a 0 hasta i, inclusive, se aplica lo siguiente.
• Si n no es igual a 0, ajustar a escala el tV hacia la imagen CanPicATMVP[n] para obtener un tScaledVector, en el que las imágenes pertinentes para el tV son la imagen actual y la CanPicATMVP[0], y las imágenes pertinentes para el vector de destino tScaledVector son la imagen actual y la CanPicATMVP[i];
• De otro modo (n es igual a 0), tScaledVector se establece igual a tV.
• Obtener la información de movimiento del bloque correspondiente a la sub-PU central de CanPicATMVP[n] como sigue:
◦ centerPosX =CurrPosX+= ((tScaledVector[0] 2)>>2);
◦ centerPosY =CurrPosY+= ((tScaledVector[1] 2)>>2);
◦ Dejar que (centerPosX, centerPosY) sea la posición que identifica el bloque correspondiente de la sub-PU central y el tamaño de la PU actual para que sea ancho por alto.
◦ centerPosX = CurrPosX + ((width / spuWidth) >> 1) * spuWidth (min(spuWidth, width) >> 1) ;
◦ centerPosY = CurrPosX + ((height/spuHeight) >> 1) * spuHeight (min(spuHeight, height) >> 1) ;
◦ Invocar el proceso de obtención de información de movimiento que toma la información de movimiento, con una imagen mtnSrcPic siendo igual a CanPicATMVP[n], y una posición (posX, posY) siendo igual a (centerPosX, centerPosY) como entrada y un indicador disponible de movimiento de sub-PU SubPuMtnAvaFlag, un par de índices de referencia sColRefldx0 y sColRefIdx1, y un par de vectores de movimiento, sColMVO, sColMV1 como salida.
◦ Si SubPuMtnAvaFlag es igual a 1, se aplica lo siguiente:
■ MotionSrcPic se establece en CanPicATMVP[n]
■ tV se establece para ser tScaledVector
■ terminar este bucle.
[0081] Proceso de obtención de información de movimiento:
La entrada de este proceso es una imagen mtnSrcPic y una posición (posX, posY) con la imagen, y la salida de este proceso es el indicador disponible de movimiento mtnAvaFlag, un par de índices de referencia refIdx0 y refIdx1, y un par de vectores de movimiento, mv0, mv1.
La (posX, posY) se recorta primero para estar dentro de la imagen mtnSrcPic.
Se identifica el bloque 4x4 (u otro tamaño más pequeño que almacena información de movimiento) blkT, que contiene la posición (posX, posY).
mtnAvaFlag se establece igual a 0.
Si blkT no está intracodificado y su información de movimiento contiene blkTRefldxO, blkTRefIdx1, blkTMvO y blkTMv1, se aplica lo siguiente.
• Cuando blkTRefldxO o blkTRefldxl es mayor o igual a 0, mtnAvaFlag se establece igual a 1 y lo siguiente se aplica para X siendo igual a 0 y 1.
◦ refldxX se establece igual a blkTRefldxX
◦ mvX se establece igual a blkTMvX
[0082] Generación de movimiento sub-PU para ATMVP:
Si SubPuMtnAvaFlag es igual a 1, se invoca el siguiente proceso:
• Para cada uno de los sub-PU (por ejemplo, en orden de exploración ráster), se aplica lo siguiente.
◦ Indicar el índice horizontal y el índice vertical de la sub-PU actual como k y 1 respectivamente, en el que k varía de 0 a width/spuWidth-1, inclusive y 1 varía de 0 a height/spuHeight-1, inclusive. Por ejemplo, si una PU de 16x16 se divide en cuatro sub-PU de 8x8, los valores (k, 1) de las cuatro sub-PU en orden de exploración ráster son (0, 0), (1, 0), (0, 1 ) y (1, 1) respectivamente.
◦ Las coordenadas de Sub-PU (tempPosX, tempPosY) se calculan como (tempPosX, tempPosY) = (CurrPosX, CurrPosY) (k * spuWidth, l * spuHeight).
◦ tempPosX += ((tV[0] + 2)>>2);
◦ tempPosY += ((tV[1] + 2)>>2);
◦ Invocar el proceso de obtención de información de movimiento que toma la información de movimiento, con una imagen mtnSrcPic siendo igual a MotionSrcPic, y una posición (posX, posY) siendo igual a (tempPosX, tempPosY) como entrada y un indicador de movimiento sub-PU disponible currSubPuMtnAvaFlag, un par de índices de referencia currSubRefIdx0 y currSubRefIdx1, y un par de vectores de movimiento, currSubMV0, currSubMV1 como salida.
◦ Cuando currSubPuMtnAvaFlag es igual a 0, para X igual a 0 y 1, inclusive, currSubRefIdxX se establece igual a cColRefIdxXy currSubMVX se establece igual a cColMVX.
◦ Para X siendo igual a 0 y 1, inclusive, ajustar a escala el vector de movimiento currSubMVX hacia la imagen de referencia diana predeterminada de la imagen actual, que es RefPicLstX[0], similar a TMVP. Indicar el índice de referencia derivado y el vector de movimiento para la sub-PU actual como cSpuRefldxX y cSpuMVX y se derivan como sigue:
■ cSpuRefldxX =(currSubRefIdxX>=0 ? 0: -1):
■ cSpuMVX se establece para ser el vector ajustado a escala de currSubMVX, similar a TMVP.
[0083] El conjunto representativo de información de movimiento, aRefldxX y aMVX (para X siendo igual a 0 o 1) para este candidato de ATMVP se deriva como sigue:
• aRefldxX =( cColRefldxX >=0 ? 0: -1):
• aMVX se establece para ser el vector ajustado a escala de cColMVX, similar a TMVP.
De forma alternativa, el proceso de obtención de movimiento y el proceso de ajuste a escala de movimiento son los mismos (o similares) que en TMVP de HETlC versión 1, es decir, la subcláusula 8.5.3.2.8 de HETlC versión 1: "Derivation process for collocated motion vectors" se aplica para reemplazar el texto resaltado en esta subsección. En este caso, el proceso de obtención de movimiento y ajuste a escala de movimiento como en TMVP (subcláusula 8.5.3.2.8) reemplaza el proceso de obtención de movimiento y el proceso de ajuste a escala de movimiento definidos anteriormente (incluyendo lo indicado por el texto en cursiva).
[0084] Inserción del candidato de ATMVP en una lista de candidatos de fusión:
[0085] Cuando SubPuMtnAvaFlag es igual a 1, el candidato de ATMVP se inserta en el candidato de fusión después de que el candidato A0 (o de forma alternativa B0j se someta a prueba y posiblemente se inserte en la lista de candidatos de fusión.
[0086] Se considera que la información de movimiento para este candidato está formada por aRefldxX y aMVX (con X siendo igual a 0 o 1).
[0087] Cuando el candidato de TMVP está disponible, se compara además con la información representativa del candidato de ATMVP (aRefldxX y aMVX); solo si el candidato de TMVP tiene un refldxX que no es igual a aRefldxX o un vector de movimiento que no es igual a aMVX (siendo X igual a 0 o 1), se inserta además en la lista de candidatos a la fusión.
[0088] Cuando todos los candidatos, incluyendo el candidato de ATMVP, se consideran de forma transparente como representados por un solo conjunto de información de movimiento (hasta dos índices de referencia y dos vectores de movimiento asociados), se usa la información representativa para el candidato de ATMVP. Por ejemplo, en el proceso de derivación para candidatos de fusión bipredictivos combinados, se usa la información de movimiento representativa de la ATMVP.
[0089] Además, cada candidato de fusión se adjunta con una marca (puede ser un indicador o un tipo) que indica si dicho candidato es un candidato de ATMVP.
[0090] Además, para un candidato de ATMVP, los conjuntos de información de movimiento, indicados anteriormente como cSpuRefldxX y cSpuMVX para X siendo igual a 0 y 1 y para cada sub-PU se deben almacenar para que el PU actual se descodifique.
[0091] Compensación de movimiento basada en el candidato de ATMVP: Cuando una PU actual se codifica con el modo de fusión y merge_idx especificó un candidato indicado como candidato de ATMVP, para cada sub-PU, se deriva la información de movimiento cSpuRefldxX y cSpuMVX (para X siendo igual a 0 y 1) y se usa para realizar compensación de movimiento por el sub-PU actual. Después de realizar la compensación de movimiento, la descodificación residual y otros procesos se realizan de la misma manera que otros modos inter.
[0092] Además, el codificador de vídeo 20 puede enviar datos sintácticos, tales como datos sintácticos basados en bloques, datos sintácticos basados en tramas y datos sintácticos basados en GOP, al descodificador de vídeo 30, por ejemplo, en un encabezado de trama, un encabezado de bloque, un encabezado de corte o un encabezado de g Op . Los datos sintácticos de GOP pueden describir una cantidad de tramas en el GOP respectivo, y los datos sintácticos de trama pueden indicar un modo de codificación/predicción usado para codificar la trama correspondiente.
[0093] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden implementar como cualquiera de una variedad de circuitos codificadores o descodificadores adecuados, según sea aplicable, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), arreglos de compuertas programables en el campo (FPGA), circuitos de lógica discreta, programas informáticos, hardware, firmware o cualquier combinación de los mismos. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) de vídeo combinado. Un dispositivo que incluye el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0094] La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP). El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de bloques de vídeo dentro de cortes de vídeo. La intracodificación se basa en la predicción espacial para reducir o retirar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dado. La intercodificación se basa en la predicción temporal para reducir o retirar la redundancia temporal en el vídeo dentro de tramas o imágenes contiguos de una secuencia de vídeo. Intramodo (modo I) se puede referir a cualquiera de varios modos de codificación de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de codificación de base temporal.
[0095] Como se muestra en la figura 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de selección de modo 40, una memoria de imágenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. A su vez, la unidad de selección de modo 40 incluye la unidad de compensación de movimiento 44, la unidad de estimación de movimiento 42, la unidad de intrapredicción 46 y la unidad de división 48. Para la reconstrucción de bloques de vídeo, el codificador
de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la figura 2) para filtrar fronteras de bloques, para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará habitualmente la salida del sumador 62. También se pueden usar filtros adicionales (en el bucle o tras el bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en el bucle).
[0096] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un corte de vídeo que se va a codificar. La trama o el corte se pueden dividir en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan la codificación interpredictiva del bloque de vídeo recibido con respecto a uno o más bloques en una o más tramas de referencia para proporcionar predicción temporal. La unidad de intrapredicción 46, de forma alternativa, puede llevar a cabo la codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques vecinos en la misma trama o corte que el bloque que se va a codificar para proporcionar predicción espacial. El codificador de vídeo 20 puede realizar múltiples pases de codificación, por ejemplo, para seleccionar un modo adecuado de codificación para cada bloque de datos de vídeo.
[0097] Además, la unidad de división 48 puede dividir bloques de datos de vídeo en subbloques, basado en la evaluación de los esquemas de división previos en los pases de codificación previos. Por ejemplo, la unidad de división 48 puede dividir inicialmente una trama o un corte en varias LCU, y dividir cada una de las LCU en varias sub-CU, basado en un análisis de velocidad-distorsión (por ejemplo, una optimización de velocidad-distorsión). La unidad de selección de modo 40 puede producir además una estructura de datos de árbol cuaternario, indicativa de la división de una LCU en las sub-CU. Las CU de nodos hojas del árbol cuaternario pueden incluir una o más PU y una o más TU.
[0098] La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basado en los resultados de errores, y proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos sintácticos, tales como vectores de movimiento, indicadores de intramodo, información de división y otra información sintáctica de este tipo, a la unidad de codificación por entropía 56.
[0099] La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación del movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se encuentra como estrechamente coincidente con el bloque que se va a codificar, en lo que respecta a la diferencia de píxeles, lo cual se puede determinar mediante la suma de diferencia absoluta (SAD), la suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento con respecto a las posiciones de píxel completo y las posiciones de píxel fraccionario, y emitir un vector de movimiento con una precisión de píxel fraccionario.
[0100] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un corte intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar a partir de una primera lista (lista 0) de imágenes de referencia o una segunda lista (lista 1) de imágenes de referencia, cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0101] La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento 44, puede implicar obtener o generar el bloque predictivo basado en el vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 se pueden integrar funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, generando valores de diferencias de píxel, como se expone más adelante. En general, la unidad de estimación de movimiento 42 realiza la estimación de movimiento con respecto a los componentes de luma, y la unidad de compensación de movimiento 44 usa los vectores de movimiento calculados en base a los componentes de luma, tanto para los componentes de croma como para los componentes de luma. La unidad de selección de modo
40 también puede generar elementos sintácticos asociados a los bloques de vídeo y al corte de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del corte de vídeo.
[0102] El codificador de vídeo 20 se puede configurar para realizar cualquiera de las diversas técnicas de esta divulgación analizadas anteriormente con respecto a la figura 1. Por ejemplo, la unidad de compensación de movimiento 44 se puede configurar para codificar información de movimiento para un bloque de datos de vídeo usando AMVP o modo de fusión de acuerdo con las técnicas de esta divulgación.
[0103] Suponiendo que la unidad de compensación de movimiento 44 elige realizar el modo de fusión, la unidad de compensación de movimiento 44 puede formar una lista de candidatos que incluye un conjunto de candidatos de fusión. La unidad de compensación de movimiento 44 puede añadir candidatos a la lista de candidatos basado en un orden predeterminado particular. En un ejemplo, la unidad de compensación de movimiento 44 añade los candidatos a la lista de candidatos en el orden de A1, B1, B0, A0, a continuación un candidato de predicción de vector de movimiento temporal avanzada (ATMVP). La unidad de compensación de movimiento 44 también puede añadir candidatos adicionales y realizar la depuración de la lista de candidatos, como se analiza anteriormente. Finalmente, la unidad de selección de modo 40 puede determinar cuál de los candidatos se usará para codificar información de movimiento del bloque actual, y codificar un índice de fusión que representa el candidato seleccionado.
[0104] Además, en algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar primero si el candidato de ATMVP está disponible. Por ejemplo, la unidad de compensación de movimiento puede determinar un bloque correspondiente al bloque actual en una imagen de referencia y determinar si está disponible la información de movimiento para el bloque correspondiente. La unidad de compensación de movimiento 44 puede a continuación determinar que el candidato de ATMVP (es decir, el bloque correspondiente) está disponible cuando la información de movimiento está disponible para el bloque correspondiente. En algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar que la información de movimiento está disponible para el bloque correspondiente cuando se predice todo el bloque correspondiente (por ejemplo, un bloque de posición central, como se muestra en la figura 5a a continuación) sin el uso de la intrapredicción, pero no está disponible cuando al menos parte del bloque correspondiente se predice usando la intrapredicción.
[0105] De manera similar, en algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar cuál de los dos candidatos de ATMVP potenciales se debe usar como el candidato de ATMVP finalmente añadido a la lista de candidatos. Por ejemplo, la unidad de compensación de movimiento 44 puede formar un primer vector de movimiento temporal con respecto al bloque actual que identifica un primer candidato de ATMVP en una primera imagen de origen de movimiento, es decir, una primera imagen de referencia. Si la información de movimiento no está disponible para el primer candidato de ATMVP, la unidad de compensación de movimiento 44 puede determinar si la información de movimiento está disponible para un segundo candidato de ATMVP diferente. El segundo candidato de ATMVP se puede identificar usando el mismo vector de movimiento temporal que se refiere a una segunda imagen de referencia diferente, un vector de movimiento temporal diferente que se refiere a la misma (es decir, la primera) imagen de referencia, o un vector de movimiento temporal diferente que se refiere a la segunda, imagen de referencia diferente. Las imágenes de referencia que se van a verificar, como se analiza anteriormente, pueden estar en orden ascendente de índices de referencia en una lista de imágenes de referencia. Del mismo modo, si se usan diferentes vectores de movimiento temporal, los vectores de movimiento temporal se pueden seleccionar en un orden predeterminado a partir de vectores temporales de bloques vecinos al bloque actual.
[0106] Además, la unidad de compensación de movimiento 44 puede determinar si un vector de movimiento está disponible para una sub-PU en el candidato de ATMVP para una lista de imágenes de referencia particular. Si es así, se considera que el vector de movimiento está disponible para esa lista de imágenes de referencia. De otro modo, se considera que el vector de movimiento no está disponible para esa lista de imágenes de referencia. De forma alternativa, si hay un vector de movimiento disponible para la otra lista de imágenes de referencia, la unidad de compensación de movimiento 44 puede modificar la información de movimiento ajustando a escala el vector de movimiento para apuntar a una imagen de referencia diana en la primera lista de imágenes de referencia, como se analiza anteriormente.
[0107] La unidad de intrapredicción 46 puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se analiza anteriormente. En particular, la unidad de intrapredicción 46 puede determinar un modo de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación independientes, y la unidad de intrapredicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción adecuada a usar de los modos sometidos a prueba.
[0108] Por ejemplo, la unidad de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción sometidos a prueba, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión de los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o de errores) entre un bloque codificado y un bloque original, no codificado, que se codificó para producir el bloque codificado, así como una
velocidad de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de intrapredicción 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0109] Después de seleccionar un modo de intrapredicción para un bloque, la unidad de intrapredicción 46 puede proporcionar información, indicativa del modo de intrapredicción seleccionado para el bloque, a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intrapredicción seleccionado. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices de el modo de intrapredicción y una pluralidad de tablas de índices de el modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices de el modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada, a usar para cada uno de los contextos.
[0110] El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada discreta de coseno (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de procesamiento de transformada 52 puede realizar otras transformadas que son conceptualmente similares a la DCT. También se podrían usar transformadas de ondículas, transformadas de números enteros, transformadas de subbandas u otros tipos de transformadas.
[0111] En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valores de píxel a un dominio de transformada, tal como un dominio de frecuencia. La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos de, o todos, los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0112] Tras la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa el contexto (CABAC), la codificación aritmética binaria adaptativa el contexto basada en sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en el contexto, el contexto se puede basar en bloques vecinos. Tras la codificación por entropía por parte de la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
[0113] La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para su uso posterior como bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de imágenes de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores fraccionarios de píxeles, para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, producido por la unidad de compensación de movimiento 44, para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de imágenes de referencia 64. El bloque de vídeo reconstruido puede ser usado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
[0114] De esta manera, el codificador de vídeo 20 de la figura 2 representa un ejemplo de un codificador de vídeo configurado para formar, para un bloque actual de los datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales desde cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0115] La figura 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar técnicas para la predicción de vector de movimiento temporal avanzada (ATMVP). En el ejemplo de la
figura 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria de imágenes de referencia 82 y un sumador 80. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 (figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción basado en vectores de movimiento recibidos desde la unidad de descodificación por entropía 70, mientras que la unidad de intrapredicción 74 puede generar datos de predicción basado en indicadores de modo de intrapredicción, recibidos desde la unidad de descodificación por entropía 70.
[0116] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado, que representa bloques de vídeo de un corte de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad de descodificación por entropía 70 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción y otros elementos sintácticos. La unidad de descodificación por entropía 70 reenvía los vectores de movimiento y otros elementos sintácticos a la unidad de compensación de movimiento 72. El descodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel de corte de vídeo y/o el nivel de bloque de vídeo.
[0117] Cuando el corte de vídeo se codifica como un corte intracodificado (I), la unidad de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual basado en un modo de intrapredicción señalizado y en datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un corte intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 72 genera bloques predictivos para un bloque de vídeo del corte de vídeo actual basado en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 70. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas, basado en imágenes de referencia almacenadas en la memoria de imágenes de referencia 82.
[0118] La unidad de compensación de movimiento 72 determina la información de predicción para un bloque de vídeo del corte de vídeo actual, analizando sintácticamente los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de interpredicción (por ejemplo, un corte B, un corte P o un corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo intercodificado del corte, el estado de interpredicción para cada bloque de vídeo intercodificado del corte y otra información para descodificar los bloques de vídeo en el corte de vídeo actual.
[0119] La unidad de compensación de movimiento 72 también puede realizar la interpolación basada en filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para producir bloques predictivos.
[0120] El descodificador de vídeo 30 se puede configurar para realizar cualquiera de las diversas técnicas de esta divulgación analizadas anteriormente con respecto a la figura 1. Por ejemplo, la unidad de compensación de movimiento 72 se puede configurar para determinar si la información de movimiento para un bloque de datos de vídeo se codifica usando AMVP o modo de fusión de acuerdo con las técnicas de esta divulgación. Más en particular, la unidad de descodificación por entropía 70 puede descodificar uno o más elementos sintácticos que representan cómo se codifica la información de movimiento para el bloque actual.
[0121] Suponiendo que los elementos sintácticos indican que se realiza el modo de fusión, la unidad de compensación de movimiento 72 puede formar una lista de candidatos que incluye un conjunto de candidatos de fusión. La unidad de compensación de movimiento 72 puede añadir candidatos a la lista de candidatos basado en un orden predeterminado particular. En un ejemplo, la unidad de compensación de movimiento 72 añade los candidatos a la lista de candidatos en el orden de A1, B1, B0, A0, a continuación un candidato de predicción de vector de movimiento temporal avanzada (ATMVP). La unidad de compensación de movimiento 72 también puede añadir candidatos adicionales y realizar la depuración de la lista de candidatos, como se analiza anteriormente. Finalmente, la unidad de compensación de movimiento 72 puede descodificar un índice de fusión que representa qué candidato se usa para codificar información de movimiento para el bloque actual.
[0122] Además, en algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar primero si está disponible el candidato de ATMVP. Por ejemplo, la unidad de compensación de movimiento puede determinar un bloque correspondiente al bloque actual en una imagen de referencia y determinar si está disponible la información de movimiento para el bloque correspondiente. La unidad de compensación de movimiento 72 puede a continuación
determinar que está disponible el candidato de ATMVP (es decir, el bloque correspondiente) cuando está disponible la información de movimiento para el bloque correspondiente. En algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar que está disponible la información de movimiento para el bloque correspondiente cuando se predice todo el bloque correspondiente sin el uso de intrapredicción, pero no está disponible cuando al menos parte del bloque correspondiente se predice usando la intrapredicción.
[0123] De forma similar, en algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar cuál de los dos candidatos de ATMVP potenciales se debe usar como el candidato de ATMVP finalmente añadido a la lista de candidatos. Por ejemplo, la unidad de compensación de movimiento 72 puede formar un primer vector de movimiento temporal con respecto al bloque actual que identifica un primer candidato de ATMVP en una primera imagen de origen de movimiento, es decir, una primera imagen de referencia. Si no está disponible la información de movimiento para el primer candidato de ATMVP, la unidad de compensación de movimiento 72 puede determinar si está disponible la información de movimiento para un segundo candidato de ATMVP diferente. El segundo candidato de ATMVP se puede identificar usando el mismo vector de movimiento temporal que se refiere a una segunda imagen de referencia diferente, un vector de movimiento temporal diferente que se refiere a la misma (es decir, la primera) imagen de referencia, o un vector de movimiento temporal diferente que se refiere a la segunda, imagen de referencia diferente. Las imágenes de referencia que se van a verificar, como se analiza anteriormente, pueden estar en orden ascendente de índices de referencia en una lista de imágenes de referencia. Del mismo modo, si se usan diferentes vectores de movimiento temporal, los vectores de movimiento temporal se pueden seleccionar en un orden predeterminado a partir de vectores temporales de bloques vecinos al bloque actual.
[0124] Además, la unidad de compensación de movimiento 72 puede determinar si un vector de movimiento está disponible para una sub-PU en el candidato de ATMVP para una lista de imágenes de referencia particular. Si es así, se considera que el vector de movimiento está disponible para esa lista de imágenes de referencia. De otro modo, se considera que el vector de movimiento no está disponible para esa lista de imágenes de referencia. De forma alternativa, si un vector de movimiento está disponible para la otra lista de imágenes de referencia, la unidad de compensación de movimiento 72 puede modificar la información de movimiento ajustando a escala el vector de movimiento para apuntar a una imagen de referencia diana en la primera lista de imágenes de referencia, como se analiza anteriormente.
[0125] La unidad de cuantificación inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por entropía por la unidad de descodificación por entropía 70. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación q Py , calculado por el descodificador de vídeo 30 para cada bloque de vídeo en el corte de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debería aplicar.
[0126] La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de generar bloques residuales en el dominio de píxel.
[0127] Después de que la unidad de compensación de movimiento 72 genere el bloque predictivo para el bloque de vídeo actual basado en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de transformada inversa 78 a los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 72. El sumador 80 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados, a fin de retirar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (bien en el bucle de codificación o bien después del bucle de codificación) para allanar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de imágenes de referencia 82, que almacena imágenes de referencia usadas para una compensación de movimiento posterior. La memoria de imágenes de referencia 82 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1.
[0128] De esta manera, el descodificador de vídeo 30 representa un ejemplo de un codificador de vídeo configurado para formar, para un bloque actual de los datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales desde cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0129] La figura 4 es un diagrama conceptual que ilustra candidatos vecinos espaciales en HEVC. Los candidatos de m V espaciales se derivan de los bloques vecinos que se muestran en la figura 4, para una PU específica (PU0), aunque los procedimientos para generar los candidatos a partir de los bloques difieren para los modos de fusión y de AMVP.
[0130] En el modo de fusión, se pueden derivar hasta cuatro candidatos de MV espaciales con los órdenes mostrados en la figura 4(a) con números, y el orden es el siguiente: izquierda (0, A1), superior (1, B1), superior derecha (2, B0), inferior izquierda (3, A0) y arriba izquierda (4 B2), como se muestra en la figura 4(a). Es decir, en la figura 4(a), el bloque 100 incluye PUO 104A y PU1 104B. Cuando un codificador de vídeo codifica información de movimiento para PUO 104A usando el modo de fusión, el codificador de vídeo añade información de movimiento de los bloques vecinos espaciales 108A, 108B, 108C, 108D y 108E a una lista de candidatos, en ese orden. Los bloques 108A, 108B, 108C, 108D y 108E también se pueden denominar, respectivamente, bloques A1, B1, B0, A0 y B2, como en HEVC.
[0131] En el modo de AMVP, los bloques vecinos se dividen en dos grupos: un grupo izquierdo que incluye los bloques 0 y 1, y un grupo superior que incluye los bloques 2, 3 y 4, como se muestra en la figura 4(b). Estos bloques están marcados, respectivamente, como bloques 110A, 110B, 110C, 110D y 110E en la figura 4(b). En particular, en la figura 4(b), el bloque 102 incluye PUO 106A y PU1 106B, y los bloques 110A, 110B, 110C, 110D y 110E representan vecinos espaciales a PUO 106A. Para cada grupo, el candidato potencial en un bloque vecino, que se refiere a la misma imagen de referencia que la indicada por el índice de referencia señalizado, tiene la prioridad más alta para ser elegido para formar un candidato final del grupo. Es posible que todos los bloques vecinos no contengan un vector de movimiento que apunte a la misma imagen de referencia. Por lo tanto, si no se puede encontrar dicho candidato, el primer candidato disponible se ajustará a escala para formar el candidato final; por tanto, las diferencias de distancia temporal se pueden compensar.
[0132] La figura 5A es un diagrama conceptual que ilustra la predicción de vector de movimiento temporal en HEVC. En particular, la figura 5(a) ilustra un ejemplo c U 120 que incluye PUO 122A y PU 1 122B. PUO 122A incluye un bloque central 126 para PU 122A y un bloque inferior derecho 124 para PUO 122A. La figura 5(a) también muestra un bloque externo 128 para el que se puede predecir información de movimiento a partir de la información de movimiento de PUO 122A, como se analiza a continuación. La figura 5(b) ilustra una imagen actual 130 que incluye un bloque actual 138 para el que se va a predecir información de movimiento. En particular, la figura 5(b) ilustra una imagen coubicada 134 a la imagen actual 130 (incluyendo el bloque coubicado 140 al bloque actual 138), una imagen de referencia actual 132 y una imagen de referencia coubicada 136. El bloque coubicado 140 se predice usando el vector de movimiento 144, que se usa como un predictor de vector de movimiento temporal (TMVP) 142 para la información de movimiento del bloque 138.
[0133] Un codificador de vídeo puede añadir un candidato de TMVP (por ejemplo, candidato 142 TMVP) a la lista de candidatos MV después de cualquier candidato de vector de movimiento espacial si TMVP está habilitada y el candidato de TMVP está disponible. El proceso de derivación de vectores de movimiento para un candidato de TMVP es el mismo tanto para el modo de fusión como de AMVP. Sin embargo, el índice de referencia diana para el candidato de TMVP en el modo de fusión se establece en 0, de acuerdo con HEVC.
[0134] La localización del bloque primario para la derivación de candidato de TMVP es el bloque inferior derecho fuera de la PU coubicada, como se muestra en la figura 5(a) como bloque 124 a PUO 122A, para compensar el sesgo a los bloques superiores e izquierdos usados para generar candidatos vecinos espaciales. Sin embargo, si el bloque 124 se encuentra fuera de la fila de CTB actual o la información de movimiento no está disponible para el bloque 124, el bloque se sustituye con el bloque central 126 de la PU como se muestra en la figura 5(a).
[0135] Un vector de movimiento para un candidato de TMVP 142 se deriva del bloque coubicado 140 de la imagen coubicada 134, como se indica en la información a nivel de corte.
[0136] De manera similar al modo directo temporal en AVC, un vector de movimiento del candidato de TMVP puede estar sujeto al ajuste a escala del vector de movimiento, que se realiza para compensar las diferencias de distancia del recuento de orden de imagen (POC) entre la imagen actual 130 y la imagen de referencia actual 132, y la imagen coubicada 134 y la imagen de referencia coubicada 136. Es decir, el vector de movimiento 144 se puede ajustar a escala para producir el candidato de TMVP 142, en base a estas diferencias de POC.
[0137] A continuación se analizan varios aspectos de los modos de fusión y AMVP de HEVC.
[0138] Ajuste a escala de vector de movimiento: Se supone que el valor del vector de movimiento es proporcional a la distancia entre las imágenes en tiempo de presentación. Un vector de movimiento asocia dos imágenes: la imagen de referencia y la imagen que contiene el vector de movimiento (a saber, la imagen contenedora). Cuando el codificador de vídeo 20 o el descodificador de vídeo 30 usan un vector de movimiento para predecir otro vector de movimiento, la distancia entre la imagen contenedora y la imagen de referencia se calcula en base a los valores de recuento de orden de imagen (POC).
[0139] Para que un vector de movimiento sea predicho, su imagen contenedora y la imagen de referencia asociadas son diferentes. Es decir, hay dos valores de diferencia de POC para dos vectores de movimiento distintos: un primer vector de movimiento que se va a predecir y un segundo vector de movimiento usado para predecir el primer vector de movimiento. Además, la primera diferencia de POC es la diferencia entre la imagen actual y la imagen de referencia del primer vector de movimiento, y la segunda diferencia de POC es la diferencia entre la imagen que contiene el
segundo vector de movimiento y la imagen de referencia a la que se refiere el segundo vector de movimiento. El segundo vector de movimiento se puede ajustar a escala en base a estas dos distancias de POC. Para un candidato vecino espacial, las imágenes contenedoras para los dos vectores de movimiento son las mismas, mientras que las imágenes de referencia son diferentes. En la HEVC, el ajuste a escala del vector de movimiento se aplica tanto a la TMVP como a la AMVP para candidatos vecinos espaciales y temporales.
[0140] Generación de candidato de vector de movimiento artificial: Si una lista de candidatos de vector de movimiento no está completa, se pueden generar e insertar candidatos de vector de movimiento artificiales al final de la lista hasta que la lista incluya un número predeterminado de candidatos.
[0141] En el modo de fusión, hay dos tipos de candidatos de MV artificiales: candidatos combinados derivados solo para cortes B y candidatos cero usados solo para la AMVP si el primer tipo no proporciona suficientes candidatos artificiales.
[0142] Para cada par de candidatos que ya están en la lista de candidatos y tienen la información de movimiento necesaria, los candidatos de vector de movimiento combinados bidireccionales se derivan por una combinación del vector de movimiento del primer candidato que se refiere a una imagen en la lista 0 y el vector de movimiento de un segundo candidato que se refiere a una imagen en la lista 1.
[0143] Proceso de depuración para la inserción del candidato: Los candidatos de diferentes bloques pueden ser los mismos, lo que disminuye la eficacia de una lista de candidatos de fusión/AMVP. Se puede aplicar un proceso de depuración para resolver este problema. De acuerdo con el proceso de depuración, un codificador de vídeo compara a un candidato con los otros en la lista de candidatos actuales para evitar la inserción de un candidato idéntico, hasta un punto determinado. Para reducir la complejidad, solo se aplica un número limitado de procesos de depuración, en lugar de comparar cada candidato potencial con todos los otros candidatos existentes que ya están en la lista.
[0144] La figura 6 ilustra una estructura de predicción para 3D-HEVC de ejemplo. 3D-HEVC es una extensión de vídeo 3D de HEVC en desarrollo por JCT-3V. Ciertas técnicas relacionadas con las técnicas de esta divulgación se describen con respecto a las figuras 6 y 7 a continuación.
[0145] La figura 6 muestra una estructura de predicción de múltiples vistas para un caso de tres vistas. V3 indica la vista base y se puede predecir una imagen en una vista no base (V1 o V5) a partir de imágenes en una vista (base) dependiente de la misma instancia de tiempo.
[0146] La predicción de muestra inter-vista (a partir de muestras reconstruidas) se admite en MV-HEVC, cuya estructura de predicción típica se muestra en la figura 8.
[0147] Tanto MV-HEVC como 3D-HEVC son compatibles con HEVC de manera que la vista (de textura) base es descodificable por el descodificador HEVC (versión 1). Un modelo de prueba para MV-HEVC y 3D-HEVC se describe en Zhang et al., "Test Model 6 of 3D-HEVC and MV-HEVC", el documento JCT-3V ISO/IEC JTC1/SC29/WG11 N13940, disponible en el sitio web mpeg.chiariglione.org/standards/mpeg-h/high-efficiency-video-coding/test-model-6-3d-hevc-and-mv-hevc a partir del 26 de enero de 2015.
[0148] En MV-HEVC, una imagen actual en una vista no base se puede predecir, tanto por imágenes en la misma vista como por imágenes en una vista de referencia de la misma instancia de tiempo, poniendo todas estas imágenes en listas de imágenes de referencia de la imagen. Por lo tanto, una lista de imágenes de referencia de la imagen actual, contiene tanto imágenes de referencia temporal como imágenes de referencia inter-vista.
[0149] Un vector de movimiento asociado con un índice de referencia correspondiente a una imagen de referencia temporal se indica como un vector de movimiento temporal.
[0150] Un vector de movimiento asociado con un índice de referencia correspondiente a una imagen de referencia inter-vista se indica como un vector de movimiento de disparidad.
[0151] 3D-HEVC admite todas las funciones de MV-HEVC. Por lo tanto, la predicción de muestra inter-vista como se mencionó anteriormente está habilitada.
[0152] Además, se admiten herramientas de codificación de solo textura más avanzadas y herramientas de codificación dependientes/relacionadas con la profundidad.
[0153] Las herramientas de codificación de solo textura a menudo requieren la identificación de los bloques correspondientes (entre vistas) que pueden pertenecer al mismo objeto. Por lo tanto, la derivación del vector de disparidad es una tecnología básica en 3D-HEVC.
[0154] La figura 7 es un diagrama conceptual que ilustra la predicción de movimiento de inter-vista basada en sub-PU en 3D-HEVC. La figura 7 muestra la imagen actual 160 de una vista actual (V1) y una imagen coubicada 162 en
una vista de referencia (V0). La imagen actual 160 incluye una PU actual 164 que incluye cuatro sub-Pu 166A-166D (sub-PU 166). Los vectores de disparidad 174A-174D respectivos (vectores de disparidad 174) identifican las sub-PU 168A-168D correspondientes a las sub-PU 166 en la imagen coubicada 162. En 3D-HEVC, un procedimiento de predicción de movimiento inter-vista nivel de sub-PU para el candidato de fusión inter-vista, es decir, el candidato derivado de un bloque de referencia en la vista de referencia.
[0155] Cuando dicho modo está habilitado, la PU actual 164 puede corresponder a un área de referencia (con el mismo tamaño que la PU actual identificada por el vector de disparidad) en la vista de referencia y el área de referencia puede tener información de movimiento más rica que la necesaria para la generación de un conjunto de información de movimiento típicamente para una PU. Por lo tanto, se puede usar un procedimiento de predicción de movimiento inter-vista a nivel de sub-PU (SPIVMP), como se muestra en la figura 7.
[0156] Este modo también se puede señalizar como un candidato de fusión especial. Cada una de las sub-PU contiene un conjunto completo de información de movimiento. Por lo tanto, una PU puede contener múltiples conjuntos de información de movimiento.
[0157] Herencia de parámetros de movimiento (MPI) basada en sub-PU en 3D-HEVC: De forma similar, en 3D-HEVC, el candidato MPI también se puede extender de una manera similar a la predicción de movimiento inter-vista a nivel de sub-PU. Por ejemplo, si la PU de profundidad actual tiene una región coubicada que contiene múltiples PU, la PU de profundidad actual se puede separar en sub-PU, cada una de las cuales puede tener un conjunto diferente de información de movimiento. Este procedimiento se llama sub-PU MPI. Es decir, los vectores de movimiento 172A-172D de las sub-PU 168A-168D correspondientes se pueden heredar por las sub-PU 166A-166D, como vectores de movimiento 170A-170D, como se muestra en la figura 7.
[0158] Información relacionada con Sub-PU para codificación de vídeo 2D: En la solicitud de patente de los Estados Unidos N° de serie 61/883,111, se describe un diseño TMVP avanzado basado en sub-PU. En la codificación de capa única, se propone un diseño de predicción de vector de movimiento temporal avanzada de dos fases.
[0159] Una primera fase es derivar un vector que identifica el bloque correspondiente de la unidad de predicción (PU) actual en una imagen de referencia, y una segunda fase es extraer múltiples conjuntos de información de movimiento del bloque correspondiente y asignarlos a sub-PU de la PU. Cada sub-PU de la PU , por lo tanto, se compensa en movimiento por separado. El concepto de ATMVP se resume como sigue:
1. El vector de movimiento en la primera fase se puede derivar de bloques vecinos espaciales y temporales de la PU actual.
2. Este proceso se puede lograr activando un candidato de fusión entre todos los otros candidatos de fusión.
[0160] Aplicable a la codificación de capa única y a la predicción de vector de movimiento temporal de sub-PU, una PU o CU puede tener datos de refinamiento de movimiento que se van a transmitir encima de los predictores.
[0161] Varios aspectos de diseño de la solicitud 61/883,111 se destacan como sigue:
1. La primera fase de la derivación de vector también se puede simplificar con solo un vector cero.
2. La primera fase de la derivación de vector puede incluir la identificación conjunta del vector de movimiento y su imagen asociada. Se han propuesto diversas formas de seleccionar la imagen asociada y decidir además qué vector de movimiento será el vector de la primera fase.
3. Si la información de movimiento durante el proceso anterior no está disponible, se usa el "vector de la primera fase" para la sustitución.
4. Un vector de movimiento identificado a partir de un vecino temporal se tiene que ajustar a escala para ser usado para la sub-PU actual, de manera similar al ajuste a escala del vector de movimiento en TMVP. Sin embargo, se puede diseñar a qué imagen de referencia se puede ajustar a escala dicho vector de movimiento de una de las siguientes maneras:
a. La imagen se identifica mediante un índice de referencia fijo de la imagen actual.
b. La imagen se identifica como la imagen de referencia del vecino temporal correspondiente, si también está disponible en una lista de imágenes de referencia de la imagen actual.
c. La imagen se establece como la imagen coubicada identificada en la primera fase y desde donde se toman los vectores de movimiento.
[0162] La figura 8 es un diagrama conceptual que ilustra la predicción de movimiento sub-PU a partir de una imagen de referencia. En este ejemplo, la imagen actual 180 incluye una PU actual 184 (por ejemplo, una PU). En este ejemplo, el vector de movimiento 192 identifica la PU 186 de la imagen de referencia 182 en relación con la PU 184. La PU 186 se divide en sub-PU 188A-188D, cada una con sus respectivos vectores de movimiento 190A-190D. Por tanto, aunque la PU actual 184 no se divide realmente en sub-PU separadas, en este ejemplo, la PU actual 184 se puede predecir usando información de movimiento de las sub-PU 188A-188D. En particular, un codificador de vídeo puede codificar sub-PU de la PU actual 184 usando los respectivos vectores de movimiento 190A-190D. Sin embargo, el codificador de vídeo no necesita codificar elementos sintácticos que indiquen que la PU actual 184 se divide en sub-PU. De esta manera, la PU actual 184 se puede predecir eficazmente usando múltiples vectores de movimiento 190A-190D, heredados de las respectivas sub-PU 188A-188D, sin el sobrecoste de señalización de los elementos sintácticos usados para dividir la PU actual 184 en múltiples sub-PU.
[0163] La figura 9 es un diagrama conceptual que ilustra imágenes relevantes en ATMVP (similar a TMVP). En particular, la figura 9 ilustra la imagen actual 204, la imagen de origen de movimiento 206 y las imágenes de referencia 200, 202. Más en particular, la imagen actual 204 incluye el bloque actual 208. El vector de movimiento temporal 212 identifica el bloque 210 correspondiente de la imagen de origen de movimiento 206 con respecto al bloque actual 208. El bloque 210 correspondiente, a su vez, incluye el vector de movimiento 214, que se refiere a la imagen de referencia 202 y actúa como un predictor de vector de movimiento temporal avanzado para al menos una parte del bloque actual 208, por ejemplo, una sub-PU del bloque actual 208. Es decir, el vector de movimiento 214 se puede añadir como un predictor de vector de movimiento candidato para el bloque actual 208. Si se selecciona, al menos una parte del bloque actual 208 se puede predecir usando un vector de movimiento correspondiente, a saber, el vector de movimiento 216, que se refiere a la imagen de referencia 200.
[0164] La figura 10 es un diagrama de flujo que ilustra un procedimiento de ejemplo para añadir un candidato de ATMVP a una lista de candidatos durante un proceso de codificación de acuerdo con las técnicas de esta divulgación. El procedimiento de la figura 10 se describe como realizado por el codificador de vídeo 20 (figuras 1 y 2). Sin embargo, se debe entender que otros dispositivos de codificación se pueden configurar para realizar este o un procedimiento similar.
[0165] Inicialmente, el codificador de vídeo 20 obtiene un bloque de datos de vídeo que se van a codificar (no mostrado en la figura 10). El bloque puede incluir un conjunto de vecinos espaciales, tales como los mostrados en la figura 4(a) y la figura 4(b). La unidad de compensación de movimiento 44 puede construir la lista de candidatos añadiendo primero un candidato espacial izquierdo a la lista de candidatos (250). Es decir, con respecto a la figura 4(a), suponiendo que PUO 104A es el bloque que se va a codificar, el codificador de vídeo 20 puede insertar primero el vecino espacial 108A en la lista de candidatos.
[0166] A continuación, la unidad de compensación de movimiento 44 puede añadir el candidato espacial superior a la lista de candidatos (252). Con respecto a la figura 4(a), el codificador de vídeo 20 puede insertar el vecino espacial 108B en la lista de candidatos.
[0167] A continuación, la unidad de compensación de movimiento 44 puede añadir el candidato espacial superior derecho a la lista de candidatos (254). Con respecto a la figura 4(a), el codificador de vídeo 20 puede insertar el vecino espacial 108C en la lista de candidatos.
[0168] A continuación, la unidad de compensación de movimiento 44 puede añadir el candidato espacial inferior izquierdo a la lista de candidatos (256). Con respecto a la figura 4(a), el codificador de vídeo 20 puede insertar el vecino espacial 108D en la lista de candidatos.
[0169] A continuación, la unidad de compensación de movimiento 44 puede añadir un candidato de predictor de vector de movimiento temporal avanzado (ATMVP) en la lista de candidatos (258). Como se analiza anteriormente, el candidato de ATMVP puede representar un bloque correspondiente identificado por un vector temporal como se muestra y analiza con respecto a, por ejemplo, las figuras 8 y 9. Además, en algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar primero si el candidato de ATMVP está disponible. Por ejemplo, la unidad de compensación de movimiento puede determinar un bloque correspondiente al bloque actual en una imagen de referencia y determinar si está disponible la información de movimiento para el bloque correspondiente. La unidad de compensación de movimiento 44 puede a continuación determinar que el candidato de ATMVP (es decir, el bloque correspondiente) está disponible cuando la información de movimiento está disponible para el bloque correspondiente. En algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar que la información de movimiento está disponible para el bloque correspondiente cuando se predice todo el bloque correspondiente sin el uso de intrapredicción , pero no está disponible cuando al menos parte del bloque correspondiente se predice usando intrapredicción.
[0170] De manera similar, en algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar cuál de los dos candidatos de ATMVP potenciales se debe usar como el candidato de ATMVP finalmente añadido a la lista de candidatos. Por ejemplo, la unidad de compensación de movimiento 44 puede formar un primer vector de movimiento temporal con respecto al bloque actual que identifica un primer candidato de ATMVP en una primera
imagen de origen de movimiento, es decir, una primera imagen de referencia. Si la información de movimiento no está disponible para el primer candidato de ATMVP, la unidad de compensación de movimiento 44 puede determinar si la información de movimiento está disponible para un segundo candidato de ATMVP diferente. El segundo candidato de ATMVP se puede identificar usando el mismo vector de movimiento temporal que se refiere a una segunda imagen de referencia diferente, un vector de movimiento temporal diferente que se refiere a la misma (es decir, la primera) imagen de referencia o un vector de movimiento temporal diferente que se refiere a la segunda imagen de referencia diferente. Las imágenes de referencia que se van a verificar, como se analiza anteriormente, pueden estar en orden ascendente de índices de referencia en una lista de imágenes de referencia. Del mismo modo, si se usan diferentes vectores de movimiento temporal, los vectores de movimiento temporal se pueden seleccionar en un orden predeterminado a partir de vectores temporales de bloques vecinos al bloque actual.
[0171] Además, la unidad de compensación de movimiento 44 puede determinar si un vector de movimiento está disponible para una sub-PU en el candidato de ATMVP para una lista de imágenes de referencia particular. Si es así, se considera que el vector de movimiento está disponible para esa lista de imágenes de referencia. De otro modo, se considera que el vector de movimiento no está disponible para esa lista de imágenes de referencia. De forma alternativa, si hay un vector de movimiento disponible para la otra lista de imágenes de referencia, la unidad de compensación de movimiento 44 puede modificar la información de movimiento ajustando a escala el vector de movimiento para apuntar a una imagen de referencia diana en la primera lista de imágenes de referencia, como se analiza anteriormente.
[0172] El codificador de vídeo 20 puede seleccionar a continuación uno de los candidatos de la lista de candidatos (260). Por ejemplo, el codificador de vídeo 20 puede probar la codificación del bloque usando cualquiera o todos los candidatos en la lista de candidatos. Además o de forma alternativa, la unidad de estimación de movimiento 42 del codificador de vídeo 20 puede realizar una búsqueda de movimiento y determinar un vector de movimiento para el bloque, y determinar si codifica el vector de movimiento usando la predicción de vector de movimiento avanzada (AMVP) o el modo de fusión. En el ejemplo de la figura 10, se supone que el codificador de vídeo 20 ha elegido codificar información de movimiento usando el modo de fusión. En general, el codificador de vídeo 20 (más en particular, la unidad de selección de modo 40) puede determinar cuál de los candidatos en la lista de candidatos proporciona las mejores características de velocidad-distorsión, y seleccionar ese candidato para su uso para predecir el bloque.
[0173] En consecuencia, el codificador de vídeo 20 puede predecir el bloque actual usando el candidato seleccionado (262). Es decir, la unidad de compensación de movimiento 44 puede recuperar uno o más bloques de referencia identificados por la información de movimiento del candidato seleccionado, y en algunos ejemplos puede interpolar valores para píxeles fraccionarios, si la información de movimiento tiene una precisión de subpíxeles.
[0174] A continuación, el codificador de vídeo 20 puede formar un bloque residual para el bloque actual (264). Como se analiza anteriormente, el sumador 50 puede calcular las diferencias píxel por píxel entre el bloque actual y el bloque predicho, formando el bloque residual. El codificador de vídeo 20 puede a continuación codificar información residual del bloque residual y codificar un índice de fusión (266). Es decir, la unidad de procesamiento de transformada 52 puede transformar el bloque residual, para producir coeficientes de transformada que representan la información residual. La unidad de cuantificación 54 puede cuantificar a continuación los coeficientes de transformada. La unidad de codificación por entropía 56 puede a continuación codificar por entropía los coeficientes de transformada cuantificados, así como los elementos sintácticos representativos del modo de codificación de información de movimiento (modo de fusión, en este ejemplo), y el índice de fusión que representa al candidato seleccionado de la lista de candidatos.
[0175] De esta manera, el procedimiento de la figura 10 representa un ejemplo de un procedimiento que incluye formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales desde cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0176] La figura 11 es un diagrama de flujo que ilustra un procedimiento de ejemplo para añadir un candidato de ATMVP a una lista de candidatos durante un proceso de decodificación de acuerdo con las técnicas de esta divulgación. El procedimiento de la figura 11 se describe como realizado por el descodificador de vídeo 30 (figuras 1 y 3). Sin embargo, se debe entender que otros dispositivos de descodificación se pueden configurar para realizar este o un procedimiento similar.
[0177] Inicialmente, el descodificador de vídeo 30 obtiene un bloque de datos de vídeo que se van a codificar (no mostrado en la figura 11). El bloque puede incluir un conjunto de vecinos espaciales, tales como los mostrados en la figura 4(a) y la figura 4(b). La unidad de compensación de movimiento 72 puede construir la lista de candidatos añadiendo primero un candidato espacial izquierdo a la lista de candidatos (270). Es decir, con respecto a la figura
4(a), suponiendo que PUO 104A es el bloque que se va a codificar, el descodificador de vídeo 30 puede insertar primero el vecino espacial 108A en la lista de candidatos.
[0178] A continuación, la unidad de compensación de movimiento 72 puede añadir el candidato espacial superior a la lista de candidatos (272). Con respecto a la figura 4(a), el descodificador de vídeo 30 puede insertar el vecino espacial 108B en la lista de candidatos.
[0179] A continuación, la unidad de compensación de movimiento 72 puede añadir el candidato espacial superior derecho a la lista de candidatos (274). Con respecto a la figura 4(a), el descodificador de vídeo 30 puede insertar el vecino espacial 108C en la lista de candidatos.
[0180] A continuación, la unidad de compensación de movimiento 72 puede añadir el candidato espacial inferior izquierdo a la lista de candidatos (276). Con respecto a la figura 4(a), el descodificador de vídeo 30 puede insertar el vecino espacial 108D en la lista de candidatos.
[0181] A continuación, la unidad de compensación de movimiento 72 puede añadir un candidato de predictor de vector de movimiento temporal avanzado (ATMVP) en la lista de candidatos (278). Como se analiza anteriormente, el candidato de ATMVP puede representar un bloque correspondiente identificado por un vector temporal como se muestra y analiza con respecto a, por ejemplo, las figuras 8 y 9. Además, en algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar primero si está disponible el candidato de ATMVP. Por ejemplo, la unidad de compensación de movimiento puede determinar un bloque correspondiente al bloque actual en una imagen de referencia y determinar si está disponible la información de movimiento para el bloque correspondiente. La unidad de compensación de movimiento 72 puede a continuación determinar que está disponible el candidato de ATMVP (es decir, el bloque correspondiente) cuando está disponible la información de movimiento para el bloque correspondiente. En algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar que está disponible la información de movimiento para el bloque correspondiente cuando se predice todo el bloque correspondiente sin el uso de intrapredicción, pero no está disponible cuando al menos parte del bloque correspondiente se predice usando la intrapredicción.
[0182] De forma similar, en algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar cuál de los dos candidatos de ATMVP potenciales se debe usar como el candidato de ATMVP finalmente añadido a la lista de candidatos. Por ejemplo, la unidad de compensación de movimiento 72 puede formar un primer vector de movimiento temporal con respecto al bloque actual que identifica un primer candidato de ATMVP en una primera imagen de origen de movimiento, es decir, una primera imagen de referencia. Si no está disponible la información de movimiento para el primer candidato de ATMVP, la unidad de compensación de movimiento 72 puede determinar si está disponible la información de movimiento para un segundo candidato de ATMVP diferente. El segundo candidato de ATMVP se puede identificar usando el mismo vector de movimiento temporal que se refiere a una segunda imagen de referencia diferente, un vector de movimiento temporal diferente que se refiere a la misma (es decir, la primera) imagen de referencia o un vector de movimiento temporal diferente que se refiere a la segunda imagen de referencia diferente. Las imágenes de referencia que se van a verificar, como se analiza anteriormente, pueden estar en orden ascendente de índices de referencia en una lista de imágenes de referencia. Del mismo modo, si se usan diferentes vectores de movimiento temporal, los vectores de movimiento temporal se pueden seleccionar en un orden predeterminado a partir de vectores temporales de bloques vecinos al bloque actual.
[0183] Además, la unidad de compensación de movimiento 72 puede determinar si un vector de movimiento está disponible para una sub-PU en el candidato de ATMVP para una lista de imágenes de referencia particular. Si es así, se considera que el vector de movimiento está disponible para esa lista de imágenes de referencia. De otro modo, se considera que el vector de movimiento no está disponible para esa lista de imágenes de referencia. De forma alternativa, si un vector de movimiento está disponible para la otra lista de imágenes de referencia, la unidad de compensación de movimiento 72 puede modificar la información de movimiento ajustando a escala el vector de movimiento para apuntar a una imagen de referencia diana en la primera lista de imágenes de referencia, como se analiza anteriormente.
[0184] El descodificador de vídeo 30 puede a continuación descodificar un índice de fusión para seleccionar uno de los candidatos de la lista de candidatos (280). Más en particular, la unidad de descodificación por entropía 70 del descodificador de vídeo 30 puede descodificar por entropía uno o más elementos sintácticos que representan si la información de movimiento de un bloque actual está codificada usando el modo de fusión, así como un índice de fusión que representa un candidato seleccionado de la lista de candidatos.
[0185] En consecuencia, el descodificador de vídeo 30 puede predecir el bloque actual usando el candidato seleccionado (282). Es decir, la unidad de compensación de movimiento 72 puede recuperar uno o más bloques de referencia identificados por la información de movimiento del candidato seleccionado, y en algunos ejemplos puede interpolar valores para píxeles fraccionarios, si la información de movimiento tiene una precisión de subpíxeles.
[0186] El codificador de vídeo 30 también puede descodificar un bloque residual para el bloque actual (284). En particular, la unidad de descodificación por entropía 70 puede descodificar coeficientes de transformada cuantificados,
cuya unidad de cuantificación inversa 76 puede cuantificar de manera inversa para formar un bloque de transformada. La unidad de transformada inversa 78 puede a continuación transformar de manera inversa el bloque de transformada para reproducir el bloque residual. El sumador 80 puede a continuación combinar el bloque predicho con el bloque residual para descodificar el bloque actual (286), en particular, reconstruyendo el bloque actual.
[0187] De esta manera, el procedimiento de la figura 11 representa un ejemplo de un procedimiento que incluye formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales desde cuatro bloques vecinos al bloque actual y, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), codificar un índice en la lista de candidatos de fusión que identifica un candidato de fusión de la pluralidad de candidatos de fusión en la lista de candidatos de fusión, y codificar el bloque actual de datos de vídeo usando información de movimiento del candidato de fusión identificado.
[0188] Ha de reconocerse que, según el ejemplo, ciertos actos o sucesos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia distinta, pueden añadirse, combinarse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica de las técnicas). Asimismo, en determinados ejemplos, los actos o sucesos se pueden realizar simultáneamente, por ejemplo, mediante procesamiento de múltiples hilos, procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente.
[0189] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, programas informáticos, firmware o cualquier combinación de los mismos. Si se implementan en programas informáticos, las funciones se pueden almacenar en, o transmitir por, un medio legible por ordenador, como una o más instrucciones o código, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo a un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0190] A modo de ejemplo, y no de limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, r Om , 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 pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Además, cualquier conexión recibe adecuadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, están orientados a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnética, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior se deberían incluir también dentro del alcance de los medios legibles por ordenador.
[0191] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), arreglos de compuertas programables en el campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar en módulos de hardware y/o programas informáticos dedicados configurados para la codificación y la descodificación, o incorporados en un códec combinado. Además, las técnicas se podrían implementar totalmente en uno o más circuitos o elementos lógicos.
[0192] Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un equipo manual inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su
realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionarse mediante un grupo de unidades de hardware interoperativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, conjuntamente con programas informáticos y/o firmware adecuados.
[0193] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.
Claims (16)
- REIVINDICACIONESi. Un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo:una memoria configurada para almacenar datos de vídeo; yun codificador de vídeo configurado para:formar, para un bloque actual de los datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual,caracterizado por que el codificador de vídeo está configurado además para:formar la lista de candidatos de fusión incluyendo, de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), en el que el candidato de ATMVP indica que el bloque actual se debe predecir usando un bloque identificado por el candidato de ATMVP que se divide en una pluralidad de subbloques, teniendo cada uno de la pluralidad de subbloques conjuntos respectivos de información de movimiento;codificar un índice en la lista de candidatos de fusión que identifique al candidato de ATMVP de la pluralidad de candidatos de fusión en la lista de candidatos de fusión; ybasado en el índice que identifica al candidato de ATMVP, codificar el bloque actual de datos de vídeo, en el que para codificar el bloque actual de datos de vídeo, el codificador de vídeo está configurado para codificar subbloques del bloque actual usando la información de movimiento respectiva de los subbloques del bloque identificado por el candidato de ATMVP.
- 2. El dispositivo de la reivindicación 1, en el que para formar la lista de candidatos de fusión, el codificador de vídeo está configurado para:determinar, para el bloque actual, un bloque correspondiente en una imagen de referencia; determinar si la información de movimiento está disponible para el bloque correspondiente; y formar la lista de candidatos de fusión para incluir el candidato de ATMVP después de determinar que la información de movimiento está disponible para el bloque correspondiente.
- 3. El dispositivo de la reivindicación 2, en el que para determinar si la información de movimiento está disponible para el bloque correspondiente, el codificador de vídeo está configurado para determinar si una parte del bloque correspondiente está intrapredicha.
- 4. El dispositivo de la reivindicación 1, en el que para formar la lista de candidatos de fusión, el codificador de vídeo está configurado para formar el candidato de ATMVP a partir de un conjunto representativo de información de movimiento para un bloque correspondiente al bloque actual en una imagen de referencia.
- 5. El dispositivo de la reivindicación 4, en el que para formar el candidato de ATMVP a partir del conjunto representativo de información de movimiento, el codificador de vídeo está configurado para formar el candidato de ATMVP a partir de información de movimiento para una posición predeterminada del bloque correspondiente o para una unidad de subpredicción predeterminada ( sub-PU) del bloque correspondiente.
- 6. El dispositivo de la reivindicación 1, en el que para formar la lista de candidatos de fusión, el codificador de vídeo está configurado para:usar un primer vector de movimiento temporal, relativo al bloque actual, para identificar un primer candidato de predicción de vector de movimiento temporal avanzada (ATMVP) en una primera imagen de origen de movimiento;cuando esté disponible el primer candidato de ATMVP, añadir el primer candidato de ATMVP a la lista de candidatos de fusión como el candidato de ATMVP;cuando no esté disponible el primer candidato de ATMVP:usar un segundo vector de movimiento temporal, relativo al bloque actual, para identificar un segundo candidato de ATMVP en una segunda imagen de origen de movimiento; yañadir el segundo candidato de ATMVP a la lista de candidatos de fusión como el candidato de ATMVP.
- 7. El dispositivo de la reivindicación 6, en el que el primer vector de movimiento temporal y el segundo vector de movimiento temporal comprenden el mismo vector de movimiento temporal, y en el que la primera imagen de origen de movimiento y la segunda imagen de origen de movimiento comprenden diferentes imágenes de origen de movimiento.
- 8. El dispositivo de la reivindicación 6, en el que el primer vector de movimiento temporal y el segundo vector de movimiento temporal comprenden diferentes vectores de movimiento temporal.
- 9. El dispositivo de la reivindicación 6, en el que el codificador de vídeo está configurado además para seleccionar el primer vector de movimiento temporal y el segundo vector de movimiento temporal de acuerdo con un orden predeterminado a partir de vectores temporales de los bloques vecinos.
- 10. El dispositivo de la reivindicación 1, en el que para formar la lista de candidatos de fusión, el codificador de vídeo está configurado para:determinar si un vector de movimiento está disponible para un subbloque del candidato de ATMVP para una lista de imágenes de referencia X; yañadir el candidato de ATMVP a la lista de candidatos después de determinar que el vector de movimiento está disponible.
- 11. El dispositivo de la reivindicación 10, en el que cuando el vector de movimiento no está disponible para la lista de imágenes de referencia X pero está disponible para la lista de imágenes de referencia Y, en el que Y comprende una lista de imágenes de referencia distinta de la lista de imágenes de referencia X, el codificador de vídeo está configurado para fijar el vector de movimiento para estar disponible para la lista de imágenes de referencia X y ajustar a escala el vector de movimiento a una imagen de referencia en la lista de imágenes de referencia X.
- 12. El dispositivo de la reivindicación 1, en el que el codificador de vídeo comprende un descodificador de vídeo configurado para descodificar el índice, y para codificar el bloque actual, el descodificador de vídeo está configurado para:predecir el bloque actual usando la información de movimiento de los subbloques del bloque identificado por el candidato de ATMVP para formar un bloque predicho;descodificar información residual para el bloque actual; ydescodificar el bloque actual usando la información residual descodificada y el bloque predicho.
- 13. El dispositivo de la reivindicación 1, en el que el codificador de vídeo comprende un codificador de vídeo configurado para codificar el índice, y en el que para codificar el bloque actual, el codificador de vídeo está configurado para:predecir el bloque actual usando la información de movimiento de los subbloques del bloque identificado por el candidato de ATMVP para formar un bloque predicho;formar un bloque residual que representa diferencias entre el bloque actual y el bloque predicho; ycodificar la información residual.
- 14. El dispositivo de la reivindicación 1, en el que el codificador de vídeo es un codificador de vídeo, y en el que el dispositivo comprende además un transmisor para transmitir los datos de vídeo codificados.
- 15. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:formar, para un bloque actual de datos de vídeo, una lista de candidatos de fusión que incluye una pluralidad de candidatos de fusión, incluyendo la pluralidad de candidatos de fusión cuatro candidatos vecinos espaciales de cuatro bloques vecinos al bloque actual y caracterizado por que de inmediato después de los cuatro candidatos vecinos espaciales, un candidato de predicción de vector de movimiento temporal avanzada (ATMVP), en el que el candidato de ATMVP indica que el bloque actual se debe predecir usando un bloque identificado por el candidato de ATMVP que se divide en una pluralidad de subbloques, teniendo cada uno de la pluralidad de subbloques conjuntos respectivos de información de movimiento;codificar un índice en la lista de candidatos de fusión que identifica al candidato de ATMVP de la pluralidad de candidatos de fusión en la lista de candidatos de fusión; ybasado en el índice que identifica al candidato de ATMVP, que codifica el bloque actual de datos de vídeo, en el que la codificación del bloque actual comprende codificar subbloques del bloque actual usando la información de movimiento respectiva de los subbloques del bloque identificado por el candidato de ATMVP.
- 16. Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, provocan que un procesador realice el procedimiento de cualquiera de la reivindicación 15.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562107933P | 2015-01-26 | 2015-01-26 | |
| US15/005,564 US11477477B2 (en) | 2015-01-26 | 2016-01-25 | Sub-prediction unit based advanced temporal motion vector prediction |
| PCT/US2016/014875 WO2016123081A1 (en) | 2015-01-26 | 2016-01-26 | Sub-prediction unit based advanced temporal motion vector prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2755573T3 true ES2755573T3 (es) | 2020-04-22 |
Family
ID=56433539
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES16705364T Active ES2755573T3 (es) | 2015-01-26 | 2016-01-26 | Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción |
Country Status (13)
| Country | Link |
|---|---|
| US (1) | US11477477B2 (es) |
| EP (1) | EP3251361B1 (es) |
| JP (1) | JP6636530B2 (es) |
| KR (1) | KR102102029B1 (es) |
| CN (1) | CN107211156B (es) |
| BR (1) | BR112017015890B1 (es) |
| CA (1) | CA2971636C (es) |
| EA (1) | EA035270B1 (es) |
| ES (1) | ES2755573T3 (es) |
| HU (1) | HUE047034T2 (es) |
| TN (1) | TN2017000288A1 (es) |
| TW (1) | TWI696382B (es) |
| WO (1) | WO2016123081A1 (es) |
Families Citing this family (141)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10230980B2 (en) | 2015-01-26 | 2019-03-12 | Qualcomm Incorporated | Overlapped motion compensation for video coding |
| US10187653B2 (en) * | 2015-05-18 | 2019-01-22 | Avago Technologies International Sales Pte. Limited | Motor vector prediction using co-located prediction units |
| US10623767B2 (en) * | 2015-10-19 | 2020-04-14 | Lg Electronics Inc. | Method for encoding/decoding image and device therefor |
| US10560718B2 (en) | 2016-05-13 | 2020-02-11 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
| CN116708782A (zh) * | 2016-07-12 | 2023-09-05 | 韩国电子通信研究院 | 图像编码/解码方法以及用于该方法的记录介质 |
| CN109804627B (zh) * | 2016-08-11 | 2023-07-25 | Lx 半导体科技有限公司 | 图像编码/解码方法和设备 |
| US10721489B2 (en) | 2016-09-06 | 2020-07-21 | Qualcomm Incorporated | Geometry-based priority for the construction of candidate lists |
| US10477238B2 (en) | 2016-09-07 | 2019-11-12 | Qualcomm Incorporated | Sub-PU based bi-directional motion compensation in video coding |
| US10812791B2 (en) | 2016-09-16 | 2020-10-20 | Qualcomm Incorporated | Offset vector identification of temporal motion vector predictor |
| JP7048503B2 (ja) * | 2016-09-27 | 2022-04-05 | シャープ株式会社 | 復号装置、符号化装置、復号方法、および、符号化方法 |
| KR102531386B1 (ko) | 2016-10-04 | 2023-05-12 | 주식회사 비원영상기술연구소 | 영상 데이터 부호화/복호화 방법 및 장치 |
| CN106507111B (zh) * | 2016-11-17 | 2019-11-15 | 上海兆芯集成电路有限公司 | 使用残差补偿的视频编码方法以及使用该方法的装置 |
| WO2018099269A1 (en) * | 2016-11-29 | 2018-06-07 | Mediatek Inc. | Method and apparatus of merge mode derivation for video coding |
| DE112018002096T5 (de) | 2017-04-21 | 2020-01-09 | Zenimax Media Inc. | Spielereingabebewegungskompensation durch antizipation von bewegungsvektoren |
| TWI646823B (zh) * | 2017-04-27 | 2019-01-01 | 晨星半導體股份有限公司 | 視訊壓縮方法及視訊壓縮裝置 |
| CN110546956B (zh) | 2017-06-30 | 2021-12-28 | 华为技术有限公司 | 一种帧间预测的方法及装置 |
| WO2019074273A1 (ko) | 2017-10-10 | 2019-04-18 | 한국전자통신연구원 | 인터 예측 정보를 사용하는 방법 및 장치 |
| CN111567045B (zh) | 2017-10-10 | 2025-05-09 | 韩国电子通信研究院 | 使用帧间预测信息的方法和装置 |
| US10785494B2 (en) * | 2017-10-11 | 2020-09-22 | Qualcomm Incorporated | Low-complexity design for FRUC |
| US20190116374A1 (en) * | 2017-10-17 | 2019-04-18 | Qualcomm Incorporated | Coding motion information of video data using coding structure-based candidate list construction |
| EP3704856A1 (en) * | 2017-11-01 | 2020-09-09 | Vid Scale, Inc. | Sub-block motion derivation and decoder-side motion vector refinement for merge mode |
| TWI795463B (zh) * | 2017-11-14 | 2023-03-11 | 美商高通公司 | 統一合併候選列表運用 |
| TW201924349A (zh) * | 2017-11-17 | 2019-06-16 | 晨星半導體股份有限公司 | 與移動補償相關之影像處理裝置及影像處理方法 |
| US10623746B2 (en) * | 2017-12-07 | 2020-04-14 | Tencent America LLC | Method and apparatus for video coding |
| CN108347616B (zh) * | 2018-03-09 | 2020-02-14 | 中南大学 | 一种基于可选时域运动矢量预测的深度预测方法及装置 |
| WO2019194502A1 (ko) * | 2018-04-01 | 2019-10-10 | 엘지전자 주식회사 | 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
| KR102502175B1 (ko) * | 2018-04-01 | 2023-02-21 | 엘지전자 주식회사 | 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
| CN117294837A (zh) * | 2018-04-02 | 2023-12-26 | 深圳市大疆创新科技有限公司 | 用于图像处理的方法和图像处理装置 |
| US11297348B2 (en) * | 2018-04-13 | 2022-04-05 | Mediatek Inc. | Implicit transform settings for coding a block of pixels |
| WO2019199141A1 (ko) * | 2018-04-13 | 2019-10-17 | 엘지전자 주식회사 | 비디오 코딩 시스템에서 인터 예측 방법 및 장치 |
| US10999604B2 (en) | 2018-04-13 | 2021-05-04 | Mediatek Inc. | Adaptive implicit transform setting |
| US10397603B1 (en) * | 2018-05-08 | 2019-08-27 | Tencent America LLC | Method and apparatus for video coding |
| MX2020012547A (es) | 2018-05-24 | 2021-02-18 | Kt Corp | Método y aparato para procesar señal de video. |
| CN112040243B (zh) * | 2018-06-04 | 2021-06-29 | 华为技术有限公司 | 获取运动矢量的方法和装置 |
| US11109025B2 (en) * | 2018-06-04 | 2021-08-31 | Tencent America LLC | Method and apparatus for sub-block based temporal motion vector prediction |
| WO2019234606A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between ibc and atmvp |
| US12348762B2 (en) | 2018-06-19 | 2025-07-01 | Qualcomm Incorporated | Signaling sub-prediction unit motion vector predictor |
| CN110636298B (zh) | 2018-06-21 | 2022-09-13 | 北京字节跳动网络技术有限公司 | 对于Merge仿射模式和非Merge仿射模式的统一约束 |
| CN110636297B (zh) | 2018-06-21 | 2021-05-14 | 北京字节跳动网络技术有限公司 | 分量相关的子块分割 |
| EP4465630A3 (en) * | 2018-06-27 | 2025-02-12 | InterDigital VC Holdings, Inc. | Methods and apparatus for reducing the coding latency of decoder-side motion refinement |
| WO2020003278A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Update of look up table: fifo, constrained fifo |
| KR102840294B1 (ko) | 2018-06-29 | 2025-07-30 | 두인 비전 컴퍼니 리미티드 | 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념 |
| WO2020003261A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Selection from multiple luts |
| TWI752331B (zh) | 2018-06-29 | 2022-01-11 | 大陸商北京字節跳動網絡技術有限公司 | 當向Merge/AMVP添加HMVP候選時的部分/完全修剪 |
| EP3794824A1 (en) | 2018-06-29 | 2021-03-24 | Beijing Bytedance Network Technology Co. Ltd. | Conditions for updating luts |
| WO2020003282A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Managing motion vector predictors for video coding |
| EP4325861A3 (en) | 2018-06-29 | 2024-03-06 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and amvp |
| KR20240005240A (ko) | 2018-06-29 | 2024-01-11 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut에서의 모션 후보들의 검사 순서 |
| CN113163211B (zh) * | 2018-06-30 | 2023-01-03 | Oppo广东移动通信有限公司 | 基于合并模式的帧间预测方法及装置 |
| EP3815376A1 (en) | 2018-07-02 | 2021-05-05 | Beijing Bytedance Network Technology Co. Ltd. | Luts with intra prediction modes and intra mode prediction from non-adjacent blocks |
| SG11202012701XA (en) * | 2018-07-02 | 2021-01-28 | Huawei Tech Co Ltd | Motion vector prediction method and apparatus, encoder, and decoder |
| CN117812257A (zh) | 2018-07-02 | 2024-04-02 | Lg电子株式会社 | 图像解码方法、图像编码方法、存储介质和发送方法 |
| WO2020017861A1 (ko) * | 2018-07-16 | 2020-01-23 | 엘지전자 주식회사 | 서브블록 단위의 시간적 움직임 정보 예측을 위한 인터 예측 방법 및 그 장치 |
| US11539958B2 (en) * | 2018-07-17 | 2022-12-27 | Lg Electronics Inc. | Method for predicting subblock-based temporal motion vector and apparatus therefor |
| HUE068222T2 (hu) * | 2018-07-18 | 2024-12-28 | Beijing Dajia Internet Information | Elõzmény-alapú mozgásvektor elõrejelzést használó videókódoló eljárások és készülékek |
| US11943430B2 (en) * | 2018-07-27 | 2024-03-26 | Samsung Electronics Co., Ltd. | Method and device for encoding image and method and device for decoding image on basis of sub-block |
| WO2020024966A1 (en) * | 2018-07-31 | 2020-02-06 | Mediatek Inc. | Method and apparatus of merge with motion vector difference for video coding |
| CN117241039A (zh) | 2018-08-28 | 2023-12-15 | 华为技术有限公司 | 帧间预测方法、装置以及视频编码器和视频解码器 |
| CN117319650A (zh) * | 2018-08-28 | 2023-12-29 | 华为技术有限公司 | 编码方法、解码方法以及编码装置、解码装置 |
| CN114363610B (zh) | 2018-08-29 | 2022-09-16 | 北京达佳互联信息技术有限公司 | 视频编码的方法、计算设备和存储介质 |
| PL3681161T3 (pl) | 2018-09-12 | 2024-05-06 | Lg Electronics Inc. | Sposób dekodowania oraz enkodowania obrazu przez urządzenie w oparciu o predykcję ruchu w jednostce pod-bloku w systemie kodowania obrazu |
| CN111064961B (zh) * | 2018-09-12 | 2023-06-09 | 北京字节跳动网络技术有限公司 | 视频处理方法和装置 |
| GB2579763B (en) * | 2018-09-21 | 2021-06-09 | Canon Kk | Video coding and decoding |
| EP3854095A1 (en) * | 2018-09-21 | 2021-07-28 | InterDigital VC Holdings, Inc. | Motion vector prediction in video encoding and decoding |
| WO2020060344A1 (ko) * | 2018-09-21 | 2020-03-26 | 엘지전자 주식회사 | 영상 신호를 처리하기 위한 방법 및 장치 |
| GB2577318B (en) | 2018-09-21 | 2021-03-10 | Canon Kk | Video coding and decoding |
| TWI839388B (zh) | 2018-09-24 | 2024-04-21 | 大陸商北京字節跳動網絡技術有限公司 | 簡化的基於歷史的運動矢量預測 |
| CN116527889A (zh) * | 2018-09-25 | 2023-08-01 | 华为技术有限公司 | 一种图像预测方法和设备 |
| WO2020072401A1 (en) * | 2018-10-02 | 2020-04-09 | Interdigital Vc Holdings, Inc. | Method and apparatus for video encoding and decoding using list of predictor candidates |
| KR102448403B1 (ko) * | 2018-10-08 | 2022-09-28 | 엘지전자 주식회사 | Atmvp 후보를 기반으로 영상 코딩을 수행하는 장치 |
| CN111010571B (zh) | 2018-10-08 | 2023-05-16 | 北京字节跳动网络技术有限公司 | 组合仿射Merge候选的生成和使用 |
| US11051034B2 (en) * | 2018-10-08 | 2021-06-29 | Qualcomm Incorporated | History-based motion vector predictor |
| GB2595053B (en) | 2018-10-18 | 2022-07-06 | Canon Kk | Video coding and decoding |
| GB2595054B (en) | 2018-10-18 | 2022-07-06 | Canon Kk | Video coding and decoding |
| CN111083489B (zh) | 2018-10-22 | 2024-05-14 | 北京字节跳动网络技术有限公司 | 多次迭代运动矢量细化 |
| CN111083484B (zh) | 2018-10-22 | 2024-06-28 | 北京字节跳动网络技术有限公司 | 基于子块的预测 |
| WO2020084556A1 (en) * | 2018-10-24 | 2020-04-30 | Beijing Bytedance Network Technology Co., Ltd. | Sub-block motion candidate list in video coding |
| EP3847814A4 (en) * | 2018-11-06 | 2021-07-14 | Beijing Bytedance Network Technology Co. Ltd. | POSITION DEPENDENT STORAGE, MOVEMENT INFORMATION |
| CN112997480B (zh) | 2018-11-10 | 2023-08-22 | 北京字节跳动网络技术有限公司 | 成对平均候选计算中的取整 |
| CN111630865B (zh) * | 2018-11-12 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 广义双向预测模式的线缓冲器减少 |
| WO2020098694A1 (en) | 2018-11-13 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Construction method for a spatial motion candidate list |
| WO2020098753A1 (en) * | 2018-11-14 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Improvements of Affine Prediction Mode |
| KR20210091161A (ko) | 2018-11-20 | 2021-07-21 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 부분적 위치에 기반한 차분 계산 |
| CN113170171B (zh) | 2018-11-20 | 2024-04-12 | 北京字节跳动网络技术有限公司 | 组合帧间帧内预测模式的预测细化 |
| CN113170198B (zh) * | 2018-11-22 | 2022-12-09 | 北京字节跳动网络技术有限公司 | 子块时域运动矢量预测 |
| CN113170181B (zh) | 2018-11-29 | 2023-12-08 | 北京字节跳动网络技术有限公司 | 块内拷贝模式中的仿射继承方法 |
| CN113170128B (zh) | 2018-12-03 | 2024-05-28 | 北京字节跳动网络技术有限公司 | 帧间预测的部分修剪方法 |
| US11122288B2 (en) * | 2018-12-06 | 2021-09-14 | Qualcomm Incorporated | Spatio-temporal motion vector prediction patterns for video coding |
| KR20250093424A (ko) * | 2018-12-12 | 2025-06-24 | 엘지전자 주식회사 | 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치 |
| WO2020130520A1 (ko) * | 2018-12-16 | 2020-06-25 | 엘지전자 주식회사 | 화면간 예측을 사용하여 비디오 신호를 처리하기 위한 방법 및 장치 |
| KR102810173B1 (ko) | 2018-12-18 | 2025-05-20 | 엘지전자 주식회사 | 이차 변환에 기반한 영상 코딩 방법 및 그 장치 |
| GB2580084B (en) * | 2018-12-20 | 2022-12-28 | Canon Kk | Video coding and decoding |
| JP2020108083A (ja) * | 2018-12-28 | 2020-07-09 | 株式会社Jvcケンウッド | 画像符号化装置、画像符号化方法及び画像符号化プログラム |
| CN119629362A (zh) * | 2018-12-28 | 2025-03-14 | 瑞典爱立信有限公司 | 生成运动向量预测器列表 |
| US20220078406A1 (en) | 2018-12-29 | 2022-03-10 | Vid Scale, Inc. | History-based motion vector prediction |
| CN118474390A (zh) * | 2019-01-02 | 2024-08-09 | Lg 电子株式会社 | 基于sbtmvp的帧间预测方法和设备 |
| CN111357290B (zh) | 2019-01-03 | 2023-08-22 | 北京大学 | 视频图像处理方法与装置 |
| CN116866605A (zh) * | 2019-01-03 | 2023-10-10 | 北京大学 | 视频处理方法和装置 |
| CN111357288B (zh) * | 2019-01-03 | 2021-08-31 | 深圳市大疆创新科技有限公司 | 视频图像处理方法与装置 |
| CN113287302A (zh) * | 2019-01-04 | 2021-08-20 | 世宗大学校产学协力团 | 用于图像编码/解码的方法和装置 |
| JP7275286B2 (ja) | 2019-01-10 | 2023-05-17 | 北京字節跳動網絡技術有限公司 | Lut更新の起動 |
| WO2020143824A1 (en) | 2019-01-13 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and shared merge list |
| WO2020147772A1 (en) | 2019-01-16 | 2020-07-23 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidates derivation |
| US20200288175A1 (en) * | 2019-03-06 | 2020-09-10 | Qualcomm Incorporated | Signaling of triangle merge mode indexes in video coding |
| WO2020177756A1 (en) | 2019-03-06 | 2020-09-10 | Beijing Bytedance Network Technology Co., Ltd. | Size dependent inter coding |
| EP3937489B1 (en) * | 2019-03-08 | 2024-08-14 | Jvckenwood Corporation | Moving image encoding device, moving image encoding method, moving image encoding program, moving image decoding device, moving image decoding method, and moving image decoding program |
| CN113557735B (zh) * | 2019-03-11 | 2024-05-10 | 北京字节跳动网络技术有限公司 | 运动候选列表构造的改进 |
| CN112468812B (zh) | 2019-03-11 | 2022-07-01 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
| CN113826397B (zh) * | 2019-03-15 | 2025-09-23 | 交互数字Vc控股公司 | 用于图像编码和解码的方法和设备 |
| WO2020192611A1 (en) | 2019-03-22 | 2020-10-01 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between merge list construction and other tools |
| CN111953995A (zh) | 2019-05-17 | 2020-11-17 | 华为技术有限公司 | 一种帧间预测的方法和装置 |
| WO2020233661A1 (en) | 2019-05-21 | 2020-11-26 | Beijing Bytedance Network Technology Co., Ltd. | Syntax signaling in sub-block merge mode |
| CN117395397A (zh) | 2019-06-04 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 使用临近块信息的运动候选列表构建 |
| EP3963889A4 (en) | 2019-06-04 | 2023-01-25 | Beijing Bytedance Network Technology Co., Ltd. | CONDITIONAL IMPLEMENTATION OF A PROCEDURE FOR CREATING A MOVEMENT CANDIDATE LIST |
| WO2020244659A1 (en) | 2019-06-06 | 2020-12-10 | Beijing Bytedance Network Technology Co., Ltd. | Interactions between sub-block based intra block copy and different coding tools |
| CN113994699B (zh) | 2019-06-06 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 视频编解码的运动候选列表构建 |
| EP3967039B1 (en) * | 2019-06-07 | 2024-10-30 | Beijing Dajia Internet Information Technology Co., Ltd. | Sub-block temporal motion vector prediction for video coding |
| CN115065828B (zh) * | 2019-06-13 | 2024-05-03 | 北京达佳互联信息技术有限公司 | 用于视频编解码的运动矢量预测 |
| CN114080812B (zh) * | 2019-06-13 | 2025-08-05 | Lg电子株式会社 | 使用sbtmvp的基于帧间预测的图像或视频编译 |
| CN112118447B (zh) | 2019-06-19 | 2023-06-20 | 华为技术有限公司 | 融合候选运动信息列表的构建方法、装置及编解码器 |
| CN114342405B (zh) | 2019-06-24 | 2025-01-14 | Lg电子株式会社 | 图像解码方法和用于该图像解码方法的装置 |
| WO2020259411A1 (en) * | 2019-06-24 | 2020-12-30 | FG Innovation Company Limited | Device and method for coding video data |
| EP3984215A4 (en) | 2019-07-14 | 2022-08-24 | Beijing Bytedance Network Technology Co., Ltd. | TRANSFORMATION BLOCK SIZE LIMITATION IN VIDEO ENCODING |
| CN114208166B (zh) | 2019-08-10 | 2024-04-09 | 北京字节跳动网络技术有限公司 | 视频比特流中的子图片相关信令通知 |
| KR102808776B1 (ko) | 2019-08-13 | 2025-05-15 | 두인 비전 컴퍼니 리미티드 | 서브 블록 기반 인터 예측의 모션 정밀도 |
| CN110740317B (zh) | 2019-09-18 | 2021-10-15 | 浙江大华技术股份有限公司 | 子块运动预测、编码方法、编码器及存储装置 |
| WO2021052506A1 (en) | 2019-09-22 | 2021-03-25 | Beijing Bytedance Network Technology Co., Ltd. | Transform unit based combined inter intra prediction |
| CN117596389A (zh) | 2019-09-28 | 2024-02-23 | 北京字节跳动网络技术有限公司 | 视频编解码中的几何分割模式 |
| KR20240042245A (ko) * | 2019-10-10 | 2024-04-01 | 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 | 삼각형 분할을 이용한 비디오 코딩을 위한 방법 및 장치 |
| CN110691253B (zh) * | 2019-10-17 | 2022-03-01 | 北京大学深圳研究生院 | 一种基于帧间预测的编解码方法及装置 |
| KR102871115B1 (ko) | 2019-10-18 | 2025-10-16 | 두인 비전 컴퍼니 리미티드 | 서브픽처들의 파라미터 세트 시그널링에서의 신택스 제약들 |
| CN115280774B (zh) | 2019-12-02 | 2025-08-19 | 抖音视界有限公司 | 视觉媒体处理的方法、装置及非暂时性计算机可读存储介质 |
| CN115514971B (zh) * | 2019-12-24 | 2025-08-26 | 北京达佳互联信息技术有限公司 | 对视频数据进行编码的方法和装置 |
| WO2021141477A1 (ko) | 2020-01-12 | 2021-07-15 | 엘지전자 주식회사 | 머지 후보들의 최대 개수 정보를 포함하는 시퀀스 파라미터 세트를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
| US11375231B2 (en) * | 2020-01-14 | 2022-06-28 | Tencent America LLC | Method and apparatus for video coding |
| WO2021180022A1 (en) | 2020-03-07 | 2021-09-16 | Beijing Bytedance Network Technology Co., Ltd. | Handling of transform skip mode in video coding |
| CN115349254A (zh) | 2020-03-23 | 2022-11-15 | 抖音视界有限公司 | 控制编解码视频中不同级别的去块滤波 |
| US12375644B2 (en) * | 2021-10-05 | 2025-07-29 | Tencent America LLC | Grouping based adaptive reordering of merge candidate |
| WO2024078331A1 (en) * | 2022-10-14 | 2024-04-18 | Mediatek Inc. | Method and apparatus of subblock-based motion vector prediction with reordering and refinement in video coding |
| US12563217B2 (en) * | 2023-04-14 | 2026-02-24 | Tencent America LLC | Systems and methods for candidate list construction |
| CN117061753A (zh) * | 2023-08-04 | 2023-11-14 | 北京百度网讯科技有限公司 | 预测帧间编码的运动矢量的方法和装置 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120287999A1 (en) | 2011-05-11 | 2012-11-15 | Microsoft Corporation | Syntax element prediction in error correction |
| ES2913828T3 (es) | 2011-09-09 | 2022-06-06 | Lg Electronics Inc | Método de predicción inter y aparato correspondiente |
| US9736489B2 (en) * | 2011-09-17 | 2017-08-15 | Qualcomm Incorporated | Motion vector determination for video coding |
| US9571833B2 (en) | 2011-11-04 | 2017-02-14 | Nokia Technologies Oy | Method for coding and an apparatus |
| KR20130050406A (ko) | 2011-11-07 | 2013-05-16 | 오수미 | 머지 모드에서의 움직임 정보 생성 방법 |
| US9729873B2 (en) | 2012-01-24 | 2017-08-08 | Qualcomm Incorporated | Video coding using parallel motion estimation |
| US9325990B2 (en) | 2012-07-09 | 2016-04-26 | Qualcomm Incorporated | Temporal motion vector prediction in video coding extensions |
| US9699450B2 (en) | 2012-10-04 | 2017-07-04 | Qualcomm Incorporated | Inter-view predicted motion vector for 3D video |
| CN103841425B (zh) | 2012-10-08 | 2017-04-05 | 华为技术有限公司 | 用于运动矢量预测的运动矢量列表建立的方法、装置 |
| US9667996B2 (en) | 2013-09-26 | 2017-05-30 | Qualcomm Incorporated | Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC |
| US9762927B2 (en) | 2013-09-26 | 2017-09-12 | Qualcomm Incorporated | Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC |
-
2016
- 2016-01-25 US US15/005,564 patent/US11477477B2/en active Active
- 2016-01-26 WO PCT/US2016/014875 patent/WO2016123081A1/en not_active Ceased
- 2016-01-26 HU HUE16705364A patent/HUE047034T2/hu unknown
- 2016-01-26 EP EP16705364.4A patent/EP3251361B1/en active Active
- 2016-01-26 CN CN201680006068.8A patent/CN107211156B/zh active Active
- 2016-01-26 EA EA201791449A patent/EA035270B1/ru unknown
- 2016-01-26 TN TNP/2017/000288A patent/TN2017000288A1/en unknown
- 2016-01-26 BR BR112017015890-6A patent/BR112017015890B1/pt active IP Right Grant
- 2016-01-26 KR KR1020177020567A patent/KR102102029B1/ko active Active
- 2016-01-26 TW TW105102383A patent/TWI696382B/zh active
- 2016-01-26 CA CA2971636A patent/CA2971636C/en active Active
- 2016-01-26 ES ES16705364T patent/ES2755573T3/es active Active
- 2016-01-26 JP JP2017538966A patent/JP6636530B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2018506908A (ja) | 2018-03-08 |
| EA201791449A1 (ru) | 2017-12-29 |
| BR112017015890A2 (pt) | 2018-04-10 |
| JP6636530B2 (ja) | 2020-01-29 |
| HUE047034T2 (hu) | 2020-04-28 |
| TWI696382B (zh) | 2020-06-11 |
| KR20170108010A (ko) | 2017-09-26 |
| EP3251361A1 (en) | 2017-12-06 |
| BR112017015890B1 (pt) | 2023-10-17 |
| TW201640893A (zh) | 2016-11-16 |
| WO2016123081A1 (en) | 2016-08-04 |
| US11477477B2 (en) | 2022-10-18 |
| US20160219278A1 (en) | 2016-07-28 |
| CN107211156B (zh) | 2019-08-30 |
| CN107211156A (zh) | 2017-09-26 |
| EA035270B1 (ru) | 2020-05-22 |
| CA2971636A1 (en) | 2016-08-04 |
| TN2017000288A1 (en) | 2019-01-16 |
| EP3251361B1 (en) | 2019-08-14 |
| KR102102029B1 (ko) | 2020-04-17 |
| CA2971636C (en) | 2021-10-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2755573T3 (es) | Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción | |
| ES3024946T3 (en) | Simplification of history-based motion vector prediction | |
| ES2988476T3 (es) | Codificación de información de movimiento de predicción afín para codificación de vídeo | |
| ES2841312T3 (es) | Predicción de vectores de movimiento para modelos de movimiento afines en codificación de vídeo | |
| ES2669399T3 (es) | Vector de movimiento predicho entre visualizaciones para vídeo 3D | |
| ES2900751T3 (es) | Extensiones de sintaxis de alto nivel para codificación de vídeo de alta eficacia | |
| ES2900029T3 (es) | Derivación de vector de movimiento en codificación de vídeo | |
| KR102094588B1 (ko) | 공간적 및/또는 시간적 모션 정보를 사용하는 서브-예측 유닛 모션 벡터 예측 | |
| CN109691106B (zh) | 一种对视频数据进行编解码的方法、装置及计算机可读存储介质 | |
| EP3510774B1 (en) | Geometry-based priority for the construction of candidate lists | |
| ES2869854T3 (es) | Unificar copia intrabloque e interpredicción | |
| KR102404598B1 (ko) | 비디오 코딩을 위한 모션 벡터 예측용 병합 후보들 | |
| ES2734574T3 (es) | Modo avanzado de fusión/salto y modo avanzado de predicción de vector de movimiento (AMVP) para vídeo 3D | |
| ES2841986T3 (es) | Identificación de bloques usando vector de disparidad en la codificación de vídeo | |
| ES3022203T3 (en) | Adaptive motion vector precision for video coding | |
| ES2979151T3 (es) | Predicción de movimiento afín para la codificación de vídeo | |
| ES2753958T3 (es) | Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3D-HEVC | |
| ES2799323T3 (es) | Técnicas de codificación de vídeo usando particionamiento de movimiento asimétrica | |
| ES2633150T3 (es) | Predicción de vectores de movimiento en codificación de vídeo | |
| KR101834611B1 (ko) | 비디오 코딩에서 디스패리티 벡터 예측 | |
| ES2638416T3 (es) | Predicción residual avanzada (ARP) más precisa para la codificación de texturas | |
| CN104769949B (zh) | 用于视差向量导出的图片的选择的方法和装置 | |
| ES2892479T3 (es) | Modo de predicción ponderada para codificación de video escalable | |
| WO2019147826A1 (en) | Advanced motion vector prediction speedups for video coding | |
| KR20140146605A (ko) | 3d-hevc를 위한 디스패리티 벡터 구성 방법 |