ES2954447T3 - Predicción de vectores de movimiento - Google Patents

Predicción de vectores de movimiento Download PDF

Info

Publication number
ES2954447T3
ES2954447T3 ES18735138T ES18735138T ES2954447T3 ES 2954447 T3 ES2954447 T3 ES 2954447T3 ES 18735138 T ES18735138 T ES 18735138T ES 18735138 T ES18735138 T ES 18735138T ES 2954447 T3 ES2954447 T3 ES 2954447T3
Authority
ES
Spain
Prior art keywords
block
motion vector
mvp
video
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18735138T
Other languages
English (en)
Inventor
Yi-Wen Chen
Wei-Jung Chien
Yu-Chen Sun
Li Zhang
Sungwon Lee
Xiang Li
Hsiao-Chiang Chuang
Jianle Chen
Vadim Seregin
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2954447T3 publication Critical patent/ES2954447T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un codificador de vídeo puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. Además, el codificador de vídeo determina, basándose en el vector de movimiento del bloque no adyacente, un predictor de vector de movimiento (MVP) para el bloque actual. El codificador de vídeo puede determinar un vector de movimiento del bloque actual. El codificador de vídeo también puede determinar un bloque predictivo basándose en el vector de movimiento del bloque actual. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Predicción de vectores de movimiento
Esta solicitud reivindica el beneficio de la solicitud de patente provisional de Estados Unidos núm. 62/519,007, presentada el 13 de junio de 2017.
Campo técnico
Esta divulgación se refiere a dispositivos configurados para realizar codificación o decodificación, a procedimientos de codificación o decodificación de vídeo y a un medio de almacenamiento que contiene un programa informático para realizar dichos procedimientos.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse en 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, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, celular o teléfonos por radio satélite, los denominados "teléfonos inteligentes", dispositivos de vídeoconferencia, dispositivos de transmisión continua de vídeo, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o ITU-T H.265, Codificación de Vídeo de Alta Eficiencia (HEVC), y por las extensiones de tales estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente al implementar tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo pueden realizar predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (por ejemplo, una trama de vídeo o una porción de una trama de vídeo) puede particionarse en bloques de vídeo, tales como bloques de árbol de codificación y bloques de codificación. La predicción espacial o temporal da como resultado un bloque predictivo para que se codifique un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, dando como resultado coeficientes de transformación residuales, que luego pueden cuantificarse.
La solicitud de patente US2013343459A1, publicada el 26 de diciembre de 2013, divulga técnicas de codificación de vídeo que implican predicción de vectores de movimiento. Pueden formarse predicciones de vectores de movimiento espaciales para el bloque actual, por ejemplo, al usar los vectores de movimiento de los bloques vecinos codificados y/o de los bloques no vecinos en el mismo segmento o trama.
La solicitud de patente EP2800370A1, publicada el 5 de noviembre de 2014, divulga técnicas de codificación de vídeo que implican la generación de candidatos de información de movimiento de fusión. Una unidad de selección de información de movimiento de fusión selecciona un candidato de información de movimiento de fusión de la pluralidad de candidatos de información de movimiento de fusión y usa el candidato de información de movimiento de fusión seleccionado en un bloque de predicción sujeto a codificación. Para este propósito, las imágenes de referencia se almacenan en una memoria controlada mediante un procedimiento FIFO (primero en entrar, primero en salir).
Resumen
En general, esta divulgación describe técnicas relacionadas con la predicción de vectores de movimiento. Las técnicas de esta divulgación pueden aplicarse a cualquiera de los códecs de vídeo existentes, tal como HEVC (Codificación de Vídeo de Alta Eficiencia) o cualquier estándar de codificación de vídeo futuro.
La invención protegida se define por la combinación de características establecidas respectivamente en las reivindicaciones independientes adjuntas 1 y 5-8, con realizaciones preferentes adicionales que se definen en las reivindicaciones dependientes.
La divulgación habilitante se proporciona con las realizaciones que se describen más abajo en relación con las Figuras 26 y 27. Otros aspectos, realizaciones y ejemplos se proporcionan con propósitos ilustrativos y no caen dentro del ámbito de la invención protegida a menos que se combinen con todas las características definidas en una cualquiera de las reivindicaciones independientes adjuntas.
En un ejemplo, esta divulgación describe un procedimiento para la decodificación de datos de vídeo, el procedimiento que comprende: determinar, mediante un decodificador de vídeo, un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, mediante el decodificador de vídeo, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar, mediante el decodificador de vídeo, en base al MVP para el bloque actual, un vector de movimiento del bloque actual; determinar, mediante el decodificador de vídeo, un bloque predictivo en base al vector de movimiento del bloque actual; reconstruir, mediante el decodificador de vídeo, en base al bloque predictivo, valores de muestra de la imagen actual.
En otro ejemplo, esta divulgación describe un procedimiento para la codificación de datos de vídeo, el procedimiento que comprende: determinar, mediante un codificador de vídeo, un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, mediante el codificador de vídeo, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar, mediante el codificador de vídeo, un vector de movimiento del bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento (MVD) señalizada en un flujo de bits; determinar, mediante el codificador de vídeo, un bloque predictivo en base al vector de movimiento del bloque actual; y generar, mediante el codificador de vídeo, en base al bloque predictivo, valores de muestra residuales.
En otro ejemplo, esta divulgación describe un aparato para decodificar datos de vídeo, el aparato que comprende: uno o más medios de almacenamiento configurados para almacenar datos de vídeo; y uno o más procesadores configurados para: determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual; determinar un bloque predictivo en base al vector de movimiento del bloque actual; y reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual.
En otro ejemplo, esta divulgación describe un aparato para codificar datos de vídeo, el procedimiento que comprende: determinar, mediante un codificador de vídeo, un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, mediante el codificador de vídeo, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar, mediante el codificador de vídeo, un vector de movimiento del bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento (MVD) señalizada en un flujo de bits; determinar, mediante el codificador de vídeo, un bloque predictivo en base al vector de movimiento del bloque actual; y generar, mediante el codificador de vídeo, en base al bloque predictivo, valores de muestra residuales.
En otro ejemplo, esta divulgación describe un aparato para decodificar datos de vídeo, el aparato que comprende: medios para determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; medios para determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; medios para determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual; medios para determinar un bloque predictivo en base al vector de movimiento del bloque actual; y medios para reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual.
En otro ejemplo, esta divulgación describe un aparato para codificar datos de vídeo, el aparato que comprende: medios para determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; medios para determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; medios para determinar un vector de movimiento del bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento (MVD) señalizada en un flujo de bits; medios para determinar un bloque predictivo en base al vector de movimiento del bloque actual; y medios para generar, en base al bloque predictivo, valores de muestra residuales.
En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, provocan que uno o más procesadores: determinen un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual; determinar un bloque predictivo en base al vector de movimiento del bloque actual; y reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual.
En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, provocan que uno o más procesadores: determinen un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual; determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual; determinar un vector de movimiento del bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento (MVD) señalizada en un flujo de bits; determinar un bloque predictivo en base al vector de movimiento del bloque actual; y generar, en base al bloque predictivo, valores de muestra residuales.
Los detalles de uno o más aspectos de la divulgación se exponen en los dibujos acompañantes y en la descripción más abajo. Otras características, objetos y ventajas de las técnicas descritas en esta divulgación serán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede usar una o más técnicas descritas en esta divulgación.
La Figura 2 es un ejemplo de candidatos a vectores de movimiento vecinos espaciales y temporales para modos de fusión/omisión.
La Figura 3 es un ejemplo de emparejamiento bilateral.
La Figura 4 es un ejemplo de emparejamiento de plantillas.
La Figura 5 es un ejemplo de estimación de movimiento unilateral en la conversión ascendente de tasa de tramas.
La Figura 6 es un ejemplo de un refinamiento del vector de movimiento del lado del decodificador en base a la emparejamiento de plantillas bilaterales.
La Figura 7 es un ejemplo de predicción de movimiento de predicción de vectores de movimiento temporal avanzada para una unidad de codificación.
La Figura 8 es un ejemplo de una unidad de codificación con cuatro subbloques y sus bloques vecinos.
La Figura 9 es un diagrama de bloques de un ejemplo de modelo de movimiento afín simplificado para un bloque afín actual.
La Figura 10 es un ejemplo de modelo de movimiento afín simplificado para un bloque afín actual.
La Figura 11 es un ejemplo de un campo de vector de movimiento de predicción de compensación de movimiento.
La Figura 12 es un ejemplo de un campo de vector de movimiento almacenado.
La Figura 13 es un ejemplo de predicción de vectores de movimiento para AF_INTER.
La Figura 14A es un diagrama de bloques que ilustra un orden de selección de bloques candidatos para AF MERGE.
La Figura 14B es un diagrama de bloques que ilustra candidatos para AF_MERGE si un bloque candidato inferior izquierdo está codificado en modo afín.
La Figura 15 es un diagrama de bloques que ilustra bloques no adyacentes de ejemplo, de acuerdo con una técnica de esta divulgación.
La Figura 16 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes, de acuerdo con una técnica de esta divulgación.
La Figura 17 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes en base a un bloque principal.
La Figura 18A es un diagrama de bloques que ilustra un ejemplo de modificación de posición de un bloque no adyacente, de acuerdo con una técnica de esta divulgación.
La Figura 18B es un diagrama de bloques que ilustra un ejemplo de modificación de posición de un bloque no adyacente, de acuerdo con una técnica de esta divulgación.
La Figura 19A es un diagrama de bloques que ilustra un ejemplo de un umbral para modificar un bloque no adyacente, de acuerdo con una técnica de esta divulgación.
La Figura 19B es un diagrama de bloques que ilustra un ejemplo de un umbral para modificar un bloque no adyacente, de acuerdo con una técnica de esta divulgación.
La Figura 20 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes, de acuerdo con una técnica de esta divulgación.
La Figura 21 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes, de acuerdo con una técnica de esta divulgación.
La Figura 22 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes, de acuerdo con una técnica de esta divulgación.
La Figura 23 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes en base a un bloque principal, de acuerdo con una técnica de esta divulgación.
La Figura 24 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar una o más técnicas descritas en esta divulgación.
La Figura 25 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar una o más técnicas descritas en esta divulgación.
La Figura 26 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para la codificación de datos de vídeo, de acuerdo con una o más técnicas de esta divulgación.
La Figura 27 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo para la decodificación de datos de vídeo de acuerdo con una o más técnicas de esta divulgación.
La Figura 28 es un diagrama de flujo que ilustra una operación de ejemplo para determinar un NA-SMVP mediante el uso de candidatos de vector de movimiento de Conversión Ascendente de Tasa de Fotogramas (FRUC), de acuerdo con una técnica de esta divulgación.
La Figura 29 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo que incluye candidatos sintéticos en una lista de candidatos de MVP para un bloque actual, de acuerdo con una o más técnicas de esta divulgación.
La Figura 30 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo que incluye candidatos sintéticos en una lista de candidatos de MVP para un bloque actual, de acuerdo con una o más técnicas de esta divulgación.
La Figura 31 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
La Figura 32 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo para la decodificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
La Figura 33 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
La Figura 34 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo para la decodificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
La Figura 35 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
La Figura 36 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo para la decodificación de datos de vídeo, de acuerdo con una técnica de esta divulgación.
Descripción detallada
A medida que mejoró la compresión de vídeo, aumentó la proporción de datos codificados usados para representar vectores de movimiento. En consecuencia, para lograr una mayor compresión de vídeo, puede ser deseable mejorar la forma en que se codifican los vectores de movimiento. Es deseable lograr una mayor compresión de vídeo por muchas razones, tal como ser capaz de enviar datos de vídeo de mayor calidad a través de la infraestructura existente, reducir la congestión de la red, etc. La predicción de vectores de movimiento es una forma común de reducir la cantidad de datos usados para codificar un vector de movimiento para un bloque. En la mayoría de los sistemas de predicción de vectores de movimiento, un codificador de vídeo determina una lista de predictores de vectores de movimiento para el bloque, selecciona un predictor de vectores de movimiento y luego señala una posición en la lista del vector de movimiento seleccionado. Un decodificador de vídeo determina la misma lista de predictores de vectores de movimiento y determina el predictor de vectores de movimiento seleccionado en base a los datos señalados en el flujo de bits. El decodificador de vídeo puede entonces usar el predictor de vectores de movimiento para determinar uno o más vectores de movimiento del bloque.
Esta divulgación describe técnicas que pueden mejorar la predicción de vectores de movimiento y, por lo tanto, mejorar potencialmente la eficiencia de la compresión de vídeo, mediante el uso más completo de información del vector de movimiento reconstruida. Por ejemplo, esta divulgación describe técnicas que usan predictores de vectores de movimiento de uno o más bloques de una imagen actual que no son espacialmente adyacentes a un bloque actual de la imagen actual. En este ejemplo, un codificador de vídeo (por ejemplo, un codificador de vídeo o un decodificador de vídeo) puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. Además, en este ejemplo, el codificador de vídeo puede determinar, en base al vector de movimiento del bloque no adyacente, un predictor de vectores de movimiento (MVP) para el bloque actual. El codificador de vídeo puede entonces determinar (por ejemplo, en base al MVP para el bloque actual) un vector de movimiento del bloque actual. Adicionalmente, el codificador de vídeo puede determinar un bloque predictivo en base al vector de movimiento del bloque actual.
Además, esta divulgación describe técnicas para generar candidatos a vectores de movimiento sintéticos. Esta divulgación también describe técnicas para generar candidatos predictores de vectores de movimiento temporal adicionales. Además, esta divulgación describe técnicas que usan modos de intrapredicción de uno o más bloques de una imagen actual que no son espacialmente adyacentes a un bloque actual de la imagen actual para determinar uno o más modos de intrapredicción más probables en un conjunto de modos de intrapredicción más probables para el bloque actual. Las técnicas de esta divulgación, o subcombinaciones de las mismas, pueden usarse juntas o por separado.
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo 10 que puede utilizar técnicas de esta divulgación. Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo fuente 12 que proporciona datos de vídeo codificados para ser decodificados en un momento posterior mediante un dispositivo de destino 14. El dispositivo fuente 12 puede ser un aparato para codificar datos de vídeo y el dispositivo de destino 14 puede ser un aparato para decodificar datos de vídeo. En particular, el dispositivo fuente 12 proporciona los datos de vídeo codificados al dispositivo de destino 14 a través de un medio legible por ordenador 16. El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos y aparatos, que incluye ordenadores de escritorio, ordenadores portátiles (es decir, portátil), tabletas, módulos de conexión, teléfonos móviles tales como los denominados teléfonos "inteligentes", tabletas, 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 fuente 12 y el dispositivo de destino 14 se equipan para la comunicación inalámbrica. Por tanto, el dispositivo fuente 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica. Las técnicas descritas en esta divulgación pueden aplicarse a aplicaciones inalámbricas y/o cableadas. El dispositivo fuente 12 es un dispositivo de codificación de vídeo de ejemplo (es decir, un dispositivo para la codificación de datos de vídeo). El dispositivo de destino 14 es un ejemplo de dispositivo de decodificación de vídeo (es decir, un dispositivo para la decodificación de datos de vídeo).
El sistema ilustrado 10 de la Figura 1 es simplemente un ejemplo. Las técnicas para el procesamiento de datos de vídeo pueden realizarse mediante cualquier dispositivo de codificación y/o decodificación de vídeo digital. En algunos ejemplos, las técnicas pueden realizarse mediante un codificador/decodificador de vídeo, típicamente denominado como "CODEC". El dispositivo fuente 12 y el dispositivo de destino 14 son ejemplos de tales dispositivos de codificación en los que el dispositivo fuente 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, el dispositivo fuente 12 y el dispositivo de destino 14 opera de una manera sustancialmente simétrica de manera que cada uno del dispositivo fuente 12 y el dispositivo de destino 14 incluyen componentes de codificación y decodificación de vídeo. Por tanto, el sistema 10 puede soportar la transmisión de vídeo unidireccional o bidireccional entre el dispositivo fuente 12 y el dispositivo de destino 14, por ejemplo, para transmisión continua de vídeo, reproducción de vídeo, difusión de vídeo o vídeotelefonía.
En el ejemplo de la Figura 1, el dispositivo fuente 12 incluye una fuente de vídeo 18, medios de almacenamiento 19 configurados para almacenar datos de vídeo, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 26, un medio de almacenamiento 28 configurado para almacenar datos de vídeo codificados, un decodificador de vídeo 30, y un dispositivo de visualización 32. En otros ejemplos, el dispositivo fuente 12 y el dispositivo de destino 14 incluyen otros componentes o disposiciones. Por ejemplo, el dispositivo fuente 12 puede recibir datos de vídeo de una fuente de vídeo externa, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
La fuente de vídeo 18 es una fuente de datos de vídeo. Los datos de vídeo pueden comprender una serie de imágenes. La fuente de vídeo 18 puede incluir un dispositivo de captura de vídeo, tales como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de alimentación de vídeo para recibir datos de vídeo de un proveedor de contenido de vídeo. En algunos ejemplos, la fuente de vídeo 18 genera datos de vídeo basados en gráficos de ordenador, o una combinación de vídeo en vivo, vídeo archivados y vídeo generados por ordenador. El medio de almacenamiento 19 puede configurarse para almacenar los datos de vídeo. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede codificarse mediante el codificador de vídeo 20.
La interfaz de salida 22 puede enviar la información de vídeo codificada a un medio legible por ordenador 16. La interfaz de salida 22 puede comprender diversos tipos de componentes o dispositivos. Por ejemplo, la interfaz de salida 22 puede comprender un transmisor inalámbrico, un módem, un componente de red cableado (por ejemplo, una tarjeta Ethernet) u otro componente físico. En ejemplos donde la interfaz de salida 22 comprende un transmisor inalámbrico, la interfaz de salida 22 puede configurarse para transmitir datos, tal como datos de vídeo codificados, modulados de acuerdo con un estándar de comunicación celular, tal como 4G, 4G-LTE, LTE Advanced, 5G y similares. En algunos ejemplos donde la interfaz de salida 22 comprende un transmisor inalámbrico, la interfaz de salida 22 puede configurarse para transmitir datos, tales como datos de vídeo codificados, modulados de acuerdo con otros estándares inalámbricos, tales como una especificación IEEE 802.11, una especificación IEEE 802.15 (por ejemplo, ZigBee™), un estándar Bluetooth™ y similares. En algunos ejemplos, los circuitos de la interfaz de salida 22 se integran en los circuitos del codificador de vídeo 20 y/u otros componentes del dispositivo fuente 12. Por ejemplo, el codificador de vídeo 20 y la interfaz de salida 22 pueden ser partes de un sistema en un chip (SoC). El SoC también puede incluir otros componentes, tal como un microprocesador de propósito general, una unidad de procesamiento de gráficos, etc.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados para decodificarlos a través de un medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo fuente 12 al dispositivo de destino 14. En algunos ejemplos, el medio legible por ordenador 16 comprende un medio de comunicación para permitir que el dispositivo fuente 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red en base a 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 fuente 12 al dispositivo de destino 14. El dispositivo de destino 14 puede comprender uno o más medios de almacenamiento de datos configurados para almacenar datos de vídeo codificados y datos de vídeo decodificados.
En algunos ejemplos, la interfaz de salida 22 puede enviar datos, tal como por ejemplo datos de vídeo codificados, a un dispositivo intermedio, tal como un dispositivo de almacenamiento. De manera similar, la interfaz de entrada 26 del dispositivo de destino 14 puede recibir datos codificados desde el dispositivo intermedio. El dispositivo intermedio puede incluir cualquiera de una variedad de 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 que pueda adecuarse para almacenar datos de vídeo codificados. En algunos ejemplos, el dispositivo intermedio corresponde a un servidor de archivos. Ejemplo de servidores de archivos incluyen un servidor web, un servidor FTP, dispositivos de almacenamiento conectados a la red (NAS), o dispositivos 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, que incluye una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem por cable, etc.), o una combinación de ambos que sea adecuada para acceder a los datos de vídeo codificados almacenados en un servidor de archivos. 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 las mismas.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusión inalámbrica o una transmisión de red por cable, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad flash, un disco compacto, un disco de vídeo digital, Disco Blu-ray u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo fuente 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, a través de transmisión de red. De manera similar, un dispositivo informático de una instalación de producción media, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo fuente 12 y producir un disco que contenga los datos de vídeo codificados. Por lo tanto, puede entenderse que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz de entrada 26 del dispositivo de destino 14 recibe datos del medio legible por ordenador 16. La interfaz de entrada 26 puede comprender diversos tipos de componentes o dispositivos. Por ejemplo, la interfaz de entrada 26 puede comprender un receptor inalámbrico, un módem, un componente de red cableado (por ejemplo, una tarjeta Ethernet) u otro componente físico. En ejemplos donde la interfaz de entrada 26 comprende un receptor inalámbrico, la interfaz de entrada 26 puede configurarse para recibir datos, tal como el flujo de bits, modulados de acuerdo con un estándar de comunicación celular, tal como 4G, 4G-LTE, LTE Advanced, 5G y similares. En algunos ejemplos donde la interfaz de entrada 26 comprende un receptor inalámbrico, la interfaz de entrada 26 puede configurarse para recibir datos, tales como el flujo de bits, modulados de acuerdo con otros estándares inalámbricos, tales como una especificación IEEE 802.11, una especificación IEEE 802.15 (por ejemplo, ZigBee™), un estándar Bluetooth™ y similares. En algunos ejemplos, los circuitos de la interfaz de entrada 26 pueden integrarse en los circuitos del decodificador de vídeo 30 y/u otros componentes del dispositivo de destino 14. Por ejemplo, el decodificador de vídeo 30 y la interfaz de entrada 26 pueden ser partes de un SoC. El SoC también puede incluir otros componentes, tal como un microprocesador de propósito general, una unidad de procesamiento de gráficos, etc.
El medio de almacenamiento 28 puede configurarse para almacenar datos de vídeo codificados, tales como datos de vídeo codificados (por ejemplo, un flujo de bits) recibidos por la interfaz de entrada 26. El dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario. El dispositivo de visualización 32 puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (0LED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matriz de puertas lógicas programables en campo (FPGA), lógica discreta, software, hardware, microprograma o cualquiera de sus combinaciones. Cuando las técnicas se implementan de manera parcial en el software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en el hardware mediante el uso de uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno de los codificadores de vídeo 20 y el decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (C0DEC) en un dispositivo respectivo. En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 codifican y decodifican datos de vídeo de acuerdo con un estándar o especificación de codificación de vídeo. Por ejemplo, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden codificar y decodificar datos de vídeo de acuerdo con los estándares ITU-T H.261, IS0/IEC MPEG-1 Visual, ITU-T H.262 o IS0/IEC MPEG-2 Visual, ITU-T H.263, IS0/IEC MPEG-4 Visual y ITU-T H.264 (también conocido como IS0/IEC MPEG-4 AVC), incluidas sus extensiones de Codificación de Vídeo Escalable (SVC) y Codificación de Vídeo Multivista (MVC), u otro estándar o especificación de codificación de vídeo. En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 codifican y decodifican datos de vídeo de acuerdo con la Codificación de Vídeo de Alta Eficiencia (HEVC), conocida como ITU-T H.265, su rango y extensiones de codificación de contenido de pantalla, su extensión de codificación de vídeo 3D (3D-HEVC), su extensión multivista (MV-HEVC) o su extensión escalable (SHVC). HEVC, SHVC y 3D-HEVC fueron desarrollados por el Equipo de Colaboración Conjunto sobre Codificación de Vídeo (JCT-VC), así como también por el Equipo de Colaboración Conjunto sobre Desarrollo de Extensiones de Codificación de Vídeo 3D (JCT-3V) del Grupo de Expertos en Codificación de Vídeo del ITU-T (VCEG) y el Grupo de Expertos en Imágenes en Movimiento ISO/IEC (MPEG).
ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) están estudiando la posible necesidad de estandarizar la futura tecnología de codificación de vídeo con una capacidad de compresión que supere significativamente la del estándar HEVC actual (incluidas sus extensiones actuales y extensiones a corto plazo para codificación de contenido de pantalla y codificación de alto rango dinámico). Los grupos están trabajando juntos en esta actividad de exploración en un esfuerzo de colaboración conjunto conocido como Equipo Conjunto de Exploración por Vídeo (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en esta área. El JVET se reunió por primera vez del 19 al 21 de octubre de 2015.Chen y otros, "Algorithm Description of Joint Exploration Test Model 5", Equipo Conjunto de Exploración por Vídeo (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5ta reunión, Ginebra, CH, 12-20 de enero de 2017, el documento JVET E-1001, es una descripción del algoritmo del Modelo de Prueba de Exploración Conjunta 6 (JEMS).Chen y otros, "Algorithm Description of Joint Exploration Test Model 6", Equipo Conjunto de Exploración por Vídeo (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 6ta reunión, Hobart, Au , 31 de marzo - 7 de abril de 2017, el documento JVET F-1001, es una descripción del algoritmo del Modelo de Prueba de Exploración Conjunta 6 (JEM6). El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con el modelo de exploración conjunta o el nuevo estándar de Codificación de Vídeo Versátil (VVC) actualmente en desarrollo.
Esta divulgación puede referirse generalmente a "señalizar" cierta información, tal como elementos de sintaxis. El término "señalizar" puede referirse generalmente a la comunicación de elementos de sintaxis y/u otros datos usados para decodificar los datos de vídeo codificados. Tal comunicación puede ocurrir en tiempo real o en tiempo casi real. Alternativamente, tal comunicación puede producirse durante un período de tiempo, tal como podría producirse al almacenar elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits en el momento de la codificación, que luego puede recuperarse mediante un dispositivo de decodificación en cualquier momento después almacenándose en este medio.
En HEVC y otras especificaciones de codificación de vídeo, los datos de vídeo incluyen una serie de imágenes. Las imágenes pueden además, referirse a "tramas". Una imagen puede incluir una o más matrices de muestra. Cada matriz de muestras respectivo de una imagen puede comprender una matriz de muestras para un componente de color respectivo. Una imagen puede incluir tres matrices de muestra, que se denotan Sl, Sob y Sor. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luminancia. SCb es una matriz bidimensional de muestras de croma Cb. SCr es una matriz bidimensional de muestras de croma Cr. En otros casos, una imagen puede ser monocromática y solamente puede incluir una matriz de muestras de luminancia.
Como parte de la codificación de datos de vídeo, el codificador de vídeo 20 puede codificar imágenes de los datos de vídeo. En otras palabras, el codificador de vídeo 20 puede generar representaciones codificadas de las imágenes de los datos de vídeo. Una representación codificada de una imagen puede denominarse en la presente memoria "imagen codificada" o "imagen codificada".
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede codificar bloques de la imagen. El codificador de vídeo 20 puede incluir, en un flujo de bits, una representación codificada del bloque de vídeo. En algunos ejemplos, para codificar un bloque de la imagen, el codificador de vídeo 20 realiza una intrapredicción o una interpredicción para generar uno o más bloques predictivos. Adicionalmente, el codificador de vídeo 20 puede generar datos residuales para el bloque. El bloque residual comprende muestras residuales. Cada muestra residual puede indicar una diferencia entre una muestra de uno de los bloques predictivos generados y una muestra correspondiente del bloque. De esta manera, el codificador de vídeo 20 puede generar, en base a un bloque predictivo, valores de muestra residuales. El codificador de vídeo 20 puede aplicar una transformación a bloques de muestras residuales para generar coeficientes de transformación. Además, el codificador de vídeo 20 puede cuantificar los coeficientes de transformación. En algunos ejemplos, el codificador de vídeo 20 puede generar uno o más elementos de sintaxis para representar un coeficiente de transformación. El codificador de vídeo 20 puede codificar por entropía uno o más de los elementos de sintaxis que representan el coeficiente de transformación.
Más específicamente, cuando se codifican datos de vídeo de acuerdo con HEVC u otras especificaciones de codificación de vídeo, para generar una representación codificada de una imagen, el codificador de vídeo 20 puede particionar cada matriz de muestra de la imagen en bloques de árbol de codificación (CTB) y codificar los CTB. Un CTB puede ser un bloque NxN de muestras en una matriz de muestra de una imagen. En el perfil principal HEVC, el tamaño de un CTB puede variar de 16x16 a 64x64, aunque técnicamente pueden soportarse tamaños de CTB de 8x8.
Una unidad de árbol de codificación (CTU) de una imagen puede comprender uno o más CTB y puede comprender estructuras de sintaxis usadas para codificar las muestras de uno o más CTB. Por ejemplo, cada CTU puede comprender un CTB de muestras de luminancia, dos CTB correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los CTB. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único CTB y estructuras de sintaxis usadas para codificar las muestras del CTB. Una CTU puede además, referirse a un "bloque de árbol" o una "unidad de codificación más grande" (LCU). En esta divulgación, una "estructura de sintaxis" puede definirse como cero o más elementos de sintaxis presentes juntos en un flujo de bits en un orden específico. En algunos códecs, una imagen codificada es una representación codificada que contiene todas las CTU de la imagen.
Para codificar una CTU de una imagen, el codificador de vídeo 20 puede particionar los CTB de la CTU en uno o más bloques de codificación. Un bloque de codificación es un bloque de muestras NxN. EN algunos códecs, para codificar una CTU de una imagen, el codificador de vídeo 20 puede realizar de forma recursiva una partición de árboles cuádruples en los bloques de árbol de codificación de una CTU para particionar los CTB en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Una unidad de codificación (CU) puede comprender uno o más bloques de codificación y estructuras de sintaxis usadas para codificar muestras de uno o más bloques de codificación. Por ejemplo, una CU puede comprender un bloque de codificación de muestras de luminancia y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luminancia, una matriz de muestras de Cb y una matriz de muestras de Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CU puede comprender un solo bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación. En HEVC, la unidad de codificación más grande de un segmento se denomina bloque de árbol de codificación (CTB) o unidad de árbol de codificación (CTU). Un CTB contiene un árbol cuádruple cuyos nodos son CU. El tamaño de un CTB puede oscilar entre 16x16 y 64x64 en el perfil principal HEVC (aunque técnicamente se soportan tamaños de CTB de 8x8). Sin embargo, una unidad de codificación (CU) puede tener el mismo tamaño que una CTB y puede ser tan pequeña como 8x8. Cada unidad de codificación se codificada con un modo.
Además, el codificador de vídeo 20 puede codificar CU de una imagen de los datos de vídeo. En algunos códecs, como parte de la codificación de una CU, el codificador de vídeo 20 puede particionar un bloque de codificación de la CU en uno o más bloques de predicción. Un bloque de predicción es un bloque de muestras rectangular (es decir, cuadrado o no cuadrado) en el que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender uno o más bloques de predicción de una Cu y estructuras de sintaxis usadas para predecir uno o más bloques de predicción. Por ejemplo, una PU puede comprender un bloque de predicción de muestras de luminancia, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede comprender un solo bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción.
El codificador de vídeo 20 puede generar un bloque predictivo (por ejemplo, un bloque predictivo de luminancia, Cb y Cr) para un bloque de predicción (por ejemplo, un bloque de predicción de luminancia, Cb y Cr) de una PU de una CU. El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar un bloque predictivo. Si el codificador de vídeo 20 usa la intrapredicción para generar un bloque predictivo, el codificador de vídeo 20 puede generar el bloque predictivo en base a muestras decodificadas de la imagen que incluye la CU. Si el codificador de vídeo 20 usa la interpredicción para generar un bloque predictivo de una PU de una imagen actual, el codificador de vídeo 20 puede generar el bloque predictivo de la Pu en base a muestras decodificadas de una imagen de referencia (es decir, una imagen de referencia diferente de la imagen actual). En HEVC, el codificador de vídeo 20 genera una estructura de sintaxis "unidad_predicción" dentro de una estructura de sintaxis "unidad_codificación" para PU inter predicho, pero no genera una estructura de sintaxis "unidad_predicción" dentro de una estructura de sintaxis "unidad_codificación" para PU intra predicho. En cambio, en HEVC, los elementos de sintaxis relacionados con las PU intra predicha se incluyen directamente en la estructura de sintaxis "unidad_codificación". Cuando una CU se inter codifica, la CU puede particionarse además en 2 o 4 PU o convertirse en una sola PU cuando no se apliquen más particiones. Cuando están presentes dos PU en una CU, pueden ser rectángulos de tamaño medio o dos rectángulos con % o % del tamaño de la CU. Cuando la CU se inter codifica, está presente un conjunto de información de movimiento para cada PU. Además, cada PU se codifica con un modo de interpredicción único para derivar el conjunto de información de movimiento. En esta divulgación, la terminología "bloque" puede referirse a CU, PU o cualquier otra unidad de codificación usada con propósitos de codificación de vídeo.
Un codificador de vídeo, tal como un codificador de vídeo 20 o un decodificador de vídeo 30, puede realizar una intrapredicción mediante el uso de un modo de intrapredicción seleccionado de una pluralidad de modos de intrapredicción disponibles. Los modos de intrapredicción pueden incluir modos de intrapredicción direccionales, que también pueden denominarse direcciones de intrapredicción. Los diferentes modos de intrapredicción direccional corresponden a diferentes ángulos. En algunos ejemplos, para determinar un valor de una muestra actual de un bloque predictivo mediante el uso de un modo de intrapredicción direccional, el codificador de vídeo puede determinar un punto donde una línea que pasa a través de la muestra actual en el ángulo correspondiente al modo de intrapredicción direccional interseca una conjunto de muestras de borde. Las muestras de borde pueden comprender muestras en una columna inmediatamente a la izquierda del bloque predictivo y muestras en una fila inmediatamente encima del bloque predictivo. Si el punto está entre dos de las muestras de borde, el codificador de vídeo puede interpolar o determinar de otro modo un valor correspondiente al punto. Si el punto corresponde a una única de las muestras de borde, el codificador de vídeo puede determinar que el valor del punto es igual a la muestra de borde. El codificador de vídeo puede establecer el valor de la muestra actual del bloque predictivo igual al valor determinado del punto.
En HEVC y algunos otros códecs, el codificador de vídeo 20 codifica una CU mediante el uso de solamente un modo de predicción (es decir, intrapredicción o interpredicción). Por tanto, en HEVC y otros códecs en particular, el codificador de vídeo 20 puede generar bloques predictivos de cada PU de una CU mediante el uso de intrapredicción o el codificador de vídeo 20 puede generar bloques predictivos de cada PU de la CU mediante el uso de interpredicción. Cuando el codificador de vídeo 20 usa interpredicción para codificar una CU, el codificador de vídeo 20 puede particionar la CU en 2 o 4 PU, o una PU corresponde a la CU completa. Cuando están presentes dos PU en una CU, las dos PU pueden ser rectángulos de tamaño medio o dos rectángulos con % o % del tamaño de la CU. En HEVC, hay ocho modos de partición para una CU codificada con modo de interpredicción, es decir, PART_2Nx2N, PART_2NxN, PART_Nx2N, PART_NxN, PART_2NxnU, PART_2NxnD, PART_nLx2N y PART_nRx2N. Cuando se intra predice una CU, 2Nx2N y NxN son las únicas formas de PU permitidas, y dentro de cada PU se codifica un único modo de intrapredicción (mientras que el modo de predicción de croma se señala a nivel de CU).
El codificador de vídeo 20 puede generar uno o más bloques residuales de para la CU. Por ejemplo, el codificador de vídeo 20 puede generar un bloque residual de luminancia para la CU. Cada muestra en el bloque residual de luminancia de la CU indica una diferencia entre una muestra de luminancia en uno de los bloques predictivos de luminancia de la CU y una muestra correspondiente en el bloque de codificación de luminancia original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra en el bloque residual de Cb de una CU puede indicar una diferencia entre una muestra de Cb en uno de los bloques predictivos de Cb de la CU y una muestra correspondiente en el bloque de codificación de Cb original de la CU. El codificador de vídeo 20 puede además, generar un bloque residual de Cr para la CU. Cada muestra en el bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
Además, el codificador de vídeo 20 puede descomponer los bloques residuales de una CU en uno o más bloques de transformación. Por ejemplo, el codificador de vídeo 20 puede usar la partición de árboles cuádruples para descomponer los bloques residuales de una CU en uno o más bloques de transformación. Un bloque de transformación es un bloque de muestras rectangular (por ejemplo, cuadrado o no cuadrado) en el que se aplica la misma transformación. Una unidad de transformación (TU) de una CU puede comprender uno o más bloques de transformación. Por ejemplo, una TU puede comprender un bloque de transformación de muestras de luminancia, dos bloques de transformación correspondientes de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloques de transformación. Por tanto, cada TU de una CU puede tener un bloque de transformación de luminancia, un bloque de transformación de Cb y un bloque de transformación de Cr. El bloque de transformación de luminancia de la TU puede ser un subbloque del bloque residual de luminancia de la CU. El bloque de transformación de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformación de Cr puede ser un subbloque del bloque residual de Cr de la CU. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una TU puede comprender un único bloque de transformación y estructuras de sintaxis usadas para transformar las muestras del bloque de transformación.
El codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformación de una TU para generar un bloque de coeficientes para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformación. Un coeficiente de transformación puede ser una cantidad escalar. En algunos ejemplos, una o más transformaciones convierten el bloque de transformación de un dominio de píxeles a un dominio de frecuencia. Por tanto, en tales ejemplos, un coeficiente de transformación puede ser una cantidad escalar considerada en un dominio de frecuencia. Un nivel de coeficiente de transformación es una cantidad entera que representa un valor asociado con un índice de frecuencia bidimensional particular en un proceso de decodificación antes del escalado para el cálculo de un valor de coeficiente de transformación.
En algunos ejemplos, el codificador de vídeo 20 omite la aplicación de las transformaciones al bloque de transformación. En tales ejemplos, el codificador de vídeo 20 puede tratar los valores de muestra residuales de la misma manera que los coeficientes de transformación. Por tanto, en ejemplos donde el codificador de vídeo 20 omite la aplicación de las transformadas, la siguiente discusión sobre coeficientes de transformación y bloques de coeficientes puede ser aplicable a bloques de transformación de muestras residuales.
De acuerdo con JEM, un codificador de vídeo (tal como el codificador de vídeo 200) particiona una imagen en una pluralidad de unidades de árbol de codificación (CTU). El codificador de vídeo 200 puede particionar una CTU de acuerdo con una estructura de árbol, tal como una estructura de árbol binario de cuatro árboles (QTBT). La estructura QTBT de JEM elimina los conceptos de múltiples tipos de particiones, tal como la separación entre CU, PU y TU de HEVC. Por tanto, en el contexto del JEM, el término "PU" o "TU" puede aplicarse a una CU. Una estructura QTBT de JEM incluye dos niveles: un primer nivel particionado de acuerdo con la partición de árbol cuádruple y un segundo nivel particionado de acuerdo con la partición de árbol binario. Un nodo raíz de la estructura QTBT corresponde a una CTU. Los nodos de hoja de los árboles binarios corresponden a unidades de codificación (CU).
En algunos ejemplos, el codificador de vídeo 200 y el decodificador de vídeo 300 pueden usar una única estructura QTBT para representar cada uno de los componentes de luminancia y croma, mientras que en otros ejemplos, el codificador de vídeo 200 y el decodificador de vídeo 300 pueden usar dos o más estructuras QTBT, tales como una estructura QTBT para el componente de luminancia y otra estructura QTBT para ambos componentes de croma (o dos estructuras QTBT para los respectivos componentes de croma).
Después de generar un bloque de coeficientes, el codificador de vídeo 20 puede cuantificar el bloque de coeficientes para posiblemente reducir la cantidad de datos usados para representar el bloque de coeficientes, proporcionando potencialmente una compresión adicional. La cuantificación generalmente se refiere a un proceso en el que un intervalo de valores se comprime en un único valor. Por ejemplo, la cuantificación puede realizarse al dividir un valor por una constante y luego redondeando al número entero más cercano. Para cuantificar el bloque de coeficientes, el codificador de vídeo 20 puede cuantificar los coeficientes de transformación del bloque de coeficientes. La cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación. Por ejemplo, un coeficiente de transformación de n bits puede redondearse a un coeficiente de transformación de m bits durante la cuantificación, donde n es mayor que m. En algunos ejemplos, el codificador de vídeo 20 omite la cuantificación.
El codificador de vídeo 20 puede generar elementos de sintaxis que indiquen algunos o todos los coeficientes de transformación potencialmente cuantificados. El codificador de vídeo 20 puede codificar por entropía uno o más de los elementos de sintaxis que indican un coeficiente de transformación cuantificado. Por ejemplo, el codificador de vídeo 20 puede realizar una Codificación Aritmética Binaria Adaptada al Contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformación cuantificados. Por tanto, un bloque codificado (por ejemplo, una CU codificada) puede incluir los elementos de sintaxis codificados por entropía que indican los coeficientes de transformación cuantificados.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos de vídeo codificados. En otras palabras, el codificador de vídeo 20 puede emitir un flujo de bits que incluya una representación codificada de datos de vídeo. La representación codificada de los datos de vídeo puede incluir una representación codificada de imágenes de los datos de vídeo. Por ejemplo, el flujo de bits puede comprender una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo y datos asociados. En algunos ejemplos, una representación de una imagen codificada puede incluir representaciones codificadas de bloques de la imagen.
El decodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Como se señaló anteriormente, el flujo de bits puede comprender una representación codificada de datos de vídeo. El decodificador de vídeo 30 puede decodificar el flujo de bits para reconstruir imágenes de los datos de vídeo. Como parte de la decodificación del flujo de bits, el decodificador de vídeo 30 puede obtener elementos de sintaxis del flujo de bits. El decodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base a, al menos en parte, los elementos de sintaxis obtenidos del flujo de bits. El proceso para reconstruir imágenes de los datos de vídeo puede ser generalmente recíproco al proceso realizado mediante el codificador de vídeo 20 para codificar las imágenes. Por ejemplo, como parte de la decodificación de una imagen de los datos de vídeo, el decodificador de vídeo 30 puede usar interpredicción o intrapredicción para generar bloques predictivos. Adicionalmente, el decodificador de vídeo 30 puede determinar coeficientes de transformación en base a los elementos de sintaxis obtenidos del flujo de bits. En algunos ejemplos, el decodificador de vídeo 30 cuantifica de forma inversa los coeficientes de transformación determinados. La cuantificación inversa asigna el valor cuantificado a un valor reconstruido. Por ejemplo, el decodificador de vídeo 30 puede cuantificar de forma inversa un valor al determinar el valor multiplicado por un tamaño de etapa de cuantificación. Además, el decodificador de vídeo 30 puede aplicar una transformación inversa a los coeficientes de transformación determinados para determinar los valores de las muestras residuales. El decodificador de vídeo 30 puede reconstruir un bloque de la imagen en base a las muestras residuales y las muestras correspondientes de los bloques predictivos generados. Por ejemplo, el decodificador de vídeo 30 puede añadir muestras residuales a las muestras correspondientes de los bloques predictivos generados para determinar las muestras reconstruidas del bloque.
Más específicamente, en HEVC y otras especificaciones de codificación de vídeo, el decodificador de vídeo 30 puede usar interpredicción o intrapredicción para generar uno o más bloques predictivos para cada PU de una CU actual. Además, el decodificador de vídeo 30 puede cuantificar de forma inversa los bloques de coeficientes de las TU de la CU actual. El decodificador de vídeo 30 puede realizar transformaciones inversas en los bloques de coeficientes para reconstruir bloques de transformación de las TU de la CU actual. El decodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual en base a las muestras de los bloques predictivos para las PU de la CU actual y las muestras residuales de los bloques de transformación de las TU de la CU actual. El decodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual al añadir las muestras de los bloques predictivos para las PU de la CU actual a las muestras decodificadas correspondientes de los bloques de transformación de las TU de la CU actual. Al reconstruir los bloques de codificación de cada CU de una imagen, el decodificador de vídeo 30 puede reconstruir la imagen.
Un segmento de una imagen puede incluir un número entero de bloques de la imagen. Por ejemplo, en HEVC y otras especificaciones de codificación de vídeo, un segmento de una imagen puede incluir un número entero de CTU de la imagen. Las CTU de un segmento pueden ordenarse consecutivamente en un orden de escaneo, tal como un orden de escaneo de trama. En HEVC y potencialmente en otros códecs, un segmento se define como un número entero de CTU contenidas en un segmento de corte independiente y todos los segmentos de corte dependientes subsecuentes (si los hay) que preceden al siguiente segmento de corte independiente (si lo hay) dentro de la misma unidad de acceso. Además, en HEVC y potencialmente en otros códecs, un segmento de corte se define como un número entero de CTU ordenadas consecutivamente en el escaneo de mosaicos y contenidas en una única unidad NAL. Un escaneo de mosaicos es un orden secuencial específico de CTB que particiona una imagen en la que los CTB se ordenan consecutivamente en un escaneo de trama CTB en un mosaico, mientras que los mosaicos en una imagen se ordenan consecutivamente en un escaneo de trama de los mosaicos de la imagen. Un mosaico es una región rectangular de CTB dentro de una columna de mosaicos particular y una fila de mosaicos particular en una imagen.
Como se mencionó anteriormente, un codificador de vídeo (por ejemplo, un codificador de vídeo 20 o un decodificador de vídeo 30) puede aplicar interpredicción para generar un bloque predictivo para un bloque de vídeo de una imagen actual. Por ejemplo, en el contexto de HEVC y otras especificaciones de codificación de vídeo, el codificador de vídeo puede aplicar interpredicción para generar un bloque predictivo para un bloque de predicción de una PU de una CU del bloque actual. Si el codificador de vídeo aplica la interpredicción para generar un bloque predictivo, el codificador de vídeo puede generar el bloque predictivo en base a muestras decodificadas de una o más imágenes de referencia. Las imágenes de referencia son imágenes distintas a la imagen actual. El codificador de vídeo puede determinar una o más listas de imágenes de referencia. Cada una de las listas de imágenes de referencia puede incluir cero o más imágenes de referencia. En el contexto de HEVC y otras especificaciones de codificación de vídeo, una de las listas de imágenes de referencia puede denominarse como Lista de Imágenes de Referencia 0 (es decir, RefPicList0 o list0) y otra lista de imágenes de referencia puede denominarse como Lista de Imágenes de Referencia 1 (es decir, RefPicList1 o list1).
El codificador de vídeo puede aplicar interpredicción unidireccional o interpredicción bidireccional para generar un bloque predictivo. Cuando el codificador de vídeo aplica interpredicción unidireccional para generar un bloque predictivo para un bloque de vídeo, el codificador de vídeo determina un único bloque de referencia para el bloque de vídeo en base a las muestras de una única imagen de referencia. Además, cuando el codificador de vídeo aplica interpredicción unidireccional, el codificador de vídeo puede establecer el bloque predictivo igual al bloque de referencia. Cuando el codificador de vídeo aplica interpredicción bidireccional para generar un bloque predictivo para un bloque de vídeo, el codificador de vídeo determina dos bloques de referencia para el bloque de vídeo. En algunos ejemplos, los dos bloques de referencia están en imágenes de referencia en diferentes listas de imágenes de referencia. Adicionalmente cuando el codificador de vídeo aplica interpredicción bidireccional, el codificador de vídeo puede determinar el bloque predictivo en base a los dos bloques de referencia. Por ejemplo, el codificador de vídeo puede determinar el bloque predictivo de manera que cada muestra del bloque predictivo sea un promedio ponderado de las muestras correspondientes de los dos bloques de referencia. Pueden usarse indicadores de lista de referencia para indicar cuál de las listas de imágenes de referencia incluye imágenes de referencia usadas para determinar bloques de referencia.
Como se mencionó anteriormente, un codificador de vídeo puede determinar un bloque de referencia en base a las muestras de una imagen de referencia. En algunos ejemplos, el codificador de vídeo puede determinar el bloque de referencia de manera que cada muestra del bloque de referencia sea igual a una muestra de la imagen de referencia. En algunos ejemplos, como parte de la determinación de un bloque de referencia, el codificador de vídeo puede interpolar muestras del bloque de referencia a partir de muestras de la imagen de referencia. Por ejemplo, el codificador de vídeo puede determinar que una muestra del bloque predictivo es un promedio ponderado de dos o más muestras de la imagen de referencia.
En algunos ejemplos, cuando el codificador de vídeo 20 realiza interpredicción unidireccional, el codificador de vídeo 20 busca un bloque de referencia dentro de una o más imágenes de referencia en una de las listas de imágenes de referencia. El bloque de referencia puede ser un bloque de muestras similar al bloque de predicción. En algunos ejemplos, el codificador de vídeo 20 usa un error cuadrático medio para determinar la similitud entre el bloque de referencia y el bloque de predicción. Además, el codificador de vídeo 20 puede determinar la información de movimiento para el bloque de predicción. La información de movimiento (es decir, los parámetros de movimiento) para el bloque de predicción puede incluir un vector de movimiento y un índice de referencia. El vector de movimiento puede indicar un desplazamiento espacial entre una posición del bloque de vídeo particular dentro de la imagen actual (es decir, la imagen que incluye el bloque de vídeo particular) y una posición del bloque de referencia dentro de la imagen de referencia. El índice de referencia indica una posición dentro de la lista de imágenes de referencia de la trama de referencia que contiene la lista de imágenes de referencia. El bloque predictivo para el bloque de vídeo particular puede ser igual al bloque de referencia.
Cuando el codificador de vídeo 20 realiza interpredicción bidireccional para un bloque de vídeo particular, el codificador de vídeo 20 puede buscar un primer bloque de referencia dentro de imágenes de referencia en una primera lista de imágenes de referencia ("lista 0") y puede buscar un segundo bloque de referencia dentro de imágenes de referencia en una segunda lista de imágenes de referencia ("lista 1"). El codificador de vídeo 20 puede generar, basándose al menos en parte en el primer y segundo bloques de referencia, el bloque predictivo para el bloque de vídeo particular. Además, el codificador de vídeo 20 puede generar un primer vector de movimiento que indica un desplazamiento espacial entre el bloque de vídeo particular y el primer bloque de referencia. El codificador de vídeo 20 también puede generar un primer índice de referencia que identifica una ubicación dentro de la primera lista de imágenes de referencia de la imagen de referencia que contiene el primer bloque de referencia. Además, el codificador de vídeo 20 puede generar un segundo vector de movimiento que indica un desplazamiento espacial entre el bloque de vídeo particular y el segundo bloque de referencia. El codificador de vídeo 20 también puede generar un segundo índice de referencia que identifica una ubicación dentro de la segunda lista de imágenes de referencia de la imagen de referencia que incluye el segundo bloque de referencia.
Cuando el codificador de vídeo 20 realiza interpredicción unidireccional en un bloque de vídeo particular, el decodificador de vídeo 30 puede usar la información de movimiento del bloque de vídeo particular para identificar el bloque de referencia del bloque de vídeo particular. El decodificador de vídeo 30 puede entonces generar el bloque predictivo del bloque de vídeo particular en base al bloque de referencia. Cuando el codificador de vídeo 20 realiza interpredicción bidireccional para determinar un bloque predictivo para un bloque de vídeo particular, el decodificador de vídeo 30 puede usar la información de movimiento del bloque de vídeo particular para determinar dos bloques de referencia. El decodificador de vídeo 30 puede generar el bloque predictivo del bloque de vídeo particular en base a las dos muestras de referencia del bloque de vídeo particular. De esta manera, ya sea para interpredicción unidireccional o interpredicción bidireccional, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden determinar un bloque predictivo en base a un vector de movimiento de un bloque.
El codificador de vídeo 20 puede señalar la información de movimiento de una unidad de vídeo de diversas maneras. Tal información de movimiento puede incluir vectores de movimiento, índices de referencia, indicadores de lista de imágenes de referencia y/u otros datos relacionados con el movimiento. En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden usar predicción de movimiento para reducir la cantidad de datos usados para señalar la información de movimiento. La predicción de movimiento puede comprender la determinación de la información de movimiento de una unidad de vídeo (por ejemplo, una PU) en base a la información de movimiento de una o más unidades de vídeo diferentes. Existen diversos tipos de predicción de movimiento. Por ejemplo, el modo de fusión y el modo de predicción de vectores de movimiento avanzada (AMVP) son dos tipos de predicción de movimiento. Es decir, en el estándar HEVC, hay dos modos de interpredicción, denominados modos de fusión (la omisión se considera un caso especial de fusión) y predicción de vectores de movimiento avanzada (AMVP), respectivamente, para una unidad de predicción (PU). Ya sea en modo AMVP o de fusión, se mantiene una lista de candidatos de vector de movimiento (MV) para múltiples predictores de vectores de movimiento. Ver J.-L. Lin, Y.-W. Chen, Y.-W. Huang y S.-M. Lei, "Motion vector coding in the HEVC standard", Temas seleccionados en procesamiento de señales, Revista IEEE de, vol. 7, núm. 6, pp. 957-968, 2013.
En modo de fusión, el codificador de vídeo 20 genera una lista de candidatos. La lista de candidatos incluye un conjunto de candidatos que indican la información de movimiento de una o más unidades de vídeo fuente. Las unidades de vídeo fuente pueden ser vecinas espacial o temporalmente de una unidad de vídeo actual. Además, en el modo de fusión, el codificador de vídeo 20 puede seleccionar un candidato de la lista de candidatos y puede usar la información de movimiento indicada por el candidato seleccionado como la información de movimiento de la unidad de vídeo actual. El codificador de vídeo 20 puede señalar la posición en la lista de candidatos del candidato seleccionado. El decodificador de vídeo 30 puede determinar, en base a la información obtenida de un flujo de bits, el índice en la lista de candidatos. Además, el decodificador de vídeo 30 puede generar la misma lista de candidatos y puede determinar, en base al índice, el candidato seleccionado. El decodificador de vídeo 30 puede entonces usar la información de movimiento del candidato seleccionado para generar un bloque predictivo para la unidad de vídeo actual.
El modo de omisión es similar al modo de fusión. En el modo de omisión, el codificador de vídeo 20 y el decodificador de vídeo 30 generan y usan una lista de candidatos de la misma manera que el codificador de vídeo 20 y el decodificador de vídeo 30 usan la lista de candidatos en el modo de fusión. Sin embargo, cuando el codificador de vídeo 20 señala la información de movimiento de una unidad de vídeo actual mediante el uso del modo de omisión, el codificador de vídeo 20 no señala ningún dato residual para la unidad de vídeo actual. En consecuencia, el decodificador de vídeo 30 puede determinar, sin uso de datos residuales, un bloque predictivo para la unidad de vídeo en base a uno o más bloques de referencia indicados por la información de movimiento de un candidato seleccionado en la lista de candidatos.
Para el modo de omisión y el modo de fusión, se señala un índice de fusión para indicar qué candidato de la lista de candidatos de fusión se usa. No se transmite ningún indicador de interpredicción, índice de referencia o diferencia de vectores de movimiento. En el modo de fusión se consideran dos o más tipos de candidatos a fusión, incluidos: predictores de vectores de movimiento espacial (SMVP) y predictores de vectores de movimiento temporal (TMVP). Para la derivación de SMVP, se selecciona un máximo de cuatro candidatos de fusión entre los candidatos que se ubican en posiciones como se representa en la Figura 2. El orden de derivación es A.i ^ B i ^ B o^ A o^ (B 2). En HEVC, posición B2se considera solamente cuando cualquier PU de la posición A i , Bi , Bo, Aono está disponible o está intra codificado o el número total de candidatos, después de la poda, de las posiciones Ai , Bi , Bo, Ao es menos de cuatro.
En la derivación de un TMVP, se deriva un vector de movimiento a escala en base a una PU coubicada que pertenece a una de las imágenes de referencia de una imagen actual dentro de una lista de imágenes de referencia señalizadas. La lista de imágenes de referencia usada para derivar la PU coubicada puede señalarse explícitamente en un encabezado de segmento de un segmento de la imagen actual. El vector de movimiento a escala para el candidato de fusión temporal puede obtenerse con el vector de movimiento a escala de la PU coubicada mediante el uso de las distancias de POC, tb y td, donde tb se define como la diferencia de POC entre la imagen de referencia de la imagen actual y la imagen actual y td se define como la diferencia POC entre la imagen de referencia de la imagen coubicada y la imagen coubicada. El índice de imagen de referencia del candidato de fusión temporal se establece en cero. Una realización práctica del proceso de escalado se describe en el borrador de la especificación HEVC, que está disponible en https://www.itu.int/rec/T-REC-H.265. Para un segmento B, se obtienen y combinan dos vectores de movimiento, uno para la lista de imágenes de referencia 0 y el otro para la lista de imágenes de referencia 1, para crear el candidato de fusión bipredictivo.
La posición de la PU coubicada se selecciona entre dos posiciones candidatas, C y H, como se representa en la Figura 2. Si la PU en la posición H no está disponible, o está intra codificada, o está fuera de una fila de CTU actual (es decir, una fila de CTU que contiene la PU actual), se usa la posición C. De otro modo, la posición H se usa para derivar el candidato de fusión temporal.
Además de SMVP y TMVP, puede haber dos tipos de candidatos a fusión sintética: (1) MVP bipredictivo combinado y (2) MVP cero. Los MVP bipredictivos combinados se generan al utilizar un SMVP y un TMVP. En HEVC, los candidatos de fusión bipredictivos combinados se usan solamente para cortes B. Por ejemplo, dos candidatos en la lista de candidatos de fusión original, que tienen mvL0 y refldxL0 o mvL1 y refldxLI, se usan para crear un candidato de fusión bipredictivo combinado. Un MVP cero tiene uno o más vectores de movimiento con magnitudes de 0. En el proceso de selección de candidatos, los candidatos duplicados que tengan los mismos parámetros de movimiento que el candidato anterior en el orden de procesamiento podrán ser eliminados de la lista de candidatos. Este proceso se define como un proceso de poda. Además, los candidatos dentro de la misma región de estimación de fusión (MER) no se consideran para ayudar al procesamiento de fusión paralelo. Se evitan formas de partición redundantes para no emular una partición virtual 2Nx2N.
Entre cada etapa de generación de un candidato de fusión en la lista de candidatos de fusión, el proceso de derivación puede detenerse si el número de candidatos de fusión alcanza MaxNumMergeCand. En HEVC y potencialmente en otros códecs, MaxNumMergeCand se establece en cinco. Dado que el número de candidatos es constante, puede codificarse un índice del mejor candidato de fusión mediante el uso de la binarización unaria truncada.
El modo AMVP es similar al modo de fusión en que el codificador de vídeo 20 puede generar una lista de candidatos y puede seleccionar un candidato de la lista de candidatos. Sin embargo, para cada bloque de referencia respectivo usado para determinar un bloque predictivo para un bloque actual (es decir, unidad de vídeo), el codificador de vídeo 20 puede señalar una diferencia de vectores de movimiento (MVD) respectiva para el bloque actual, un índice de referencia respectivo para el bloque actual y un índice de candidatos respectivo que indica un candidato seleccionado en la lista de candidatos. Un MVD para un bloque puede indicar una diferencia entre un vector de movimiento del bloque y un vector de movimiento del candidato seleccionado. El índice de referencia para el bloque actual indica una imagen de referencia a partir de la cual se determina un bloque de referencia.
Además, cuando se usa el modo AMVP, para cada bloque de referencia respectivo usado para determinar un bloque predictivo para el bloque actual, el decodificador de vídeo 30 puede determinar un MVD para el bloque actual, un índice de referencia para el bloque actual y un índice candidato y un indicador de predicción de vectores de movimiento (MVP). El decodificador de vídeo 30 puede generar la misma lista de candidatos y puede determinar, en base al índice de candidatos, un candidato seleccionado en la lista de candidatos. Como antes, esta lista puede incluir vectores de movimiento de bloques vecinos que se asocian con el mismo índice de referencia, así como también un predictor de vectores de movimiento temporal que se deriva en base a los parámetros de movimiento del bloque vecino del bloque coubicado en una imagen de referencia temporal. El decodificador de vídeo 30 puede recuperar un vector de movimiento de la PU actual al añadir el MVD al vector de movimiento indicado por el candidato AMVP seleccionado. Es decir, el decodificador de vídeo 30 puede determinar, en base a un vector de movimiento indicado por el candidato AMVP seleccionado y el MVP, el vector de movimiento de la PU actual. El decodificador de vídeo 30 puede entonces usar el vector de movimiento recuperado o los vectores de movimiento de la PU actual para generar bloques predictivos para la PU actual.
Cuando un codificador de vídeo (por ejemplo, codificador de vídeo 20 o decodificador de vídeo 30) genera una lista de candidatos AMVP para una PU actual, el codificador de vídeo puede derivar uno o más candidatos de AMVP en base a la información de movimiento de las PU (es decir, PU espacialmente vecinas) que cubren ubicaciones que son vecinas espacialmente de la PU actual y uno o más candidatos de AMVP en base a la información de movimiento de las PU que son vecinas temporalmente de la PU actual. En esta divulgación, puede decirse que una PU (u otro tipo de unidad o bloque de vídeo) "cubre" una ubicación si un bloque de predicción de la PU (u otro tipo de bloque de muestra de la unidad de vídeo) incluye la ubicación. La lista de candidatos puede incluir vectores de movimiento de bloques vecinos que se asocian con el mismo índice de referencia, así como también un predictor de vectores de movimiento temporal que se deriva en base a los parámetros de movimiento (es decir, información de movimiento) del bloque vecino del bloque coubicado en una imagen de referencia temporal. Un candidato en una lista de candidatos de fusión o una lista de candidatos AMVP que se basa en la información de movimiento de una PU que es vecina temporalmente de una PU actual (es decir, una PU que está en una instancia de tiempo diferente a la PU actual) puede denominarse como un TMVP. Puede usarse un TMVP para mejorar la eficiencia de codificación de HEVC y, a diferencia de otras herramientas de codificación, un TMVP puede necesitar acceder a un vector de movimiento de una trama en una memoria intermedia de imágenes decodificadas, más específicamente en una lista de imágenes de referencia.
Para el modo AMVP, se transmite un indicador de interpredicción para indicar la predicción de la lista 0, la predicción de la lista 1 o la bipredicción. A continuación, se transmiten uno o dos índices de referencia cuando hay múltiples imágenes de referencia. Se transmite un índice para cada dirección de predicción para seleccionar un candidato de movimiento de la lista de candidatos. Como se muestra en la Figura 2, la lista de candidatos para el modo inter incluye dos candidatos de movimiento espacial y un candidato de movimiento temporal:
1. Candidato izquierdo (el primero disponible de Ac, A 1 )
2. Candidato superior (el primero disponible de B 0 , Bi, B 2 )
3. Candidato temporal (el primero disponible de H y C)
En HEVC, un codificador de vídeo busca el candidato de movimiento espacial izquierdo desde abajo a la izquierda (es decir, A 0 y Ai) y el codificador de vídeo selecciona el primero disponible como candidato izquierdo. El codificador de vídeo busca el candidato de movimiento espacial superior desde arriba a la derecha hasta arriba a la izquierda (es decir, B 0 , Biy B 2 ) y el codificador de vídeo selecciona el primero disponible como el candidato superior. El codificador de vídeo puede seleccionar un candidato de movimiento temporal de un bloque (H o C) ubicado en una imagen de referencia, que se denomina imagen temporal colocada. La imagen colocada temporalmente se indica al transmitir un indicador en un encabezado de segmento para especificar qué lista de imágenes de referencia y un índice de referencia en el encabezado de segmento para indicar qué imagen de referencia en la lista de referencia se usa como la imagen de referencia colocada. En HEVC, después de transmitir el índice, se transmiten una o dos diferencias de vector de movimiento (MVD) correspondientes.
Además, en HEVC y potencialmente en otros códecs, se usa un tamaño de lista de candidatos fijo para desacoplar la construcción de la lista de candidatos y el análisis del índice. Para compensar la pérdida de rendimiento de codificación provocada por el tamaño fijo de la lista, se asignan candidatos adicionales a las posiciones vacías en la lista de candidatos. En este proceso, el índice se codifica en códigos unarios truncados de una longitud máxima, donde la longitud máxima se transmite en el encabezado de segmento para el modo de omisión y el modo de fusión y se fija en 2 para el modo inter. Como se describió anteriormente, para el modo de omisión y el modo de fusión, después de la derivación y poda de los cuatro candidatos de movimiento espacial y el candidato de movimiento temporal, si el número de candidatos disponibles es menor que el tamaño fijo de la lista de candidatos, se derivan candidatos sintéticos adicionales y añaden para llenar las posiciones vacías en la lista de candidatos fusionados. Para el modo AMVP, se añade un candidato de movimiento de vector cero para llenar las posiciones vacías en la lista de candidatos de AMVP después de la derivación y poda de los dos candidatos de movimiento espacial y el candidato de movimiento temporal.
En el software de referencia JEM, hay varias herramientas de intercodificación que derivan y/o refinan el vector de movimiento (MV) para un bloque actual en el lado del decodificador o utilizan un modelo de movimiento afín. Estos nuevos enfoques de interpredicción se elaboran más abajo.
El modo de derivación de vector de movimiento con coincidencia de patrón (PMMVD) es un modo de fusión especial en base a técnicas de Conversión Ascendente de Tasa de Fotogramas (FRUC). Con el modo PMMVD, la información de movimiento de un bloque no se señala, sino que se deriva en el lado del decodificador. Se señala un indicador FRUC para un bloque (por ejemplo, CU) cuando su indicador de fusión es verdadero. Cuando el indicador FRUC es falso, se señala un índice de fusión y se usa el modo de fusión normal. Cuando el indicador FRUC es verdadero, se señala un indicador de modo FRUC adicional para indicar qué procedimiento (emparejamiento bilateral o emparejamiento de plantilla) se usará para derivar información de movimiento para el bloque.
En el lado del codificador, la decisión sobre si usar el modo de fusión FRUC para una CU puede basarse en la selección del costo de tasa/distorsión (RD), como se hace para los candidatos de fusión normales. Es decir, los dos modos de emparejamiento (emparejamiento bilateral y emparejamiento de plantilla) pueden verificarse para una CU mediante la selección de costos de RD. El modo que conduce al costo mínimo se compara además con otros modos CU. Si un modo de emparejamiento FRUC es el modo más eficiente, el indicador FRUc se establece en verdadero para la CU y se usa el modo de emparejamiento relacionado.
El proceso de derivación de movimiento en el modo de fusión FRUC incluye dos etapas. Primero puede realizarse una búsqueda de movimiento a nivel de CU, seguida de un refinamiento de movimiento a nivel de sub-CU. A nivel de CU, se deriva un vector de movimiento inicial (es decir, un MV inicial) para toda la CU en base a un emparejamiento bilateral o un emparejamiento de plantilla. Primero, se genera una lista de candidatos de MV (candidatos FRUC MV) y el candidato que conduce al costo mínimo de emparejamiento se selecciona como punto de partida para un mayor refinamiento del nivel de CU. Luego, se realiza una búsqueda local en base a un emparejamiento bilateral o un emparejamiento de plantillas alrededor del punto de partida y el MV que da como resultado el costo mínimo de emparejamiento se toma como el MV para toda la CU. Subsecuentemente, la información de movimiento se refina aún más en el nivel de sub-CU con los vectores de movimiento CU derivados como puntos de partida.
Por ejemplo, el siguiente proceso de derivación puede realizarse para un W * H Derivación de información de movimiento CU, donde W es ancho y H es alto. En la primera etapa, se deriva una MV para toda la CU W * H. En la segunda etapa, la UC se divide además en M * M sub-CU. El valor de M se calcula como en la ecuación (1), más abajo, D es una profundidad de división predefinida que se establece en 3 de forma predeterminada en JEM. Luego, se deriva el MV para cada sub-CU.
Figure imgf000016_0001
Como se muestra en la Figura 3, el emparejamiento bilateral se usa para derivar información de movimiento de una CU actual al encontrar el mejor emparejamiento entre dos bloques a lo largo de la trayectoria de movimiento de la CU actual en dos imágenes de referencia diferentes. Bajo el supuesto de una trayectoria de movimiento continuo, los vectores de movimiento MV0 y MV1 que apuntan a los dos bloques de referencia son proporcionales a las distancias temporales, es decir, TD0 y TD1, entre la imagen actual y las dos imágenes de referencia. Como un caso especial, cuando la imagen actual está temporalmente entre las dos imágenes de referencia y la distancia temporal desde la imagen actual a las dos imágenes de referencia es la misma, el emparejamiento bilateral se convierte en MV bidireccional basada en espejo.
Como se muestra en la Figura 4, el emparejamiento de plantillas se usa para derivar información de movimiento de la CU actual al encontrar el mejor emparejamiento entre una plantilla (bloques vecinos superior y/o izquierdo de la CU actual) en la imagen actual y un bloque (del mismo tamaño que la plantilla) en una imagen de referencia. Excepto por el modo de fusión FRUC mencionado anteriormente, el emparejamiento de plantillas también se aplica al modo AMVP. En el JEM, como en HEVC, la AMVP tiene dos candidatos. Con el procedimiento de emparejamiento de plantillas, se deriva un nuevo candidato. Si el candidato recién derivado por emparejamiento de plantillas es diferente del primer candidato AMVP existente, el candidato recién derivado se inserta al principio de la lista de candidatos AMVP y luego el tamaño de la lista se establece en dos (lo que significa que se elimina el segundo candidato AMVP existente). Cuando se aplica al modo AMVP, solamente se aplica una búsqueda a nivel de CU. En un conjunto de candidatos FRUC MV a nivel de CU, el conjunto de candidatos de MV a nivel de CU comprende o consiste en:
(i) Candidatos de AMVP originales si la CU actual está en modo AMVP
(ii) todos los candidatos a fusionarse,
(iii) varios MV en un campo MV interpolado, que se presenta en otra parte de esta divulgación
(iv) vectores de movimiento vecinos superior e izquierdo
Cuando se usa un emparejamiento bilateral, cada MV válido de un candidato de fusión se usa como entrada para generar un par de MV con el supuesto de un emparejamiento bilateral. Por ejemplo, un MV válido de un candidato de fusión es (MVa, refa) en la lista de referencia A. Luego, la imagen de referencia refb de su MV bilateral emparejado se encuentra en la otra lista de referencia B, de modo que refa y refb se encuentran temporalmente en lados diferentes de la imagen actual. Si tal refb, no está disponible en la lista de referencia B, refb, se determina como una referencia que es diferente de refa y su distancia temporal a la imagen actual es la mínima en la lista B. Después de la refb, se determina, MVb se deriva al escalar MVa en base a la distancia temporal entre la imagen actual y refa, refb. También pueden añadirse cuatro MV del campo MV interpolado a la lista de candidatos a nivel de CU. Más específicamente, pueden añadirse los MV interpolados en la posición (0, 0), (W/2, 0), (0, H/2) y (W/2, H/2) de la CU actual. Cuando se aplica FRUC en modo AMVp , los candidatos de AMVP originales también pueden añadirse al conjunto de candidatos de MV a nivel de CU. A nivel de CU, se añaden a la lista de candidatos hasta 15 MV para CU AMVP y hasta 13 MV para CU de fusión. En esta divulgación, una CU AMVP es una CU en la que la información de movimiento se predice usando un modo AMVP. Además, en esta divulgación, una CU de fusión es una CU en la que la información de movimiento se predice mediante el uso del modo de fusión.
En algunos ejemplos, el conjunto candidato de MV en el nivel de sub-CU consiste en o comprende:
(i) un MV determinado a partir de una búsqueda a nivel de CU,
(ii) MV vecinos superior, izquierdo, superior izquierdo y superior derecho,
(iii) versiones a escala de MV colocados a partir de imágenes de referencia,
(iv) hasta 4 candidatos de predicción de vectores de movimiento temporal avanzada (ATMVP),
(v) hasta 4 candidatos de predicción de vectores de movimiento espacio-temporal (STMVP).
Los MV escalados a partir de imágenes de referencia pueden derivarse de la siguiente manera. Todas las imágenes de referencia de ambas listas son transversales. Los MV en una posición colocada de la sub-CU en una imagen de referencia se escalan a la referencia del MV del nivel de CU inicial. Es decir, al igual que los TMVP en HEVC, los MV en la posición colocada pueden escalarse de acuerdo con la distancia de P0C. Los candidatos de ATMVP y STMVP se limitan hasta cuatro candidatos de ATMV y STMVP. A nivel de sub-CU, se añaden hasta 17 MV a la lista de candidatos.
Como se mencionó anteriormente, en un conjunto de candidatos de MV de FRUC a nivel de CU, el conjunto de candidatos de MV a nivel de CU puede incluir uno o más MV en un campo de MV interpolado. Antes de codificar una trama, se genera el campo de movimiento interpolado (es decir, campo MV interpolado) para toda la imagen en base a una estimación de movimiento unilateral. El campo de movimiento puede usarse luego como candidatos de MV a nivel de CU o a nivel de sub-CU. En primer lugar, el campo de movimiento de cada imagen de referencia en ambas listas de referencia puede ser transversales a un nivel de bloque de 4x4. La Figura 5 es un ejemplo de estimación de movimiento unilateral en la conversión ascendente de tasa de tramas. La imagen 500 en la Figura 5 es una imagen de referencia para una imagen actual. La imagen actual tiene un tiempo de salida correspondiente al tiempo de salida de la imagen 502. La imagen 504 es una imagen de referencia para la imagen 500. Un codificador de vídeo usa vectores de movimiento de bloques en la imagen 500 que apuntan a ubicaciones en la imagen 504 para interpolar muestras de la imagen actual. La imagen 502 contiene las muestras interpoladas resultantes. En algunos ejemplos, para cada bloque de 4^4 en la imagen 500 de la Figura 5, si al movimiento asociado al bloque de 4x4 que pasa a través de un bloque de 4x4 en la imagen actual y al bloque de 4x4 no se le ha asignado ningún movimiento interpolado, el movimiento del bloque de referencia se escala a la imagen actual de acuerdo con la distancia temporal TD0 y TD1 (de la misma manera que el escalado MV de TMVP en HEVC) y el movimiento escalado se asigna al bloque en la trama actual. Si no se asigna ningún MV escalado a un bloque de 4x4 en la trama actual, el movimiento del bloque en la trama actual se marca como no disponible en el campo de movimiento interpolado. En otros ejemplos, pueden usarse otros tamaños de bloque.
Cuando un vector de movimiento apunta a una posición de muestra fraccionaria, puede ser necesaria la interpolación compensada por movimiento. La interpolación compensada por movimiento puede interpolar valores de muestra para ubicaciones entre muestras actuales de una imagen a partir de muestras actuales de la imagen. Para mantener baja la complejidad de la interpolación compensada por movimiento, puede usarse la interpolación bilineal en lugar de la interpolación HEVC regular de 8 tomas tanto para el emparejamiento bilateral como para el emparejamiento de plantillas. El cálculo del costo de emparejamiento es diferente en las diferentes etapas. Por ejemplo, al seleccionar el mejor candidato del conjunto de candidatos a nivel de CU, el costo de emparejamiento es la diferencia de suma absoluta (SAD) del emparejamiento bilateral o del emparejamiento de plantillas. Luego de determinarse el MV inicial, el costo de emparejamiento C puede calcularse mediante el uso de la ecuación (2), más abajo:
Figure imgf000017_0001
En la ecuación (2), w es un factor de ponderación que empíricamente se establece en 4, MV y MVS indican el MV
actual y el MV inicial, respectivamente (
Figure imgf000017_0002
siendo las componentes horizontales del MV actual y del MV
inicial, respectivamente;
Figure imgf000017_0003
siendo las componentes verticales del MV actual y del MV inicial, respectivamente), y |*| indica valor absoluto.
En algunos ejemplos, en el modo FRUC, se deriva una MV mediante el uso solamente de muestras de luminancia. En tales ejemplos, el movimiento derivado puede usarse tanto para luminancia como para croma para la interpredicción de compensación de movimiento. Después de derivar el MV, se realiza una compensación de movimiento final mediante el uso de un filtro de interpolación de 8 tomas para luminancia y un filtro de interpolación de 4 tomas para croma.
El refinamiento de MV puede incluir una búsqueda de MV basada en patrones con el criterio de costo de emparejamiento bilateral o costo de emparejamiento de plantillas. En JEM, se soportan dos patrones de búsqueda: (1) búsqueda de diamantes sin restricciones con sesgo central (UCBDS) y (2) búsqueda cruzada adaptativa para el refinamiento de MV en el nivel de CU y en el nivel de sub-CU, respectivamente. Para el refinamiento de MV tanto a nivel de CU como a nivel de sub-CU, el MV puede buscarse directamente con una precisión de MV de muestra de un cuarto de luminancia, que luego puede ser seguido por un refinamiento de MV de muestra de un octavo de luminancia. El rango de búsqueda de refinamiento de MV tanto para la etapa CU como para sub-CU puede establecerse en 8 muestras de luminancia.
Un codificador de vídeo puede seleccionar una dirección de predicción en el modo de fusión FRUC de emparejamiento de plantillas de la siguiente manera. En el modo de fusión de emparejamiento bilateral, siempre se aplica la bipredicción porque la información de movimiento de una CU se deriva en base al mejor emparejamiento entre dos bloques a lo largo de la trayectoria de movimiento de la CU actual en dos imágenes de referencia diferentes. En el JEM, no existe tal limitación para el modo de fusión de emparejamiento de plantillas. En el modo de fusión de emparejamiento de plantillas, un codificador de vídeo puede seleccionar entre unipredicción de la lista 0, unipredicción de la lista 1 o bipredicción para una CU. La selección puede basarse en un costo de emparejamiento de plantillas de la siguiente manera:
Figure imgf000018_0001
En el pseudocódigo de la Secuencia 1 anterior, cost0 es el SAD del emparejamiento de plantillas de listü, cost1 es el SAD del emparejamiento de plantillas de listl y costBi es el SAD del emparejamiento de plantillas de bipredicción. El valor de factores igual a 5/4, lo que significa que el proceso de selección está sesgado a la bipredicción. En el JEM, la selección de dirección de interpredicción solamente se aplica al proceso de emparejamiento de plantillas a nivel de CU.
En una operación de emparejamiento de plantillas de bipredicción, para la predicción de una región de bloque, se combinan dos bloques de predicción, formados mediante el uso de un MV de listü y un MV de listl, respectivamente, para formar una única señal de predicción. En el procedimiento de refinamiento del vector de movimiento del lado del decodificador (DMVR), los dos vectores de movimiento de la bipredicción se refinan aún más mediante un proceso de emparejamiento de plantillas bilateral. El emparejamiento de plantillas bilateral puede aplicarse en el decodificador de vídeo 30 para realizar una búsqueda basada en distorsión entre una plantilla bilateral y las muestras de reconstrucción en las imágenes de referencia para obtener un MV refinado sin transmisión de información de movimiento adicional.
En DMVR, se genera una plantilla bilateral como una combinación ponderada (es decir, promedio) de los dos bloques de predicción, a partir del MVü inicial de listü y MV1 de listl, respectivamente, como se muestra en la Figura 6. La operación de emparejamiento de plantillas puede incluir o consistir en calcular medidas de costos entre la plantilla bilateral generada y la región de muestra (alrededor del bloque de predicción inicial) en la imagen de referencia. Para cada una de las dos imágenes de referencia, el MV que produce el costo mínimo de la plantilla puede considerarse como el MV actualizado de esa lista para reemplazar al original. El costo de la plantilla puede calcularse como la suma de diferencias absolutas (SAD) o la suma de diferencias al cuadrado (SSD) entre la plantilla actual y las muestras de referencia. En el JEM se buscan nueve candidatos de MV para cada lista. Los nueve candidatos de MV incluyen el MV original y 8 MV circundantes con una muestra de luminancia desplazada con respecto al MV original en dirección horizontal o vertical, o en ambas. Finalmente, los dos nuevos MV, es decir, MVü' y MV1', como se muestra en la Figura 6, se usan para generar los resultados finales de bipredicción. Puede utilizarse un SAD como medida de costos. La Figura 6 es una DMVR propuesta en base al emparejamiento de plantillas bilaterales.
Por tanto, en el ejemplo de la Figura 6, un bloque actual 6üü en una imagen actual 6ü2 tiene un primer vector de movimiento 6ü4 (MVü) y un segundo vector de movimiento 6ü6 (MV1). El vector de movimiento 6ü4 apunta a un bloque de referencia 6ü8 en una imagen de referencia listü 61ü. El vector de movimiento 6ü6 apunta a un bloque de referencia 612 en una imagen de referencia listl 614. El bloque de referencia 6ü8 y el bloque de referencia 612 también pueden denominarse en la presente memoria as bloques de predicción. Después de identificar el bloque de referencia 6ü8 y el bloque de referencia 612, un codificador de vídeo puede generar un bloque predictivo 616 como un promedio ponderado del bloque de referencia 6ü8 y el bloque de referencia 612. También puede hacerse referencia en la presente memoria al bloque predictivo 616 como plantilla bilateral. Por lo tanto, en el ejemplo de la Figura 6, el codificador de vídeo puede generar una plantilla bilateral a partir de bloques de predicción referidos por MVü y MV1. Adicionalmente, el codificador de vídeo puede buscar en la imagen de referencia 61ü un bloque que mejor el emparejamiento con el bloque predictivo 616. En el ejemplo de la Figura 6, el codificador de vídeo ha identificado el bloque 618 de la imagen de referencia 610 como el mejor emparejamiento para el bloque predictivo 616. El codificador de vídeo puede buscar también en la imagen de referencia 614 un bloque que mejor se empareje con el bloque predictivo 616. En el ejemplo de la Figura 6, el codificador de vídeo ha identificado el bloque 620 como el mejor emparejamiento para el bloque predictivo 616. Un vector de movimiento 622 (MV0') indica un desplazamiento espacial entre el bloque actual 600 y el bloque 618. Un vector de movimiento 624 (MV1') indica un desplazamiento espacial entre el bloque actual 600 y el bloque 620.
DMVR puede aplicarse para el modo de fusión de bipredicción con un MV de una imagen de referencia en el pasado y otro de una imagen de referencia en el futuro, sin la transmisión de elementos de sintaxis adicionales. En JEM5, cuando la compensación de iluminación local (LIC), el movimiento afín, FRUC o el candidato de fusión de sub-CU se habilita para una CU, no se aplica DMVR.
En el JEM con QTBT, cada CU puede tener como máximo un conjunto de movimiento para cada dirección de predicción. Se proporcionan dos procedimientos de predicción de vectores de movimiento a nivel de sub-CU al dividir una CU grande en sub-CU y derivando información de movimiento para todas las sub-CU de la CU grande. El procedimiento de predicción de vectores de movimiento temporal avanzado (ATMVP) permite que cada CU obtenga múltiples conjuntos de información de movimiento de múltiples bloques más pequeños que la CU actual en la imagen de referencia colocada. En el procedimiento de predicción de vectores de movimiento espacio-temporal (STMVP), los vectores de movimiento de las sub-CU se derivan de forma recursiva mediante el uso del predictor de vectores de movimiento temporal y el vector de movimiento espacial vecino. Para preservar un campo de movimiento más preciso para la predicción de movimiento de sub-CU, la compresión de movimiento para las tramas de referencia está actualmente deshabilitada en el JEM.
En el procedimiento de predicción de vectores de movimiento temporal avanzado (ATMVP), la predicción de vectores de movimiento temporal (TMVP) de los vectores de movimiento se mejora al permitir que cada CU obtenga múltiples conjuntos de información de movimiento (incluidos vectores de movimiento e índices de referencia) de múltiples bloques más pequeños que el CU actual. Como se muestra en la Figura 7, las sub-CU son bloques cuadrados NxN (N se establece en 4 de forma predeterminada).
El ATMVP predice los vectores de movimiento de las sub-CU dentro de una CU en dos etapas. La primera etapa es identificar el bloque correspondiente en una imagen de referencia con el llamado vector temporal. La imagen de referencia se denomina imagen fuente de movimiento. La segunda etapa es dividir la CU actual en sub-CU y obtener los vectores de movimiento así como también los índices de referencia de cada sub-CU del bloque correspondiente a cada sub-CU, como se muestra en la Figura 7.
La Figura 7 muestra la predicción de movimiento ATMVP para una CU actual 700 en una imagen actual 702. En la primera etapa, una imagen de referencia 704 y un bloque correspondiente 706 se determinan mediante la información de movimiento de los bloques espaciales vecinos de la CU actual 700. La imagen de referencia 704 también puede denominarse imagen fuente de movimiento 704 porque un codificador de vídeo usa la imagen fuente de movimiento 704 como fuente de información de movimiento para la CU actual 700 en la imagen actual 702. Para evitar el proceso de escaneo repetitivo de bloques vecinos, la información de movimiento del primer candidato de fusión en una lista de candidatos de fusión de la CU actual 700 se usa para determinar la imagen de referencia 704 y el bloque correspondiente 706. El primer vector de movimiento disponible así como también su índice de referencia asociado se configuran para que sea un vector temporal 708 y el índice de la imagen fuente de movimiento 704. De esta manera, en ATMVP, el bloque correspondiente 706 puede identificarse con mayor precisión, en comparación con TMVP, en el que el bloque correspondiente (a veces denominado bloque colocado) siempre está en una posición inferior derecha o central con respecto a la CU actual 700.
En la segunda etapa, un bloque correspondiente de una sub-CU de la CU actual 700 se identifica mediante el vector temporal 708 en la imagen fuente de movimiento 704, al sumar el vector temporal 708 a las coordenadas (x, y) de la CU actual 700. Para cada sub-CU de la CU actual 700, la información de movimiento de su bloque correspondiente (la cuadrícula de movimiento más pequeña que cubre el píxel central) se usa para derivar la información de movimiento para la sub-CU. Después de identificar la información de movimiento de un bloque NxN correspondiente, la información de movimiento del bloque NxN correspondiente se convierte en los vectores de movimiento e índices de referencia de la sub-CU actual, de la misma manera que TMVP, en el que se aplican el escalado de movimiento y otros procedimientos. Por ejemplo, el decodificador de vídeo 30 puede comprobar si se cumple la condición de bajo retardo y posiblemente usa el vector de movimiento MVX(el vector de movimiento correspondiente a la lista de imágenes de referencia X) para predecir el vector de movimiento MVy (con X siendo igual a 0 o 1 e Y siendo igual a 1-X) para cada sub-CU. Esto se hace de la misma manera que para la predicción de vectores de movimiento temporal.
En la predicción de vectores de movimiento espacio-temporal, los vectores de movimiento de las sub-CU se derivan de forma recursiva, siguiendo el orden de escaneo de la trama. La Figura 8 ilustra este concepto. Por ejemplo, considere una CU de 8x8 (que se muestra en la Figura 8 como un cuadrado con un contorno más grueso) que contiene cuatro sub-CU de 4x4 A, B, C y D, como se muestra en la Figura 8. Los bloques NxN vecinos en la trama actual se etiquetan como a, b, c y d en la Figura 8.
La derivación del movimiento para la sub-CU A comienza al identificar sus dos vecinos espaciales. El primer vecino es un bloque NxN encima de la sub-CU A (bloque c). Si el bloque c no está disponible o está intra codificado, se verifican los otros bloques NxN por encima de la sub-CU A (de izquierda a derecha, comenzando en el bloque c). El segundo vecino es un bloque a la izquierda de la sub-CU A (bloque b). Si el bloque b no está disponible o está intra codificado, se verifican los otros bloques a la izquierda de la sub-CU A (de arriba a abajo, comenzando en el bloque b). La información de movimiento obtenida de los bloques vecinos para cada lista se escala a la primera trama de referencia para una lista determinada. A continuación, se deriva un predictor de vectores de movimiento temporal (TMVP) del subbloque A al seguir el mismo procedimiento de derivación de TMVP como se especifica en HEVC y se describe en esta divulgación anterior. La información de movimiento del bloque colocado en la ubicación D se obtiene y se escala en consecuencia. Por último, después de recuperar y escalar la información de movimiento, todos los vectores de movimiento disponibles (hasta 3) se promedian por separado para cada lista de referencia. El vector de movimiento promediado se asigna como el vector de movimiento de la sub-CU actual.
En la señalización del modo de predicción de movimiento de la sub-CU, los modos de sub-CU se habilitan como candidatos de fusión adicionales y no se requiere ningún elemento de sintaxis adicional para señalar los modos. Se añaden dos candidatos de fusión adicionales a la lista de candidatos de fusión de cada CU para representar el modo ATMVP y el modo STMVP. Se usan hasta siete candidatos de fusión, si el conjunto de parámetros de secuencia indica que ATMVP y STMVP están habilitados. La lógica de codificación de los candidatos de fusión adicionales es la misma que la de los candidatos de fusión en el modelo de prueba (HM) HEVC, lo que significa que, para cada CU en el segmento P o B, se necesitan dos comprobaciones RD más para los dos candidatos de fusión adicionales. Para mejorar la codificación del índice de combinación, en JEM, CABAC codifica por contexto todos los contenedores de un índice de fusión. Mientras que en HEVC, solamente el primer contenedor se codifica por contexto y los contenedores restantes están codificados por derivación de contexto.
Puede resultar computacionalmente menos costoso realizar la codificación CABAC de derivación en un contenedor que realizar la codificación CABAC regular en el contenedor. Además, realizar la codificación CABAC de derivación puede permitir un mayor grado de paralelización y rendimiento. Los contenedores codificados mediante el uso de la codificación CABAC de derivación pueden denominarse como "contenedores de derivación". Agrupar contenedores de derivación puede aumentar el rendimiento del codificador de vídeo 20 y del decodificador de vídeo 30. El motor de codificación CABAC de derivación puede ser capaz de codificar varios contenedores en un único ciclo, mientras que el motor de codificación CABAC regular puede ser capaz de codificar solamente un único contenedor en un ciclo. El motor de codificación CABAC de derivación puede ser más simple porque el motor de codificación CABAC de derivación no selecciona contextos y puede asumir una probabilidad de V para ambos símbolos (0 y 1). En consecuencia, en la codificación CABAC de derivación, los intervalos se dividen directamente por la mitad. Sin embargo, la eficiencia de la compresión puede verse disminuida.
En HEVC, solamente se aplica un modelo de movimiento de traslación para la predicción de compensación de movimiento (MCP). En el mundo real, existen muchos tipos de movimiento, por ejemplo, acercar/alejar, rotación, movimientos de perspectiva y otros movimientos irregulares. En el JEM, se aplica una predicción de compensación de movimiento por transformación afín para mejorar la eficiencia de la codificación. Si un bloque sigue un modelo de movimiento afín, el MV de la posición (x, y) en el bloque puede determinarse mediante el modelo de movimiento afín:
Figure imgf000020_0002
En la ecuación (3), a, b, c, d, e y f son parámetros afines. Además, en la ecuación (3), vx es una componente horizontal del MV de posición (x, y) y vy es una componente vertical del MV de posición (x, y).
La Figura 9 es un diagrama de bloques de un modelo de movimiento afín simplificado para un bloque afín actual 900. Como se muestra en la Figura 9, el modelo de movimiento afín de 6 parámetros puede representarse mediante el vector de movimientovide un punto de control superior izquierdo 902 (x0, yci), el vector de movimientovi de un punto de control superior derecho 904 (xi , yi ) y el vector de movimientov2de un punto de control inferior izquierdo 906 (x2, y2). Con la suposición de que el punto de control superior izquierdo 902 es el origen del sistema de coordenadas, lo que significa que (x0, y0) = (0, 0), el MV de la posición (x, y) en el bloque afín actual 900 se describe mediante la ecuación (4), más abajo:
Figure imgf000020_0001
En la ecuación (4), (vox, voy) es el vector de movimiento del punto de control de la esquina superior izquierda 902, (vix, viy) es un vector de movimiento del punto de control de la esquina superior derecha 904, (v2x, V2y) es un vector de movimiento del punto de control de la esquina inferior izquierda 906, w=(xi-x^ es la distancia horizontal entre los puntos de control superior izquierdo y superior derecho 902, 904 y h=(y 2 -y 0 ) es la distancia vertical entre los puntos de control superior izquierdo e inferior izquierdo 902, 906. En la ecuación (4), vx es una componente horizontal del MV de posición (x, y) y vy es una componente vertical del MV de posición (x, y).
Sin embargo, en el JEM, el modelo de movimiento afín se simplifica a un modelo de movimiento afín de 4 parámetros al suponer que a=e y b=-d en la ecuación (3), lo que da como resultado la expresión de vx y vy, como se muestra en la ecuación (5), más abajo:
Figure imgf000021_0001
El modelo de movimiento afín de 4 parámetros se representa luego mediante el vector de movimiento vüdel punto de control superior izquierdo 902 (x0, y0) que se supone como el punto de origen y el vector de movimientov1del punto de control superior derecho 904 (xi , yi ). En la ecuación (5), vx es una componente horizontal del MV de posición (x, y) y vy es una componente vertical del Mv de posición (x, y). La Figura 10 es un ejemplo de un modelo de movimiento afín simplificado para un bloque afín actual 1000. Como se muestra en la Figura 10, el campo de movimiento afín del bloque se describe mediante dos vectores de movimiento del punto de control, v0 y v1. El campo del vector de movimiento (MVF) de un bloque se describe mediante la ecuación (6):
Figure imgf000021_0002
En la ecuación (6), (vox, voy) es un vector de movimiento del punto de control de la esquina superior izquierda 1002, (vix, viy) es un vector de movimiento de un punto de control de la esquina superior derecha 1004 y w=(x 1 -x 0 ) es la distancia horizontal entre los puntos de control superior izquierdo y superior derecho 1002, 1004. vx es una componente horizontal del MV de posición (x, y) y vy es una componente vertical del MV de posición (x, y).
Para simplificar aún más la predicción de compensación de movimiento, puede aplicarse la predicción de transformada afín basada en bloques. Para derivar un vector de movimiento de cada subbloque, el vector de movimiento de una muestra central de cada subbloque, como se muestra en la Figura 11, se calcula de acuerdo con la ecuación (6) y se redondea con una precisión de 1/16 de fracción. Luego, un codificador de vídeo puede aplicar filtros de interpolación de compensación de movimiento para generar la predicción de cada subbloque con el vector de movimiento derivado. Los vectores de movimiento interpolados para cada subbloque dentro del bloque afín se denominan campo de vector de movimiento (MVF) MCP en el siguiente contexto. El tamaño del subbloque puede variar en función de la diferencia de MV entre los puntos de control. La Figura 11 es un ejemplo de campo Mv de MCP, donde el MV de cada subbloque (por ejemplo, el bloque 4x4) es interpolado por los Mv de los puntos de control; Luego, el MV se usa para realizar la predicción de compensación de movimiento (MCP) para cada subbloque. El vector de movimiento de cada subbloque puede usarse para identificar un bloque de referencia correspondiente, cuya combinación forma un bloque predictivo. Por tanto, de esta manera, un codificador de vídeo puede generar un bloque predictivo en base a un vector de movimiento de un bloque (por ejemplo, un vector de movimiento de un punto de control del bloque).
Después de la predicción de compensación de movimiento, el vector de movimiento de alta precisión de cada subbloque se redondea y se guarda con la misma precisión que el vector de movimiento normal. En JEM y HEVC, los vectores de movimiento para cada CU o PU de interpredicción se almacenan para la predicción de MV de los otros interbloques. La unidad de almacenamiento de vectores de movimiento es un bloque de 4x4. En otras palabras, en el JEM, los MV interpolados de un bloque afín se generan y almacenan para cada bloque 4x4. Sin embargo, dado que los MV de los puntos de control pueden usarse para los siguientes bloques, los MV almacenados para los bloques 4x4 de las esquinas son los MV de los puntos de control en lugar de los MV asociados usados para MCP, como se muestra en la Figura 12. Tenga en cuenta que, en JEM6, los MV de los puntos de control inferior izquierdo e inferior derecho también son generados por los MV de los puntos de control superior izquierdo y superior derecho.
Por tanto, en la Figura 12, una CU 1200 incluye dieciséis subbloques. Para cada subbloque respectivo de los doce subbloques que no están en las esquinas de CU 1200, un codificador de vídeo almacena el(los) vector(es) de movimiento para el punto central del subbloque respectivo. Para cada subbloque respectivo en una esquina de CU 1200, el codificador de vídeo almacena el(los) vector(es) de movimiento para la esquina exterior del subbloque respectivo.
En el JEM, hay dos modos de movimiento afín: modo inter afín (AF_INTER) y modo de fusión afín (AF_MERGE). Para las CU con ancho y alto mayores que 8, puede aplicarse el modo AF_INTER. Se señala un indicador afín en el nivel de CU en el flujo de bits para indicar si se usa el modo AF_INTER. En este modo, una lista de candidatos con un conjunto de vectores de movimiento {(MVP0,M^P1)|MVP0= {va , vb , vc}, MVP1= {vd,ve}} se construye mediante el uso de los bloques vecinos. Como se muestra en la Figura 13, MvP0se selecciona de los vectores de movimiento del bloque A, B o C. La Figura 13 ilustra un ejemplo de MVP para AF_INTER. El vector de movimiento del bloque vecino se escala de acuerdo con la lista de referencias y la relación entre el Conteo de 0rden de Imágenes (P0C) de la referencia para el bloque vecino, el P0C de la referencia para la CU actual y el P0C de la CU actual. El enfoque para seleccionar MVP 1 del bloque vecino D y E es similar. En el JEM, si el número de candidatos en la lista de candidatos es menor que 2, la lista se rellena con el par de vectores de movimiento compuesto al duplicar cada uno de los candidatos d
Figure imgf000022_0003
AMVP {AMVP AMVP } {AMVP AMVP }
Además, en el JEM, cuando el número de candidatos en la lista de candidatos es mayor que 2, los candidatos se clasifican primero de acuerdo con la consistencia de los vectores de movimiento vecinos (similitud de los dos vectores de movimiento en un par de candidatos) y solamente se mantienen los dos primeros candidatos como se muestra en la parte derecha de la Figura 13. Un codificador de vídeo puede usar una comprobación de coste de tasa de distorsión (RD) para determinar qué conjunto de vectores de movimiento candidato se selecciona como predicción de vectores de movimiento del punto de control (CPMVP) de la CU actual. En el flujo de bits se señala un índice que indica la posición del CPMVP en la lista de candidatos. Después de determinar el CPMVP de la CU afín actual, se aplica la estimación de movimiento afín y se encuentra el vector de movimiento del punto de control (CPMV). La diferencia entre CPMV y CPMVP puede entonces señalarse en el flujo de bits.
Cuando se aplica una CU en modo de fusión afín (AF_MERGE), la CU obtiene el primer bloque codificado con modo afín de los bloques reconstruidos vecinos válidos en base al orden de visita: A1^B1^B0^A0^-B2. El orden de selección para el bloque candidato es de izquierda, arriba, arriba a la derecha, de izquierda a abajo a arriba a la izquierda, como se muestra en la Figura 14A. Si el bloque vecino inferior izquierdo A se codifica en modo afín como se muestra en la Figura 14B, los vectores de movimientos, V 3 y sSe derivan las de la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda de la Cu que contiene el bloque A. El vector de movimiento v 0 de la esquina superior izquierda de la CU actual se extrapola de acuerdo con V 2 , V3 y ^mediante el uso de la ecuación (7), más abajo, al asumir (X 2 , y 2 ) es el punto de origen lo que significa (X 2 , y 2 ) = (0, 0). En segundo lugar, el vector de movimientov 1 de la parte superior derecha de la CU actual se calcula de manera similar. La ecuación (7) se muestra más abajo.
Figure imgf000022_0001
En la ecuación (7), (v2x, V2y) es el vector de movimiento del punto de control de la esquina superior izquierda (X 2 , y 2 ), (v3x, V3y) es el vector de movimiento del punto de control de la esquina superior derecha (x3, y3), (v4x,v4y) es el vector de movimiento del punto de control de la esquina inferior izquierda (x4, y4) en el bloque afín vecino, w=(x3-x2) es la distancia horizontal entre los puntos de control superior izquierdo y superior derecho, y h=(y4-y2) es la distancia vertical entre los puntos de control superior izquierdo e inferior izquierdo, vx es la componente horizontal del vector de movimiento para la ubicación
Figure imgf000022_0002
y es el componente vertical del vector de movimiento para la ubicación (x, y).
Después del CPMV de la CU actual v 0 yv 1 se derivan, de acuerdo con la ecuación del modelo de movimiento afín (6), se genera el MVF de la CU actual. Para identificar si la CU actual se codifica con el modo AF_MERGE, se señala un indicador afín en el flujo de bits cuando hay al menos un bloque vecino codificado en modo afín.
En HEVC, las Diferencias de Vectores de Movimiento (MVD) (entre el vector de movimiento y el vector de movimiento previsto de una PU) se señalan en unidades de muestra de un cuarto de luminancia. En el JEM, se introduce la Resolución Vectorial de Movimiento Avanzada (AMVR). En JEMS, un MVD puede codificarse en unidades de muestras de un cuarto de luminancia, muestras de luminancia enteras o muestras de cuatro luminancias. En JEMS, la resolución de MVD se controla a nivel de CU y los indicadores de resolución de MVD se señalan condicionalmente para cada CU que tiene al menos un componente de MVD distinto de cero.
Para una CU que tiene al menos un componente de MVD distinto de cero, se señala un primer indicador para indicar si se usa precisión de MV de muestra de un cuarto de luminancia en la CU. Cuando el primer indicador (igual a 1) indica que no se usa la precisión de MV de muestra de un cuarto de luminancia, se señala otro indicador para indicar si se usa la precisión de MV de muestra de luminancia entera o la precisión de MV de muestra de cuatro luminancias.
Cuando el primer indicador de resolución de MVD de una CU es cero, o no se codifica para una CU (lo que significa que todos los MVD en la CU son cero), se usa la resolución MV de muestra de un cuarto de luminancia para la CU. Cuando una CU usa precisión de mV de muestra de luminancia entera o precisión de MV de muestra de cuatro luminancia, los MVP en la lista de candidatos AMVP para la CU se redondean a la precisión correspondiente.
En el lado del codificador, el codificador de vídeo 20 puede usar comprobaciones RD a nivel de CU para determinar qué resolución MVD se usa para una CU. Es decir, la comprobación RD a nivel de CU puede realizarse tres veces, respectivamente, para cada resolución de MVD. Para acelerar la velocidad del codificador, se aplican los siguientes esquemas de codificación en JEM:
• Durante una comprobación RD de una CU con resolución MVD de muestra de un cuarto de luminancia normal, se almacena la información de movimiento de la CU actual (precisión de muestra de luminancia entera). La información de movimiento almacenada (después del redondeo) se usa como punto de partida para un mayor refinamiento del vector de movimiento de rango pequeño durante la comprobación RD para la misma CU con una muestra de luminancia entera y una resolución MVD de muestra de 4 luminancias de modo que el laborioso proceso de estimación de movimiento no se duplique tres veces.
• Se invoca condicionalmente una comprobación RD de una CU con resolución MVD de muestra de 4 luminancias.
Para una CU, cuando el costo de RD para la resolución MVD de muestra de luminancia entera es mucho mayor que el de la resolución de MVD de muestra de un cuarto de luminancia (por ejemplo, la relación entre el costo de Rd para la resolución de MVD de muestra de luminancia entera y el costo de r D para la resolución de MVD de muestra de un cuarto de luminancia es mayor que un umbral), se omite la comprobación RD de la resolución MVD de muestra de 4 luminancias para la CU.
La información del vector de movimiento reconstruido no se utiliza completamente en los esquemas existentes de predicción de vectores de movimiento en el códec de vídeo existente, tal como HEVC/H.265, a Vc /H.264 y JEM.
Esta divulgación describe técnicas que pueden mejorar los dispositivos informáticos que realizan predicción de vectores de movimiento (MVP). Las técnicas se elaboran en varios aspectos diferentes que se describen más abajo. Las siguientes técnicas pueden aplicarse individualmente. Alternativamente, puede aplicarse cualquier combinación de las técnicas.
De acuerdo con una o más técnicas de esta divulgación, los codificadores de vídeo pueden usar vectores de movimiento de bloques que no son inmediatamente adyacentes a un bloque actual porque los vectores de movimiento de los bloques no adyacentes pueden mejorar aún más la eficiencia de predicción, especialmente cuando la correlación entre los vectores de movimiento espacial son lo suficientemente fuertes como para que la información de movimiento del bloque actual sea similar a la de los bloques no adyacentes. Por tanto, la información de movimiento de los bloques no adyacentes puede ser buenos candidatos de MVP para el bloque actual. En esta divulgación, se propone que se usen uno o más predictores de vector de movimiento espacial (NA-SMVP) no adyacentes para derivar el predictor de vectores de movimiento para la información de movimiento del bloque actual; o los NA-SMVP pueden ser reusados directamente por el bloque actual para realizar inter predicciones. Esta divulgación describe técnicas para incorporar de forma adaptativa los NA-SMVP junto con otros predictores de MV (por ejemplo, SMVP normal, TMVP, MVP sintéticos) para la predicción de MV.
Por tanto, de acuerdo con una técnica de esta divulgación, el codificador de vídeo 20 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. Además, el codificador de vídeo 20 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP para el bloque actual. El codificador de vídeo 20 también puede determinar un vector de movimiento del bloque actual. El vector de movimiento puede ser igual a un vector de movimiento del MVP para el bloque actual o puede ser igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento (MVD) señalizada en un flujo de bits. Adicionalmente, el codificador de vídeo 20 puede determinar un bloque predictivo en base al vector de movimiento del bloque actual. El codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales.
De manera similar, el decodificador de vídeo 30 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. Además, el decodificador de vídeo 30 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP para el bloque actual. Adicionalmente, el decodificador de vídeo 30 puede determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual. El decodificador de vídeo 30 también puede determinar un bloque predictivo en base al vector de movimiento del bloque actual. El decodificador de vídeo 30 puede entonces reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual.
En algunos ejemplos, los predictores de vectores de movimiento espacial no adyacentes (NA-SMVP) se derivan de la información de movimiento de los bloques espacialmente no adyacentes ubicados dentro de la misma imagen, segmento o región predefinida en la que se ubica el bloque actual. Debido a que la información de movimiento de los bloques no adyacentes puede reusarse como predictores de vectores de movimiento para el bloque actual, solamente los bloques no adyacentes que tienen información de movimiento reconstruida se consideran para la derivación del MVP no adyacente. Esta divulgación propone además añadir una restricción a los bloques NA para restringir una distancia entre los bloques NA y el bloque actual para que esté dentro de un rango. La distancia puede medirse en distancia de píxeles en el sentido L1 o L2; o la distancia puede medirse en distancia de bloque en el sentido L1 o L2. La distancia L1 entre dos puntos de coordenadas en un espacio vectorial real de n dimensiones con un sistema de coordenadas Cartesiano fijo es la suma de las longitudes de las proyecciones del segmento de línea entre los puntos sobre los ejes de coordenadas. En el caso de la distancia de píxel L1, la longitud de una proyección es la altura o el ancho de un píxel. En el caso de la distancia de bloque L1, la longitud de una proyección es el ancho o la altura de un bloque. La distancia L2 es la distancia Euclidiana entre dos puntos. La distancia puede medirse entre los centros de los bloques o cualquier punto designado dentro de cada bloque. En algunos ejemplos, se añaden otra restricción a los bloques NA que restringe los bloques NA para que sean bloques que no son adyacentes al bloque actual y que no son adyacentes a los bloques que son inmediatamente adyacentes al bloque actual.
La Figura 15 es un diagrama de bloques que ilustra bloques no adyacentes de ejemplo, de acuerdo con una técnica de esta divulgación. Como se muestra en la Figura 15, los bloques no adyacentes 1500 son bloques reconstruidos que no son inmediatamente adyacentes a un bloque actual 1502. El tamaño de los bloques no adyacentes puede definirse como el bloque unitario más pequeño usado para almacenar la información de movimiento (por ejemplo, bloque 4x4) o la unidad básica para la interpredicción (por ejemplo, PU en HEVC) o el subbloque usado en modo afín, modo FRUC en el JEM o cualquier otro tamaño de bloque especificado. La Figura 15 también muestra bloques 1504 adyacentes no reconstruidos y bloques 1506 no adyacentes no reconstruidos.
La Figura 16 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes, de acuerdo con una técnica de esta divulgación. La Figura 17 es un diagrama de bloques que ilustra un ejemplo de una selección de bloques no adyacentes en base a un bloque principal de acuerdo con una técnica de esta divulgación. Aunque potencialmente todos los bloques no adyacentes pueden usarse para la derivación de MVP, puede ser más deseable (en términos de complejidad de implementación) seleccionar solamente un número limitado de bloques no adyacentes (bloques NA) para la derivación de MVP. Varias formas de seleccionar N (dónde N es un número entero no negativo) más abajo se detallan los bloques no adyacentes para la derivación del predictor de vectores de movimiento (MVP). Por ejemplo, en un ejemplo de selección N bloques no adyacentes para la derivación de MVP, se seleccionan patrones fijos de bloques no adyacentes para la derivación de NA-SMVP. Los patrones fijos se posicionan en relación con la posición del bloque actual. En un ejemplo como se muestra en la Figura 16, además de los bloques adyacentes (por ejemplo, Ac, A 1 , B 0 , B 1 y B 2 ) usado para derivar los SMVP regulares como se usa en HEVC para un bloque actual 1600, un patrón fijo de 11 bloques NA (NA 1 , 1 , NA 1 , 2 , NA1,3, NA1,4, NA 15 NA 1 , 6 , NA 17 , NA 1 , 8 , NA1,9NA1,10,NA1,11) que rodean el bloque actual 1600 se usan para derivar los NA-SMVP. La distancia horizontal si y la distancia vertical ti son dos descriptores de este patrón.
En otro ejemplo como se muestra en la Figura 17. En el ejemplo de la Figura 17, además de los bloques adyacentes usados para derivar los SMVP regulares como se usan en HEVC, un codificador de vídeo usa el bloque adyacente de un bloque principal 1700 que contiene un bloque actual 1702 como bloques NA para la derivación de MVP. En la Figura 17, los bloques adyacentes (NA 1 , 1 , NA 1 , 2 , NA 13 NA 1 , 4 , NA 1 , 5 , NA 1 , 6 , NA1,7, NA 1 , 8 , NA1,9) del bloque principal 1700 se seleccionan como bloques no adyacentes para los bloques dentro del bloque principal 1700, incluido el bloque actual 1702. El tamaño del bloque principal 1700 puede predeterminarse o señalizarse en los flujos de bits o depender del tamaño del bloque actual 1702 o depender del modo codificado (por ejemplo, omitir/fusionar/AMVP) del bloque actual 1702. Los NA-SMVP de esta divulgación pueden derivarse de, pero no se limita a, los patrones divulgados de bloques espaciales no adyacentes.
A continuación se dan ejemplos de bloques NA circundantes de múltiples niveles. Cabe señalar que para cada nivel, el número de bloques NA puede ser diferente.
Patrón A1: Bloques NA circundantes de múltiples niveles. Cada nivel (nivel i) se describe mediante los parámetros de distancia (si y ti). La Figura 20, la Figura 21 y la Figura 22 muestran ejemplos de bloques NA circundantes de 2 niveles, pero el número de niveles puede ser cualquier número entero no negativo. En los ejemplos de la Figura 20, Figura 21 y Figura 22, los cuadrados negros corresponden a bloques NA en un primer nivel y los cuadrados grises corresponden a bloques NA en un segundo nivel, ti denota una distancia vertical desde un bloque actual 2000, 2100 o 2200 al primer nivel. t 2 denota una distancia vertical desde el bloque actual 2000, 2100 o 2200 hasta el segundo nivel, si denota una distancia horizontal desde el bloque actual 2000, 2100 o 2200 hasta el primer nivel.s 2 denota una distancia horizontal desde el bloque actual 2000, 2100 o 2200 hasta el segundo nivel.
Patrón A2: Bloques NA circundantes de múltiples niveles en base a un bloque principal. Cada nivel (nivel i) se describe mediante los parámetros de distancia (si y ti). El tamaño del bloque principal puede predeterminarse o señalizarse en los flujos de bits. La Figura 23 muestra ejemplos de bloques NA circundantes de 2 niveles, pero el número de niveles puede ser cualquier número entero no negativo.
Además, en algunos ejemplos, una distancia entre el bloque actual y el bloque no adyacente se define mediante una norma L1 (es decir, la distancia L1) o una norma L2 (es decir, la distancia Euclidiana).
En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 seleccionan N bloques no adyacentes de acuerdo con el orden de codificación inverso. Por ejemplo, un codificador de vídeo (por ejemplo, un codificador de vídeo 20 o un decodificador de vídeo 30) puede seleccionar bloques no adyacentes al escanear bloques de acuerdo con un orden que es opuesto al orden en el que el codificador de vídeo codificó los bloques.
En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 construyen una lista de candidatos de MV global al insertar todos los MV reconstruidos en esta lista de acuerdo con un orden predefinido. La lista de candidatos de MV global puede contener los MV derivados de los bloques adyacentes así como también los MV derivados de bloques no adyacentes. El predictor de MV del bloque actual puede derivarse entonces mediante el uso de estos candidatos de MV globales. Por tanto, en tales ejemplos, un codificador de vídeo (por ejemplo, codificador de vídeo 20 o decodificador de vídeo 30) puede determinar una lista de candidatos de vectores de movimiento global que comprende candidatos de MVP que especifican un vector de movimiento para cada bloque que está en la imagen actual y que se codifica antes del bloque actual. Adicionalmente, el codificador de vídeo puede determinar el vector de movimiento del bloque no adyacente a partir de un candidato MVP en la lista de candidatos de vectores de movimiento global.
En realizaciones de la invención protegida, debido a que la búsqueda directa de candidatos de MV no adyacentes puede aumentar el tamaño de la memoria intermedia de línea, un codificador de vídeo aplica una forma alternativa de almacenar MV reconstruidos. Es decir, el codificador de vídeo almacena los MV reconstruidos en una memoria intermedia histórica de la forma "primero en entrar, primero en salir". Para imitar los candidatos de MV no adyacentes, solamente aquellos MV antiguos en la memoria intermedia histórica se toman como candidatos de MV no adyacentes. Los MV antiguos en la memoria intermedia histórica pueden definirse como aquellos cercanos al final de la memoria intermedia histórica. Por ejemplo, si el tamaño de la memoria intermedia histórica es N, puede señalarse o establecerse un umbral T (tal como T=N/4) de modo que los T MV más cercanos a la salida en la memoria intermedia histórica se definan como MV antiguos.
En algunos ejemplos, para reducir el tamaño de la memoria intermedia usada para almacenar información de movimiento no adyacente (es decir, información de movimiento de bloques no adyacentes), se añaden restricciones para derivar predictores de vectores de movimiento espacial no adyacentes. Si la distancia entre un bloque no adyacente y el bloque actual (o la CTU actual) es mayor que un umbral, puede modificarse la posición del bloque no adyacente. En otras palabras, en lugar de determinar un candidato de Mv en base a un bloque NA en una primera ubicación (por ejemplo, una ubicación especificada por un patrón fijo de bloques NA), un codificador de vídeo puede determinar una segunda posición en base a la primera posición cuando una distancia desde la primera posición hasta el bloque actual es mayor que un umbral. En algunos ejemplos, en lugar de determinar un candidato de MV en base a un bloque NA en una primera ubicación (por ejemplo, una ubicación especificada por un patrón fijo de bloques NA), un codificador de vídeo puede determinar que la primera posición no es válida cuando una distancia desde la primera posición al bloque actual es mayor que un umbral. El umbral puede ser diferente para la distancia horizontal y la distancia vertical. Por tanto, en algunos ejemplos, antes de determinar el vector de movimiento del bloque no adyacente y en base a una distancia entre el bloque no adyacente y el bloque actual que es mayor que una distancia umbral, un codificador de vídeo puede modificar una posición del bloque no adyacente. En algunos ejemplos, antes de determinar el vector de movimiento del bloque no adyacente y en base a una distancia entre el bloque no adyacente y un bloque de árbol de codificación actual que es mayor que una distancia umbral, el codificador de vídeo puede modificar una posición del bloque no adyacente. En tales ejemplos, el bloque de árbol de codificación actual contiene el bloque actual.
Un ejemplo de modificación de posición puede ser redondear la primera posición a una cuadrícula gruesa, es decir, reducir los movimientos no adyacentes almacenados. Por tanto, en este ejemplo, un codificador de vídeo puede modificar la posición del bloque no adyacente al menos en parte al redondear una posición del bloque no adyacente a una posición en una primera cuadrícula de bloques en la imagen actual más gruesa que una segunda cuadrícula de bloques en la imagen actual.
Otro ejemplo de modificación de posición puede ser recortar la primera posición al umbral si la distancia a la posición es mayor que el umbral. Recortar la posición al umbral significa modificar la posición para que esté en el umbral si la posición supera el umbral. Por tanto, en este ejemplo, el codificador de vídeo puede modificar la posición del bloque no adyacente al menos en parte al recortar una posición del bloque no adyacente al umbral de distancia. Pueden combinarse múltiples procedimientos de modificación de posición con diferentes umbrales.
La Figura 18A y la Figura 18B son diagramas de bloques que ilustran un ejemplo de modificación de posición de un bloque no adyacente de acuerdo con una técnica de esta divulgación. La Figura 19A y la Figura 19B son diagramas de bloques que ilustran ejemplos de umbrales para modificar bloques no adyacentes de acuerdo con una técnica de esta divulgación. Más abajo se proporcionan varios ejemplos de modificación de las posiciones. En estos ejemplos, supongamos que la posición de un bloque no adyacente es (xNA, yNA), la posición modificada del bloque no adyacente es (xNA', yNA'), la posición de la cuadrícula superior izquierda de una CTU actual 1800, 1900 es (xCTU, y CTU) y la posición de la CU actual es (xCU, yCU). Ejemplos de restricciones pueden ser:
Figure imgf000025_0001
puede ser menor que xThrd. La Figura 18A muestra un ejemplo con yThrd, donde Thrd es una abreviatura de umbral. Por tanto, en la Figura 18A, una CTU 1800 contiene una CU actual (curr) 1802. Si la diferencia entre una coordenada vertical de una posición NA 1804 de un bloque no adyacente y una coordenada vertical de CTU 1800 es mayor que el umbral (yThrd), el codificador de vídeo recorta la coordenada vertical de la posición NA 1804 al umbral, lo que resulta en la posición NA' 1806.
Figure imgf000026_0002
CompressedLog2SizeY). CompressedLog2SizeX y CompressedLog2SizeY son valores para controlar el redondeo de posición. Por ejemplo, si (xNA, yNA) es (36, 18) y (CompressedLog2SizeX, CompressedLog2SizeY) es (4,4), la posición redondeada, (xnA', yNA'), será ((36>>4)<<4, (18>>4)<<4) = (32,16). En otras palabras, si una posición de un bloque no adyacente está lejos del bloque actual, el codificador de vídeo puede redondear la posición a una cuadrícula más gruesa. Por tanto, la memoria intermedia de movimiento solamente puede almacenar movimientos de bloques no adyacentes en la cuadrícula más gruesa. La Figura 18B muestra un ejemplo. Por tanto, en el ejemplo de la Figura 18B, una CTU 1850 contiene una CU actual (curr) 1852. Si la diferencia entre una coordenada vertical (y) de una posición NA 1854 y una coordenada vertical de una posición de CTU 1850 es mayor que un umbral vertical (yThrd) y/o una diferencia entre una coordenada horizontal (x) de la posición NA 1854 es mayor que un umbral horizontal (xThrd), el codificador de vídeo puede determinar una coordenada horizontal de una posición modificada NA' 1856 a (xNA >> CompressedLog2SizeX) << CompressedLog2SizeX y una coordenada vertical de la posición modificada nA' 1856 a (yNA > > CompressedLog2SizeY) << CompressedLog2SizeY. En algunos ejemplos, xThrd es infinito negativo. Por tanto, en tales ejemplos (xCTU - xNA) siempre es mayor que xThrd.
3. En algunos ejemplos, el umbral para modificar un bloque no adyacente es: si (yCTU - yNA) > yThrd, se modifica el bloque no adyacente. La Figura 19A muestra un ejemplo, y los bloques sombreados son las posiciones de bloques no adyacentes que deben modificarse. En particular, en el ejemplo de la Figura 19A, una CTU 1900 incluye una CU actual (curr) 1902. Si una coordenada vertical de un bloque no adyacente difiere de una coordenada vertical de CTU 1900 en más que el umbral (yThrd), el codificador de vídeo puede modificar la posición del bloque no adyacente.
4. El umbral para modificar un bloque no adyacente puede ser una combinación de más de una regla. Un ejemplo puede ser que: (1) si (yCTU - yNA) > yThrd, debe modificarse el bloque no adyacente. (2) si (yCTU -yNA) > 0 y (xCTU - xNA) > 0, debe modificarse el bloque no adyacente. La Figura 19B muestra el ejemplo de combinación de las dos reglas, y los bloques sombreados son las posiciones de bloques no adyacentes que deben modificarse. En particular, en el ejemplo de la Figura 19B, una CTU 1950 incluye una CU actual (curr) 1952. Si una coordenada vertical de un bloque no adyacente difiere de una coordenada vertical de CTU 1950 en más de un umbral vertical (yThrd), el codificador de vídeo puede modificar la coordenada vertical del bloque no adyacente. Adicionalmente, si la diferencia entre una coordenada horizontal del bloque no adyacente y una coordenada horizontal de CTU 1950 es mayor que 0 y la diferencia entre una coordenada vertical del bloque no adyacente y la coordenada vertical de CTU 1950 es mayor que 0, el codificador de vídeo puede modificar la coordenada horizontal del bloque no adyacente.
En un ejemplo, solamente pueden seleccionarse los bloques no adyacentes que se ubican en la misma fila de CTU que el bloque actual. En otro ejemplo, solamente pueden seleccionarse los bloques no adyacentes que se ubican en la misma CTU que el bloque actual.
Después de que el codificador de vídeo determina los N bloques no adyacentes, el codificador de vídeo puede derivar M(donde M< N) predictores de vectores de movimiento espacial no adyacentes (NA-SMVP) de N bloques no adyacentes (bloques NA). Hay diferentes formas de utilizar los SMVP no adyacentes en función del mecanismo de interpredicción usado en el códec de vídeo. Por ejemplo, cuando se usa un mecanismo de candidato de movimiento competitivo (por ejemplo, el modo de fusión/omisión en HEVC o JEM), uno o más MVP espaciales no adyacentes (NA-SMVP) se derivan y se insertan en una lista de candidatos de acuerdo con un orden predefinido. En un ejemplo, como se muestra en la Figura 16, los 11 MVP no adyacentes se insertan en la lista de candidatos fusionados después de los MVP espaciales convencionales, los MVP temporales y antes de los candidatos sintéticos combinados, los candidatos sintéticos cero.
En algunos ejemplos, puede aplicarse un proceso de poda de movimiento completo a los NA-SMVP y a los otros candidatos fusionados; o puede aplicarse una poda de movimiento parcial a los NA-SMVP y a los otros candidatos fusionados. El proceso de poda de movimiento completo compara un candidato con todos los candidatos derivados previamente en la lista de candidatos actual para evitar insertar candidatos idénticos hasta cierto punto. Para reducir la complejidad, el proceso de poda de movimiento parcial compara solamente un número limitado de candidatos en lugar de comparar cada candidato potencial con todos los demás candidatos existentes. Se proporcionan más órdenes de inserción de bloques no adyacentes en la Secuencia 2 a la Secuencia 5, más abajo. Los NA-SMVP de esta divulgación pueden insertarse en la lista de candidatos, incluido, pero sin limitarse a, el orden de inserción divulgado.
Secuencia 2
Orden de inserción para el modo de Fusión:
Figure imgf000026_0001
Figure imgf000027_0001
i. MVP afín extrapolado 4 SMVP izquierdos (por ejemplo, Ao, Ai )^- SMVP izquierdos escalados (por ejemplo, Ao, Ai ) 4 SMVP Superiores (por ejemplo, Bo, Bi , B2) ^ 4 SMVP Superiores Escalados (por ejemplo, Bo, Bi , B2) ^ 4 NA-SMVP ^ NA-SMVP Escalados 4 TMVP 4 Candidatos Sintéticos
Un esquema candidato de movimiento espacio-temporal competitivo puede incluir un sistema en el que se selecciona un predictor de movimiento de un conjunto de predictores de movimiento disponibles. Cuando se usa un esquema de candidatos de movimiento espacio-temporal competitivo, tal como el modo AMVP en HEVC o JEM u otros códecs de vídeo, los candidatos de MVP no adyacentes se derivan y se insertan en la lista de candidatos de acuerdo con un orden predefinido. En un ejemplo, un codificador de vídeo inserta los i i MVP no adyacentes de la Figura i6 en la lista de candidatos de AMVP después de los MVP espaciales convencionales, los MVP temporales y antes de cualquier candidato cero sintético. La derivación NA-SMVP puede seguir las mismas reglas de derivación que HEVC o cualquier otra regla aplicada al SMVP derivado de bloques adyacentes.
El orden de los candidatos de NA-SMVP puede determinarse mediante una cierta regla predefinida o puede determinarse de forma adaptativa. Por ejemplo, el codificador de vídeo puede disponer M candidatos de N bloques no adyacentes en el mismo orden en que N bloques de NA se seleccionan de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. Alternativamente, en un ejemplo, el codificador de vídeo reordena los M candidatos de acuerdo con las frecuencias de esos candidatos (es decir, el número de apariciones de los candidatos entre todos los candidatos de MV) y/o distancias entre un bloque NA y el bloque actual. Por tanto, en este ejemplo, el codificador de vídeo puede colocar candidatos más frecuentes y/o candidatos de bloques NA más cerca del bloque actual adelante en una lista de candidatos de NA-SMVP (es decir, la lista de candidatos que incluye candidatos de NA-SMVP y posiblemente otros candidatos). Además, el codificador de vídeo puede insertar todos los candidatos de NA-SMVP en una posición fija en la lista de candidatos como se describe en la Secuencia 2 a la Secuencia 5, anteriores, que pueden reordenarse solamente entre los candidatos de NA-SMVP. En otro ejemplo, el codificador de vídeo puede reordenar todos los candidatos en la lista (incluido NA-SMVP y otros candidatos) de acuerdo con ciertos criterios tales como la frecuencia de la información de movimiento (es decir, el número de apariciones del vector de movimiento entre todos los candidatos de MV) o cualquier estadística de movimiento disponible de la imagen actual y/o imágenes previamente codificadas. El orden de los NA-SMVP en una lista de candidatos puede ser diferente para ciertos modos de codificación, por ejemplo, el modo de fusión y/o AMVP, y no se limita necesariamente a los órdenes de candidatos divulgados. Por ejemplo, un codificador de vídeo puede insertar candidatos de NA-SMVP en una lista de candidatos de fusión de acuerdo con un primer orden y puede insertar candidatos de NA-SMVP en una lista de candidatos de AMVP de acuerdo con un segundo orden diferente del primer orden.
En algunos ejemplos, el proceso de poda se adapta al tamaño del bloque. En un ejemplo, puede usarse un valor umbral para definir lo que se debe podar. Por ejemplo, si el tamaño del bloque es grande (es decir, mayor que un tamaño de bloque predefinido), entonces el codificador de vídeo puede aumentar el valor umbral en consecuencia. Considere dos candidatos con vectores de movimiento MVo (añadidos a la lista anteriormente) y MVi; en un ejemplo, si la norma Li o L2 de la distancia entre MVo y MVi es menor que el valor umbral, el codificador de vídeo poda el candidato de MVi. El codificador de vídeo 2o puede señalar el valor umbral señalado a través de un SPS, un PPS, un encabezado de segmento o en otra estructura de sintaxis.
En otro ejemplo, el valor umbral es adaptable en base al tamaño del bloque actual. Por ejemplo, en este ejemplo, se aplica un primer valor umbral para bloques que tienen tamaños menores que un tamaño de bloque predefinido y un segundo valor umbral diferente se aplica para bloques que tienen tamaños mayores que el tamaño de bloque predefinido. En este ejemplo, al generar una lista de candidatos para un bloque que tiene un tamaño menor que el tamaño de bloque predefinido, el codificador de vídeo puede podar un candidato de la lista si una norma L1 o L2 de la distancia entre el vector de movimiento del candidato y un vector de movimiento de otro candidato en la lista es menor que el primer valor umbral. En este ejemplo, al generar una lista de candidatos para un bloque que tiene un tamaño mayor que el tamaño de bloque predefinido, el codificador de vídeo puede podar un candidato de la lista si una norma L1 o L2 de la distancia entre el vector de movimiento del candidato y un vector de movimiento de otro candidato en la lista es menor que el segundo valor umbral.
En otro proceso de poda de ejemplo, el valor umbral es adaptativo en base a una distancia entre la posición espacial de un candidato y una posición espacial del bloque actual. El codificador de vídeo puede usar un valor de umbral mayor si el candidato se ubica más lejos del bloque actual. Por ejemplo, al generar una lista de candidatos para el bloque actual, un codificador de vídeo puede determinar un primer NA-SMVP en base a un bloque no adyacente particular. En este ejemplo, el codificador de vídeo puede podar el primer candidato de NA-SMVP de la lista si una norma L1 o L2 de la distancia entre un vector de movimiento del primer candidato de NA-SMVP y un vector de movimiento de un segundo candidato en la lista es menor que un umbral determinado. En este ejemplo, el umbral particular puede depender de la distancia entre el bloque no adyacente particular y el bloque actual.
En algunos ejemplos, la clasificación de los vectores de movimiento puede realizarse mediante el uso de procedimientos que incluyen, pero no se limitan a, K-media o máquina de vectores de soporte, y solamente el primer Mc candidatos de cada uno de los Nc las clases deben mantenerse en la lista de candidatos, donde Mc y el número de clases Nc puede predefinirse o señalizarse en sintaxis de alto nivel.
En esquemas donde solamente se usa un único MVP, tal como el modo de fusión afín en el JEM, un codificador de vídeo (por ejemplo, codificador de vídeo 20 o decodificador de vídeo 30) también puede incluir uno o más SMVP no adyacentes (NA-SMVP) en un candidato establecido junto con los otros MVP. Luego, el MVP final se selecciona como el primer MVP disponible de acuerdo con un orden predefinido. En un ejemplo, cuando se aplica una CU en modo de fusión afín (AF_MERGE), la CU obtiene el primer bloque codificado con modo afín de los bloques reconstruidos vecinos válidos en base al orden de visita: A1^B 1^B 0^A 0^B 2^b loques NA. Por tanto, en este ejemplo, si ninguno de los bloques A1, B1, B0, A0 o B2 se codifican con modo afín, el codificador de vídeo puede determinar que el MVP para la CU es el primero de los bloques no adyacentes que se codifica en el modo afín. Como se discutió brevemente anteriormente, el proceso de derivación de movimiento en el modo de fusión FRUC incluye dos etapas. En particular, primero se realiza una búsqueda de movimiento a nivel de CU, seguida por un refinamiento de movimiento a nivel de sub-CU. A nivel de CU, un codificador de vídeo deriva un vector de movimiento inicial para toda la CU en base a al emparejamiento bilateral o el emparejamiento de plantillas. Para derivar el vector de movimiento inicial para toda la CU, el codificador de vídeo puede generar primero una lista de candidatos de MV (conjunto de candidatos de MV de nivel FRUC CU) y el codificador de vídeo selecciona el candidato que conduce al costo mínimo de emparejamiento como punto de partida para el posterior refinamiento a nivel de CU. Luego, el codificador de vídeo realiza una búsqueda local en base a emparejamiento bilateral o emparejamiento de plantillas alrededor del punto de partida. Luego, el codificador de vídeo toma el MV que da como resultado el costo mínimo de emparejamiento como el MV para toda la CU. Subsecuentemente, el codificador de vídeo puede refinar aún más la información de movimiento a nivel de sub-CU con un conjunto de candidatos de MV a nivel de sub-CU FRUC que contiene los vectores de movimiento CU derivados.
Esta divulgación propone añadir uno o más NA-SMVP al conjunto de candidatos de MV a nivel de CU FRUC, al conjunto de candidatos de MV a nivel de sub-CU FRUC o ambos. Por tanto, un codificador de vídeo (por ejemplo, un codificador de vídeo 20 o un decodificador de vídeo 30) puede determinar un conjunto de candidatos a vector de movimiento FRUC a nivel de CU. De acuerdo con una técnica de esta divulgación, el conjunto de candidatos a vector de movimiento FRUC a nivel de CU puede incluir uno o más NA-SMVP. Adicionalmente, el codificador de vídeo puede seleccionar un candidato a vector de movimiento FRUC a nivel de CU del conjunto de candidatos a vector de movimiento FRUC a nivel de CU. El codificador de vídeo puede entonces determinar un vector de movimiento a nivel de CU al menos en parte al realizar una búsqueda local a partir de un candidato de vector de movimiento FRUC a nivel de CU seleccionado. El codificador de vídeo también puede refinar el vector de movimiento a nivel de CU a un nivel de sub-CU con un conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC. En este ejemplo, al menos uno del conjunto de candidatos de vector de movimiento FRUC a nivel de CU y el conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC puede incluir un NA-SMVP que especifica un vector de movimiento de un bloque no adyacente. El NA-SMVP puede determinarse de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La sintaxis de alto nivel relacionada con los MVP no adyacentes puede predeterminarse o señalizarse explícitamente en los flujos de bits. La sintaxis de alto nivel incluye, pero no se limita a, los siguientes parámetros de control:
1. El número de bloques adyacentes N. En algunos ejemplos, el número es adaptable de acuerdo con la información de codificación, tal como el tamaño del bloque. En algunos ejemplos, el número N depende del modo codificado (por ejemplo, omisión/fusión/AMVP) o del número máximo permitido de candidatos para el modo fusión/AMVp/omisión.
2. La distancia s/t (señal de múltiples parámetros s/t si existen), donde s es el desplazamiento horizontal y t es el desplazamiento vertical para los bloques NA, como se muestra en las Figuras 20-23.
3. El tamaño del bloque principal para la determinación de bloques NA.
4. La habilitación/inhabilitación de los MVP no adyacentes.
5. El número de niveles para ubicar bloques NA como se discutió anteriormente con respecto a las Figuras 20­ 22.
En HEVC, el tamaño de la lista de candidatos fusionados varía de 1 a 5, mientras que el tamaño de la lista de candidatos AMVP está fijo en 2. En el JEM, el tamaño de la lista de candidatos fusionados varía de 1 a 7, mientras que el tamaño de la lista de candidatos AMVP está fijo en 2. Cuando los NA-SMVP se incluyen en la lista de MVP o de candidatos fusionados, el tamaño máximo de la lista de candidatos puede aumentarse en consecuencia. Por ejemplo, el tamaño de la lista de candidatos fusionados puede aumentarse a N (dónde N es un entero positivo y N >7) cuando se insertan uno o más NA-SMVP en el tamaño de la lista de candidatos fusionados. En este ejemplo, el tamaño de la lista de candidatos AMVP puede aumentarse a M (M es un entero positivo y M >2) cuando se insertan uno o más NA-SMVP en el tamaño de la lista de candidatos fusionados.
Esta divulgación también propone usar candidatos de MV sintéticos además de los proporcionados en HEVC. La utilización de los candidatos de MV sintéticos adicionales también puede seguir los ejemplos proporcionados en otras partes de esta divulgación con respecto al uso de MVP no adyacentes. Es decir, pueden generarse candidatos de MV sintéticos en base a parámetros de movimiento de bloques no adyacentes, donde los bloques no adyacentes se determinan de acuerdo con cualquiera de los ejemplos proporcionados anteriormente.
En algunos ejemplos, un codificador de vídeo (por ejemplo, codificador de vídeo 20 o decodificador de vídeo 30) genera candidatos de unipredicción sintéticos al dividir los candidatos de MV de bipredicción disponibles en dos candidatos de unipredicción separados de acuerdo con un orden predefinido, tal como A1, B1, B0, A0, B2 (ver Figura 2). Luego, el codificador de vídeo puede insertar los candidatos de unipredicción sintéticos creados en la lista de candidatos.
Además, en algunos ejemplos, cuando se habilita un MVD entero (es decir, un MVD especificado con una precisión de una muestra de luminancia) o un MVD de cuatro muestras de luminancia (es decir, un MVD especificado con una precisión de cuatro muestras de luminancia), un codificador de vídeo puede generar candidatos de MV enteros sintéticos (es decir, candidatos de MV que tienen vectores de movimiento con una precisión de una muestra de luminancia) o candidatos de MV de cuatro muestras de luminancia (es decir, candidatos de MV que tienen vectores de movimiento con una precisión de cuatro muestras de luminancia) al redondear o truncar los candidatos de MV disponibles en MV entero o cuatro muestras de luminancia candidatos de MV. El codificador de vídeo puede entonces insertar los candidatos de MV enteros sintéticos generados o los candidatos de MV de 4 muestras de luminancia en la lista de candidatos.
Esta divulgación también propone formas de incluir múltiples candidatos de TMVP en una lista de candidatos de fusión o una lista de candidatos de AMVP. En un ejemplo, siguiendo el diseño HEVC en el que se señala una imagen coubicada, un codificador de vídeo usa más bloques vecinos temporales para derivar más candidatos de TMVP. Por ejemplo, además de simplemente comprobar los bloques H y C (representados en la Figura 2) en orden y seleccionar uno de ellos, el codificador de vídeo puede comprobar más bloques (por ejemplo, los bloques coubicados de los bloques espaciales vecinos del bloque actual). En un ejemplo, los bloques espaciales vecinos comprobados por el codificador de vídeo pueden incluir solamente bloques adyacentes, por ejemplo A0, A1, B0, B1y B2como se muestra en la Figura 16. Por tanto, en este ejemplo, el codificador de vídeo considera hasta cinco bloques coubicados de los bloques adyacentes (incluidos o además de los bloques H y C). En otro ejemplo, el codificador de vídeo también puede considerar bloques coubicados de bloques NA (por ejemplo, los 11 bloques NA
Figure imgf000029_0001
En algunos ejemplos, el codificador de vídeo considera bloques coubicados ubicados en el lado opuesto del bloque actual. Por ejemplo, para el bloque NA NA1,6(ubicado en la posición (-4, -4)) en la Figura 16, el codificador de vídeo puede seleccionar el bloque NA-col correspondiente (es decir, un bloque que se coloca con un bloque no adyacente y que es una imagen de referencia) como el bloque ubicado en (W 3, H 3), donde W y H son el ancho y alto del bloque actual en unidades básicas de tamaño de bloque de información de movimiento (por ejemplo, 4x4). Esto crea un conjunto de bloques NA-col que se encuentran en las posiciones inferior y derecha del bloque actual. En algunos ejemplos, el codificador de vídeo añade este conjunto de candidatos de MV (es decir, los candidatos de MV definidos a partir de bloques NA-col) de forma entrelazada al NA-SMVP. Alternativamente, en algunos ejemplos, el codificador de vídeo puede insertar este conjunto de candidatos de MV como el conjunto de candidatos de TMVP como en los procesos de derivación de fusión o AMVP existentes descritos en otra parte de esta divulgación.
En algunos ejemplos, el codificador de vídeo puede seleccionar más de una imagen coubicada. En otras palabras, el codificador de vídeo puede seleccionar más de una imagen de referencia a partir de la cual derivar candidatos de TMVP. En tales ejemplos, las imágenes seleccionadas pueden definirse como todas las imágenes de referencia incluidas en las listas de imágenes de referencia o las imágenes seleccionadas pueden estar señalizadas. En un ejemplo, para cada imagen de referencia seleccionada, el codificador de vídeo puede verificar los bloques H y C dentro de la imagen de referencia seleccionada en el mismo orden que se usa en HEVC (es decir, abajo a la derecha, luego en el centro). Alternativamente, en un ejemplo, para cada imagen seleccionada, el codificador de vídeo comprueba más bloques (por ejemplo, los bloques coubicados de bloques espacialmente adyacentes y/o NA del bloque actual).
Además, cuando el codificador de vídeo deriva múltiples candidatos de TMVP, el codificador de vídeo puede aplicar un proceso de poda para eliminar los idénticos entre ellos. Alternativamente, en algunos ejemplos, el codificador de vídeo puede aplicar un proceso de poda limitado, lo que significa que uno de los candidatos de TMVP solamente puede compararse con un cierto número de candidatos en lugar de con todos los demás. Además, en un ejemplo, el codificador de vídeo puede aplicar además un proceso de poda entre un candidato de TMVP y otros candidatos (tales como candidatos de fusión espacial). Las técnicas propuestas para usar TMVP adicionales pueden aplicarse a ciertos modos de codificación, tales como el modo de fusión y/o AMVP.
Como se describe en G. J. Sullivan, J.-R. 0hm, W.-J. Han y T. Wiegand, "0verview of the High Efficiency Video Coding (HEVC) Standard", IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, núm. 12, págs.
1649-1668, diciembre de 2012, debido al mayor número de direcciones de intrapredicción en comparación con H.264/MPEG-4 AVC, HEVC considera tres modos más probables (MPM) al codificar el modo de intrapredicción de luminancia de forma predictiva, en lugar del modo más probable considerado en H.264/MPEG-4 AVC. El MPM se deriva de los modos intra de bloques espacialmente adyacentes. En el caso de que el modo de predicción de luminancia actual sea uno de los tres MPM, solamente se transmite el índice de MPM al decodificador. De lo contrario, el índice del modo de predicción de luminancia actual excluyendo los tres MPM se transmite al decodificador mediante el uso un código de longitud fija de 5 bits. El JEM también sigue los mismos esquemas de predicción de modo intra. Sin embargo, el JEM puede incluir más de tres MPM.
Esta divulgación propone técnicas para usar los modos intra de bloques no adyacentes para derivar uno o más MPM para lograr una mejor eficiencia de predicción. Las técnicas descritas en secciones anteriores pueden aplicarse a derivaciones de MPM. Se proporcionan ejemplos de cómo derivar MPM de bloques no adyacentes con respecto a la Figura 35 y la Figura 36, más abajo.
La Figura 24 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas de esta divulgación. La Figura 24 se proporciona con propósitos de explicación y no debe considerarse una limitación de las técnicas como se ejemplifica y describe ampliamente en esta divulgación. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a diversos estándares o procedimientos de codificación.
Los circuitos de procesamiento incluyen el codificador de vídeo 20, y el codificador de vídeo 20 se configura para realizar una o más de las técnicas de ejemplo descritas en esta divulgación. Por ejemplo, el codificador de vídeo 20 incluye circuitos integrados, y las diversas unidades ilustradas en la Figura 24 pueden formarse como bloques de circuitos de hardware que se interconectan con un bus de circuito. Estos bloques de circuitos de hardware pueden ser bloques de circuitos separados o dos o más unidades pueden combinarse en un bloque de circuitos de hardware común. Los bloques de circuitos de hardware pueden formarse como una combinación de componentes eléctricos que forman bloques de operación tales como unidades lógicas aritméticas (ALU), unidades de función elemental (EFU), así como también bloques lógicos tales como AND, OR, NAND, NOR, XOR, XNOR y otros bloques lógicos similares.
En algunos ejemplos, una o más de las unidades ilustradas en la Figura 24 pueden ser unidades de software que se ejecutan en los circuitos de procesamiento. En tales ejemplos, el código objeto para estas unidades de software se almacena en la memoria. Un sistema operativo puede provocar que el codificador de vídeo 20 recupere el código objeto y ejecute el código objeto, lo que provoca que el codificador de vídeo 20 realice operaciones para implementar las técnicas de ejemplo. En algunos ejemplos, las unidades de software pueden ser microprogramas que el codificador de vídeo 20 ejecuta al inicio. En consecuencia, el codificador de vídeo 20 es un componente estructural que tiene hardware que realiza las técnicas de ejemplo o tiene software/microprograma que se ejecuta en el hardware para especializar el hardware para realizar las técnicas de ejemplo.
En el ejemplo de la Figura 24, el codificador de vídeo 20 incluye una unidad de procesamiento de predicción 100, una memoria de datos de vídeo 101, una unidad de generación residual 102, una unidad de procesamiento de transformación 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de procesamiento de transformación inversa 110, una unidad de reconstrucción 112, una unidad de filtro 114, una memoria intermedia de imágenes decodificadas 116, y una unidad de codificación por entropía 118. La unidad de procesamiento de predicción 100 incluye una unidad de procesamiento de interpredicción 120 y una unidad de procesamiento de intrapredicción 126. La unidad de procesamiento de interpredicción 120 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada).
La memoria de datos de vídeo 101 puede configurarse para almacenar los datos de vídeo para ser codificados por los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 101 pueden obtenerse, por ejemplo, de la fuente de vídeo 18. La memoria intermedia de imágenes decodificadas 116 puede ser una memoria de imágenes de referencia que almacena los datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20, por ejemplo, en los modos de intra o inter codificación. La memoria de datos de vídeo 101 y la memoria intermedia de imágenes decodificadas 116 pueden formarse por cualquiera de una variedad de dispositivos de memoria, tales como la memoria de acceso aleatorio dinámico (DRAM), que incluye la DRAM síncrona (SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 101 y la memoria intermedia de imágenes decodificadas 116 pueden proporcionarse por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 101 puede estar en el chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes. La memoria de datos de vídeo 101 puede ser la misma o parte del medio de almacenamiento 19 de la Figura 1.
El codificador de vídeo 20 puede recibir los datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un segmento de una imagen de los datos de vídeo. Cada una de las CTU puede asociarse con los bloques de árbol de codificación (CTB) de luminancia del mismo tamaño y los CTB correspondientes de la imagen. Como parte de la codificación de una CTU, la unidad de procesamiento de predicción 100 puede realizar particiones para dividir los CTB de la CTU en bloques progresivamente más pequeños. Los bloques más pequeño pueden ser los bloques de codificación de CU. Por ejemplo, la unidad de procesamiento de predicción 100 puede dividir una CTB asociada con una CTU de acuerdo con una estructura de árbol.
El codificador de vídeo 20 puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de la codificación de una CU, la unidad de procesamiento de predicción 100 puede particionar los bloques de codificación asociados con la CU entre una o más PU de la CU. Por tanto, cada PU puede asociarse con un bloque de predicción de luminancia y con los correspondientes bloques de predicción de croma. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar las PU que tienen diversos tamaños. Como se indicó anteriormente, el tamaño de una CU puede referirse al tamaño del bloque de codificación de luminancia de la CU y el tamaño de una PU puede referirse al tamaño de un bloque de predicción de luminancia de la PU. Asumiendo que el tamaño de una CU particular es 2Nx2N, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar tamaños de PU de 2Nx2N o NxN para la intrapredicción, y tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, o similares para la interpredicción. El codificador de vídeo 20 y el decodificador de vídeo 30 también pueden soportar particiones asimétricas para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para la interpredicción.
La unidad de procesamiento de interpredicción 120 puede generar datos predictivos para una PU. Como parte de la generación de datos predictivos para una PU, la unidad de procesamiento de interpredicción 120 realiza la interpredicción en la PU. Los datos predictivos para la PU pueden incluir los bloques predictivos de la PU y la información de movimiento para la PU. La unidad de procesamiento de interpredicción 120 puede realizar diferentes operaciones para una PU de una CU en función de si la PU está en un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU son intra predictivas. Por tanto, si la PU está en un segmento I, la unidad de procesamiento de interpredicción 120 no realiza la interpredicción en la PU. Por tanto, para bloques codificados en modo I, el bloque predictivo se forma mediante el uso de la predicción espacial de bloques vecinos codificados previamente dentro de la misma trama. Si una PU está en un segmento P, la unidad de procesamiento de interpredicción 120 puede usar interpredicción unidireccional para generar un bloque predictivo de la PU. Si una PU está en un segmento B, la unidad de procesamiento de interpredicción 120 puede usar interpredicción unidireccional o bidireccional para generar un bloque predictivo de la PU.
La unidad de procesamiento de interpredicción 120 puede realizar técnicas particulares de esta divulgación. Por ejemplo, la unidad de procesamiento de interpredicción 120 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual. Adicionalmente, la unidad de procesamiento de interpredicción 120 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP para el bloque actual. Adicionalmente, la unidad de procesamiento de interpredicción 120 puede determinar un vector de movimiento del bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más un MVD señalizado en un flujo de bits.
La unidad de procesamiento de intrapredicción 126 puede generar los datos predictivos para una PU al realizar una intrapredicción en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y diversos elementos de sintaxis. La unidad de procesamiento de intrapredicción 126 puede realizar intrapredicción en las PU en los segmentos I, en los segmentos P y en los segmentos B.
Para realizar la intrapredicción en una PU, la unidad de procesamiento de intrapredicción 126 puede usar modos de intrapredicción múltiples para generar múltiples conjuntos de datos predictivos para la PU. La unidad de procesamiento de intrapredicción 126 puede usar muestras de los bloques de muestra de las PU vecinas para generar un bloque predictivo para una PU. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de la PU, asumiendo un orden de codificación de arriba a abajo, de izquierda a derecha para las PU, las CU y para las CTU. La unidad de procesamiento de intrapredicción 126 puede usar diversos números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de la región asociada con la PU.
La unidad de procesamiento de predicción 100 puede seleccionar los datos predictivos para las PU de una CU de entre los datos predictivos generados por la unidad de procesamiento de interpredicción 120 para las PU o los datos predictivos generados por la unidad de procesamiento de intrapredicción 126 para las PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos predictivos para las PU de la CU en base a métricas de tasa/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados pueden denominarse en la presente memoria como los bloques predictivos seleccionados. La unidad de procesamiento de intrapredicción 126 puede realizar las técnicas de esta divulgación relacionadas con los MPM.
La unidad de generación residual 102 puede generar, en base a los bloques de codificación (por ejemplo, bloques de codificación de luminancia, Cb y Cr) para una CU y los bloques predictivos seleccionados (por ejemplo, bloques predictivos de luminancia, Cb y Cr) para las PU de la CU, residuos bloques (por ejemplo, bloques residuales de luminancia, Cb y Cr) para la Cu . Por ejemplo, la unidad de generación residual 102 puede generar los bloques residuales de la CU de manera que cada muestra en los bloques residuales tenga un valor igual a una diferencia entre una muestra en un bloque de codificación de la CU y una muestra correspondiente en un bloque predictivo seleccionado correspondiente de una PU de la CU.
La unidad de procesamiento de transformación 104 puede particionar los bloques residuales de una CU en bloques de transformación de TU de la CU. Por ejemplo, la unidad de procesamiento de transformación 104 puede realizar una partición de árbol cuádruple para particionar los bloques residuales de una CU en bloques de transformación de TU de la CU. Por tanto, una TU puede asociarse con un bloque de transformación de luminancia y dos bloques de transformación de croma. Los tamaños y las posiciones de los bloques de transformación de luminancia y de croma de las TU de una CU pueden o no estar en base a los tamaños y las posiciones de los bloques de predicción de las PU de la CU. Una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT) puede incluir nodos asociados con cada una de las regiones. Las TU de una CU pueden corresponder a los nodos hoja del RQT.
La unidad de procesamiento de transformación 104 puede generar los bloques de coeficientes de transformación para cada TU de una CU al aplicar una o más transformaciones a los bloques de transformación de la TU. La unidad de procesamiento de transformación 104 puede aplicar diversas transformaciones a un bloque de transformación asociado con una TU. Por ejemplo, la unidad de procesamiento de transformación 104 puede aplicar una transformación de coseno discreta (DCT), una transformación direccional o una transformación conceptualmente similar a un bloque de transformación. En algunos ejemplos, la unidad de procesamiento de transformación 104 no aplica transformaciones a un bloque de transformación. En tales ejemplos, el bloque de transformación puede tratarse como un bloque de coeficientes de transformación.
La unidad de cuantificación 106 puede cuantificar los coeficientes de transformación en un bloque de coeficientes. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes asociado con una TU de una CU en base a un valor de parámetro de cuantificación (QP) asociado con la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados con una CU al ajustar el valor del QP asociado con la CU. La cuantificación puede introducir pérdida de información. Por tanto, los coeficientes de transformación cuantificados pueden tener menor precisión que los originales.
La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformación inversa 110 pueden aplicar la cuantificación inversa y las transformaciones inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual a partir del bloque de coeficientes. La unidad de reconstrucción 112 puede añadir el bloque residual reconstruido a las muestras correspondientes de uno o más bloques predictivos generados por la unidad de procesamiento de predicción 100 para producir un bloque de transformación reconstruido asociado con una TU. Al reconstruir bloques de transformación para cada TU de una CU en esta manera, el codificador de vídeo 20 puede reconstruir los bloques de codificación de la CU.
La unidad de filtro 114 puede realizar una o más operaciones de desbloqueo para reducir los artefactos de bloqueo en los bloques de codificación asociados con una CU. La memoria intermedia de imágenes decodificadas 116 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro 114 realice una o más operaciones de desbloqueo en los bloques de codificación reconstruidos. La unidad de procesamiento de interpredicción 120 puede usar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar la interpredicción en las PU de otras imágenes. Además, la unidad de procesamiento de intrapredicción 126 puede usar los bloques de codificación reconstruidos en la memoria intermedia de imágenes decodificadas 116 para realizar la intrapredicción en otras PU en la misma imagen que la CU.
La unidad de codificación por entropía 118 puede recibir los datos de otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 118 puede recibir los bloques de coeficientes de la unidad de cuantificación 106 y puede recibir los elementos de sintaxis de la unidad de procesamiento de predicción 100. La unidad de codificación por entropía 118 puede realizar una o más operaciones de codificación por entropía sobre los datos para generar los datos codificados por entropía. Por ejemplo, la unidad de codificación por entropía 118 puede realizar, una operación CABAC, una operación de codificación de longitud de variable adaptativa al contexto (CAVLC), una operación de codificación de longitud de variable a variable (V2V), una codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), una operación de codificación por Entropía de Particionamiento de Rango de Probabilidad (PIPE), una operación de codificación Exponencial-Golomb, u otro tipo de operación de codificación por entropía en los datos. El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos codificados por entropía generados por la unidad de codificación por entropía 118. Por ejemplo, el flujo de bits puede incluir datos que representan valores de coeficientes de transformación para una CU.
La Figura 25 es un diagrama de bloques que ilustra un decodificador de vídeo 30 de ejemplo que se configura para implementar las técnicas de esta divulgación. La Figura 25 se proporciona con propósitos de explicación y no se limita a las técnicas que se ejemplifican y describen ampliamente en esta divulgación. Con propósitos de explicación, esta divulgación describe el decodificador de vídeo 30 en el contexto de codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o procedimientos de codificación.
Los circuitos de procesamiento incluyen el decodificador de vídeo 30, y el decodificador de vídeo 30 se configura para realizar una o más de las técnicas de ejemplo descritas en esta divulgación. Por ejemplo, el decodificador de vídeo 30 incluye circuitos integrados, y las diversas unidades ilustradas en la Figura 25 pueden formarse como bloques de circuitos de hardware que se interconectan con un bus de circuito. Estos bloques de circuitos de hardware pueden ser bloques de circuitos separados o dos o más unidades pueden combinarse en un bloque de circuitos de hardware común. Los bloques de circuitos de hardware pueden formarse como una combinación de componentes electrónicos que forman bloques de operación tales como unidades lógicas aritméticas (ALU), unidades de función elemental (EFU), así como también bloques lógicos tales como AND, 0R, NAND, N0R, X0R, XN0R y otros bloques lógicos similares.
En algunos ejemplos, una o más de las unidades ilustradas en la Figura 25 pueden ser unidades de software que se ejecutan en los circuitos de procesamiento. En tales ejemplos, el código objeto para estas unidades de software se almacena en la memoria. Un sistema operativo puede provocar que el decodificador de vídeo 30 recupere el código objeto y ejecute el código objeto, lo que provoca que el decodificador de vídeo 30 realice operaciones para implementar las técnicas de ejemplo. En algunos ejemplos, las unidades de software pueden ser microprogramas que el decodificador de vídeo 30 ejecuta al inicio. En consecuencia, el decodificador de vídeo 30 es un componente estructural que tiene hardware que realiza las técnicas de ejemplo o tiene software/microprograma que se ejecuta en el hardware para especializar el hardware para realizar las técnicas de ejemplo.
En el ejemplo de la Figura 25, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 150, una memoria de datos de vídeo 151, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de procesamiento de transformación inversa 156, una unidad de reconstrucción 158, una unidad de filtro 160 y una memoria intermedia de imágenes decodificadas 162. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 164 y una unidad de procesamiento de intrapredicción 166. En otros ejemplos, el decodificador de vídeo 30 puede incluir más, menos, o diferentes componentes funcionales.
La memoria de datos de vídeo 151 puede almacenar los datos de vídeo codificados, tales como un flujo de bits de vídeo codificado, para ser decodificados por los componentes del decodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 151 pueden obtenerse, por ejemplo, de un medio legible por ordenador 16, por ejemplo, de una fuente de vídeo local, tal como una cámara, a través de la comunicación de datos de vídeo por red inalámbrica o alámbrica, o al acceder a medios de almacenamiento de datos físicos. La memoria de datos de vídeo 151 puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de vídeo codificados de un flujo de bits de vídeo codificado. La memoria intermedia de imágenes decodificadas 162 puede ser una memoria de imágenes de referencia que almacena los datos de vídeo de referencia para su uso en la decodificación de datos de vídeo mediante el decodificador de vídeo 30, por ejemplo, en los modos de intra o intercodificación, o para la emisión. La memoria de datos de vídeo 151 y la memoria intermedia de imágenes decodificadas 162 pueden formarse por cualquiera de una variedad de dispositivos de memoria, tales como la memoria de acceso aleatorio dinámico (DRAM), que incluye la DRAM síncrona (SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 151 y la memoria intermedia de imágenes decodificadas 162 pueden proporcionarse por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 151 puede estar en el chip con otros componentes del decodificador de vídeo 30, o fuera del chip en relación con esos componentes. La memoria de datos de vídeo 151 puede ser la misma o parte del medio de almacenamiento 28 de la Figura 1.
La memoria de datos de vídeo 151 recibe y almacena datos de vídeo codificados (por ejemplo, unidades NAL) de un flujo de bits. La unidad de decodificación por entropía 150 puede recibir los datos de vídeo codificados (por ejemplo, unidades NAL) de la memoria de datos de vídeo 151 y puede analizar las unidades NAL para obtener los elementos de sintaxis. La unidad de decodificación por entropía 150 puede decodificar por entropía los elementos de sintaxis codificados por entropía en las unidades NAL. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de procesamiento de transformación inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 160 pueden generar los datos de vídeo decodificados en base a los elementos de sintaxis extraídos del flujo de bits. La unidad de decodificación por entropía 150 puede realizar un proceso generalmente recíproco al de la unidad de codificación por entropía 118.
Además de obtener los elementos de sintaxis del flujo de bits, el decodificador de vídeo 30 puede realizar una operación de reconstrucción en una CU no particionada. Para realizar la operación de reconstrucción en una CU, el decodificador de vídeo 30 puede realizar una operación de reconstrucción en cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el decodificador de vídeo 30 puede reconstruir los bloques residuales de la CU.
Como parte de la realización de una operación de reconstrucción en una TU de una CU, la unidad de cuantificación inversa 154 puede cuantificar de forma inversa, es decir, descuantificar, los bloques de coeficientes asociados con la TU. Después de que la unidad de cuantificación inversa 154 cuantifique de forma inversa un bloque de coeficientes, la unidad de procesamiento de transformación inversa 156 puede aplicar una o más transformaciones inversas al bloque de coeficientes para generar un bloque residual asociado con la TU. Por ejemplo, la unidad de procesamiento de transformación inversa 156 puede aplicar una DCT inversa, una transformación entera inversa, una transformación Karhunen-Loeve inversa (KLT), una transformación rotacional inversa, una transformación direccional inversa, u otra transformación inversa al bloque de coeficientes.
Si se codifica una PU mediante el uso de la intrapredicción, la unidad de procesamiento de intrapredicción 166 puede realizar la intrapredicción para generar los bloques predictivos de la PU. La unidad de procesamiento de intrapredicción 166 puede usar un modo de intrapredicción para generar los bloques predictivos de la PU en base a muestras de bloques espacialmente vecinos. La unidad de procesamiento de intrapredicción 166 puede determinar el modo de intrapredicción para la PU en base a uno o más elementos de sintaxis obtenidos del flujo de bits. La unidad de procesamiento de intrapredicción 166 puede realizar las técnicas de esta divulgación relacionadas con los MPM.
Si una PU se codifica mediante el uso de interpredicción, la unidad de decodificación por entropía 150 y/o la unidad de compensación de movimiento 164 pueden determinar la información de movimiento para la PU. La unidad de compensación de movimiento 164 puede determinar, en base a la información de movimiento de la PU, una o más bloques de referencia. La unidad de compensación de movimiento 164 puede generar, en base a uno o más bloques de referencia, bloques predictivos (por ejemplo, bloques predictivos de luminancia, Cb y Cr).
De acuerdo con una técnica de esta divulgación, la unidad de compensación de movimiento 164 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo, el bloque no adyacente que no es adyacente a un bloque actual de la imagen actual. Adicionalmente, la unidad de compensación de movimiento 164 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP de movimiento para el bloque actual. La unidad de compensación de movimiento 164 también puede determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual.
La unidad de reconstrucción 158 puede usar los bloques de transformación (por ejemplo, bloques de transformación de luminancia, Cb y Cr) para las TU de una CU y los bloques predictivos (por ejemplo, bloques de luminancia, Cb y Cr) de las PU de la CU, es decir, los datos de intrapredicción o los datos de interpredicción, según corresponda, para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luminancia, Cb y Cr) de la CU. Por ejemplo, la unidad de reconstrucción 158 puede añadir muestras de los bloques de transformación (por ejemplo, bloques de transformación de luminancia, Cb y Cr) a muestras correspondientes de los bloques predictivos (por ejemplo, bloques predictivos de luminancia, Cb y Cr) para reconstruir los bloques de codificación (por ejemplo, bloques de codificación de luminancia, Cb y Cr) de la CU.
La unidad de filtro 160 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con los bloques de codificación de la CU. El decodificador de vídeo 30 puede almacenar los bloques de codificación de la CU en la memoria intermedia de imágenes decodificadas 162. La memoria intermedia de imágenes decodificadas 162 puede proporcionar imágenes de referencia para la compensación de movimiento subsecuente, la intrapredicción y la presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la Figura 1. Por ejemplo, el decodificador de vídeo 30 puede realizar, en base a los bloques en la memoria intermedia de imágenes decodificadas 162, operaciones de intrapredicción o de interpredicción para las PU de otras CU.
Se han descrito ciertos aspectos de esta divulgación con respecto a extensiones del estándar HEVC con propósitos ilustrativos. Sin embargo, las técnicas que se describen en esta divulgación pueden ser útiles para otros procesos de codificación de vídeo, incluidos otros procesos de codificación de vídeo estándar o patentados que aún no se han desarrollado.
Un codificador de vídeo, como se describe en esta divulgación, puede referirse a un codificador de vídeo o un decodificador de vídeo. De manera similar, una unidad de codificación de vídeo puede referirse a un codificador de vídeo o un decodificador de vídeo. Asimismo, la codificación de vídeo puede referirse a la codificación de vídeo o decodificación de vídeo, según corresponda. En esta divulgación, la frase "en base a" puede indicar basado solamente en, basado al menos en parte en, o basado de alguna manera en. Esta divulgación puede usar el término "unidad de vídeo" o "bloque de vídeo" o "bloque" para referirse a uno o más bloques de muestras y estructuras de sintaxis que se usan para codificar muestras de uno o más bloques de muestras. Los tipos de ejemplo de unidades de vídeo pueden incluir CTU, CU, PU, unidades de transformación (TU), macrobloques, particiones de macrobloque, etc. En algunos contextos, la discusión sobre las PU puede intercambiarse con la discusión sobre macrobloques o particiones de macrobloques. Los tipos de bloques de vídeo de ejemplo pueden incluir bloques de árbol de codificación, bloques de codificación y otros tipos de bloques de datos de vídeo.
La Figura 26 es un diagrama de flujo que ilustra un ejemplo de operación de un codificador de vídeo para la codificación de datos de vídeo, de acuerdo con realizaciones de la invención protegida. En el ejemplo de la Figura 26, el codificador de vídeo 20 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo (2600). El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. Además, el codificador de vídeo 20 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP para el bloque actual (2602). En algunos ejemplos, el MVP del bloque actual está en modo afín. En otras palabras, los vectores de movimiento se especifican para los puntos de control en el MVP. En algunos ejemplos, el bloque no adyacente es un bloque en una plantilla que define un patrón fijo de bloques no adyacentes en relación con una posición del bloque actual.
En un ejemplo, como parte de la determinación del MVP para el bloque actual, el codificador de vídeo 20 puede generar, en base a parte en el vector de movimiento del bloque no adyacente, una lista de candidatos de MVP. En este ejemplo, la lista de candidatos de MVP incluye un candidato de m Vp que especifica el vector de movimiento del bloque no adyacente. Además, en este ejemplo, el codificador de vídeo 20 puede determinar, entre los candidatos de MVP en la lista de candidatos de MVP, el MVP para el bloque actual. Por ejemplo, el codificador de vídeo 20 puede usar un análisis de coste de RD para determinar el MVP para el bloque actual.
En algunos ejemplos, el codificador de vídeo 20 ordena una pluralidad de candidatos de NA-SMVP en la lista de candidatos de mVp . En tales ejemplos, para cada candidato de NA-SMVP respectivo de la pluralidad de candidatos de NA-SMVP, el candidato de nA-SMVP respectivo corresponde a un bloque no adyacente respectivo de una pluralidad de bloques no adyacentes y el NA-SMVP respectivo especifica un vector de movimiento del respectivo bloque no adyacente. La pluralidad de bloques no adyacentes incluye el primer bloque no adyacente. Además, en este ejemplo, el codificador de vídeo 20 puede ordenar la pluralidad de candidatos de NA-SMVP en la lista de acuerdo con la distancia de los correspondientes bloques no adyacentes al bloque actual. La distancia puede ser en el sentido L1 o L2.
En algunos ejemplos, el codificador de vídeo 20 determina una primera pluralidad de candidatos de NA-SMVP. Para cada candidato de NA-SMVP respectivo de la primera pluralidad de candidatos de NA-SMVP, el candidato de NA-SMVP respectivo corresponde a un bloque no adyacente respectivo de una pluralidad de bloques no adyacentes. El NA-SMVP respectivo especifica un vector de movimiento del respectivo bloque no adyacente. La primera pluralidad de bloques no adyacentes incluye el primer bloque no adyacente. En este ejemplo, el codificador de vídeo 20 puede incluir una segunda pluralidad de candidatos de NA-SmVp en la lista, la segunda pluralidad de candidatos de NA-SMVP comprende candidatos de NA-SMVP no duplicados en la primera pluralidad de candidatos de NA-SMVP. De esta manera, el codificador de vídeo 20 puede realizar un proceso de poda que elimine candidatos de NA-SMVP duplicados de la lista. La segunda pluralidad de candidatos de NA-SMVP puede ordenarse en la lista de acuerdo con una frecuencia con la que los vectores de movimiento especificados por los candidatos de NA-SMVP en la segunda pluralidad de candidatos de NA-SMVP son especificados por los candidatos de NA-SMVP en la primera pluralidad de candidatos de NA-SMVP.
En algunos ejemplos, la lista de candidatos de MVP es una lista de candidatos de vector de movimiento global. La lista de candidatos a vectores de movimiento global comprende candidatos de MVP que especifican un vector de movimiento para cada bloque que está en la imagen actual y que se codifica antes del bloque actual. En tales ejemplos, el codificador de vídeo puede determinar el vector de movimiento del bloque no adyacente a partir de un candidato de MVP en la lista de candidatos a vectores de movimiento global.
En realizaciones de la invención protegida, el codificador de vídeo 20 almacena una pluralidad de candidatos de MVP no adyacentes en una memoria intermedia FIF0. La pluralidad de candidatos de MVP no adyacentes incluye un candidato de MVP no adyacente que especifica el vector de movimiento del bloque no adyacente. En tales realizaciones, el codificador de vídeo 20 actualiza la memoria intermedia FIF0 para eliminar un candidato de MVP no adyacente añadido con anterioridad de la memoria intermedia FIF0 y añadir un candidato de MVP a la memoria intermedia FIF0.
En algunos ejemplos, el codificador de vídeo 20 aplica un proceso de poda a la lista. El proceso de poda se adapta al tamaño de bloque del bloque actual. Por ejemplo, puede aplicarse un proceso de poda de movimiento completo o un proceso de poda de movimiento parcial, como se describe en otra parte de esta divulgación.
El codificador de vídeo 20 también puede determinar un vector de movimiento del bloque actual (2604). En algunos ejemplos, tal como cuando se usa el modo de fusión, el vector de movimiento del bloque actual es igual a un vector de movimiento del MVP. En algunos ejemplos, tal como cuando se usa el AMVP, el vector de movimiento del bloque actual es igual al vector de movimiento del MVP más un MVD que se señala en un flujo de bits.
Adicionalmente, el codificador de vídeo 20 puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (2606). El codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales (2608). El codificador de vídeo 20 puede determinar el bloque predictivo y generar los valores de muestra residuales de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 27 es un diagrama de flujo que ilustra un ejemplo de operación del decodificador de vídeo 30 para la decodificación de datos de vídeo de acuerdo con realizaciones de la invención protegida. En el ejemplo de la Figura 27, el decodificador de vídeo 30 puede determinar un vector de movimiento de un bloque no adyacente de una imagen actual de los datos de vídeo (2700). El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. En algunos ejemplos, el bloque no adyacente es un bloque en una plantilla que define un patrón fijo de bloques en relación con una posición del bloque actual.
En algunos ejemplos, la lista de candidatos de MVP es una lista de candidatos de vector de movimiento global. La lista de candidatos a vectores de movimiento global comprende candidatos de MVP que especifican un vector de movimiento para cada bloque que está en la imagen actual y que se codifica antes del bloque actual. En tales ejemplos, el codificador de vídeo puede determinar el vector de movimiento del bloque no adyacente a partir de un candidato de MVP en la lista de candidatos a vectores de movimiento global.
En realizaciones de la invención protegida, el decodificador de vídeo 30 almacena una pluralidad de candidatos de MVP no adyacentes en una memoria intermedia FIFO. La pluralidad de candidatos de MVP no adyacentes incluye un candidato de MVP no adyacente que especifica el vector de movimiento del bloque no adyacente. En tales realizaciones, el decodificador de vídeo 30 actualiza la memoria intermedia FIFO para eliminar un candidato MVP no adyacente añadido con anterioridad de la memoria intermedia FIFO y añade un candidato de MVP a la memoria intermedia FIFO.
Además, el decodificador de vídeo 30 puede determinar, en base al vector de movimiento del bloque no adyacente, un MVP para el bloque actual (2702). En algunos ejemplos, el MVP para el bloque actual puede estar en modo afín, en modo no afín u otro modo de predicción con compensación de movimiento. En un ejemplo, como parte de la determinación del MVP para el bloque actual, el decodificador de vídeo 30 puede generar, en base a parte en el vector de movimiento del bloque no adyacente, una lista de candidatos de MVP. En este ejemplo, la lista de candidatos de MVP incluye un candidato de MVP que especifica el vector de movimiento del bloque no adyacente. Además, en este ejemplo, el decodificador de vídeo 30 puede determinar, entre los candidatos de MVP en la lista de candidatos de MVP, el MVP para el bloque actual. Por ejemplo, el decodificador de vídeo 30 puede usar un análisis de tasa de distorsión para identificar el mejor MVP en la lista de candidatos de MVP.
En algunos ejemplos, el bloque no adyacente es un primer bloque no adyacente y el decodificador de vídeo 30 ordena una pluralidad de candidatos de NA-SMVP en la lista. En otras palabras, el decodificador de vídeo 30 inserta la pluralidad de candidatos de NA-SMVP en la lista de acuerdo con un orden particular. En tales ejemplos, para cada candidato de NA-SMVP respectivo de la pluralidad de candidatos de NA-SMVP, el candidato de NA-SMVP respectivo corresponde a un bloque no adyacente respectivo de una pluralidad de bloques no adyacentes. El NA-SMVP respectivo especifica un vector de movimiento del respectivo bloque no adyacente. En algunos ejemplos, el decodificador de vídeo 30 ordena la pluralidad de candidatos de NA-SMVP en la lista de acuerdo con la distancia (por ejemplo, en términos de L1 o L2) de los correspondientes bloques no adyacentes del bloque actual. En algunos ejemplos, el decodificador de vídeo 30 ordena la pluralidad de candidatos de NA-SMVP de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
En algunos ejemplos, el bloque no adyacente es un primer bloque no adyacente y el decodificador de vídeo 30 determina además una primera pluralidad de candidatos de NA-SMVP. Por ejemplo, en tales ejemplos, para cada candidato de NA-SMVP respectivo de la primera pluralidad de candidatos de Na -SMVP, el candidato de NA-SMVP respectivo corresponde a un bloque no adyacente respectivo de una pluralidad de bloques no adyacentes. El NA-SMVP respectivo especifica un vector de movimiento del respectivo bloque no adyacente. La primera pluralidad de bloques no adyacentes incluye el primer bloque no adyacente. Además, en tales ejemplos, el decodificador de vídeo 30 puede ordenar una segunda pluralidad de candidatos de NA-SMVP en la lista. En otras palabras, el decodificador de vídeo 30 puede incluir la segunda pluralidad de candidatos de NA-SMVP en la lista de acuerdo con un orden particular. La segunda pluralidad de candidatos de NA-SMVP comprende candidatos de NA-SMVP no duplicados en la primera pluralidad de candidatos de NA-SMVP. En algunos ejemplos, la segunda pluralidad de candidatos de NA-SMVP se ordena en la lista de acuerdo con una frecuencia con la que los vectores de movimiento especificados por el candidato de NA-SMVP en la segunda pluralidad de candidatos de NA-SMVP se especifican por los candidatos de NA-SMVP en la primera pluralidad de candidatos de NA-SMVP.
En algunos ejemplos, el decodificador de vídeo 30 puede aplicar un proceso de poda a la lista. En algunos de tales ejemplos, el proceso de poda se adapta al tamaño de bloque del bloque actual. En algunos ejemplos, el decodificador de vídeo 30 aplica un proceso de poda de movimiento completo a los NA-SMVP y a los otros candidatos de fusión, como se describe en otra parte de esta divulgación. En algunos ejemplos, el decodificador de vídeo 30 aplica solamente un proceso de poda de movimiento parcial a los NA-SMVP y a los otros candidatos de fusión, como se describe en otra parte de esta divulgación.
Adicionalmente, el decodificador de vídeo 30 puede determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual (2704). En algunos ejemplos, si la lista de candidatos de MVP es una lista de candidatos de fusión, el decodificador de vídeo 30 puede determinar el MVP para el bloque actual de manera que el MVP para el bloque actual especifique un vector de movimiento de un candidato de MVP en la lista de candidatos de MVP. En algunos ejemplos, si la lista de candidatos de MVP es una lista de candidatos de AMVP, el decodificador de vídeo 30 puede determinar el MVP para el bloque actual de manera que un vector de movimiento del MVP para el bloque actual sea igual a un vector de movimiento de un candidato de MVP en la lista de candidatos de MVP más un MVD.
El decodificador de vídeo 30 también puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (2706). Por ejemplo, el decodificador de vídeo 30 puede determinar el bloque predictivo en base a muestras de una imagen de referencia en una ubicación indicada por el vector de movimiento, como se describe en detalle en otra parte de esta divulgación. El decodificador de vídeo 30 puede entonces reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual (2708). Por ejemplo, el decodificador de vídeo 30 puede reconstruir valores de muestra de la imagen actual al añadir valores de muestra en el bloque predictivo a valores de muestra residuales.
La Figura 28 es un diagrama de flujo que ilustra una operación de ejemplo para determinar un NA-SMVP mediante el uso de candidatos a vector de movimiento FRUC, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 28, un codificador de vídeo (por ejemplo, codificador de vídeo 20 o decodificador de vídeo 30) puede determinar un conjunto de candidatos de vector de movimiento de conversión ascendente de tasa de tramas (FRUC) a nivel de CU (2800). Adicionalmente, el codificador de vídeo puede seleccionar un candidato de vector de movimiento FRUC a nivel de CU del conjunto de candidatos de vector de movimiento FRUC a nivel de CU (2802). El codificador de vídeo puede determinar un vector de movimiento a nivel de CU al menos en parte al realizar una búsqueda local a partir de un candidato de vector de movimiento FRUC a nivel de CU (2804) seleccionado. Además, el codificador de vídeo puede refinar el vector de movimiento a nivel de CU a un nivel de sub-CU con un conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC (2806). De acuerdo con una técnica de esta divulgación, al menos uno del conjunto de candidatos de vector de movimiento FRUC a nivel de CU y el conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC incluye un NA-SMVP que especifica el vector de movimiento del bloque no adyacente de la Figura 26 y la Figura 27. De lo contrario, el proceso FRUC puede ser consistente con los ejemplos proporcionados en otras partes de esta divulgación.
La Figura 29 es un diagrama de flujo que ilustra una operación de ejemplo del codificador de vídeo 20 que incluye candidatos sintéticos en una lista de candidatos de MVP para un bloque actual, de acuerdo con una o más técnicas de esta divulgación. En el ejemplo de la Figura 29, el codificador de vídeo 20 puede determinar una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (2900). La lista de candidatos de MVP incluye un candidato de MVP de bipredicción y un candidato de MVP de unipredicción sintético. Además, en el ejemplo de la Figura 29 y de acuerdo con una técnica de esta divulgación, el codificador de vídeo 20 genera, como parte de la determinación de la lista de candidatos de MVP, el candidato de MVP de unipredicción sintético en base a un vector de movimiento especificado por el candidato de MVP de bipredicción (2902). En un ejemplo, el codificador de vídeo 20 genera los candidatos de unipredicción sintéticos al dividir los candidatos de Mv de bipredicción disponibles en dos candidatos de unipredicción separados de acuerdo con un orden predefinido. En este ejemplo, el codificador de vídeo 20 puede insertar entonces los candidatos de unipredicción sintéticos creados en la lista de candidatos. En algunos ejemplos, cuando se habilita MVD entero o MVD de cuatro muestras de luminancia, el codificador de vídeo 20 puede generar candidatos de MV enteros sintéticos o cuatro muestras de luminancia al redondear o truncar los candidatos de MV disponibles en MV enteros o candidatos de MV de cuatro muestras de luminancia. En tales ejemplos, el codificador de vídeo 20 inserta los candidatos de MV enteros sintéticos o los candidatos de MV de 4 muestras de luminancia en la lista de candidatos.
Además, en el ejemplo de la Figura 29, el codificador de vídeo 20 puede determinar, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un MVP para el bloque actual (2904). Adicionalmente, el codificador de vídeo 20 puede determinar un vector de movimiento del bloque actual (2906). En algunos ejemplos, tal como cuando se usa el modo de fusión, el vector de movimiento del bloque actual es igual a un vector de movimiento del MVP. En algunos ejemplos, tal como cuando se usa el AMVP, el vector de movimiento del bloque actual es igual al vector de movimiento del MVP más un MVD que se señala en un flujo de bits.
El codificador de vídeo 20 también puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (2908). Además, el codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales (2910). El codificador de vídeo 20 puede determinar el bloque predictivo y generar los valores de muestra residuales de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 30 es un diagrama de flujo que ilustra una operación de ejemplo del decodificador de vídeo 30 que incluye candidatos sintéticos en una lista de candidatos de m Vp para un bloque actual, de acuerdo con una o más técnicas de esta divulgación. En el ejemplo de la Figura 30, el decodificador de vídeo 30 puede determinar una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (3000). La lista de candidatos de MVP incluye un candidato de MVP de bipredicción y un candidato de MVP de unipredicción sintético. Además, en el ejemplo de la Figura 30 y de acuerdo con una técnica de esta divulgación, el decodificador de vídeo 30 genera, como parte de la determinación de la lista de candidatos de MVP, el candidato de MVP de unipredicción sintético en base a un vector de movimiento especificado por el candidato de MVP de bipredicción (3002). En un ejemplo, el decodificador de vídeo 30 genera los candidatos de unipredicción sintéticos al dividir los candidatos de MV de bipredicción disponibles en dos candidatos de unipredicción separados de acuerdo con un orden predefinido. En este ejemplo, el decodificador de vídeo 30 puede insertar entonces los candidatos de unipredicción sintéticos creados en la lista de candidatos. En algunos ejemplos, cuando se habilita MVD entero o MVD de cuatro muestras de luminancia, el decodificador de vídeo 30 genera candidatos de MV enteros sintéticos o cuatro muestras de luminancia al redondear o truncar los candidatos de MV disponibles en MV enteros o candidatos de MV de cuatro muestras de luminancia. En tales ejemplos, el decodificador de vídeo 30 inserta los candidatos de MV enteros sintéticos o los candidatos de MV de 4 muestras de luminancia en la lista de candidatos.
En el ejemplo de la Figura 30, el decodificador de vídeo 30 puede determinar entonces, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un MVP para el bloque actual (3004). Adicionalmente, el decodificador de vídeo 30 determina, en base al MVP para el bloque actual, un vector de movimiento del bloque actual (3006). El decodificador de vídeo 30 puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (3008). Además, el decodificador de vídeo 30 puede reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual (3010). El decodificador de vídeo 30 puede seleccionar el candidato de MVP, determinar el vector de movimiento, determinar el bloque predictivo y reconstruir los valores de la imagen actual de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 31 es un diagrama de flujo que ilustra una operación de ejemplo del codificador de vídeo 20 para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 31, el codificador de vídeo 20 determina una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (3100). El codificador de vídeo 20 puede determinar la lista de candidatos de MVP de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. Adicionalmente, de acuerdo con una técnica de esta divulgación, el codificador de vídeo 20 determina un candidato de MVP sintético al redondear o truncar un candidato de MVP en la lista a una resolución entera o una resolución de 4 muestras de luminancia (3102). El codificador de vídeo 20 puede entonces insertar el candidato de MVP sintético en la lista de candidatos de MVP (3104).
El codificador de vídeo 20 puede entonces determinar, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un predictor de vectores de movimiento (MVP) para el bloque actual (3106). Por ejemplo, el codificador de vídeo 20 puede usar una prueba de tasa de distorsión para seleccionar el MVP para el bloque actual. Además, el codificador de vídeo 20 puede determinar un vector de movimiento del bloque actual (3108). En algunos ejemplos, tal como cuando se usa el modo de fusión, el vector de movimiento del bloque actual es igual a un vector de movimiento del MVP. En algunos ejemplos, tal como cuando se usa el AMVP, el vector de movimiento del bloque actual es igual al vector de movimiento del MVP más un MVD que se señala en un flujo de bits.
El codificador de vídeo 20 puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (3110). A continuación, el codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales (3112). El codificador de vídeo 20 puede determinar el bloque predictivo y generar los valores de muestra residuales de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 32 es un diagrama de flujo que ilustra una operación de ejemplo del decodificador de vídeo 30 para la decodificación de datos de vídeo, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 32, el decodificador de vídeo 30 determina una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (3200). El decodificador de vídeo 30 puede determinar la lista de candidatos de MVP de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. Adicionalmente, de acuerdo con una técnica de esta divulgación, el decodificador de vídeo 30 puede determinar un candidato de MVP sintético al redondear o truncar un candidato de MVP en la lista a una resolución entera o una resolución de 4 muestras de luminancia (3202). El decodificador de vídeo 30 puede entonces insertar el candidato de MVP sintético en la lista de candidatos de MVP (3204).
Subsecuentemente, el decodificador de vídeo 30 puede determinar, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un MVP para el bloque actual (3206). Adicionalmente, el decodificador de vídeo 30 puede determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual (3208). El decodificador de vídeo 30 también puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (3210). Además, el decodificador de vídeo 30 puede reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual (3212). El decodificador de vídeo 30 puede seleccionar el candidato de MVP, determinar el vector de movimiento, determinar el bloque predictivo y reconstruir los valores de la imagen actual de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 33 es un diagrama de flujo que ilustra una operación de ejemplo del codificador de vídeo 20 para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 33, el codificador de vídeo 20 puede determinar una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (3300). En general, el codificador de vídeo 20 puede determinar la lista de candidatos de MVP de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. Sin embargo, de acuerdo con una técnica de esta divulgación, la lista de candidatos de m Vp incluye una pluralidad de candidatos a TMVP. Cada candidato de MVP respectivo en la lista de candidatos de MVP especifica un vector de movimiento respectivo. Los respectivos candidatos de TMVP de la pluralidad de candidatos de TMVP especifican vectores de movimiento de uno o más bloques en una o más imágenes de referencia (por ejemplo, una única imagen de referencia, una pluralidad de imágenes de referencia, etc.).
En algunos ejemplos, la pluralidad de candidatos de TMVP incluye dos o más candidatos de TMVP que especifican vectores de movimiento de bloques de referencia colocados con ubicaciones en la imagen actual (por ejemplo, ubicaciones adyacentes al bloque actual, ubicaciones no adyacentes al bloque actual). En tales ejemplos, los bloques de referencia son bloques de una o más imágenes de referencia.
En algunos ejemplos, el codificador de vídeo 20 aplica un proceso de poda a la lista de candidatos de MVP. Por ejemplo, el codificador de vídeo 20 puede aplicar un proceso de poda a la lista de candidatos de MVP para eliminar todos o algunos candidatos de MVP idénticos en la lista de candidatos de MVP.
Además, en el ejemplo de la Figura 33, el codificador de vídeo 20 puede determinar, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un MVP para el bloque actual (3302). Por ejemplo, el codificador de vídeo 20 puede usar una prueba de tasa de distorsión para determinar el MVP para el bloque actual. El codificador de vídeo 20 también puede determinar un vector de movimiento del bloque actual (3304). En algunos ejemplos, tal como cuando se usa el modo de fusión, el vector de movimiento del bloque actual es igual a un vector de movimiento del MVP. En algunos ejemplos, tal como cuando se usa el AMVP, el vector de movimiento del bloque actual es igual al vector de movimiento del MVP más un MVD que se señala en un flujo de bits.
Además, el codificador de vídeo 20 puede usar el vector de movimiento del bloque actual para determinar un bloque predictivo (3306). Adicionalmente, el codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales (3308). El codificador de vídeo 20 puede determinar el bloque predictivo y generar los valores de muestra residuales de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. La Figura 34 es un diagrama de flujo que ilustra un ejemplo de operación del decodificador de vídeo 30 para la decodificación de datos de vídeo, de acuerdo con uno o más ejemplos de esta divulgación. En el ejemplo de la Figura 34, el decodificador de vídeo 30 puede determinar una lista de candidatos de MVP para un bloque actual de una imagen actual de los datos de vídeo (3400). En general, el decodificador de vídeo 30 puede determinar la lista de candidatos de MVP de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación. Sin embargo, de acuerdo con una técnica de esta divulgación, la lista de candidatos de MVP incluye una pluralidad de candidatos a TMVP. Cada candidato de MVP respectivo en la lista de candidatos de MVP especifica un vector de movimiento respectivo. Los respectivos candidatos de TMVP de la pluralidad de candidatos de TMVP especifican un vector de movimiento de uno o más bloques en una o más imágenes de referencia (por ejemplo, una única imagen de referencia, una pluralidad de imágenes de referencia, etc.).
En algunos ejemplos, la pluralidad de candidatos de TMVP incluye dos o más candidatos de TMVP que especifican vectores de movimiento de bloques de referencia colocados con ubicaciones en la imagen actual. En este ejemplo, los bloques de referencia son bloques de una o más imágenes de referencia (por ejemplo, una única imagen de referencia, una pluralidad de imágenes de referencia, etc.). En algunos casos de este ejemplo, las ubicaciones son adyacentes al bloque actual. En algunos casos de este ejemplo, las ubicaciones no son adyacentes al bloque actual. En algunos ejemplos, el decodificador de vídeo 30 puede aplicar un proceso de poda a la lista de candidatos de MVP. Por ejemplo, el decodificador de vídeo 30 puede aplicar un proceso de poda a la lista de candidatos de MVP para eliminar todos o algunos candidatos de MVP idénticos en la lista de candidatos de MVP.
Además, en el ejemplo de la Figura 34, el decodificador de vídeo 30 puede determinar, en base a un vector de movimiento de un candidato de MVP seleccionado en la lista de candidatos de MVP, un MVP para el bloque actual (3402). El decodificador de vídeo 30 puede determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual (3404). Adicionalmente, el decodificador de vídeo 30 puede determinar un bloque predictivo en base al vector de movimiento del bloque actual (3406). El decodificador de vídeo 30 puede reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual (3408). El decodificador de vídeo 30 puede seleccionar el candidato de MVP, determinar el vector de movimiento, determinar el bloque predictivo y reconstruir los valores de la imagen actual de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 35 es un diagrama de flujo que ilustra una operación de ejemplo del codificador de vídeo 20 para la codificación de datos de vídeo, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 35, el codificador de vídeo 20 puede determinar una pluralidad de Modos Más Probables (Mp M) (3500). Cada MPM respectivo de la pluralidad de MPM especifica un modo de intrapredicción respectivo de un bloque respectivo. En el ejemplo de la Figura 35, la pluralidad de MPM incluye un MPM particular que especifica un modo de intrapredicción de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. En algunos ejemplos, el bloque no adyacente es un bloque en una plantilla que define un patrón fijo de bloques no adyacentes en relación con una posición del bloque actual. En otros ejemplos, los bloques no adyacentes son bloques que se encuentran dentro de una distancia particular del bloque actual. El bloque no adyacente puede determinarse de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
En algunos ejemplos, como parte de la determinación de la pluralidad de MPM, el codificador de vídeo 20 puede determinar una lista ordenada de los MPM. En tales ejemplos, los MPM en base a bloques no adyacentes se ordenan en la lista de acuerdo con una frecuencia con la que los modos de intrapredicción son especificados por bloques no adyacentes en una pluralidad de bloques no adyacentes. En otros ejemplos, los MPM en base a bloques no adyacentes no están ordenados en la lista de acuerdo con tal frecuencia.
En algunos ejemplos, para determinar la pluralidad de MPM, el codificador de vídeo 20 puede determinar una lista de MPM global que comprende MPM que especifican información de movimiento para cada bloque que está en la imagen actual y que está codificado antes del bloque actual. En tales ejemplos, el codificador de vídeo 20 puede determinar un MPM a partir de los MPM en la lista de candidatos a vectores de movimiento global. En algunos ejemplos, el codificador de vídeo 20 puede almacenar una pluralidad de MPM no adyacentes en una memoria intermedia FIFO. En tales ejemplos, la pluralidad de MPM no adyacentes incluye un MPM no adyacente que especifica el modo de intrapredicción del bloque no adyacente. Además, en tales ejemplos, el codificador de vídeo 20 puede actualizar la memoria intermedia FIFo para eliminar un MPM no adyacente añadido con anterioridad de la memoria intermedia FIFO y puede añadir un MPM a la memoria intermedia FIFO. La pluralidad de MPM puede incluir los MPM en la memoria intermedia FIFO.
Además, en el ejemplo de la Figura 35, el codificador de vídeo 20 puede generar un bloque predictivo en base a un modo de intrapredicción especificado por un MPM de la pluralidad de MPM (3502). Adicionalmente, el codificador de vídeo 20 puede generar, en base al bloque predictivo, valores de muestra residuales (3504). El codificador de vídeo 20 puede determinar el bloque predictivo y generar los valores de muestra residuales de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
La Figura 36 es un diagrama de flujo que ilustra una operación de ejemplo del decodificador de vídeo 30 para la decodificación de datos de vídeo, de acuerdo con una técnica de esta divulgación. En el ejemplo de la Figura 36, el decodificador de vídeo 30 puede determinar una pluralidad de MPM (3600). Cada MPM respectivo de la pluralidad de MPM especifica un modo de intrapredicción respectivo de un bloque respectivo. De acuerdo con una técnica de esta divulgación, la pluralidad de MPM incluye un MPM particular que especifica un modo de intrapredicción de un bloque no adyacente de una imagen actual de los datos de vídeo. El bloque no adyacente no es adyacente a un bloque actual de la imagen actual. En algunos ejemplos, el bloque no adyacente es un bloque en una plantilla que define un patrón fijo de bloques no adyacentes en relación con una posición del bloque actual. En otros ejemplos, el bloque no adyacente está a una distancia fija del bloque actual. El bloque no adyacente puede determinarse de acuerdo con cualquiera de los ejemplos proporcionados en otra parte de esta divulgación.
En algunos ejemplos, como parte de la determinación de la pluralidad de MPM, el decodificador de vídeo 30 puede determinar una lista ordenada de los MPM. En tales ejemplos, los MPM en base a bloques no adyacentes se ordenan en la lista de acuerdo con la frecuencia con la que los modos de intrapredicción son especificados por bloques no adyacentes en una pluralidad de bloques no adyacentes. En otros ejemplos, los MPM en base a bloques no adyacentes no están ordenados en la lista de acuerdo con tal frecuencia.
En algunos ejemplos, la pluralidad de MPM es una lista de MPM global que comprende MPM que especifican información de movimiento para cada bloque que está en la imagen actual y que está codificado antes del bloque actual. En tales ejemplos, el decodificador de vídeo 30 puede determinar un m Pm a partir de los MPM en la lista de candidatos a vectores de movimiento global. En algunos ejemplos, el decodificador de vídeo 30 puede almacenar una pluralidad de MPM no adyacentes en una memoria intermedia de primero en entrar, primero en salir (FIF0). En tales ejemplos, la pluralidad de MPM no adyacentes incluye un MPM no adyacente que especifica el modo de intrapredicción del bloque no adyacente. Además, en tales ejemplos, el decodificador de vídeo 30 puede actualizar la memoria intermedia FIF0 para eliminar un MPM no adyacente añadido con anterioridad de la memoria intermedia FIF0 y añadir un MPM a la memoria intermedia FIF0. La pluralidad de MPM puede incluir los MPM en la memoria intermedia FIF0.
Además, en el ejemplo de la Figura 36, el decodificador de vídeo 30 puede generar un bloque predictivo en base a un modo de intrapredicción especificado por un MPM de la pluralidad de MPM (3602). Adicionalmente, el decodificador de vídeo 30 puede reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual (3604). El decodificador de vídeo 30 puede generar el bloque predictivo y reconstruir los valores de muestra de acuerdo con cualquiera de las técnicas proporcionadas en otra parte de esta divulgación.
Las técnicas de esta divulgación pueden aplicarse a la codificación de vídeo en soporte de cualquiera de una variedad de aplicaciones multimedia, tales como difusión de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continua de vídeo por Internet, tales como transmisión continua dinámica adaptativa a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, decodificación de vídeo digital que se almacenan en un medio de almacenamiento de datos u otras aplicaciones.
En esta divulgación, términos ordinales como "primero", "segundo", "tercero", etc., no son necesariamente indicadores de posiciones dentro de un orden, sino que pueden usarse simplemente para distinguir diferentes instancias de la misma cosa.
Debe reconocerse que, en función del ejemplo, ciertos actos o eventos de cualquiera de las técnicas que se describen en la presente memoria pueden realizarse en una secuencia diferente, pueden añadirse, fusionarse u omitirse por completo (por ejemplo, no todos los actos o eventos que se describen son necesario para la práctica de las técnicas). Además, en ciertos ejemplos, los actos o eventos pueden realizarse concurrentemente, por ejemplo, a través de procesamiento de multihilos, procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, microprograma o cualquiera de sus combinaciones. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o transmitirse a través de él, como una o más instrucciones o código, y ejecutarse por 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, como medios de almacenamiento de datos, o medios de comunicación, que incluyen cualquier medio que facilite transferir un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder por uno o más ordenadores o uno o más circuitos de procesamiento 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.
A manera de ejemplo, y no de limitación, tales medios legibles por ordenador pueden comprender RAM, R0M, EPROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnéticos, memoria flash, memoria caché o cualquier otro medio que pueda usarse para almacenar el código del programa deseado en forma de instrucciones o estructuras de datos y al que puede accederse por un ordenador. Además, cualquier conexión se califica apropiadamente como un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor, u otra fuente remota mediante el uso de un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de suscriptor digital (DSL), o las tecnologías inalámbricas 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, debe 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 se dirigen a medios de almacenamiento tangibles no transitorios. Disco y disco, como se utiliza en la presente memoria, incluye el disco compacto (CD), el disco de láser, el disco óptico, el disco digital versátil (DVD), el disquete, y el disco Blu-ray donde existen discos que usualmente reproducen los datos de manera magnética, mientras que otros discos reproducen los datos de manera óptica con láseres. Las combinaciones de los medios anteriores pueden incluirse además dentro del ámbito de los medios legibles por ordenador.
La funcionalidad descrita en esta divulgación puede realizarse mediante una función fija y/o un circuito de procesamiento programable. Por ejemplo, las instrucciones pueden ejecutarse mediante una función fija y/o un circuito de procesamiento programable. Tales circuitos de procesamiento pueden incluir uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se utiliza en la presente memoria puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y decodificación, o incorporarse en un códec combinado. Asimismo, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos. Los circuitos de procesamiento pueden acoplarse a otros componentes de diversas maneras. Por ejemplo, un circuito de procesamiento puede acoplarse a otros componentes a través de una interconexión de dispositivo interno, una conexión de red inalámbrica o por cable u otro medio de comunicación.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o microprograma adecuados.

Claims (5)

REIVINDICACIONES
1. Un procedimiento de decodificación de datos de vídeo, comprendiendo el procedimiento:
generar, mediante un decodificador de vídeo, una memoria intermedia de lista de candidatos del predictor de vectores de movimiento, MVP, primero en entrar, primero en salir, FIFO, que comprende: determinar, mediante el decodificador de vídeo, un vector de movimiento de un bloque de una imagen actual de los datos de vídeo decodificados antes de un bloque actual; y
actualizar, mediante el decodificador de vídeo, la memoria intermedia FIFO para eliminar el candidato de MVP añadido con anterioridad de la memoria intermedia FIFO y añadir el vector de movimiento del bloque a la memoria intermedia FIFO;
determinar, mediante el decodificador de vídeo, entre los candidatos de MVP en la memoria intermedia FIFO, un MVP para el bloque actual, en el que los candidatos de MVP en la memoria intermedia FIFO incluyen al menos un candidato MVP en base a un vector de movimiento de un bloque no adyacente, el bloque no adyacente que no es adyacente al bloque actual de la imagen actual;
determinar, mediante el decodificador de vídeo, en base al MVP para el bloque actual, un vector de movimiento del bloque actual;
determinar, mediante el decodificador de vídeo, un bloque predictivo en base a el vector de movimiento del bloque actual; y
reconstruir, mediante el decodificador de vídeo, en base al bloque predictivo, valores de muestra de la imagen actual.
2. El procedimiento de la reivindicación 1, en el que el MVP para el bloque actual está en modo afín.
3. El procedimiento de la reivindicación 1, en el que determinar el vector de movimiento del bloque actual comprende:
determinar, mediante el decodificador de vídeo, el vector de movimiento del bloque actual de manera que el vector de movimiento del bloque actual especifique el vector de movimiento del MVP para el bloque actual, o de manera que el vector de movimiento del bloque actual sea igual a un vector de movimiento de información de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento, MVD.
4. El procedimiento de la reivindicación 1, que comprende además:
determinar, mediante el decodificador de vídeo, un conjunto de candidatos de vector de movimiento de conversión ascendente de velocidad de trama, FRUC, a nivel de unidad de codificación, CU;; seleccionar, mediante el decodificador de vídeo, un candidato de vector de movimiento FRUC a nivel de CU del conjunto de candidatos de vector de movimiento FRUC a nivel de CU;
determinar, mediante el decodificador de vídeo, un vector de movimiento a nivel de CU al menos en parte al realizar una búsqueda local que comienza a partir de un candidato de vector de movimiento FRUC a nivel de CU seleccionado; y
refinar, mediante el decodificador de vídeo, el vector de movimiento a nivel de CU a un nivel de sub-CU con un conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC,
en el que al menos uno del conjunto de candidatos de vector de movimiento FRUC a nivel de CU y el conjunto de candidatos de vector de movimiento a nivel de sub-CU FRUC incluye un predictor de vectores de movimiento espacial no adyacente, NA-SMVP, que especifica un vector de movimiento de un bloque no adyacente.
5. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
generar, mediante un codificador de vídeo, una memoria intermedia de lista de candidatos de predictor de vectores de movimiento, MVP, primero en entrar, primero en salir, FIFO, que comprende:
determinar, mediante el codificador de vídeo, un vector de movimiento de un bloque de una imagen actual de los datos de vídeo codificados antes de un bloque actual; y
actualizar, mediante el codificador de vídeo, la memoria intermedia FIFO para eliminar un candidato MVP añadido con anterioridad de la memoria intermedia FIFO y añadir el vector de movimiento del bloque a la memoria intermedia FIFO;
determinar, mediante el decodificador de vídeo, de entre los candidatos de MVP en la memoria intermedia FIF0, un MVP para el bloque actual, en el que los candidatos de MVP en la memoria intermedia FIF0 incluyen al menos un candidato MVP en base a un vector de movimiento de un bloque no adyacente, no siendo adyacente el bloque no adyacente al bloque actual de la imagen actual;
determinar, mediante el codificador de vídeo, un vector de movimiento para el bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia del vector de movimiento, MVD, señalizado en un flujo de bits;
determinar, mediante el codificador de vídeo, un bloque predictivo en base a el vector de movimiento del bloque actual; y
generar, por el codificador de vídeo, en base al bloque predictivo, valores de muestra residuales.
Un aparato para decodificar datos de vídeo, comprendiendo el aparato:
un medio para generar una memoria intermedia de lista de candidatos de predictor de vectores de movimiento, MVP, primero en entrar, primero en salir, FIFO, que comprende:
medios para determinar un vector de movimiento de un bloque de una imagen actual de los datos de vídeo decodificados antes de un bloque actual; y
medios para actualizar, la memoria intermedia FIFO para eliminar un candidato MVP añadido con anterioridad de la memoria intermedia FIFO y añadir el vector de movimiento del bloque a la memoria intermedia FIFO;
medios para determinar, de entre los candidatos de MVP en la memoria intermedia FIFO, un MVP para el bloque actual, en el que los candidatos de MVP en la memoria intermedia FIFO incluyen al menos un candidato de MVP en base a un vector de movimiento de un bloque no adyacente, siendo no adyacente el bloque no adyacente al bloque actual de la imagen actual;
medios para determinar, en base al MVP para el bloque actual, un vector de movimiento del bloque actual;
medios para determinar un bloque predictivo en base al vector de movimiento del bloque actual; y medios para reconstruir, en base al bloque predictivo, valores de muestra de la imagen actual.
Un aparato para codificar datos de vídeo, comprendiendo el aparato:
medios para generar una memoria intermedia de lista de candidatos de predictor de vectores de movimiento, MVP, primero en entrar, primero en salir, FIFO, que comprende:
medios para determinar un vector de movimiento de un bloque de una imagen actual de los datos de vídeo codificados antes de un bloque actual; y,
medios para actualizar, la memoria intermedia FIFO para eliminar un candidato MVP añadido con anterioridad de la memoria intermedia FIFO y añadir el vector de movimiento del bloque a la memoria intermedia FIFO;
medios para determinar, de entre los candidatos de MVP en la memoria intermedia FIFO, un MVP para el bloque actual, en el que los candidatos de MVP en la memoria intermedia FIFO incluyen al menos un candidato de MVP en base a un vector de movimiento de un bloque no adyacente, siendo no adyacente el bloque no adyacente al bloque actual de la imagen actual;
medios para determinar un vector de movimiento para el bloque actual, en el que el vector de movimiento es igual a un vector de movimiento del MVP para el bloque actual o es igual al vector de movimiento del MVP para el bloque actual más una diferencia de vectores de movimiento, MVD, señalizado en un flujo de bits;
medios para determinar un bloque predictivo en base al vector de movimiento del bloque actual; y medios para generar, en base al bloque predictivo, valores de muestra residuales.
Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan mediante uno o más procesadores, provocan que dicho uno o más procesadores realicen el procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 5.
ES18735138T 2017-06-13 2018-06-11 Predicción de vectores de movimiento Active ES2954447T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762519007P 2017-06-13 2017-06-13
US16/003,269 US10602180B2 (en) 2017-06-13 2018-06-08 Motion vector prediction
PCT/US2018/036883 WO2018231700A1 (en) 2017-06-13 2018-06-11 Motion vector prediction

Publications (1)

Publication Number Publication Date
ES2954447T3 true ES2954447T3 (es) 2023-11-22

Family

ID=64563843

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18735138T Active ES2954447T3 (es) 2017-06-13 2018-06-11 Predicción de vectores de movimiento

Country Status (13)

Country Link
US (4) US10602180B2 (es)
EP (2) EP4277279A3 (es)
JP (2) JP7343398B2 (es)
CN (1) CN110754086A (es)
AU (2) AU2018283967B2 (es)
BR (1) BR112019025566A2 (es)
CA (1) CA3063173A1 (es)
CL (1) CL2019003677A1 (es)
CO (1) CO2019013930A2 (es)
ES (1) ES2954447T3 (es)
PL (1) PL3639519T3 (es)
TW (3) TW202344060A (es)
WO (1) WO2018231700A1 (es)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018205914A1 (en) * 2017-05-10 2018-11-15 Mediatek Inc. Method and apparatus of reordering motion vector prediction candidate set for video coding
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US20200014945A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application acceleration
US20200014918A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application accelerator
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
EP3468194A1 (en) * 2017-10-05 2019-04-10 Thomson Licensing Decoupled mode inference and prediction
CN117354541A (zh) * 2017-10-27 2024-01-05 松下电器(美国)知识产权公司 编码装置、解码装置、生成装置、发送装置和存储介质
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
KR102180482B1 (ko) * 2017-11-09 2020-11-18 삼성전자주식회사 움직임 정보의 부호화 장치 및 방법, 및 복호화 장치 및 방법
US11057640B2 (en) * 2017-11-30 2021-07-06 Lg Electronics Inc. Image decoding method and apparatus based on inter-prediction in image coding system
CN109922336B (zh) * 2017-12-12 2023-07-18 华为技术有限公司 视频数据的帧间预测方法和装置
US11310526B2 (en) * 2018-01-26 2022-04-19 Mediatek Inc. Hardware friendly constrained motion vector refinement
US10812810B2 (en) * 2018-02-06 2020-10-20 Tencent America LLC Method and apparatus for video coding in merge mode
WO2019178721A1 (en) * 2018-03-19 2019-09-26 Qualcomm Incorporated Improvements to advanced temporal motion vector prediction
WO2019200366A1 (en) * 2018-04-12 2019-10-17 Arris Enterprises Llc Motion information storage for video coding and signaling
US10841575B2 (en) * 2018-04-15 2020-11-17 Arris Enterprises Llc Unequal weight planar motion vector derivation
EP3777157A4 (en) * 2018-04-20 2021-05-19 Huawei Technologies Co., Ltd. LINE BUFFER FOR PREDICTOR CANDIDATE FOR SPATIAL MOTION VECTORS
US10462486B1 (en) * 2018-05-07 2019-10-29 Tencent America, Llc Fast method for implementing discrete sine transform type VII (DST 7)
CN112204979A (zh) * 2018-05-28 2021-01-08 交互数字Vc控股公司 译码/解码中的数据依赖性
US10798407B2 (en) * 2018-06-01 2020-10-06 Tencent America LLC Methods and apparatus for inter prediction with a reduced above line buffer in video coding
US10587885B2 (en) * 2018-06-04 2020-03-10 Tencent America LLC Method and apparatus for merge mode with additional middle candidates in video coding
CN117956182A (zh) 2018-06-04 2024-04-30 华为技术有限公司 获取运动矢量的方法和装置
US10616574B2 (en) * 2018-06-04 2020-04-07 Tencent America LLC Methods and apparatus for extended merge mode with adaptive grid size in video coding
WO2019234673A1 (en) 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
WO2019244051A1 (en) 2018-06-19 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Selected mvd precision without mvp truncation
JP7460617B2 (ja) * 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
TWI719525B (zh) * 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 Lut與amvp之間的交互
CN114900694A (zh) * 2018-06-29 2022-08-12 抖音视界(北京)有限公司 哪个查找表需要更新或不更新
WO2020003282A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Managing motion vector predictors for video coding
US10687081B2 (en) 2018-06-29 2020-06-16 Tencent America LLC Method, apparatus and medium for decoding or encoding
US10666981B2 (en) 2018-06-29 2020-05-26 Tencent America LLC Method, apparatus and medium for decoding or encoding
BR112020024142A2 (pt) * 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
JP7295230B2 (ja) * 2018-06-29 2023-06-20 北京字節跳動網絡技術有限公司 スライス/タイル/lcuの行ごとのルックアップテーブルのリセット
CN117354506A (zh) * 2018-06-29 2024-01-05 英迪股份有限公司 对图像解码和编码的方法及非暂态计算机可读存储介质
EP3794825A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Update of look up table: fifo, constrained fifo
CN110662065A (zh) * 2018-06-29 2020-01-07 财团法人工业技术研究院 图像数据解码方法及解码器、图像数据编码方法及编码器
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
EP3791586A1 (en) * 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
TWI719524B (zh) * 2018-07-01 2021-02-21 大陸商北京字節跳動網絡技術有限公司 降低非相鄰Merge設計的複雜度
CN110677668B (zh) * 2018-07-01 2022-06-21 北京字节跳动网络技术有限公司 空间运动压缩
WO2020008334A1 (en) * 2018-07-01 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Efficient affine merge motion vector derivation
CN110876282B (zh) * 2018-07-02 2022-10-18 华为技术有限公司 运动矢量预测方法以及相关装置
US10531090B1 (en) * 2018-07-02 2020-01-07 Tencent America LLC Method and apparatus for video coding
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
TWI748202B (zh) 2018-07-02 2021-12-01 大陸商北京字節跳動網絡技術有限公司 Lamvr中取整和修剪的順序
US10638153B2 (en) * 2018-07-02 2020-04-28 Tencent America LLC For decoder side MV derivation and refinement
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US11606575B2 (en) * 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
US10462488B1 (en) * 2018-07-13 2019-10-29 Tencent America LLC Method and apparatus for video coding
US10805624B2 (en) * 2018-07-16 2020-10-13 Tencent America LLC Determination of parameters of an affine model
WO2020017423A1 (en) * 2018-07-17 2020-01-23 Panasonic Intellectual Property Corporation Of America Motion vector prediction for video coding
US10362330B1 (en) * 2018-07-30 2019-07-23 Tencent America LLC Combining history-based motion vector prediction and non-adjacent merge prediction
US10827195B2 (en) * 2018-08-03 2020-11-03 Tencent America LLC Method and apparatus for unifying adjacent merge candidates and non-adjacent merge candidates
WO2020035029A1 (en) * 2018-08-17 2020-02-20 Mediatek Inc. Method and apparatus of simplified sub-mode for video coding
WO2020044196A1 (en) 2018-08-26 2020-03-05 Beijing Bytedance Network Technology Co., Ltd. Combined history-based motion vector predictor and multi-motion model decoding
US10924731B2 (en) * 2018-08-28 2021-02-16 Tencent America LLC Complexity constraints on merge candidates list construction
WO2020048463A1 (en) * 2018-09-03 2020-03-12 Huawei Technologies Co., Ltd. Method and apparatus for intra prediction
CN116647695A (zh) * 2018-09-06 2023-08-25 Lg电子株式会社 图像解码设备、图像编码设备和数据发送设备
TW202017377A (zh) * 2018-09-08 2020-05-01 大陸商北京字節跳動網絡技術有限公司 視頻編碼和解碼中的仿射模式
CN111064961B (zh) 2018-09-12 2023-06-09 北京字节跳动网络技术有限公司 视频处理方法和装置
CN114143554B (zh) * 2018-09-13 2024-04-12 华为技术有限公司 一种预测运动信息的解码方法及装置
EP3850849A1 (en) * 2018-09-13 2021-07-21 InterDigital VC Holdings, Inc. Improved virtual temporal affine candidates
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
EP4325859A3 (en) * 2018-09-19 2024-05-15 Beijing Bytedance Network Technology Co., Ltd. Syntax reuse for affine mode with adaptive motion vector resolution
EP3854096A1 (en) * 2018-09-21 2021-07-28 VID SCALE, Inc. Affine motion estimation for affine model-based video coding
TWI821408B (zh) * 2018-09-23 2023-11-11 大陸商北京字節跳動網絡技術有限公司 塊級別的運動向量平面模式
WO2020058955A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Multiple-hypothesis affine mode
US11070796B2 (en) * 2018-09-28 2021-07-20 Qualcomm Incorporated Ultimate motion vector expression based pruning for video coding
WO2020084470A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode
WO2020084512A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Affine motion information derivation from neighboring block
WO2020084554A1 (en) * 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Searching based motion candidate derivation for sub-block motion vector prediction
WO2020094061A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Multi-models for intra prediction
US11212521B2 (en) * 2018-11-07 2021-12-28 Avago Technologies International Sales Pte. Limited Control of memory bandwidth consumption of affine mode in versatile video coding
WO2020098695A1 (en) * 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
WO2020103936A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Pruning method for inter prediction with geometry partition
WO2020103944A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Sub-block based motion candidate selection and signaling
US11146810B2 (en) 2018-11-27 2021-10-12 Qualcomm Incorporated Decoder-side motion vector refinement
CN113170122B (zh) 2018-12-01 2023-06-27 北京字节跳动网络技术有限公司 帧内预测的参数推导
AU2019391197B2 (en) 2018-12-07 2023-05-25 Beijing Bytedance Network Technology Co., Ltd. Context-based intra prediction
CN111355961B (zh) 2018-12-24 2023-11-03 华为技术有限公司 一种帧间预测的方法和装置
EP3905691A4 (en) 2018-12-28 2022-12-21 Godo Kaisha IP Bridge 1 IMAGE DECODING DEVICE, IMAGE DECODING METHOD AND IMAGE DECODING PROGRAM
CN113455002A (zh) * 2018-12-28 2021-09-28 瑞典爱立信有限公司 生成运动向量预测器列表
WO2020135465A1 (en) * 2018-12-28 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Modified history based motion prediction
TWI829386B (zh) * 2018-12-28 2024-01-11 日商Jvc建伍股份有限公司 影像編碼裝置、影像編碼方法、影像編碼程式、影像解碼裝置、影像解碼方法及影像解碼程式
WO2020140908A1 (en) * 2018-12-31 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Mapping between distance index and distance in merge with mvd
WO2020141123A1 (en) * 2019-01-01 2020-07-09 Telefonaktiebolaget Lm Ericsson (Publ) History-based intra most probable mode derivation
WO2020140242A1 (zh) * 2019-01-03 2020-07-09 北京大学 视频处理方法和装置
WO2020141935A1 (ko) * 2019-01-03 2020-07-09 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
KR20200085678A (ko) 2019-01-07 2020-07-15 한국전자통신연구원 프로젝션 포맷 변환에 따른 왜곡에 대한 움직임 정보 예측 보정 방법 및 장치
CN113273187A (zh) * 2019-01-10 2021-08-17 北京字节跳动网络技术有限公司 基于仿射的具有运动矢量差(MVD)的Merge
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
US11025935B2 (en) * 2019-01-10 2021-06-01 Tencent America LLC Method and apparatus for history based motion information buffer update with parallel processing capability
US11153590B2 (en) 2019-01-11 2021-10-19 Tencent America LLC Method and apparatus for video coding
US10904550B2 (en) * 2019-01-12 2021-01-26 Tencent America LLC Method and apparatus for video coding
CN113383554B (zh) * 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302937A (zh) 2019-01-16 2021-08-24 北京字节跳动网络技术有限公司 运动候选推导
WO2020151765A1 (en) * 2019-01-27 2020-07-30 Beijing Bytedance Network Technology Co., Ltd. Interpolation for bi-prediction with cu-level weight
EP3895429A4 (en) 2019-01-31 2022-08-10 Beijing Bytedance Network Technology Co., Ltd. CONTEXT FOR CODE AN ADAPTIVE MOTION VECTOR RESOLUTION IN AFFINE MODE
MX2021008911A (es) * 2019-02-01 2021-08-24 Beijing Bytedance Network Tech Co Ltd Se?alizacion de informacion de reformacion en bucle utilizando conjuntos de parametros.
WO2020156528A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Filtering processes based on in-loop reshaping
CN113475075B (zh) * 2019-02-13 2023-09-08 北京字节跳动网络技术有限公司 基于共享Merge列表的运动预测
CN113491114A (zh) * 2019-02-20 2021-10-08 北京达佳互联信息技术有限公司 用于帧间预测的运动向量舍入、截取和存储的方法和装置
MX2021009788A (es) * 2019-02-22 2021-09-08 Beijing Bytedance Network Tech Co Ltd Seleccion de muestra colindante para intraprediccion.
AU2020226566A1 (en) 2019-02-24 2021-08-19 Beijing Bytedance Network Technology Co., Ltd. Parameter derivation for intra prediction
WO2020171670A1 (ko) * 2019-02-24 2020-08-27 엘지전자 주식회사 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
CN113508593A (zh) * 2019-02-27 2021-10-15 北京字节跳动网络技术有限公司 基于回退的运动矢量场的基于子块运动矢量推导
US11190797B2 (en) * 2019-03-01 2021-11-30 Qualcomm Incorporated Constraints on decoder-side motion vector refinement based on weights for bi-predicted prediction
US11166015B2 (en) * 2019-03-06 2021-11-02 Tencent America LLC Method and apparatus for video coding
CN113574890B (zh) * 2019-03-11 2024-04-12 北京字节跳动网络技术有限公司 基于指定的候选的成对运动候选列的构造
CN113597759B (zh) * 2019-03-11 2022-09-13 北京字节跳动网络技术有限公司 视频编解码中的运动矢量细化
WO2020184958A1 (ko) * 2019-03-11 2020-09-17 엘지전자 주식회사 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
EP3939303A1 (en) * 2019-03-11 2022-01-19 VID SCALE, Inc. Symmetric merge mode motion vector coding
JP7256290B2 (ja) * 2019-03-12 2023-04-11 エルジー エレクトロニクス インコーポレイティド 双予測のための加重値インデックス情報を誘導するビデオ又は映像コーディング
KR20210114060A (ko) * 2019-03-13 2021-09-17 엘지전자 주식회사 Dmvr 기반의 인터 예측 방법 및 장치
CN111698515B (zh) * 2019-03-14 2023-02-14 华为技术有限公司 帧间预测的方法及相关装置
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
US10979716B2 (en) * 2019-03-15 2021-04-13 Tencent America LLC Methods of accessing affine history-based motion vector predictor buffer
EP3925220A4 (en) * 2019-03-17 2022-06-29 Beijing Bytedance Network Technology Co., Ltd. Calculation of prediction refinement based on optical flow
US11140409B2 (en) 2019-03-22 2021-10-05 Lg Electronics Inc. DMVR and BDOF based inter prediction method and apparatus thereof
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
WO2020197083A1 (ko) * 2019-03-22 2020-10-01 엘지전자 주식회사 Dmvr 및 bdof 기반의 인터 예측 방법 및 장치
EP3944623A4 (en) 2019-03-22 2022-06-08 LG Electronics Inc. METHOD AND DEVICE FOR DMVR-BASED INTERPREDICTION
CN113632469B (zh) 2019-03-23 2022-12-13 北京字节跳动网络技术有限公司 默认的环内整形参数
CN113767631B (zh) 2019-03-24 2023-12-15 北京字节跳动网络技术有限公司 用于帧内预测的参数推导中的条件
US20220174287A1 (en) * 2019-03-26 2022-06-02 Intellectual Discovery Co., Ltd. Image encoding/decoding method and apparatus
WO2020192747A1 (en) * 2019-03-27 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Motion information precision alignment in affine advanced motion vector prediction
WO2020192726A1 (en) 2019-03-27 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. History-based motion vector prediction
BR112021021344A2 (pt) 2019-04-25 2022-01-18 Op Solutions Llc Candidatos em quadros com movimento global
CN114128288A (zh) * 2019-04-25 2022-03-01 Op方案有限责任公司 运动矢量帧间预测的全局运动模型
CN114009038A (zh) * 2019-04-25 2022-02-01 Op方案有限责任公司 图像标头中全局运动矢量的信号发送
BR112021021356A2 (pt) 2019-04-25 2022-01-18 Op Solutions Llc Movimento global para candidatos de modo de mesclagem em interprevisão
SG11202111738RA (en) * 2019-04-25 2021-11-29 Op Solutions Llc Global motion constrained motion vector in inter prediction
KR20220002989A (ko) 2019-04-25 2022-01-07 오피 솔루션즈, 엘엘씨 픽처 헤더 내의 글로벌 모션 벡터의 시그널링
KR20220002991A (ko) * 2019-04-25 2022-01-07 오피 솔루션즈, 엘엘씨 글로벌 모션을 갖는 프레임들에서의 적응적 모션 벡터 예측 후보들
KR20210153129A (ko) 2019-04-25 2021-12-16 오피 솔루션즈, 엘엘씨 글로벌 모션을 갖는 프레임들에서의 선택적 모션 벡터 예측 후보들
CN114128260A (zh) * 2019-04-25 2022-03-01 Op方案有限责任公司 全局运动矢量的高效编码
EP3965420A4 (en) * 2019-04-30 2022-07-06 Wilus Institute of Standards and Technology Inc. VIDEO SIGNAL PROCESSING METHOD AND APPARATUS USING ADAPTIVE MOTION VECTOR RESOLUTION
JP7391109B2 (ja) 2019-05-11 2023-12-04 北京字節跳動網絡技術有限公司 ビデオ処理におけるコーディングツールの選択的使用
US20220053206A1 (en) * 2019-05-15 2022-02-17 Wilus Institute Of Standards And Technology Inc. Video signal processing method and apparatus using adaptive motion vector resolution
EP3977739A4 (en) * 2019-06-03 2022-07-20 OP Solutions, LLC REORGANIZATION OF MERGER CANDIDATES ACCORDING TO A GLOBAL MOTION VECTOR CROSS-REFERENCE TO RELATED APPLICATIONS
CN114270860A (zh) * 2019-06-04 2022-04-01 北京达佳互联信息技术有限公司 针对仿射模式的自适应运动矢量分辨率
CN115941970B (zh) * 2019-06-17 2024-02-20 北京达佳互联信息技术有限公司 用于视频编解码中的解码器侧运动矢量细化的方法和装置
CN113994684A (zh) 2019-06-21 2022-01-28 北京达佳互联信息技术有限公司 用于针对视频编解码的预测相关残差缩放的方法和设备
CN114041291B (zh) * 2019-06-21 2023-03-24 北京达佳互联信息技术有限公司 视频编解码中的运动矢量预测的方法、设备和存储介质
WO2020257484A1 (en) * 2019-06-21 2020-12-24 Vid Scale, Inc. Precision refinement for motion compensation with optical flow
KR20210006306A (ko) * 2019-07-08 2021-01-18 현대자동차주식회사 인터 예측을 이용하여 비디오를 부호화 및 복호화하는 방법 및 장치
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
CN112437312B (zh) * 2019-08-26 2022-05-27 腾讯科技(深圳)有限公司 视频解码方法、编码方法、装置、设备及存储介质
US11736720B2 (en) * 2019-09-03 2023-08-22 Tencent America LLC Motion vector refinement methods for video encoding
JP2022548351A (ja) * 2019-09-19 2022-11-18 アリババ グループ ホウルディング リミテッド マージ候補リストを構築するための方法
CN114762330A (zh) 2019-09-22 2022-07-15 北京字节跳动网络技术有限公司 视频的子图片编码和解码
WO2020251417A2 (en) * 2019-09-30 2020-12-17 Huawei Technologies Co., Ltd. Usage of dct based interpolation filter and enhanced bilinear interpolation filter in affine motion compensation
KR20220059549A (ko) 2019-09-30 2022-05-10 후아웨이 테크놀러지 컴퍼니 리미티드 향상된 보간 필터로써 하나의 블록 행의 처리 동안 페치되는 참조 라인의 수를 감소시키는 아핀 모션 모델 제약
CN114556916B (zh) * 2019-10-12 2023-11-17 北京字节跳动网络技术有限公司 视频编解码工具的高级语法
KR20220046656A (ko) 2019-10-31 2022-04-14 삼성전자주식회사 어파인 모델에 따른 인터 예측을 수행하는 비디오 복호화 방법 및 그 장치, 비디오 부호화 방법 및 그 장치
MX2022005622A (es) * 2019-11-11 2022-06-14 Hfi Innovation Inc Metodo y aparato de se?alizacion de resolucion de diferencia de vector de movimiento adaptable en codificacion de video.
US20210168354A1 (en) * 2019-12-03 2021-06-03 Mellanox Technologies, Ltd. Video Coding System
EP4082188A4 (en) 2020-03-19 2024-01-31 Fg innovation co ltd APPARATUS AND METHOD FOR ENCODING VIDEO DATA
WO2021249363A1 (en) * 2020-06-08 2021-12-16 Beijing Bytedance Network Technology Co., Ltd. Constraints on intra block copy using non-adjacent neighboring blocks
JP2023528775A (ja) * 2020-06-09 2023-07-06 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 時間動きベクトル予測、インターレイヤ参照、及び時間サブレイヤ指示のビデオコーディングの態様
US11388421B1 (en) * 2021-01-13 2022-07-12 Lemon Inc. Usage of templates for decoder-side intra mode derivation
CN112911314B (zh) * 2021-01-14 2023-08-18 北京博雅慧视智能技术研究院有限公司 一种熵编码器的编码方法及熵编码器
US11895321B2 (en) 2021-03-29 2024-02-06 Qualcomm Incorporated Template matching based advanced motion vector predictor (AMVP) candidate list construction with non-adjacent candidates and AMVP index signaling
EP4315858A2 (en) * 2021-03-29 2024-02-07 Qualcomm Incorporated Template matching-based advanced motion vector predictor (amvp) candidate list construction with non-adjacent candidates and amvp index signaling
WO2022272025A1 (en) * 2021-06-25 2022-12-29 Qualcomm Incorporated Hybrid inter bi-prediction in video coding
CN117581542A (zh) * 2021-09-06 2024-02-20 北京达佳互联信息技术有限公司 视频编解码中针对仿射合并模式的候选导出
CN117981315A (zh) * 2021-09-24 2024-05-03 北京达佳互联信息技术有限公司 视频编码中仿射合并模式的候选推导
US20230104476A1 (en) * 2021-10-05 2023-04-06 Tencent America LLC Grouping based adaptive reordering of merge candidate
CN113873256B (zh) * 2021-10-22 2023-07-18 眸芯科技(上海)有限公司 Hevc中邻近块的运动矢量存储方法及系统
WO2023114362A1 (en) * 2021-12-16 2023-06-22 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding
WO2023132631A1 (ko) * 2022-01-04 2023-07-13 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
US20230379452A1 (en) * 2022-05-17 2023-11-23 Tencent America LLC Adjacent spatial motion vector predictor candidates improvement
US20230388535A1 (en) * 2022-05-26 2023-11-30 Tencent America LLC Systems and methods for combining subblock motion compensation and overlapped block motion compensation
WO2024081629A1 (en) * 2022-10-10 2024-04-18 Tencent America LLC Method and apparatus for extended decoder side motion vector refinement

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925123B2 (en) * 2002-08-06 2005-08-02 Motorola, Inc. Method and apparatus for performing high quality fast predictive motion search
US20060153463A1 (en) 2003-01-20 2006-07-13 Youji Notoya Image encoding method
JP4213646B2 (ja) 2003-12-26 2009-01-21 株式会社エヌ・ティ・ティ・ドコモ 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法、及び画像復号プログラム。
JP2008011455A (ja) 2006-06-30 2008-01-17 Sanyo Electric Co Ltd 符号化方法
JP4592656B2 (ja) 2006-08-17 2010-12-01 富士通セミコンダクター株式会社 動き予測処理装置、画像符号化装置および画像復号化装置
KR101279573B1 (ko) 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
US9113168B2 (en) 2009-05-12 2015-08-18 Lg Electronics Inc. Method and apparatus of processing a video signal
WO2011021914A2 (ko) * 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
WO2011095260A1 (en) 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
WO2012120870A1 (ja) 2011-03-08 2012-09-13 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム
KR101571947B1 (ko) 2011-03-08 2015-11-25 가부시키가이샤 제이브이씨 켄우드 동화상 부호화 장치, 동화상 부호화방법 및 동화상 부호화 프로그램, 및 동화상 복호 장치, 동화상 복호 방법 및 동화상 복호 프로그램
EP3627839B1 (en) * 2011-03-21 2021-10-20 LG Electronics Inc. Method for selecting motion vector predictor
SE1850140A2 (sv) 2011-09-23 2018-12-11 Kt Corp Förfarande för att utse ett kandidatblock för fusion samt en anordning för tillämpning av detta förfarande
EP2769544A4 (en) * 2011-10-21 2015-12-23 Nokia Technologies Oy VIDEO ENCODING METHOD AND APPARATUS
US9571833B2 (en) 2011-11-04 2017-02-14 Nokia Technologies Oy Method for coding and an apparatus
RU2589297C9 (ru) 2011-12-28 2017-01-23 ДжейВиСи КЕНВУД КОРПОРЕЙШН Устройство декодирования движущегося изображения и способ декодирования движущегося изображения
JP5835208B2 (ja) * 2011-12-28 2015-12-24 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、並びに、送信装置、送信方法、及び送信プログラム
US9338451B2 (en) 2012-04-12 2016-05-10 Qualcomm Incorporated Common spatial candidate blocks for parallel motion estimation
US20130301727A1 (en) 2012-05-14 2013-11-14 Qualcomm Incorporated Programmable and scalable integer search for video encoding
US20130343459A1 (en) 2012-06-22 2013-12-26 Nokia Corporation Method and apparatus for video coding
EP3687173A1 (en) * 2012-09-03 2020-07-29 Sony Corporation Image processing device and method with inter-layer motion vector compression
US9485515B2 (en) 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
CN102946536B (zh) 2012-10-09 2015-09-30 华为技术有限公司 候选矢量列表构建的方法及装置
US9648319B2 (en) 2012-12-12 2017-05-09 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
US9270999B2 (en) 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
CN115086652A (zh) * 2015-06-05 2022-09-20 杜比实验室特许公司 图像编码和解码方法和图像解码设备
WO2017082443A1 (ko) * 2015-11-13 2017-05-18 엘지전자 주식회사 영상 코딩 시스템에서 임계값을 이용한 적응적 영상 예측 방법 및 장치
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
RU2696551C1 (ru) * 2016-03-15 2019-08-02 МедиаТек Инк. Способ и устройство для кодирования видео с компенсацией аффинного движения
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US20180109814A1 (en) * 2016-10-14 2018-04-19 Mediatek Inc. Method And Apparatus Of Coding Unit Information Inheritance
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
WO2019107548A1 (ja) 2017-12-01 2019-06-06 株式会社Nttドコモ ユーザ端末及び無線通信方法

Also Published As

Publication number Publication date
CO2019013930A2 (es) 2020-01-17
US11218723B2 (en) 2022-01-04
EP4277279A2 (en) 2023-11-15
TW202318875A (zh) 2023-05-01
US20180359483A1 (en) 2018-12-13
JP2020523853A (ja) 2020-08-06
JP7343398B2 (ja) 2023-09-12
EP4277279A3 (en) 2024-01-17
EP3639519C0 (en) 2023-08-16
AU2018283967A1 (en) 2019-12-05
EP3639519B1 (en) 2023-08-16
JP2023166487A (ja) 2023-11-21
TWI791025B (zh) 2023-02-01
EP3639519A1 (en) 2020-04-22
KR20200017406A (ko) 2020-02-18
AU2023204311A1 (en) 2023-07-27
US20220070486A1 (en) 2022-03-03
PL3639519T3 (pl) 2023-11-27
US11689740B2 (en) 2023-06-27
TW201904299A (zh) 2019-01-16
BR112019025566A2 (pt) 2020-06-23
CL2019003677A1 (es) 2020-07-10
TWI812564B (zh) 2023-08-11
AU2018283967B2 (en) 2023-04-06
US20230276069A1 (en) 2023-08-31
US20200221116A1 (en) 2020-07-09
TW202344060A (zh) 2023-11-01
CN110754086A (zh) 2020-02-04
WO2018231700A1 (en) 2018-12-20
CA3063173A1 (en) 2018-12-20
US10602180B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
ES2954447T3 (es) Predicción de vectores de movimiento
AU2017340631B2 (en) Motion vector prediction for affine motion models in video coding
US10863193B2 (en) Buffer restriction during motion vector prediction for video coding
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
WO2019140189A1 (en) Affine motion compensation with low bandwidth
WO2018049043A1 (en) Sub-pu based bi-directional motion compensation in video coding
JP2019515587A (ja) ビデオコーディングのための動きベクトル予測のためのマージ候補
WO2019136131A1 (en) Generated affine motion vectors
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
KR102669354B1 (ko) 모션 벡터 예측
WO2020008322A1 (en) Complexity reduction of non-adjacent merge design
KR20240074911A (ko) 모션 벡터 예측