ES2983310T3 - Método y dispositivo de predicción de vector de movimiento y códec - Google Patents

Método y dispositivo de predicción de vector de movimiento y códec Download PDF

Info

Publication number
ES2983310T3
ES2983310T3 ES19831026T ES19831026T ES2983310T3 ES 2983310 T3 ES2983310 T3 ES 2983310T3 ES 19831026 T ES19831026 T ES 19831026T ES 19831026 T ES19831026 T ES 19831026T ES 2983310 T3 ES2983310 T3 ES 2983310T3
Authority
ES
Spain
Prior art keywords
motion information
block
list
candidate motion
sub
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
ES19831026T
Other languages
English (en)
Inventor
Huanbang Chen
Haitao Yang
Jianle Chen
Weiwei Xu
Ting Fu
Jiali Fu
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2983310T3 publication Critical patent/ES2983310T3/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
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un método de decodificación que comprende analizar un flujo de código para obtener un elemento de sintaxis, en donde el elemento de sintaxis incluye al menos un índice de información de movimiento candidato óptima de un bloque actual (s151); determinar la construcción de una primera lista o una segunda lista para un bloque de imagen actual según el elemento de sintaxis (s152), en donde la primera lista es una lista de información de movimiento candidato basada en bloques, y la segunda lista es una lista de información de movimiento candidato basada en subbloques; determinar la información de movimiento óptima en la primera lista o la segunda lista según el índice (s153); y predecir el bloque actual según la información de movimiento óptima (s154). El método distingue entre listas de vectores de movimiento candidatos de un bloque y un subbloque, y reduce de manera efectiva el costo de transmisión del vector de movimiento candidato óptimo. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y dispositivo de predicción de vector de movimiento y códec
Campo de la invención
Esta solicitud se refiere al campo de las tecnologías de codificación de video y, en particular, a un método y aparato de predicción de vector de movimiento, y a un codificador y decodificador correspondientes.
Antecedentes de la invención
Con el desarrollo de las tecnologías de la información, se han desarrollo de forma rápida los servicios de video tales como televisión en alta definición, las conferencias web, IPTV y televisión en 3D. Las señales de video, en virtud de las ventajas tales como la intuición y la alta eficiencia, resultan una de las formas más importantes de obtener información en la vida diaria de las personas. Las señales de video contienen una gran cantidad de datos y, por ello, ocupan una gran cantidad de ancho de banda de transmisión y espacio de almacenamiento. Para transmitir y almacenar las señales de video de forma efectiva, se necesita que las señales de video sean comprimidas y codificadas. Una tecnología de compresión de video ha resultado, cada vez más, una tecnología clave indispensable en el campo de la aplicación de video. La Patente US2016/366435A1 describe un método de derivación de información de movimiento para sub-bloques de bloques de datos de video.
Compendio
A continuación, partes de la descripción y dibujos que se refieren a realizaciones anteriores que no comprenden necesariamente todas las características para implementar realizaciones de la invención reivindicada no están representadas como realizaciones de la invención sino como ejemplos útiles para la comprensión de las realizaciones de la invención. Las realizaciones de la presente invención describen un codificador de video, un decodificador de video y métodos correspondientes. Las implementaciones específicas son claras basadas en las descripciones de las reivindicaciones, de esta memoria descriptiva y de los dibujos adjuntos en esta solicitud. Según un primer aspecto, la presente invención se refiere a un método de decodificación o a un método de predicción de vector de movimiento. El método incluye: obtener un elemento de sintaxis, en donde el elemento de sintaxis comprende un índice de información de movimiento candidato óptimo de un bloque actual, y un identificador, en donde un modo de inter-predicción para el bloque actual es un modo de fusión; determinar. Basándose en el identificador para construir una primera lista o una segunda lista para el bloque actual, en donde la primera lista es una lista de información de movimiento candidato, basada en un sub-bloque, en donde cuando el identificador es un primer valor de característica, indica construir la primera lista para el bloque actual, o cuando el identificador es un segundo valor de característica, indica construir la segunda lista para el bloque actual; determinar información de movimiento óptimo procedente de la lista construida de información de movimiento candidato con base en el índice; y predecir el bloque de codificación actual con base en la información de movimiento óptimo.
Se debe entender que, en una tecnología actual, el bloque de codificación actual puede ser particionado en sub bloques más pequeños. Por ejemplo, el bloque de codificación actual puede ser particionado, a través de iteración, usando una partición de árbol cuaternario (QT), partición de árbol binario (BT) o de árbol triple (TT), o cualquier combinación de los mismos. En otras palabras, un bloque de codificación puede ser dividido en sub bloques más pequeños.
En este método, se clasifican listas de información de movimiento candidato del bloque actual (en algunos casos, debido a las diferencias en los hábitos de lenguaje, el bloque de codificación actual puede referirse a un bloque de imagen actual, un bloque de codificación actual, un bloque de decodificación actual, un bloque actual que ha de ser codificado, un bloque actual que ha de ser decodificado, o similares, y los nombres no deben constituir ninguna limitación sobre la presente invención). La información de movimiento candidato se clasifica en información de movimiento candidato obtenida a través de la predicción basada en bloque e información de movimiento candidato obtenida a través de la predicción basada en sub-bloque. Se construyen una lista de información de movimiento candidato basada en bloque y una lista de información de movimiento candidato basada en sub-bloque. Esto puede reducir de forma efectiva los costes de transmisión de la información de movimiento candidato óptimo.
Según el primer aspecto, en un posible proceso de implementación, el obtener un modo de construcción de una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual incluye: obtener un identificador que se usa para determinar la lista de información de movimiento candidato, donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construir la lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construir la lista de información de movimiento candidato basada en sub-bloque. Debe entenderse que el primer valor de característica y el segundo valor de característica son nombres usados para representar dos valores, y no constituyen ninguna limitación.
Opcionalmente, el primer valor de característica puede ser 0 o 1, y el segundo valor de característica puede ser 1 o 0. Opcionalmente, el identificador puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como una list0 (o list1), y la lista de información de movimiento candidato construido en un modo basado en sub-bloque puede representarse como una list1 (o list0). Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o símbolos de representación específicos del identificador y de las listas.
Según el primer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo al bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, se hace referencia a las descripciones relacionadas en la Realización 511.1.
Según el primer aspecto, en un posible proceso de implementación, la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento del bloque codificado espacialmente contiguo al bloque actual o la información de movimiento del bloque codificado temporalmente contiguo al bloque actual. Toda la información de movimiento candidato en la lista de información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo al bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo al bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el primer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye en al menos un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe a detalle en la presente invención.
Según el primer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización 512.1.
Según el primer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control (modo de fusión compleja). Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no calificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el primer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el primer aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según el primer aspecto, en un posible proceso de implementación, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en bloque, el bloque actual se predice basado en la información de movimiento óptimo.
Según el primer aspecto, en un posible proceso de implementación, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en sub-bloque, se incluyen por lo menos los siguientes tres casos.
Caso 1: Si la información de movimiento óptimo determinada en S23 se obtiene en un modo afín (incluyendo por lo menos el modo de fusión de modelo afín o el modo de fusión compleja), la información de movimiento correspondiente a un sub-bloque del bloque actual se deriva con base en la información de movimiento óptimo, y se predice el sub-bloque del bloque actual. El bloque actual puede incluir una pluralidad de sub-bloques, y el sub-bloque del bloque actual puede ser cualquiera de la pluralidad de sub-bloques. En un posible proceso de implementación, ser deriva información de movimiento correspondiente a cada sub-bloque del bloque actual basado en la información de movimiento óptimo, y se predice consecuentemente cada sub-bloque del bloque actual.
Caso 2: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP, un sub bloque del bloque actual se predice basándose en la información de movimiento óptimo. En un posible proceso de implementación, la información de movimiento candidato óptimo puede ser una combinación de información de movimiento e incluye información de movimiento correspondiente a cada sub-bloque del bloque actual, y cada sub-bloque del bloque actual se predice consecuentemente.
Caso 3: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP a través de una indicación, la información de movimiento óptimo se obtiene basándose en la indicación correspondiente, y un sub-bloque del bloque actual se predice basándose en la información de movimiento óptimo. En un posible proceso de implementación, la información de movimiento candidato óptimo puede obtenerse basándose en información de indicación. Se puede obtener información de movimiento correspondiente a cada sub-bloque del bloque actual en el modo ATMVP basándose en la información de indicación, y cada sub-bloque del bloque actual se predice consecuentemente.
Según un segundo aspecto, la presente invención se refiere a un método de decodificación o a un método de predicción de vector de movimiento. El método incluye: obtener un identificador que se usa para determinar una lista de información de movimiento candidato incluyendo información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde un modo de inter-predicción usado para el bloque actual es un modo de fusión; construir la lista de información de movimiento candidato basada en el identificador, donde cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en sub-bloque; determinar información de movimiento óptimo de la lista de información de movimiento candidato construida basada en el índice; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según el segundo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido de acuerdo con una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S11.1.
Según el segundo aspecto, en un posible proceso de implementación, la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo al bloque actual o de la información de movimiento de un bloque codificado temporalmente contiguo al bloque actual. Toda la información de movimiento candidato en la lista de información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el segundo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el segundo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el segundo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no sea de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el segundo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el segundo aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según un tercer aspecto, la presente invención se refiere a un método de predicción de vector de movimiento. El método incluye: si un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo del bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde un modo de inter predicción usado para el bloque actual es un modo de fusión; construir la lista de información de movimiento candidato basada en el identificador, donde cuando el identificador es un primer valor de característica, construir una lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, construir una lista de información de movimiento candidato basada en sub-bloque; determinar información de movimiento óptimo de la lista de información de movimiento candidato construida basada en el índice; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según el tercer aspecto, en un posible proceso de implementación, si el tamaño del bloque actual no satisface la cantidad de muestra preestablecida, construir la lista de información de movimiento candidato basada en bloque, y obtener el índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde el modo de inter-predicción usado para el bloque actual es el modo de fusión; determinar la información de movimiento óptimo de la lista de información de movimiento candidato construida basada en el índice obtenido; y predecir el bloque actual basándose en la información de movimiento óptimo.
Un concepto inventivo de esta solución es el siguiente: determinar, primero, si el bloque actual satisface una condición preestablecida; y si el bloque actual satisface la condición preestablecida, obtener un identificador que puede indicar la lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo del bloque actual, y construir la lista de información de movimiento candidato basada en bloque o la lista de información de movimiento candidato basada en sub-bloque basándose en el identificador; o si el bloque actual no satisface la condición preestablecida, construir solo la lista de información de movimiento candidato basada en bloque; determinar la información de movimiento candidato óptimo de la lista de información de movimiento candidato construida basándose en el índice de información de movimiento obtenido; y predecir el bloque actual.
Según el tercer aspecto, en un posible proceso de implementación, si el bloque actual satisface la condición preestablecida incluye entre otros: Si el tamaño del bloque actual satisface la cantidad de muestra preestablecida.
Según el tercer aspecto, en un posible proceso de implementación, que un tamaño de un bloque actual satisfaga una cantidad de muestra preestablecida incluye: Un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral.
Opcionalmente, cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral, que el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral; cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que la altura del bloque actual es mayor o igual que un umbral, que el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que la altura del bloque actual es menor que el umbral; cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral o la altura del bloque actual es mayor o igual que otro umbral, que el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral y la altura del bloque actual es menor que el otro umbral; o cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral y la altura del bloque actual es mayor o igual que otro umbral, que el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral o la altura del bloque actual es menor que el otro umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello. Se debe entender que esta lógica es simplemente un ejemplo y no constituye ninguna limitación. Adicionalmente, una relación entre el ancho y la altura tampoco se limita en la presente invención.
Según el tercer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización 511.1.
Según el tercer aspecto, en un posible proceso de implementación, toda la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque obtenida puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el tercer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el tercer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento del bloque codificado espacialmente del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice de superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar de forma secuencial información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización 512.1.
Según el tercer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el tercer aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
El método anterior puede realizarse a través de un aparato o dispositivo de predicción de vector de movimiento. Opcionalmente, la presente invención proporciona de forma correspondiente aparatos en un cuarto aspecto, un quinto aspecto y un sexto aspecto según el primer aspecto, el segundo aspecto y el tercer aspecto.
Según el cuarto aspecto, la presente invención se refiere a un aparato de decodificación o un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para obtener un modo de construcción de una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde el modo de construcción de la lista de información de movimiento candidato es un modo de construcción de una lista de información de movimiento candidato basada en bloque o un modo de construcción de una lista de información de movimiento candidato basada en sub-bloque; un módulo de construcción, configurado para construir la lista de información de movimiento candidato en el modo de construcción; un módulo de determinación, configurado para determinar información de movimiento óptimo de la lista construida de información de movimiento candidato basada en el índice; y un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
Según el cuarto aspecto, en un posible proceso de implementación, el módulo de obtención se configura específicamente para: obtener un identificador que se usa para determinar la lista de información de movimiento candidato, donde un modo de inter-predicción usado para el bloque actual es un modo de fusión; y cuando el identificador es un primer valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construcción de la lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construcción de la lista de información de movimiento candidato basada en sub-bloque.
Opcionalmente, el primer valor de característica puede ser 0 o 1, y el segundo valor de característica puede ser 1 o 0. Opcionalmente, el identificador puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado a ello. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como una list0 (o list1), y la lista de información de movimiento candidato construida en un modo basado en sub-bloque puede representarse como una list1 (o list0). Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o símbolos de representación específicos del identificador y de las listas.
Según el cuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo al bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S11.1.
Según el cuarto aspecto, en un posible proceso de implementación, la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento del bloque codificado espacialmente contiguo del bloque actual o la información de movimiento del bloque codificado temporalmente contiguo del bloque actual. Toda la información de movimiento candidato en la lista de información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el cuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el cuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el cuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en una lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el cuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el cuarto aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según el quinto aspecto, la presente invención se refiere a un aparato de decodificación o un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para obtener un identificador que se usa para determinar una lista de información de movimiento candidato incluyendo información de movimiento candidato óptimo de un bloque actual y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter predicción usado para el bloque actual es un modo de fusión; un módulo de construcción, configurado para construir la lista de información de movimiento candidato basándose en el identificador, en donde, cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en sub-bloque; un módulo de determinación, configurado para determinar información de movimiento óptimo de la lista de información de movimiento candidato construida basándose en el índice; y un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
Según el quinto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S11.1.
Según el quinto aspecto, en un posible proceso de implementación, la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo del bloque actual o la información de movimiento de un bloque codificado temporalmente contiguo del bloque actual. Toda la información de movimiento candidato en la lista de información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el quinto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el quinto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar de forma secuencial información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el quinto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el quinto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de verificar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el quinto aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según el sexto aspecto, la presente invención se refiere a un aparato de decodificación o a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para: cuando un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, obtener un identificador de una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo del bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter-predicción usado para el bloque actual es un modo de fusión; un módulo de construcción, configurado para construir la lista de información de movimiento candidato basada en el identificador; y, cuando el identificador es un primer valor de característica, construir una lista de información de movimiento candidato basada en bloque; o, cuando el identificador es un segundo valor de característica, construir una lista de información de movimiento candidato basada en sub-bloque; un módulo de determinación, configurado para determinar información de movimiento óptimo de la lista de información de movimiento candidato construida basándose en el índice; y un módulo de predicción, configurado para predecir el bloque actual basado en la información de movimiento óptimo.
Según el sexto aspecto, en un posible proceso de implementación, el módulo de construcción además se está configurado específicamente para: cuando el tamaño del bloque actual no satisface la cantidad de muestra preestablecida, construir la lista de información de movimiento candidato basada en bloque, donde el modo de inter-predicción usado para el bloque actual es el modo de fusión.
Según el sexto aspecto, en un posible proceso de implementación, si el bloque actual satisface una condición preestablecida incluye entre otros: Si el tamaño del bloque actual satisface la cantidad de muestra preestablecida.
Según el sexto aspecto, en un posible proceso de implementación, que un tamaño de un bloque actual satisfaga una cantidad de muestra preestablecida incluye: Un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral.
Opcionalmente, cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral, cuando el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral; cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que la altura del bloque actual es mayor o igual que un umbral, cuando el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que la altura del bloque actual es menor que el umbral; cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral o la altura del bloque actual es mayor o igual que otro umbral, cuando el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral y la altura del bloque actual es menor que el otro umbral; o cuando el tamaño del bloque actual satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es mayor o igual que un umbral y la altura del bloque actual es mayor o igual que otro umbral, cuando el tamaño del bloque actual no satisface la cantidad de muestra preestablecida es que el ancho del bloque actual es menor que el umbral o la altura del bloque actual es menor que el otro umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello. Debe entenderse que esta lógica es simplemente un ejemplo y no constituye ninguna limitación. Adicionalmente, una relación entre el ancho y la altura tampoco está limitada en la presente invención.
Según el sexto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S11.1.
Según el sexto aspecto, en un posible proceso de implementación, toda la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque obtenida puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el sexto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el sexto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar de forma secuencial información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el sexto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el sexto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según un séptimo aspecto, la presente invención se refiere a un método de decodificación o a un método de predicción de vector de movimiento. El método incluye: analizar una corriente de bits para obtener un elemento de sintaxis, donde el elemento de sintaxis incluye por lo menos un índice de información de movimiento candidato óptimo de un bloque actual; determinar, basándose en el elemento de sintaxis, que se construya una primera lista o una segunda lista para el bloque de imagen actual, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; determinar información de movimiento óptimo de la primera lista o de la segunda lista basada en el índice; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque es una lista de información de movimiento candidato construida en un modo de fusión convencional (lo cual puede ser expresado también como general_merge o regular_merge en algunos escenarios).
Según el séptimo aspecto, en un posible proceso de implementación, el modo de fusión convencional incluye un modo definido según una norma HEVC o una versión evolucionada de la norma HEVC. Específicamente, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en el modo de fusión convencional definido según la norma HEVC o la versión evolucionada de la norma HEVC.
Según el séptimo aspecto, en un posible proceso de implementación, la información de movimiento candidato en la primera lista incluye una o más de información de movimiento de un bloque espacialmente contiguo en la parte superior izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo a la izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo en la parte inferior izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo a la derecha del bloque de imagen actual, o información de movimiento de un bloque espacialmente contiguo a la derecha del bloque de imagen actual.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque es una lista de información de movimiento candidato construida en un modo de fusión basado en sub-bloque (merge_subblock).
Según el séptimo aspecto, en un posible proceso de implementación, el modo de fusión basado en sub-bloque incluye al menos una de fusión de modelo afín, fusión compleja o ATMVP. Específicamente, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye solo en un modo de fusión basado en sub-bloque de ATMVP.
Según el séptimo aspecto, en un posible proceso de implementación, toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el séptimo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el séptimo aspecto, en un posible proceso de implementación, el elemento de sintaxis incluye un índice de lista, y la determinación, basándose en el elemento de sintaxis, de construir una primera lista o una segunda lista para el bloque de imagen actual incluye: obtener un índice de lista de información de movimiento candidato, donde cuando el índice de lista es un primer valor de característica, indica que se construya la primera lista para el bloque de imagen actual, o cuando el índice de lista es un segundo valor de característica, indica que se construya la segunda lista para el bloque de imagen actual.
Según el séptimo aspecto, en un posible proceso de implementación, el elemento de sintaxis además incluye información de indicación usada para indicar un modo de fusión convencional usado para el bloque actual o información de indicación usada para indicar un modo de fusión basado en sub-bloque usado para el bloque actual.
Según el séptimo aspecto, en un posible proceso de implementación, el elemento de sintaxis además incluye información de indicación usada para indicar que la lista de información de movimiento candidato basada en bloque se use para el bloque actual o información de indicación usada para indicar que la lista de información de movimiento candidato basada en sub-bloque se use para el bloque actual.
Según el séptimo aspecto, en un posible proceso de implementación, el primer valor de característica puede ser 0 o 1, y el segundo valor de característica puede ser 1 o 0. Opcionalmente, el identificador puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como una list0 (o list1), y la lista de información de movimiento candidato construida en un modo basado en sub-bloque puede representarse como una list1 (o list0). Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o símbolos de representación específicos del identificador y de las listas.
Según el séptimo aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según el séptimo aspecto, en un posible proceso de implementación, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en bloque, el bloque actual se predice basándose en la información de movimiento óptimo.
Según el séptimo aspecto, en un posible proceso de implementación, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en sub-bloque, se incluyen por lo menos los siguientes tres casos.
Caso 1: Si la información de movimiento óptimo determinada en S23 se obtiene en un modo afín (incluyendo al menos el modo de fusión de modelo afín o el modo de fusión compleja), la información de movimiento correspondiente a un sub-bloque del bloque actual se deriva basándose en la información de movimiento óptimo, y se predice el sub-bloque del bloque actual. El bloque actual puede incluir una pluralidad de sub-bloques, y el sub-bloque del bloque actual puede ser cualquiera de la pluralidad de sub-bloques. En un posible proceso de implementación, ser deriva información de movimiento correspondiente a cada sub-bloque del bloque actual basándose en la información de movimiento óptimo, y se predice de manera correspondiente cada sub-bloque del bloque actual.
Caso 2: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP, un sub bloque del bloque actual se predice basándose en la información de movimiento óptimo. En un posible proceso de implementación, la información de movimiento candidato óptimo puede ser una combinación de información de movimiento e incluye información de movimiento correspondiente a cada sub-bloque del bloque actual, y cada sub-bloque del bloque actual se predice de manera correspondiente.
Caso 3: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP a través de una indicación, la información de movimiento óptimo se obtiene basándose en la indicación correspondiente, y un sub-bloque del bloque actual se predice con base en la información de movimiento óptimo. En un posible proceso de implementación, la información de movimiento candidato óptimo puede obtenerse basándose en información de indicación. Se puede obtener información de movimiento correspondiente a cada sub-bloque del bloque actual en el modo ATMVP basándose en la información de indicación, y cada sub-bloque del bloque actual se predice de manera correspondiente.
Según un octavo aspecto, la presente invención se refiere a un aparato de decodificación o a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para analizar una corriente de bits para obtener un elemento de sintaxis, en donde el elemento de sintaxis incluye al menos un índice de información de movimiento candidato óptimo de un bloque actual; un módulo de construcción, configurado para determinar, basándose en el elemento de sintaxis, que se construya una primera lista o una segunda lista para el bloque de imagen actual, donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; un módulo de determinación, configurado para determinar información de movimiento óptimo de la primera lista o de la segunda lista basada en el índice; y un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque es una lista de información de movimiento candidato construida en un modo de fusión convencional (la cual puede ser expresada también como general_merge o regular_merge en algunos escenarios).
Según el octavo aspecto, en un posible proceso de implementación, el modo de fusión convencional incluye un modo definido según una norma HEVC o una versión evolucionada de la norma HEVC. Específicamente, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en el modo de fusión convencional definido según la norma HEVC o la versión evolucionada de la norma HEVC.
Según el octavo aspecto, en un posible proceso de implementación, la información de movimiento candidato en la primera lista incluye una o más de información de movimiento de un bloque espacialmente contiguo en la parte superior izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo a la izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo en la parte inferior izquierda del bloque de imagen actual, información de movimiento de un bloque espacialmente contiguo en la parte superior derecha del bloque de imagen actual, o información de movimiento de un bloque espacialmente contiguo a la derecha del bloque de imagen actual.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque es una lista de información de movimiento candidato construida en un modo de fusión basado en sub-bloque (merge_subblock).
Según el octavo aspecto, en un posible proceso de implementación, el modo de fusión basado en sub-bloque incluye al menos uno de, fusión de modelo afín, fusión compleja o ATMVP. Específicamente, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye solo en un modo de fusión basado en sub-bloque de ATMVP.
Según el octavo aspecto, en un posible proceso de implementación, toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión, de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe en detalle en la presente invención.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, comprobar la disponibilidad de la información de movimiento candidato en un modelo válido y retirar elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no cualificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2.
Según el octavo aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade a la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el octavo aspecto, en un posible proceso de implementación, el elemento de sintaxis incluye un índice de lista, y el módulo de construcción se configura específicamente para: obtener un índice de lista de información de movimiento candidato, donde cuando el índice de lista es un primer valor de característica, indica que se construya la primera lista para el bloque de imagen actual, o cuando el índice de lista es un segundo valor de característica, indica que se construya la segunda lista para el bloque de imagen actual.
Según el octavo aspecto, en un posible proceso de implementación, el elemento de sintaxis además incluye información de indicación usada para indicar un modo de fusión convencional usado para el bloque actual o información de indicación usada para indicar un modo de fusión basado en sub-bloque usado para el bloque actual.
Según el octavo aspecto, en un posible proceso de implementación, el elemento de sintaxis además incluye información de indicación usada para indicar que la lista de información de movimiento candidato basada en bloque, se use para el bloque actual o información de indicación usada para indicar que la lista de información de movimiento candidato basada en sub-bloque se use para el bloque actual.
Según el octavo aspecto, en un posible proceso de implementación, el primer valor de característica puede ser 0 o 1, y el segundo valor de característica puede ser 1 o 0. Opcionalmente, el identificador puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como una listo (o listl), y la lista de información de movimiento candidato construida en un modo basado en sub-bloque puede representarse como una listl (o listo). Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o símbolos de representación específicos del identificador y de las listas.
Según el octavo aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según un noveno aspecto, la presente invención se refiere a un método de codificación o a un método de predicción de vector de movimiento. El método incluye: construir una primera lista, en donde la primera lista es una lista de información de movimiento candidato basada en bloque; construir una segunda lista, en donde la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; determinar información de movimiento candidato óptimo a partir de la primera lista de información de movimiento candidato y de la segunda lista de información de movimiento candidato; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según el noveno aspecto, en un posible proceso de implementación, el método además incluye: obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es la primera lista, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es la segunda lista; y codificar el identificador y el índice en una corriente de bits.
Según un décimo aspecto, la presente invención se refiere a un método de codificación o a un método de predicción de vector de movimiento. El método incluye: obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en sub-bloque; y codificar el identificador y el índice en una corriente de bits.
Según un undécimo aspecto, la presente invención se refiere a un método de codificación o a un método de predicción de vector de movimiento. El método incluye: si un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, construir una primera lista y una segunda lista, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, la segunda lista es una lista de información de movimiento candidato basada en sub-bloque, y un modo de inter-predicción usado para el bloque actual es un modo de fusión; determinar información de movimiento candidato óptimo de la primera lista y de la segunda lista; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según el undécimo aspecto, en un posible proceso de implementación, el método además incluye: si el tamaño del bloque actual satisface la cantidad de muestra preestablecida, construir la primera lista, donde la primera lista es la lista de información de movimiento candidato basada en bloque, y el modo de inter-predicción usado para el bloque actual es el modo de fusión; determinar la información de movimiento candidato óptimo de la primera lista; y predecir el bloque actual basándose en la información de movimiento óptimo.
Según un duodécimo aspecto, la presente invención se refiere a un aparato de codificación o a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de construcción, configurado para construir una primera lista y una segunda lista, donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; un módulo de determinación, configurado para determinar información de movimiento candidato óptimo de la primera lista de información de movimiento candidato y de la segunda lista de información de movimiento candidato; y un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
Según el duodécimo aspecto, en un posible proceso de implementación, el aparato además incluye: un módulo de obtención, configurado para obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es la primera lista, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es la segunda lista; y un módulo de codificación, configurado para codificar el identificador y el índice en una corriente de bits.
Según un decimotercer aspecto, la presente invención se refiere a un aparato de codificación o a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde un modo de inter predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en bloque, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es una lista de información de movimiento candidato basada en sub bloque; y un módulo de codificación, configurado para codificar el identificador y el índice en una corriente de bits.
Según un decimocuarto aspecto, la presente invención se refiere a un aparato de codificación o a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de construcción, configurado para: si un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, construir una primera lista y una segunda lista, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, la segunda lista es una lista de información de movimiento candidato basada en sub-bloque, y un modo de inter predicción usado para el bloque actual es un modo de fusión; un módulo de determinación, configurado para determinar información de movimiento candidato óptimo de la primera lista y de la segunda lista; y un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
Según el decimocuarto aspecto, en un posible proceso de implementación, el módulo de construcción además se configura para: si el tamaño del bloque actual satisface la cantidad de muestra preestablecida, construir la primera lista, en donde la primera lista es la lista de información de movimiento candidato basada en bloque, y el modo de inter-predicción usado para el bloque actual es el modo de fusión.
Según el noveno aspecto al decimocuarto aspecto (incluyendo cualquiera del noveno aspecto, décimo aspecto, undécimo aspecto, duodécimo aspecto, decimotercer aspecto y decimocuarto aspecto), en un posible proceso de implementación, el primer valor de característica puede ser 0 o 1 y el segundo valor de característica puede ser 1 o 0. Opcionalmente, el identificador puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como una list0 (o list1), y la lista de información de movimiento candidato construida en un modo basado en sub-bloque puede representarse como una list1 (o list0). Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o símbolos de representación específicos del identificador y de las listas.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión definido según una norma HEVC o una versión evolucionada de la norma HEVC. Por ejemplo, se añade información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S11.1.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la información de movimiento candidato en la lista de información de movimiento candidato basada en bloque incluye por lo menos una de la información de movimiento de un bloque codificado espacialmente contiguo del bloque actual o la información de movimiento de un bloque codificado temporalmente contiguo del bloque actual. Toda la información de movimiento candidato en la lista de información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna de la información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye al menos en un modo de fusión basado en sub-bloque, de fusión de modelo afín, de fusión compleja o de a TmVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, de fusión compleja y de ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. Esto no se enumera o se describe a detalle en la presente invención.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo, entre otros, el siguiente: encontrar primero un bloque codificado afín, obtener información de movimiento de un punto de control del bloque codificado afín, derivar información de movimiento del vértice superior izquierdo e información de movimiento del vértice superior derecho del bloque de codificación actual según un modelo de transformación afín, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.1.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de fusión compleja basado en punto de control. Se añade la información de movimiento del bloque codificado espacialmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específica es, por ejemplo entre otros: obtener información de movimiento de cada punto de control a través de derivación, combinar la información de movimiento de los puntos de control para obtener información de movimiento que no es de traslación (basada en modelo afín), recorrer, en una secuencia configurada previamente, estos modelos obtenidos al combinar la información de movimiento de los puntos de control, verificar la disponibilidad de la información de movimiento candidato en un modelo válido y remover elementos repetidos, e insertar, en la lista de información de movimiento candidato, información de movimiento excluyendo información repetida y no calificada. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.2. Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, la lista de información de movimiento candidato basada en sub-bloque puede ser construida en un modo de predicción avanzada de vector de movimiento temporal (ATMVP). Para ser específicos, la información de movimiento candidato de ATMVP se añade en la lista de información de movimiento candidato según una regla preestablecida. Un método de implementación específico es, por ejemplo entre otros: determinar primero una imagen de referencia colocada a su lado, posteriormente, dividir una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación), cada una con un tamaño de M*N, obtener información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, escalar la información de movimiento, convertir la información de movimiento en información de movimiento de cada subunidad de codificación actual, e insertar secuencialmente información de movimiento correspondiente a un bloque de ubicación disponible en la lista de información de movimiento candidato después de comprobar la disponibilidad y retirar elementos repetidos. Para algunos posibles modos de construcción, hacer referencia a las descripciones relacionadas en la Realización S12.3.
Según el noveno aspecto al decimocuarto aspecto, en un posible proceso de implementación, un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Debe entenderse que otras características e implementaciones de los posibles anteriores métodos según la presente invención pueden depender de funcionalidades de aparatos correspondientes proporcionados en la presente invención y diferentes implementaciones.
Según un decimoquinto aspecto, la presente invención se refiere a un método de predicción de vector de movimiento. El método incluye: obtener información de índice de información de movimiento candidato óptimo de un bloque actual; construir una lista de información de movimiento candidato basándose en la información de índice, donde un modo de obtener un vector de movimiento incluido en la lista de información de movimiento candidato varía con un campo de la información de índice; determinar un vector de movimiento óptimo en la lista de información de movimiento candidato basándose en la información de índice; y predecir el bloque actual basándose en el vector de movimiento óptimo.
Según el decimoquinto aspecto, en un posible proceso de implementación, cuando la información de índice es un primer valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en por lo menos uno de un modo HEVC o de un modo no adyacente.
Según el decimoquinto aspecto, en un posible proceso de implementación, cuando la información de índice es un segundo valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo AFÍN, de un modo ATMVP, de un modo STMVP o de un modo plano.
Según el decimoquinto aspecto, en un posible proceso de implementación, cuando la información de índice es un tercer valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo HEVC, un modo no adyacente, un modo ATMVP o un modo STMVP.
Según el decimoquinto aspecto, en un posible proceso de implementación, cuando la información de índice es un cuarto valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo AFÍN o de un modo plano.
Según el decimoquinto aspecto, en un posible proceso de implementación, la obtención de la información de índice de información de movimiento candidato óptimo de un bloque actual incluye: si el bloque actual satisface una primera condición preestablecida, la información de índice obtenida se usa para indicar que se construya la lista de información de movimiento candidato del bloque actual.
Según el decimoquinto aspecto, en un posible proceso de implementación, la obtención de la información de índice de información de movimiento candidato óptimo de un bloque actual incluye: si el bloque actual satisface una segunda condición preestablecida, la información de índice obtenida se usa para indicar que se construya una lista de información de movimiento candidato de un sub-bloque actual, en donde el sub-bloque actual se obtiene dividiendo el bloque actual.
Según el decimoquinto aspecto, en un posible proceso de implementación, la obtención de la información de índice de información de movimiento candidato óptimo de un bloque actual incluye: si el bloque actual no satisface la primera condición preestablecida, analizar una corriente de bits para obtener un índice de la lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo.
Según un decimosexto aspecto, la presente invención se refiere a un aparato de predicción de vector de movimiento. El aparato incluye: un módulo de obtención, configurado para obtener información de índice de información de movimiento candidato óptimo de un bloque actual; un módulo de construcción, configurado para construir una lista de información de movimiento candidato basándose en la información de índice, donde un modo de obtener un vector de movimiento incluido en la lista de información de movimiento candidato varía con un campo de la información de índice; un módulo de determinación, configurado para determinar un vector de movimiento óptimo de la lista de información de movimiento candidato basándose en la información de índice; y un módulo de predicción, configurado para predecir el bloque actual basándose en el vector de movimiento óptimo.
Según el decimosexto aspecto, en un posible proceso de implementación, cuando la información de índice es un primer valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo HEVC o un modo no adyacente.
Según el decimosexto aspecto, en un posible proceso de implementación, cuando la información de índice es un segundo valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo AFÍN, ATMVP, STMVP o plano.
Según el decimosexto aspecto, en un posible proceso de implementación, cuando la información de índice es un tercer valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo HEVC, un modo no adyacente, un modo ATMVP o un modo STMVP.
Según el decimosexto aspecto, en un posible proceso de implementación, cuando la información de índice es un cuarto valor de característica, la lista de información de movimiento candidato incluye un vector de movimiento candidato obtenido en al menos uno de un modo AFÍN o un modo plano.
Según un decimoséptimo aspecto, la presente invención se refiere a un dispositivo de codificación de video. El dispositivo de codificación de video incluye una memoria no volátil y un procesador, acoplados uno a otra. El procesador invoca código de programa almacenado en la memoria para realizar cualquiera de los aspectos anteriores o los posibles métodos de diseño.
Según un decimoctavo aspecto, la presente invención se refiere a un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena un programa informático. Cuando el programa informático es ejecutado en un procesador, se implementa cualquiera de los aspectos anteriores o los posibles métodos de diseño.
Según un decimonoveno aspecto, la presente invención se refiere a un decodificador, que incluye una memoria y un procesador. El decodificador puede configurarse para implementar consecuentemente el método de decodificación, el aparato de decodificación y las posibles soluciones de implementación en cualquiera de los aspectos anteriores.
Según un vigésimo aspecto, la presente invención se refiere a un codificador, incluyendo una memoria y un procesador. El codificador puede configurarse para implementar de manera correspondiente un método de codificación, un aparato de codificación y una posible solución de implementación en cualquiera de los aspectos anteriores.
Debe entenderse que las funciones del codificador y del decodificador se pueden acoplar entre sí. Por tanto, en algunos posibles casos, un método en un lado del decodificador puede corresponder a un lado del codificador, y un método en el lado del codificador puede corresponder al lado del decodificador. Los detalles no se describen en la presente invención.
Debe entenderse que, debido a la diversidad de soluciones de implementación, las posibles anteriores implementaciones y descripciones pueden combinarse libremente sin violar la lógica de combinación. Son similares los efectos beneficiosos obtenidos en los aspectos e implementaciones factibles correspondientes. De nuevo no se describen detalles. Los detalles de una o más realizaciones se describen en los dibujos adjuntos y en la siguiente descripción. Otras características, propósitos y ventajas son claras a partir de la memoria descriptiva, los dibujos adjuntos y las reivindicaciones.
Breve descripción de los dibujos
La FIG. 1 es un diagrama esquemático de un procedimiento de codificación de video.
La FIG. 2 es un diagrama esquemático de inter-predicción.
La FIG. 3 es un diagrama esquemático de un procedimiento de decodificación de video.
La FIG. 4 es un diagrama esquemático de ubicaciones candidatos de información de movimiento.
La FIG. 5 es un diagrama esquemático de un modo de predicción avanzada de vector de movimiento de transformación afín;
La FIG. 6 es un diagrama esquemático de un sistema de transmisión de video.
La FIG. 7 es un diagrama esquemático de información de movimiento de bloques candidatos espacialmente contiguos.
La FIG. 8 es un diagrama esquemático de información de movimiento de bloques candidatos espacialmente no contiguos.
La FIG. 9 es un diagrama esquemático de un modo de fusión de modelo afín.
La FIG. 10 es un diagrama esquemático de un modo de fusión complejo.
La FIG. 11 es un diagrama esquemático de un modo de predicción de ATMVP.
La FIG. 12 es un diagrama esquemático de un modo de predicción de STMVP.
La FIG. 13 es un diagrama esquemático de derivación de vector de movimiento plano.
La FIG. 14 muestra un método de decodificación según una realización de la presente invención.
La FIG. 15 muestra otro método de decodificación según una realización de la presente invención.
La FIG. 16 muestra una tabla de sintaxis según una realización de la presente invención.
La FIG. 17 muestra otro método de decodificación según una realización de la presente invención.
La FIG. 18 muestra un aparato de decodificación según una realización de la presente invención.
La FIG. 19 muestra un dispositivo de codificación según una realización de la presente invención.
Descripción de realizaciones
Lo siguiente describe las realizaciones de esta solicitud con referencia a los dibujos adjuntos en las realizaciones de esta solicitud.
Como se muestra en la FIG. 1, un proceso de codificación incluye principalmente las siguientes etapas: intrapredicción, inter-predicción, transformación, cuantificación, codificación entrópica, filtrado en bucle (principalmente filtrado de desbloqueo), y similares. Después de que una imagen se divide en bloques de codificación, se realiza una intra-predicción o inter-predicción. Posteriormente, se realiza una transformación o cuantificación después de obtener la parte residual. Finalmente, se realiza una codificación entrópica y se emite una corriente de bits. Aquí, un bloque de codificación es un grupo con un tamaño de muestras de M*N (en donde M puede ser igual o diferente a N). Adicionalmente, se da un valor de muestra de cada ubicación de muestra.
Intra-predicción significa predecir un valor de muestra de una muestra en un bloque de codificación actual basándose en un valor de muestra de una muestra en un área reconstruida en una imagen actual.
Inter-predicción significa buscar una imagen reconstruida para un bloque de referencia coincidente para un bloque de codificación actual en una imagen actual; usar un valor de muestra de una muestra en el bloque de referencia como información de predicción o un predictor (en adelante, no se hace ninguna diferenciación entre la información de predicción y el predictor) de un valor de muestra de una muestra en el bloque de codificación actual, donde este proceso se denomina como estimación de movimiento (ME) (tal como se muestra en la FIG.
2B); y transmitir información de movimiento del bloque de codificación actual.
Debe notarse que la información de movimiento del bloque de codificación actual incluye información de indicación de dirección de predicción (generalmente predicción hacia adelante, predicción hacia atrás o predicción bidireccional), uno o dos vectores de movimiento (MV) que apuntan al bloque de referencia, e información de indicación (generalmente indicado como un índice de referencia) de una imagen en la cual está ubicado el bloque de referencia.
La predicción hacia adelante significa seleccionar una imagen de referencia a partir de un conjunto de imágenes de referencia hacia adelante, para obtener un bloque de referencia para el bloque de codificación actual. La predicción hacia atrás significa seleccionar una imagen de referencia a partir de un conjunto de imágenes de referencia hacia atrás, para obtener un bloque de referencia para el bloque de codificación actual. La predicción bidireccional significa seleccionar una imagen de referencia a partir de un conjunto de imágenes de referencia hacia adelante y una imagen de referencia a partir de un conjunto de imágenes de referencia hacia atrás, para obtener un bloque de referencia. Cuando se usa el método de predicción bidireccional, el bloque de codificación actual tiene dos bloques de referencia. Cada bloque de referencia requiere un vector de movimiento y un índice de referencia para una indicación. Un predictor de un valor de muestra de una muestra en el bloque actual se determina basándose en valores de muestra de muestras en los dos bloques de referencia.
En el proceso de estimación de movimiento, el bloque de codificación actual necesita probar una pluralidad de bloques de referencia en la imagen de referencia, y un bloque de referencia específico o bloques específicos que son finalmente usados para predicción es/son determinados a través de optimización de distorsión de tasa (RDO) o usando otro método.
Después de que se obtiene la información de predicción a través de intra-predicción o inter-predicción, se obtiene la información residual al restar la información de predicción correspondiente del valor de muestra de la muestra en el bloque de codificación actual. Posteriormente, la información residual se transforma usando un método tal como transformación discreta de coseno (DCT). Luego, se obtiene una corriente de bits a través de la cuantificación y codificación entrópica. Una operación de filtrado necesita ser realizada sobre un resultado añadiendo una señal predicha y una señal residual reconstruida, para obtener una señal reconstruida. La señal reconstruida se usa como una señal de referencia para una codificación posterior.
La decodificación es un proceso inverso a la codificación. Por ejemplo, como se muestra en la FIG. 3, se realiza primero una decodificación entrópica, cuantificación inversa y transformación inversa para obtener la información residual; y la corriente de bits se decodifica para determinar si se usa la intra-predicción o inter-predicción para el bloque de codificación actual. Si se usa la intra-predicción, la información de predicción se construye basándose en un valor de muestra de una muestra en un área reconstruida alrededor del bloque de codificación actual usando el método de intra-predicción. Si se usa la inter-predicción, la información de movimiento necesita ser analizada, se determina un bloque de referencia en una imagen reconstruida basándose en la información de movimiento obtenida a través del análisis, y se usa un valor de muestra de una muestra en el bloque como información de predicción. Dicho proceso se denomina como compensación de movimiento (MC). Se puede obtener información reconstruida al realizar una operación de filtrado sobre un resultado añadiendo la información de predicción e información residual.
En HEVC, se usan dos modos de inter-predicción: un modo de predicción avanzada de vector de movimiento (AMVP) y un modo de fusión.
En el modo AMVP, se construye una lista de vectores de movimiento candidatos basándose en información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual. Posteriormente, se determina un vector de movimiento óptimo a partir de la lista de vectores de movimiento candidatos, y el vector de movimiento óptimo se usa como un predictor de vector de movimiento (MVP) del bloque de codificación actual. Un coste de distorsión de tasa se calcula de acuerdo con la fórmula (1), en donde J representa un coste de distorsión de tasa (RD Cost), SAD representa una suma de diferencias absolutas (Sum of Absolute Differences, SAD) entre un valor de muestra original y un valor de muestra predicha que se obtiene a través de estimación de movimiento realizada usando un predictor de vector de movimiento candidato, R representa una tasa de bit y A representa un multiplicador de Lagrange. Un lado del codificador transfiere, a un lado del decodificador, un valor de índice del predictor de vector de movimiento seleccionado en la lista de vectores de movimiento candidatos y un valor de índice de referencia. Además, se realiza una búsqueda de movimiento en un área contigua céntrica de MVP, para obtener un vector de movimiento real del bloque de codificación actual. El lado del codificador transfiere una diferencia (Motion vector difference) entre el MVP y el vector de movimiento actual al lado del decodificador.
J = SAD AR (1)
En el modo de fusión, una lista de información de movimiento candidato se construye primero basándose en información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque de codificación actual; la información de movimiento óptimo es posteriormente determinada a partir de la lista de información de movimiento candidato según un criterio de coste de distorsión de tasa, y la información de movimiento óptimo se usa como información de movimiento del bloque de codificación actual; y un valor de índice (indicado como un índice de fusión, el cual también se aplica a la siguiente descripción) de una ubicación de la información de movimiento óptimo en la lista de información de movimiento candidato es posteriormente transferido al lado del decodificador. La información de movimiento candidato del bloque codificado espacial o temporalmente contiguo del bloque de codificación actual se muestra en la FIG. 4. La información de movimiento candidato espacial es procedente de cinco bloques espacialmente contiguos (Ao, A i , Bo, Bi y B2). Si un bloque contiguo no está disponible o el bloque contiguo es intra-codificado, no se añade la información de movimiento del bloque contiguo en la lista de información de movimiento candidato. La información de movimiento candidato temporal del bloque de codificación actual se obtiene al escalar un MV de un bloque colocado a su lado en una imagen de referencia basándose en la imagen de referencia y un recuento de orden de imagen (POC) de una imagen actual. Primero se determina si está disponible un bloque en una ubicación T en la imagen de referencia. Si el bloque no está disponible, se selecciona un bloque en una ubicación C.
Se puede aprender que la lista de vector de movimiento candidato (también denominada como una lista de candidatos, la cual puede ser denominada como una lista de candidatos para mayor brevedad) necesita ser mantenida tanto en el modo AMVP como en el modo de fusión. Antes de que se agregue nueva información de movimiento a la lista de candidatos, primero se comprueba si ya existe la misma información de movimiento en la lista. Si existe en la lista la misma información de movimiento, la información de movimiento no se añade a dicha lista. El proceso de comprobación se denomina como recorte de la lista de vectores de movimiento candidatos. El recorte de la lista impide la existencia de la misma información de movimiento en la lista, y esto evita un cálculo redundante de coste de distorsión de tasa.
En la inter-predicción de HEVC, todas las muestras en un bloque de codificación usan la misma información de movimiento, y posteriormente se realiza una compensación de movimiento basándose en la información de movimiento, para obtener predictores de las muestras del bloque de codificación. Sin embargo, en el bloque de codificación, no todas las muestras tienen una misma característica de movimiento. El uso de la misma información de movimiento puede dar como resultado imprecisión de la predicción de compensación de movimiento y dar como resultado en más información residual.
En las normas de codificación de video existentes, se usa una estimación de movimiento de coincidencia de bloques según un modelo de movimiento de traslación, y se asume que todas las muestras en un bloque tienen movimiento consistente. Sin embargo, en el mundo real, existe una variedad de movimientos. Muchos objetos, por ejemplo, un objeto giratorio, una montaña rusa que gira en diferentes direcciones, fuegos artificiales y algunas acrobacias en películas, no son en un movimiento de traslación. Para estos objetos en movimiento, en particular aquellos en un escenario de UGC (User Generated Content), si se realiza la codificación usando una tecnología de compensación de movimiento de bloque basada en modelo de movimiento de traslación en la norma de codificación existente, la eficiencia de codificación resulta muy afectada. Por ello, tanto en la industria como por Huawei, se han llevado a cabo estudios en un modelo de movimiento que no es de traslación. En particular, se han llevado a cabo estudios en profundidad en torno a un modelo de movimiento basado en transformación afín para mejorar de forma adicional la eficiencia de codificación.
Una predicción basada en modelo de movimiento que no es de traslación significa que la información de movimiento de cada subunidad de compensación de movimiento en el bloque de codificación actual se deriva usando un mismo modelo de movimiento tanto del lado del codificador como del lado del decodificador, y se realiza la compensación de movimiento basándose en la información de movimiento de la unidad de compensación de movimiento para obtener un bloque de predicción, para mejorar la eficiencia de predicción. Los modelos de movimiento comúnmente usados incluyen un modelo de transformación afín de 6 parámetros y un modelo de transformación afín de 4 parámetros.
El modelo de transformación afín de 4 parámetros se muestra en la fórmula (2):
rvx = a1 a 3x a4y
ivy = a2 —a4x a3y( )
El modelo de transformación afín de 4 parámetros puede representarse usando vectores de movimiento de dos muestras y coordenadas de los vectores de movimiento con respecto a una muestra del vértice superior izquierdo del bloque de codificación actual, y una muestra usada para representar un parámetro de modelo de movimiento se denomina como un punto de control. Si se usan muestras en el vértice superior izquierdo (0, 0) y en el vértice superior derecho (W, 0) como puntos de control, se determinan primero vectores de movimiento (vxo, vyo) y (vxi , vyi ) de los puntos de control en el vértice superior izquierdo y el vértice superior derecho del bloque de codificación actual. Posteriormente, la información de movimiento de cada subunidad de compensación de movimiento en el bloque de codificación actual se deriva según la fórmula (3), en donde (x, y) representan coordenadas, con respecto a la muestra en el vértice superior izquierdo del bloque de codificación actual, de una subunidad de compensación de movimiento, y W y H representan respectivamente el ancho y la altura del bloque de codificación actual.
El modelo de transformación afín de 6 parámetros se muestra en la fórmula (4):
<vx=ax+ a3x a4y
W=a 2 +«5^+«ey (4)
El modelo de transformación afín de 6 parámetros puede representarse usando vectores de movimiento de tres muestras y sus coordenadas con respecto a la muestra superior izquierda del bloque de codificación actual. Si se usan muestras en el vértice superior izquierdo (0, 0), el vértice superior derecho (W, 0) y el vértice inferior izquierdo (0, H) como puntos de control, se determinan primero vectores de movimiento (vx<0>, vy<0>), (vxi, vyi) y (vx<2>, vy<2>) de los puntos de control en el vértice superior izquierdo, el vértice superior derecho y el vértice inferior izquierdo del bloque de codificación actual. Posteriormente, la información de movimiento de cada subunidad de compensación de movimiento en el bloque de codificación actual se deriva según la fórmula (5), en donde (x, y) representan coordenadas, con respecto a la muestra en el vértice superior izquierdo del bloque de codificación actual, de una subunidad de compensación de movimiento, y W representa el ancho del bloque de codificación actual.
Un modelo bilineal de 8 parámetros se muestra en la fórmula (6):
rvx = a± a 3x a4y a7xy(6)
[vy = a2 a 5x a6y a8xy( )
El modelo bilineal de 8 parámetros puede representarse usando vectores de movimiento de cuatro muestras y coordenadas de los vectores de movimiento con respecto a una muestra del vértice superior izquierdo del bloque de codificación actual. Si se usan muestras del vértice superior izquierdo (0, 0), del vértice superior derecho (W, 0), del vértice inferior izquierdo (0, H) y del vértice inferior derecho (W, H) como puntos de control, se determinan primero vectores de movimiento (vx<0>, vyü), (vxi , vyi ), (vx<2>, vy<2>) y (vx<3>, vy<3>) de los puntos de control del vértice superior izquierdo, del vértice superior derecho, el vértice inferior izquierdo y del vértice inferior derecho del bloque de codificación actual. Posteriormente, la información de movimiento de cada subunidad de compensación de movimiento en el bloque de codificación actual se deriva según la fórmula (7), en donde (x, y) representan coordenadas, con respecto a la muestra en el vértice superior izquierdo del bloque de codificación actual, de una subunidad de compensación de movimiento, y W y H son respectivamente el ancho y la altura del bloque de codificación actual.
Un bloque de codificación que se predice según el modelo de movimiento que no es de traslación se denomina como un bloque de codificación que no es de traslación.
En general, se puede obtener información de movimiento de un punto de control del bloque de codificación que no es de traslación en un en un modo de predicción avanzada de vector de movimiento (AMVP) basado en transformación afín o un modo de fusión (Merge) basado en transformación afín.
A continuación, se describe un método para obtener información de movimiento de dos puntos de control en el modelo de transformación afín de 4 parámetros.
Modo de predicción avanzada de vector de movimiento basado en transformación afín:
(1) Construir una 2-tupla de vector de movimiento candidato
Los vectores de movimiento del vértice superior izquierdo y del vértice superior derecho de un bloque de codificación actual se determinan basándose en información de movimiento de un bloque codificado contiguo del bloque de codificación actual. Como se muestra en la FIG. 5, se usan vectores de movimiento de bloques codificados contiguos A, B y C del vértice superior izquierdo como vectores de movimiento candidatos del vértice superior izquierdo del bloque de codificación actual, y se usan vectores de movimiento de bloques codificados contiguos D y E del vértice superior derecho como vectores de movimiento candidatos del vértice superior derecho del bloque actual. Los vectores de movimiento candidatos del vértice superior izquierdo y los vectores de movimiento candidatos del vértice superior derecho se combinan para constituir una cola de 2-tupla de vector de movimiento candidato de dos puntos de control:
{(.V 0A, V 1D), ( V 0A, V 1 E ) , ( V 0B , V 1D ), ( V 0B, V 1 E ) , ( V 0C, V 1D ),(V 0C, V 1E) 1
v 0representa el vector de movimiento candidato del vértice superior izquierdo, yv±representa el vector de movimiento candidato del vértice superior derecho. Se indexan las ubicaciones de los vectores de movimiento candidatos en la cola, en donde los valores de índice son 0, 1,2, 3, 4 y 5.
Opcionalmente, la cola de 2-tupla de vector de movimiento candidato se recorta y se clasifica según una regla particular, y se puede realizar el truncado y llenado en la cola de una secuencia de 2 elementos de vector de movimiento candidato para obtener una cantidad particular de elementos incluidos en la cola.
(2) Determinar una secuencia de 2 elementos de vector de movimiento candidato óptimo
En un lado del codificador, un vector de movimiento de cada subunidad de compensación de movimiento (que es una muestra o un bloque de muestras, obtenido a través de la división usando un método específico, con un tamaño de N_1*N_2) en el bloque de codificación actual se obtiene usando cada secuencia de 2 elementos de vector de movimiento candidato según la fórmula (3), para obtener un valor de muestra de una ubicación en una imagen de referencia a la cual apunta un vector de movimiento de cada subunidad de compensación de movimiento. El valor de muestra se usa como un predictor de un valor de muestra de una muestra en el bloque de codificación actual para compensación de movimiento de transformación afín. Se calcula un valor promedio de diferencias entre valores originales y predictores que son de muestras en el bloque de codificación actual, y vectores de movimiento en una secuencia de 2 elementos de vector de movimiento candidato correspondiente a una diferencia promedio mínima se seleccionan como predictores de vector de movimiento de los dos puntos de control en el bloque de codificación actual. Un valor de índice que representa una ubicación de la secuencia de 2 elementos en la cola de secuencia de 2 elementos de vector de movimiento candidato se codifica en una corriente de bits, y se envía a un decodificador.
En un lado del decodificador, el valor de índice se analiza para obtener los predictores de vector de movimiento de los dos puntos de control.
(3) Determinar un vector de movimiento de un punto de control
En el lado del codificador, se realiza una búsqueda de movimiento dentro de un intervalo de búsqueda específico usando los predictores de vector de movimiento de los dos puntos de control como puntos de inicio de búsqueda, para obtener los vectores de movimiento de los dos puntos de control. Las diferencias entre los vectores de movimiento y los predictores de vector de movimiento de los dos puntos de control se transfieren al lado del decodificador.
En el lado del decodificador, las diferencias de vector de movimiento de los dos puntos de control se analizan y se añaden a los predictores de vector de movimiento, para obtener los vectores de movimiento de los puntos de control.
La FIG. 6 muestra una estructura de sistema según la presente invención. La presente invención se relaciona principalmente con la codificación de video y decodificación de video en la estructura de sistema. Típicamente, un sistema de transmisión de video existente incluye recogida, codificación, envío, recepción, decodificación y visualización. Un módulo de recogida incluye una cámara o un módulo de cámara y un pre-procesador, y convierte una señal óptica en una secuencia de video digital. Posteriormente, la secuencia de video es codificada por un codificador y convertida en una corriente de bits. La corriente de bits es posteriormente enviada por un módulo de envío a un módulo de recepción a través de una red, convertida por el módulo de recepción, y decodificada y reconstruida por un decodificador en la secuencia de video. Finalmente, la secuencia de video reconstruida se somete a un procesamiento posterior tal como una representación, y se envía a un dispositivo para su visualización.
La presente invención se relaciona principalmente con la codificación de video y decodificación de video en el la estructura de sistema.
Un escenario de aplicación de la presente invención se muestra en un sistema de codificación y decodificación de video basado en estructura de codificación híbrida mostrado en la FIG. 1 y la FIG. 2. Un proceso de codificación, tal como se muestra en la FIG. 1, incluye principalmente intra-predicción, inter-predicción, transformación, cuantificación, codificación entrópica, filtrado en bucle y otras etapas. Estos procedimientos se usan principalmente para implementar respectivamente las siguientes operaciones: obtener un bloque de predicción a partir de una muestra contigua de una imagen actual, calcular información de MV y obtener un bloque de predicción a partir de una imagen de referencia, transformar una imagen residual a partir de un dominio de muestra a un dominio de transformación, comprimir un coeficiente de dominio de transformación, comprimir información de codificación y realizar procesamiento posterior en una imagen reconstruida. Las operaciones en un sistema de decodificación, tal como se muestra en la FIG. 2 son un proceso inverso realizado en el proceso de codificación. La presente invención se aplica principalmente a la inter-predicción en el sistema de codificación y decodificación de video.
Realización 1 (Lado del Codificador)
Breves descripciones: Una listo y una listl se construyen en diferentes modos de construcción de lista de información de movimiento para un bloque actual. La list0 es una lista de vectores de movimiento candidatos usada para el bloque actual cuando el bloque actual se predice usando un bloque como una unidad de predicción básica. La list1 es una lista de vectores de movimiento candidatos usada para el bloque actual cuando el bloque actual se predice usando un sub-bloque como una unidad de predicción básica. El bloque actual puede dividirse en una pluralidad de sub-bloques, y cada sub-bloque puede ser de una forma cuadrada o rectangular. El sub-bloque puede tener, por ejemplo, entre otros, un tamaño de 4*4, 8*8 o 4*8. La listo y la listl incluyen información de movimiento candidato. La información de movimiento candidato incluye un vector de movimiento, una dirección de predicción, un índice de referencia y similares. Brevemente, la listO y la listl se construyen en diferentes modos de construcción de lista de información de movimiento aplicables a características del bloque actual.
Por ejemplo, la listo basada en bloque puede incluir un modo HEVC y un modo no adyacente; y
la listl basada en sub-bloque puede incluir un modo AFÍN (incluyendo un modo de fusión de modelo afín basado en modelo de movimiento y/o un modo de fusión compleja basado en punto de control), un modo ATMVP, un modo STMVP y un modo plano.
En un proceso de implementación específico, la listo basada en bloque puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo HEVC y el modo no adyacente, y la listl basada en sub-bloque puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo AFÍN, el modo ATMVP, el modo STMVP y el modo plano. Por ejemplo, la listl puede incluir alternativamente solo el modo ATMVP. En esta solicitud, se puede usar una pluralidad de modos para la descripción.
S11: Construir una primera lista (ListO) de información de movimiento candidato del bloque de codificación actual, es decir, construir la lista de información de movimiento candidato basada en bloque. La información de movimiento en la Listo puede ser denominada como información de movimiento candidato basada en bloque. S11.1: Se añade información de movimiento de un bloque codificado espacial y/o temporalmente contiguo del bloque de codificación actual en la lista de información de movimiento candidato según una regla preestablecida en el modo HEVC.
La FIG. 7 muestra información de movimiento de bloques candidatos espacialmente contiguos. En el lado más a la izquierda, se seleccionan bloques candidatos espaciales en la siguiente secuencia: ai , bi , bo, ao y (b2). Si alguno de los primeros cuatro bloques no está disponible, se comprueba si existe y está disponible la información de movimiento de b2. Si existe y está disponible la información de movimiento de b2, se añade a la información de movimiento de b2 en la lista de información de movimiento candidato. Posteriormente, la información de movimiento candidato temporal y/o un vector cero se considera/consideran para ser añadido a la lista de información de movimiento. Debe entenderse que puede haber una pluralidad de reglas preestablecidas para seleccionar un candidato espacial y un candidato temporal. Esto no se limita en la presente invención.
En un posible proceso de implementación, una secuencia de derivación puede ser ao, bo, bi , ai y b2. La ubicación b2 se considera únicamente si alguna CU en las ubicaciones ao, bo, bi y ai no está disponible (por ejemplo, la CU pertenece a otro segmento u otro mosaico) o si la CU se intra-codifica. Después de añadirse la ubicación candidato ai , necesita realizarse la comprobación de redundancia cuando se añaden los candidatos restantes. La comprobación de redundancia impide que un elemento candidato con la misma información de movimiento sea añadido a la lista, con lo cual se mejora la eficiencia de codificación. Para reducir la complejidad de cálculo, algunos candidatos pueden ser considerados de forma selectiva en la comprobación de redundancia. Por ejemplo, un candidato se añade a la lista solo cuando no hay una misma información de movimiento para el candidato correspondiente usado para la comprobación de redundancia.
En una posible implementación, una máxima cantidad de bloques candidatos espaciales es 4. Adicionalmente, si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la listo es igual a MaxNumMergeCand, se detiene la inserción o adición. Una máxima cantidad de piezas MaxNumMergeCand de información de movimiento candidato en una Listi de candidatos puede ser transmitida en una corriente de bits, o puede usarse un valor por defecto en la codificación y decodificación. En esta realización, la máxima cantidad de piezas de información de movimiento candidato es, por ejemplo, 5. Opcionalmente, la lista de información de movimiento candidato basada en bloque incluye una lista de información de movimiento candidato que se construye en un modo de fusión convencional (que también puede ser expresado como un modo general_merge o regular_merge en algunos escenarios) definido según una norma HEVC o una versión evolucionada de la norma HEVC. Toda información de movimiento candidato en la lista de información de movimiento candidato basada en bloque puede ser información de movimiento de un bloque codificado espacial o temporalmente contiguo del bloque actual. De forma alternativa, alguna información de movimiento candidato puede ser la información de movimiento del bloque codificado espacial o temporalmente contiguo del bloque actual, y alguna de la información de movimiento candidato puede ser información de movimiento obtenida de otra manera.
S11.2: Añadir, a la primera lista de información de movimiento candidato según la regla preestablecida, información de movimiento de un bloque codificado espacialmente no contiguo del bloque de codificación actual. Se muestran vectores de movimiento de bloques candidatos espacialmente no contiguos en la siguiente figura (FIG. 8). Los bloques candidatos espaciales se seleccionan en la siguiente secuencia: un bloque candidato 6 a un bloque candidato 49. La información de movimiento correspondiente a un bloque de ubicación disponible se inserta secuencialmente en la primera lista de información de movimiento candidato después de comprobarse la disponibilidad y de que hayan sido retirados los elementos repetidos. Si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list0 es igual a MaxNumMergeCand, se detiene la inserción.
La list0 se construye basada en S11.1 y S11.2. Si la cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list0 es menor de 5, la cantidad de piezas de información de movimiento candidato en la lista se habilita para alcanzar una cantidad especificada añadiendo un vector de movimiento cero. Por ejemplo, la primera lista (List0) de información de movimiento candidato del bloque actual puede ser de la siguiente forma.
Tabla 1
Alternativamente, la primera lista (List0) de información de movimiento candidato del bloque actual puede ser de la siguiente forma.
Tabla 2
Debe notarse que, en la presente invención, en S11 de construir la lista de información de movimiento candidato basada en bloque, no se limita a una secuencia de añadir la información de movimiento candidato en la lista en S11.1 y añadir la información de movimiento candidato en la lista en S11.2. Se puede añadir primero la información de movimiento en S11.1, y luego se añade la información de movimiento en S11.2; se puede añadir primero la información de movimiento en S11.2, y luego se añade la información de movimiento en S11.1; o la información de movimiento en S11.1 y S11.2 puede añadirse de manera alternativa en la lista. De forma alternativa, cualquiera o ambas de S11.1 y S11.2 pueden ser realizadas para S11.
S12: Construir una segunda lista (List1) de información de movimiento candidato de un sub-bloque de codificación actual, es decir, construir la lista de información de movimiento candidato basada en sub-bloque. La información de movimiento en la list1 puede ser denominada como información de movimiento candidato basada en sub-bloque.
S12.1: Se añade información de movimiento de un bloque codificado espacialmente contiguo al bloque de codificación actual en la lista (List1) de información de movimiento candidato según una regla preestablecida en un modo de fusión de modelo afín (AMM) basado en modelo de movimiento.
Para mejorar la eficiencia de codificación cuando el bloque actual es un bloque de predicción de transformación afín, cuando se codifica información de movimiento de un punto de control del bloque actual, se selecciona un bloque a partir de bloques contiguos del bloque actual según con una política de selección preestablecida, y se deriva información de movimiento de un vértice del bloque actual basándose en información de movimiento de un vértice del bloque (esto puede denominarse como vectores de movimiento de punto de control afín de luma a partir de un bloque contiguo en la norma). El lado del codificador no necesita transferir información de indicación del bloque contiguo seleccionado a un lado del decodificador. En este caso, el bloque actual y el bloque contiguo usan un mismo modelo de transformación afín.
Como se muestra en la FIG. 9, A, B, C, D y E son bloques codificados contiguos del bloque de codificación actual, y se realiza el recorrido en una secuencia de A, B, C, D y E para encontrar un bloque codificado afín, se obtiene información de movimiento de un punto de control del bloque codificado afín, y se deriva adicionalmente información de movimiento del vértice superior izquierdo y del vértice superior derecho del bloque de codificación actual.
A continuación se usa A como un ejemplo para describir un proceso de derivación, y otros casos son similares. Si un bloque codificado correspondiente a A es un bloque codificado afín, se obtiene un vector de movimiento (vx2, vy2) del vértice superior izquierdo (x2, y2) y un vector de movimiento (vx3, vy3) del vértice de superior derecho (x3, y3) del bloque codificado afín. Un vector de movimiento (vx<0>, vy<0>) del vértice superior izquierdo (x0, y<0>) del bloque de codificación actual se calcula según la fórmula (8). Un vector de movimiento (vxi, vyi) del vértice superior derecho (xi, yi) del bloque de codificación actual se calcula según la fórmula (9).
La información de movimiento correspondiente a un bloque de ubicación disponible se inserta secuencialmente en la segunda lista (Listi) de información de movimiento candidato después de comprobarse la disponibilidad y de haberse retirado los elementos repetidos. Si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la listi es igual a MaxNumMergeCand, se detiene la inserción.
Si2.2: Añadir, a la segunda lista (Listi) de información de movimiento candidato según una regla preestablecida en un modo de fusión compleja basado en punto de control, información de movimiento de un bloque codificado espacialmente contiguo del bloque de codificación actual.
Primero, se deriva información de movimiento de cada punto de control. Como se muestra en la FIG. i0, un CPk (k = i, 2, 3, 4) representa un punto de control késimo. Ac, Ai, A<2>, Bo, Bi, B<2>, y B<3>representan ubicaciones espacialmente contiguas del bloque actual, y se usan para predecir el CPk (k = i, 2, 3). Tr representa una ubicación temporalmente contigua del bloque actual, y se usa para predecir el CP<4>.
Las coordenadas de CPi, CP<2>, CP<3>y CP<4>son (0, 0), (W, 0), (H, 0) y (W, H), respectivamente, en donde W y H representan el ancho y la altura del bloque actual.
Para cada punto de control se obtiene información de movimiento de los puntos de control en la siguiente secuencia:
Para el CPi, una secuencia de comprobación es B2->A2->B3. Si B<2>está disponible, se usa información de movimiento de B2. De otro modo, se comprueban A<2>y B<3>. Si no está disponible la información de movimiento de las tres ubicaciones, no se puede obtener información de movimiento del CPi.
Para el CP<2>, una secuencia de verificación es B<0>->Bi.
Para el CP<3>, una secuencia de verificación es A<0>->Ai.
Para el CP<4>, se usa información de movimiento de Tr.
En la presente memoria, “disponible” significa que un bloque en una ubicación X se codifica y se inter-codifica. De otro modo, la ubicación X no está disponible.
Debe notarse que otros métodos para obtener información de movimiento de un punto de control también son aplicables a la presente invención. En la presente memoria no se describen detalles.
Posteriormente, la información de movimiento de los puntos de control se combina para obtener información de movimiento que no es de traslación (basada en modelo afín).
La información de movimiento de dos puntos de control se combina para construir un modelo de transformación afín de 4 parámetros. Dos de los puntos de control se combinan de la siguiente manera: {CP1 , CP4}, {CP2, CP3}, {CP1 , CP2}, {CP2, CP4}, {CP1 , CP3} y {CP3, CP4}. Por ejemplo, un modelo de transformación afín de 4 parámetros construido con los puntos de control CP1 y CP2 se denomina como afín (CP1 , CP2).
La información de movimiento de tres puntos de control se combina para construir un modelo de transformación afín de 6 parámetros. Tres de los puntos de control se combinan de la siguiente forma: {CP1 , CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} y {CP1 , CP3, CP4}. Por ejemplo, un modelo de transformación afín de 6 parámetros construido con los puntos de control CP1 , CP2 y CP3 se denomina como afín (CP1 , CP2, CP3).
La información de movimiento de cuatro puntos de control se combina para construir un modelo bilineal de 8 parámetros. Un modelo bilineal de 8 parámetros construido con los puntos de control CP1 , CP2, CP3 y CP4 se denomina como bilineal (CP1 , CP2, CP3, CP4).
Estos modelos (diferentes tipos de modelos o un mismo tipo de modelo) se recorren en una secuencia previamente configurada. Si no está disponible la información de movimiento de un punto de control correspondiente a un modelo de combinación, el modelo se considera como no disponible. De otra forma, se determina un índice de referencia (los vectores de movimiento de todos los puntos de control apuntan a una misma imagen de referencia) del modelo, y se escala un vector de movimiento del punto de control. Por ejemplo, el vector de movimiento se escala según la fórmula (10). Un coeficiente de escalamiento es una relación de una distancia desde una imagen actual hasta una imagen de referencia versus una distancia desde la imagen actual hasta una imagen de referencia de un bloque contiguo. Si la información de movimiento de todos los puntos de control es consistente tras el escalamiento, el modelo es inválido. De otro modo, la información de movimiento de los puntos de control que construyen el modelo se añade a la lista de información de movimiento candidato. MVS -C--u
u-r
r-P-P-o
o-c-c----D
S-r-e-s
c-P
P--o
o-c .„TT
C c-XMV(10)
La información de movimiento correspondiente a un bloque de localización disponible se inserta secuencialmente en la segunda lista (List1) de información de movimiento candidato después de comprobarse la disponibilidad y de haberse retirado los elementos repetidos. Si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list1 es igual a MaxNumMergeCand, se detiene la inserción.
La información de movimiento candidato obtenida en el modo de fusión compleja se denomina como vector de movimiento de punto de control afín construido que fusiona candidatos en una norma más reciente.
S12.3: Añadir un vector de movimiento candidato de ATMVP y/o de STMVP en la segunda lista (List1) de información de movimiento candidato según una regla preestablecida.
Al usar una tecnología de predicción de vector de movimiento basada en sub-bloque (SMVP), se divide una unidad de codificación actual en subunidades de codificación, cada una con un tamaño de M*N, se deriva la información de movimiento de cada subunidad de codificación, y posteriormente se realiza la compensación de movimiento basándose en información de movimiento de todas las subunidades de codificación, para obtener un predictor de la unidad de codificación actual.
En la tecnología, hay dos tipos de información de movimiento candidato en el modo de fusión: información de movimiento candidato de predicción avanzada de vector de movimiento temporal (ATMVP) e información de movimiento candidato de predicción de vector de movimiento espacial-temporal (STMVP).
En la tecnología de ATMVP, se determina primero una imagen de referencia colocada a su lado, se divide una unidad de codificación actual (el bloque actual) en subunidades de codificación (sub-bloques de codificación) cada una con un tamaño de M*N, se obtiene información de movimiento de una muestra de ubicación de punto central de una subunidad de codificación que corresponde a cada subunidad de codificación actual y que está en la imagen de referencia colocada a su lado, se escala la información de movimiento y se convierte la información de movimiento en información de movimiento de cada subunidad de codificación actual, tal como se muestra en la FIG. 11.
En la tecnología de STMVP, se obtiene información de movimiento de cada subunidad de codificación actual en una ubicación superior espacialmente contigua, una ubicación a la izquierda espacialmente contigua y una ubicación temporalmente contigua en la parte inferior derecha; se calcula un valor promedio de la información de movimiento; y se convierte el valor promedio calculado en información de movimiento de cada subunidad de codificación actual. Tal como se muestra en la siguiente figura (FIG. 12), la unidad de codificación actual se divide en cuatro subunidades de codificación: A, B, C y D. A se usa como ejemplo. La información de movimiento de la subunidad A de codificación se deriva basándose en información de movimiento de ubicaciones espacialmente contiguas c y b e información de movimiento de la ubicación D en la imagen de referencia colocada a su lado.
La información de movimiento correspondiente a un bloque de ubicación disponible se inserta secuencialmente en la segunda lista (List1) de información de movimiento candidato después de comprobarse la disponibilidad y de haberse retirado los elementos repetidos. Si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list1 es igual a MaxNumMergeCand, se detiene la inserción.
S12.4: Añadir información de movimiento candidato plano en la segunda lista (List1) de información de movimiento candidato según una regla preestablecida.
Con referencia a la FIG. 13. Se obtiene información de movimiento de un bloque de MxN temporalmente contiguo inferior derecho del bloque actual. Se obtiene información de movimiento de cada bloque de MxN contiguo derecho R (W, y) a través de interpolación vertical según la siguiente fórmula basándose en información de movimiento de un bloque espacialmente contiguo superior derecho (AR) y la información de movimiento del bloque de MxN temporalmente contiguo inferior derecho (BR), en donde MxN representa un tamaño de un bloque:
R(W, y) = ((H - y - 1) x AR (y 1)xBR)/H.
Se obtiene información de movimiento de cada bloque de MxN contiguo inferior (B(x, H)) a través de interpolación horizontal según la siguiente fórmula basándose en información de movimiento de un bloque de MxN espacialmente contiguo inferior izquierda (BL) y la información de movimiento del bloque de MxN temporalmente contiguo inferior derecho (BR):
B(x, H) = ((W- x - 1) x BL (x 1) x BR)/W.
(x, y) representan coordenadas de un sub-bloque de MxN actual con respecto a un sub-bloque superior izquierdo del bloque actual. W y H representan respectivamente el ancho y la altura (medidos en sub-bloques) del bloque actual. AR representa la información de movimiento del bloque de MxN espacialmente contiguo superior derecho. BR representa la información de movimiento del bloque de MxN temporalmente contiguo inferior derecho. BL representa la información de movimiento del bloque de MxN espacialmente contiguo inferior izquierdo.
La información de movimiento de cada sub-bloque se obtiene de la siguiente manera.
Un vector de movimiento horizontal se obtiene a través de interpolación horizontal según la siguiente fórmula basada en un vector de movimiento de un bloque de MxN contiguo izquierdo y un vector de movimiento de un bloque de MxN contiguo derecho en una fila en la cual está ubicado el sub-bloque actual:
Ph(x,y) = (W- x - 1) x L(-1,y)+(x 1) x R(W,y).
Un vector de movimiento vertical se obtiene a través de interpolación vertical según la siguiente fórmula basada en un vector de movimiento de un bloque de MxN contiguo superior y un vector de movimiento de un bloque de MxN contiguo inferior en una columna en la cual está ubicado el sub-bloque actual:
Pv(x,y) = (H - 1 - y) x A(x,-1)+(y 1) x B(W,H).
Un valor medio de los vectores de movimiento obtenidos a través de interpolación lineal horizontal y vertical se obtiene según la siguiente fórmula, es decir, un vector de movimiento de cada sub-bloque es:
P(x,y) = (H x Pn(x,y) W x Pv(x,y) H x W)/(2 x H x W).
L(-1,y)yR(W,y),representan respectivamente el vector de movimiento del bloque de MxN contiguo izquierdo y el vector de movimiento del bloque de MxN contiguo derecho en la fila en la cual está ubicado el sub-bloque actual.A(x,-1) y B(x,H)representan respectivamente el vector de movimiento del bloque de MxN contiguo superior y el vector de movimiento del bloque de MxN contiguo inferior en la columna en la que está ubicado el sub-bloque actual.Ph(x,y)representa el vector de movimiento obtenido a través de interpolación horizontal.Pv(x,y)representa el vector de movimiento obtenido a través de interpolación vertical.
Si todos los bloques espaciales y temporales contiguos contienen la misma información de movimiento (solo información de movimiento existente y procesada) en una lista, la lista no está disponible. Si dos listas no están disponibles, la información de movimiento plano no está disponible. De manera alternativa, si todos los bloques espacialmente contiguos (y bloques temporalmente contiguos) contienen la misma información de movimiento (solo información de movimiento existente y procesada) en una lista, la misma información de movimiento es información de movimiento de todos los sub-bloques del bloque de codificación actual en la lista.
La información de movimiento correspondiente a un bloque de ubicación disponible se inserta secuencialmente en la segunda lista (List1) de información de movimiento candidato después de comprobarse la disponibilidad y de haberse retirado los elementos repetidos. Si una cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list1 es igual a MaxNumMergeCand, se detiene la inserción.
La list1 se construye basándose en S12.1 a S12.4. Si la cantidad de piezas (excluyendo información repetida y no cualificada) de información de movimiento candidato en la list1 es menor que 5, la cantidad de piezas de información de movimiento candidato en la lista se habilita para alcanzar una cantidad especificada añadiendo un vector de movimiento cero. Por ejemplo, la segunda lista (List1) de información de movimiento candidato del bloque actual puede tener la forma mostrada en la Tabla 3:
Tabla 3
Alternativamente, la segunda lista (List1) de información de movimiento candidato del bloque actual puede tener la forma mostrada en la Tabla 4:
Tabla 4
Debe observarse que, en la presente invención, en S12, construir la lista de información de movimiento candidato basada en sub-bloque, no se limita a una secuencia de añadir la información de movimiento candidato en S12.1, S12.2, S12.3 o S12.4 en la lista. La información de movimiento candidato puede añadirse en una secuencia específica; o diferentes tipos de información de movimiento pueden añadirse de forma alternativa a la lista; o una o más de la información de movimiento candidato en S12.1, S12.2, S12.3 y S12.4 puede añadirse a la lista.
Debe entenderse que la lista de información de movimiento candidato basada en sub-bloque es una lista de información de movimiento candidato construida en un modo de fusión basado en sub-bloque (merge_subblock), y la lista de información de movimiento candidato basada en sub-bloque puede incluir una lista de información de movimiento candidato construida en al menos un modo de fusión basado en sub-bloque de fusión de modelo afín, fusión compleja o ATMVP. Toda la información de movimiento candidato en la lista de información de movimiento candidato basada en sub-bloque puede obtenerse a través de derivación en el modo de fusión de modelo afín, o en el modo de fusión compleja, o solo en el modo ATMVP, o en una pluralidad de modos diferentes. La pluralidad de modos diferentes puede ser cualquier combinación de los tres modos de fusión de modelo afín, fusión compleja y ATMVP. En algunos posibles casos, la lista de información de movimiento candidato puede además incluir información de movimiento obtenida en otro modo basado en sub-bloque. La información de movimiento candidato puede añadirse a la lista de la siguiente forma: Se puede añadir primero información de movimiento candidato derivada en el modo ATMVP, y luego se puede añadir información de movimiento candidato derivada en otro modo. La manera de combinación y la secuencia de adición no se enumeran o se describen en detalle en la presente invención.
Opcionalmente, se usa como ejemplo un bloque que incluye sub-bloques de 2*2. Una posible forma de implementación de la lista de información de movimiento candidato construida basada en sub-bloque list1 puede incluir: {ATMVP ((MVxoi, MVyoi) (MVx02, MVyce) (MVx<03>, MVyco) (MVx<04>, MVy<04>)), (MVx i, MVy i), (MVx2, MVy2), (MVx<3>, MVy<3>), (MVx<4>, MVy<4>)}. Si un valor de un índice es 0, se puede realizar respectivamente la predicción correspondiente en los cuatro sub-bloques basándose en (MVx0i, MVy0i) (MVx02, MVy02) (MVx<03>, MVy<03>) (MVx<04>, Mvy<04>) posteriormente. Si un valor de un índice es i, cada MV de un sub-bloque del bloque actual se deriva basándose en (MVx i, MVy i) en el modo AFÍN. Posteriormente, cada sub-bloque del bloque actual se predice con base en cada MV derivado.
Opcionalmente, una posible forma de implementación de la lista listi de información de movimiento candidato construida basada en sub-bloque puede incluir: {ATMVP (MVx i, MVy i), (MVx2, MVy2), (MVx<3>, MVy<3>), (MVx<4>, MVy<4>)}. Si un valor de un índice es 0, la información de movimiento que se usó en último término se obtiene a través de ATMVP. Si un valor de un índice es i, la información de movimiento usada es un MV, derivado basándose en (MVx i, MVy i) en el modo AFÍN, de un sub-bloque del bloque actual.
Si3: Seleccionar información de movimiento candidato óptimo a partir de las dos listas.
La información de movimiento candidato óptimo se determina a partir de las dos listas de información de movimiento candidato de acuerdo con un criterio de coste mínimo de distorsión de tasa, y la información de movimiento candidato óptimo se usa como la información de movimiento del bloque de codificación actual. Posteriormente, un índice (por ejemplo, list-idx) de una lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo y un valor de índice (por ejemplo, mv-idx) de una ubicación de la información de movimiento candidato óptimo en la lista se transfieren al lado del decodificador. Un coste de distorsión de tasa se calcula según la siguiente fórmula, en donde J representa un coste de distorsión de tasa RD Cost, SAD representa una suma de diferencias absolutas (SAD) entre un valor de muestra original y un valor de muestra predicha que se obtiene a través de compensación de movimiento realizada usando información de movimiento candidato, R representa una tasa de bit y A representa un multiplicador de Lagrange. El lado del codificador transmite un valor de índice de información de movimiento seleccionada en la lista de información de movimiento candidato al lado del decodificador.
J = SAD AR
Si4: Realizar compensación de movimiento en el bloque actual basándose en la información de movimiento candidato óptimo obtenida en Si3, para obtener un predictor de muestra del bloque.
Adicionalmente, debe entenderse que “0” y “ i ” en la list0 y la listi se usan simplemente para diferenciación. El hecho de que la list0 o la listi se denomine como una lista basada en bloque o una lista basada en sub-bloque puede determinarse según una regla preestablecida. Esto no se limita en esta solicitud.
Específicamente, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en bloque, el bloque actual se predice basándose en la información de movimiento óptimo.
Específicamente, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en sub-bloque, se incluyen al menos los dos siguientes casos.
Caso i: Si la información de movimiento óptimo se obtiene en un modo afín (incluyendo al menos el modo de fusión de modelo afín o el modo de fusión compleja), la información de movimiento correspondiente a un sub bloque del bloque actual se deriva con base en la información de movimiento óptimo, y se predice el sub-bloque del bloque actual. El bloque actual puede incluir una pluralidad de sub-bloques, y el sub-bloque del bloque actual puede ser cualquiera de la pluralidad de sub-bloques.
En un posible proceso de implementación, ser deriva información de movimiento correspondiente a cada sub bloque del bloque actual con base en la información de movimiento óptimo, y se predice consecuentemente cada sub-bloque del bloque actual.
Caso 2: Si la información de movimiento óptimo se deriva a través de ATMVP, un sub-bloque del bloque actual se predice con base en la información de movimiento óptimo.
En un posible proceso de implementación, la información de movimiento candidato óptimo puede ser una combinación de información de movimiento e incluye información de movimiento correspondiente a cada sub bloque del bloque actual, y cada sub-bloque del bloque actual se predice de manera correspondiente.
Adicionalmente, debe entenderse además que realizar la predicción basándose en la información de movimiento óptimo puede incluir realizar directamente la predicción basándose en la información de movimiento óptimo; o puede incluir derivar la información de movimiento óptimo, y predecir la información de movimiento óptimo basándose en información de movimiento derivada; o puede incluir corregir la información de movimiento óptimo, y realizar la predicción basándose en información de movimiento obtenida a través de la corrección.
Los casos anteriores son simplemente algunas posibles implementaciones de la presente invención y no constituirán ninguna limitación. Otros casos no se describen de manera exhaustiva en la presente invención. Opcionalmente, el ancho del bloque actual es mayor o igual que un umbral, y/o la altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
Según la Realización 1, se puede obtener el siguiente flujo de método.
S1301: Construir una primera lista, en donde la primera lista es una lista de información de movimiento candidato basada en bloque.
S1302: Construir una segunda lista, en donde la segunda lista es una lista de información de movimiento candidato basada en sub-bloque.
S1303: Determinar información de movimiento candidato óptimo a partir de la primera lista de información de movimiento candidato y de la segunda lista de información de movimiento candidato.
S1304: Predecir un bloque actual basándose en la información de movimiento óptimo.
El método puede además incluir las siguientes etapas.
S1305: Obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es la primera lista, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es la segunda lista.
S1306: Codificar el identificador y el índice en una corriente de bits.
S1305 y S1306 puede además constituir independientemente un nuevo método de codificación. En la presente memoria no se describen detalles.
Las diferencias entre la Realización 1 y una tecnología actual son como se presenta a continuación: Una pluralidad de tipos de información de movimiento candidato se insertan en diferentes listas de información de movimiento candidato, la información de movimiento candidato óptimo se selecciona según el criterio de RDO, y la información de movimiento candidato óptimo se transfiere al lado del decodificador. Según la Realización 1, la lista de información de movimiento candidato basada en bloque y la lista de información de movimiento candidato basada en sub-bloque pueden distinguirse entre sí, de modo que se obtienen la lista de información de movimiento candidato basada en bloque y la lista de información de movimiento candidato basada en sub bloque. Esto reduce efectivamente los costes de transmisión de la información de movimiento candidato óptimo. Realización 2 (Lado del Decodificador)
Breves descripciones: La información de movimiento candidato de un bloque actual y la información de movimiento candidato de un sub-bloque actual pueden ser insertadas (o construidas) respectivamente en una list0 y una list1 en modos de obtención de la información de movimiento candidato.
La list0 basada en bloque incluye un modo HEVC y un modo no adyacente.
La list1 basada en sub-bloque incluye un modo AFÍN (incluyendo un modo de fusión de modelo afín basado en modelo de movimiento o un modo de fusión compleja basado en punto de control), un modo ATMVP, un modo STMVP y un modo plano.
En un proceso de implementación específico, la list0 basada en bloque puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo HEVC (general_merge o regular_merge) y el modo no adyacente, y la list1 basada en sub-bloque puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo AFÍN, el modo ATMVP, el modo STMVP y el modo plano. En esta solicitud, se puede usar una pluralidad de modos para la descripción. Por ejemplo, la list1 puede incluir alternativamente solo el modo ATMVP.
S21: Analizar una corriente de bits para obtener información de índice de información de movimiento candidato óptimo.
Específicamente, la corriente de bits se analiza para obtener un índice (por ejemplo, list-idx) de una lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo y un valor de índice (por ejemplo, mv-index) de una ubicación de la información de movimiento candidato óptimo en la lista. Debe entenderse que más elementos de sintaxis pueden además obtenerse al analizar la corriente de bits, y el índice de lista es simplemente una posible implementación.
S22: Construir una lista de información de movimiento candidato basándose en un índice de la lista de información de movimiento candidato.
Por ejemplo, entre otros, puede haber los siguientes casos.
Si list-idx = 0, se puede realizar una implementación específica usando un método que es el mismo o similar al método en S11. Por ejemplo, una lista de información de movimiento candidato basada en bloque se construye en el modo en S11.1 y/o S11.2. Por ejemplo, la lista de información de movimiento candidato puede ser, entre otras, la lista mostrada en la Tabla 1 o en la Tabla 2.
Si list-idx = 1, se puede realizar una implementación específica usando un método que es el mismo o similar al método en S12. Por ejemplo, una lista de información de movimiento candidato basada en sub-bloque se construye en el modo en S12.1, S12.2 y/o S12.3. Por ejemplo, la lista de información de movimiento candidato puede ser, entre otras, la lista mostrada en la Tabla 3 o en la Tabla 4.
Se puede aprender a partir de las tablas que un vector de movimiento específico puede determinarse siempre que se determine un índice (list-idx) de una lista de vector de movimiento y un índice (mv-index) de un vector en la lista. Opcionalmente, un identificador del índice puede ser representado como, por ejemplo, list-idx. Sin embargo, esto no está limitado. Opcionalmente, un valor del identificador del índice list-idx puede incluir, entre otros, 0 o 1. Opcionalmente, la lista de información de movimiento candidato construida en un modo basado en bloque puede representarse como la list0 (o list1), y la lista de información de movimiento candidato construida en un modo basado en sub-bloque puede representarse como la list1 (o list0). El “modo basado en bloque” se refiere a un modo de realizar la predicción basándose en el bloque actual, y el “modo basado en sub-bloque” se refiere a un modo de realizar la predicción basada en un sub-bloque, en donde el sub-bloque se obtiene al dividir el bloque actual en una pluralidad de sub-bloques.
Debe entenderse que no están limitados ni descritos exhaustivamente en la presente invención valores específicos de los valores de característica, o formas de identificadores, o símbolos de representación específica de listas.
Debe entenderse que un índice de lista, o un identificador similar, o un elemento de sintaxis similar puede ser usado para determinar la lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo del bloque actual, o puede ser usado para determinar un modo de construir la lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo del bloque actual; o puede usarse para indicar si un modo de fusión convencional o un modo de fusión basado en sub bloque es usado para el bloque actual.
Opcionalmente, cuando se analiza la corriente de bits, el elemento de sintaxis obtenido puede incluir un índice de lista, y la determinación, basándose en el elemento de sintaxis, de construir una primera lista o una segunda lista para el bloque de codificación actual incluye: obtener un índice de lista de información de movimiento candidato, donde cuando el índice de lista es un primer valor de característica, indica que se construya la primera lista para el bloque de codificación actual, o cuando el índice de lista es un segundo valor de característica, indica que se construya la segunda lista para el bloque de codificación actual.
Opcionalmente, cuando se analiza la corriente de bits, el elemento de sintaxis obtenido puede incluir información de indicación usada para indicar un modo de fusión convencional usado para el bloque actual o información de indicación usada para indicar un modo de fusión basado en sub-bloque usado para el bloque actual.
Opcionalmente, cuando se analiza la corriente de bits, el elemento de sintaxis obtenido puede incluir información de indicación usada para determinar que la lista de información de movimiento candidato basada en bloque se use para el bloque actual o información de indicación usada para determinar que la lista de información de movimiento candidato basada en sub-bloque se use para el bloque actual.
S23: Determinar la información de movimiento candidato óptimo basándose en la información de índice.
Específicamente, la información de movimiento candidato óptimo se determina a partir de la lista basada en listidx y mv-index.
Por ejemplo, si list-idx = 0 y mv-index = 0, la información de movimiento del bloque actual es MVB1.
S24: Realizar compensación de movimiento en el bloque actual basándose en la información de movimiento candidato óptimo obtenida en S23, para obtener un predictor de muestra del bloque.
Un modo de predicción específico puede corresponder a un modo de predicción en un lado del codificador. Específicamente, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en bloque, el bloque actual se predice basándose en la información de movimiento óptimo.
Específicamente, si la información de movimiento óptimo es información de movimiento en la lista de información de movimiento candidato basada en sub-bloque, se incluyen al menos los siguientes dos casos.
Caso 1: Si la información de movimiento óptimo determinada en S23 se obtiene en un modo afín (incluyendo al menos el modo de fusión de modelo afín o el modo de fusión compleja), la información de movimiento correspondiente a un sub-bloque del bloque actual se deriva basándose en la información de movimiento óptimo, y se predice el sub-bloque del bloque actual. El bloque actual puede incluir una pluralidad de sub-bloques, y el sub-bloque del bloque actual puede ser cualquiera de la pluralidad de sub-bloques.
En un posible proceso de implementación, se deriva información de movimiento correspondiente a cada sub bloque del bloque actual basándose en la información de movimiento óptimo, y se predice de manera correspondiente cada sub-bloque del bloque actual.
Caso 2: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP, el sub bloque del bloque actual se predice basándose en la información de movimiento óptimo.
En un posible proceso de implementación, la información de movimiento candidato óptimo puede ser una combinación de información de movimiento e incluye información de movimiento correspondiente a cada sub bloque del bloque actual, y cada sub-bloque del bloque actual se predice de manera correspondiente.
Caso 3: Si la información de movimiento óptimo determinada en S23 se obtiene en el modo ATMVP a través de una indicación, la información de movimiento óptimo se obtiene basándose en la indicación correspondiente, y un sub-bloque del bloque actual se predice con base en la información de movimiento óptimo.
En un posible proceso de implementación, la información de movimiento candidato óptimo puede obtenerse basándose en información de indicación. Se puede obtener información de movimiento correspondiente a cada sub-bloque del bloque actual en el modo ATMVP basándose en la información de indicación, y cada sub-bloque del bloque actual se predice de manera correspondiente.
Adicionalmente, debe entenderse además que realizar la predicción basándose en la información de movimiento óptimo puede incluir realizar directamente la predicción basándose en la información de movimiento óptimo; o puede incluir derivar la información de movimiento óptimo, y realizar la predicción basándose en información de movimiento obtenida a través de derivación; o puede incluir corregir la información de movimiento óptimo, y realizar la predicción basándose en información de movimiento obtenida a través de la corrección.
Los casos anteriores son simplemente algunas posibles implementaciones de la presente invención y no constituirán ninguna limitación. Otros casos no se describen de manera exhaustiva en la presente invención. Opcionalmente, el ancho del bloque actual es mayor o igual que un umbral, y/o la altura del bloque actual es mayor o igual que un umbral. El umbral puede ser 4, 8 o 16, pero no está limitado a ello.
En conclusión, según la Realización 1 y la Realización 2, los siguientes procedimientos de método se pueden obtener en la presente invención. Hacer referencia a la FIG. 14 y a la FIG. 15.
La FIG. 14 muestra un método de decodificación. El método incluye las siguientes etapas.
S141: Obtener un modo de construcción de una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo de un bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde el modo de construcción de la lista de información de movimiento candidato es un modo de construcción de una lista de información de movimiento candidato basada en bloque o un modo de construcción de una lista de información de movimiento candidato basada en sub-bloque.
Para una manera opcional, hacer referencia a S21 en la realización.
Específicamente, se obtiene un identificador que se usa para determinar la lista de información de movimiento candidato. Un modo de inter-predicción usado para el bloque actual es un modo de fusión. Cuando el identificador es un primer valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construcción de la lista de información de movimiento candidato basada en bloque; o cuando el identificador es un segundo valor de característica, el modo de construcción de la lista de información de movimiento candidato es el modo de construcción de la lista de información de movimiento candidato basada en sub-bloque.
Para una manera opcional, hacer referencia a la función del identificador en S22 en la realización.
S142: Construir la lista de información de movimiento candidato en el modo de construcción.
Para una manera opcional, hacer referencia a S22 en la realización.
Para la construcción de la lista de información de movimiento candidato basada en bloque, hacer referencia a 511.1 y/o S11.2 en la realización.
Para la construcción de la lista de información de movimiento candidato basada en sub-bloque, hacer referencia a S12.1, S12.2, S12.3 y/o S12.4 en la realización.
S143: Determinar información de movimiento óptimo a partir de la lista de información de movimiento candidato construida basada en el índice. Para una forma opcional, hacer referencia a S13 en la realización.
S144: Predecir el bloque actual basándose en la información de movimiento óptimo. Para una manera opcional, hacer referencia a S14 en la realización.
La FIG. 15 muestra un método de decodificación. El método incluye las siguientes etapas.
S151: Analizar una corriente de bits para obtener un elemento de sintaxis, donde el elemento de sintaxis incluye al menos un índice de información de movimiento candidato óptimo de un bloque actual.
Para una manera opcional, hacer referencia a S21 en la realización.
S152: Determinar, basándose en el elemento de sintaxis, que se construya una primera lista o una segunda lista para el bloque actual, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque.
Para una manera opcional, hacer referencia a S22 en la realización.
Para la construcción de la lista de información de movimiento candidato basada en bloque, hacer referencia a 511.1 y/o S11.2 en la realización.
Para la construcción de la lista de información de movimiento candidato basada en sub-bloque, hacer referencia a S12.1, S12.2, S12.3 y/o S12.4 en la realización.
S153: Determinar información de movimiento óptimo de la primera lista o de la segunda lista basándose en el índice.
Para una manera opcional, hacer referencia a S23 en la realización.
S154: Predecir el bloque actual basándose en la información de movimiento óptimo.
Para una manera opcional, hacer referencia a S24 en la realización.
Una solución de implementación específica se ha descrito completamente en la anterior realización. En la presente memoria no se describen detalles nuevamente.
Para una tabla de sintaxis más clara, hacer referencia a la FIG. 16. La FIG. 16 muestra una tabla de sintaxis de datos de fusión.
Se puede aprender que la tabla de sintaxis o la corriente de bits incluye merge_subblock_flag[x0][y0]. merge_subblock_flag[x0][y0] puede corresponder a la información de indicación que puede ser usada para indicar que la lista de información de movimiento candidato basada en bloque o la lista de información de movimiento candidato basada en sub-bloque se use para el bloque actual en la presente invención.
Las diferencias entre la Realización 2 y una tecnología actual son las siguientes: Una pluralidad de tipos de información de movimiento candidato se insertan en diferentes listas de información de movimiento candidato; la corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque actual se decodifica basándose en información de movimiento correspondiente. Según la Realización 2, la lista de información de movimiento candidato basada en bloque y la lista de información de movimiento candidato basada en sub-bloque pueden distinguirse una de otra. Esto reduce de forma efectiva los costes de transmisión de la información de movimiento candidato óptimo.
Realización 3 (Lado del Codificador)
Breves descripciones: Una list0 y una list1 se construyen en diferentes modos de construcción de lista de información de movimiento para un bloque actual. La list0 es una lista de vectores de movimiento candidatos usada para el bloque actual cuando el bloque actual se predice usando un bloque como una unidad de predicción básica. La list1 es una lista de vectores de movimiento candidatos usada para el bloque actual cuando el bloque actual se predice usando un sub-bloque como una unidad de predicción básica. El bloque actual puede dividirse en una pluralidad de sub-bloques, y cada sub-bloque puede tener una forma cuadrada o rectangular. El sub-bloque puede tener, por ejemplo, entre otros, un tamaño de 4><4, 8x8 o 4x8. La listo y la listl incluyen información de movimiento candidato. La información de movimiento candidato incluye un vector de movimiento, una dirección de predicción, un índice de referencia y similares. Brevemente, la listO y la listl se construyen en diferentes modos de construcción de lista de información de movimiento aplicables a características del bloque actual.
Por ejemplo, la listo basada en bloque incluye un modo HEVC, un modo no adyacente, un modo ATMVP o un modo STMVP; y
la listl basada en sub-bloque incluye un modo AFÍN (incluyendo un modo de fusión de modelo afín basado en modelo de movimiento o un modo de fusión compleja basado en punto de control) y un modo plano.
En un proceso de implementación específico, la listo puede incluir uno o más modos de derivación de vector de movimiento candidato tales como el modo HEVC, el modo no adyacente, el modo ATMVP y el modo STMVP. Por ejemplo, en otra realización, la listo puede incluir alternativamente solo el modo ATMVP. La listl puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo AFÍN y el modo plano. En esta solicitud, se puede usar una pluralidad de modos para la descripción.
S31: Construir una primera lista (ListO) de información de movimiento candidato de un bloque de codificación actual.
S31.1: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S11.1.
S31.2: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S11.2.
S31.3: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S12.3.
Debe notarse que, en la presente invención, una secuencia de añadir información de movimiento candidato en S31.1 y S31.2 a la lista no se limita para S31. Se puede añadir la información de movimiento en S31.1 antes de la información de movimiento en S31.2; o se puede añadir la información de movimiento en S31.2 antes de la información de movimiento en S31.1; o la información de movimiento en S31.1 y la información de movimiento en S31.2 pueden añadirse de manera alternativa en la lista.
S32: Construir una segunda lista (Listl) de información de movimiento candidato del bloque de codificación actual.
S32.1: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S12.1.
S32.2: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S12.2.
S32.3: Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S12.4.
Debe notarse que, en la presente invención, una secuencia de añadir información de movimiento candidato en S32.1, S32.2 y S32.3 en la lista no se limita para S32. La información de movimiento candidato puede añadirse en una secuencia específica; o diferentes tipos de información de movimiento pueden añadirse de forma alternativa en la lista; o una o más de la información de movimiento candidato en S32.1, S32.2 y S32.3 puede añadirse a la lista.
S33: Seleccionar información de movimiento candidato óptimo a partir de las dos listas, donde se puede realizar una implementación específica usando un método que es el mismo o similar al método en S13.
S34: Realizar compensación de movimiento en el bloque actual basándose en la información de movimiento candidato óptimo obtenida en S33, para obtener un predictor de muestra del bloque. Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S14.
Debe entenderse que la list0 y la list1 pueden ser intercambiadas.
Las diferencias entre la Realización 3 y una tecnología actual son las siguientes: Varios vectores de movimiento candidatos se insertan en diferentes listas de vectores de movimiento candidatos; una corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque actual se decodifica basándose en información de movimiento correspondiente. Según la Realización 3, una lista de información de movimiento candidato basada en sub-bloque basada en modelo y otra información de movimiento candidato pueden distinguirse entre sí. Esto reduce de forma efectiva los costes de transmisión de la información de movimiento candidato óptimo.
Realización 4 (Lado del Decodificador)
Breves descripciones: La información de movimiento candidato de un bloque actual e información de movimiento candidato de un sub-bloque actual pueden ser insertadas (o construidas) respectivamente en una list0 y una list1 en modos de obtención de la información de movimiento candidato.
La list0 basada en bloque incluye un modo HEVC, un modo no adyacente, un modo ATMVP y un modo STMVP. La list1 basada en sub-bloque incluye un modo AFÍN (incluyendo un modo de fusión de modelo afín basado en modelo de movimiento o un modo de fusión compleja basado en punto de control) y un modo plano.
En un proceso de implementación específico, la list0 puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo HEVC, el modo no adyacente, el modo ATMVP y el modo STMVP. Por ejemplo, en otra realización, la list0 puede incluir solo el modo ATMVP. La list1 puede incluir uno o más modos de derivación de vector de movimiento candidato tal como el modo AFÍN y el modo plano. En esta solicitud, se puede usar una pluralidad de modos para la descripción.
S41: Analizar una corriente de bits para obtener información de índice de información de movimiento candidato óptimo.
Específicamente, la corriente de bits se analiza para obtener un índice (por ejemplo, list-idx) de una lista de información de movimiento candidato que incluyen la información de movimiento candidato óptimo y obtener un valor de índice (por ejemplo, mv-index) de una ubicación de la información de movimiento candidato óptimo en la lista.
S42: Construir una lista de información de movimiento candidato basándose en el índice de la lista de información de movimiento candidato.
Si list-idx = 0, se puede realizar una implementación específica usando un método que es el mismo o similar al método en S31. Por ejemplo, una lista de información de movimiento candidato basada en bloque se construye en el modo en S31.1, S31.2 y/o S31.3. De manera correspondiente, para otro ejemplo, una lista de información de movimiento candidato basada en sub-bloque se construye en el modo en S11.1, S11.2 y/o S12.3.
Si list-idx = 1, se construye una lista de información de movimiento candidato basada en sub-bloque basada en modelo en el modo en S32.1, S32.2 y/o S32.3. De manera correspondiente, para otro ejemplo, se construye una lista de información de movimiento candidato basada en sub-bloque en el modo en S12.1, S12.2 y/o S12.4. S43: Determinar la información de movimiento candidato óptimo basándose en la información de índice.
Específicamente, la información de movimiento candidato óptimo se determina a partir de la lista basada en listidx y mv-index.
S44: Realizar compensación de movimiento en el bloque actual basándose en la información de movimiento candidato óptimo obtenida en S43, para obtener un predictor de muestra del bloque.
Las diferencias entre la Realización 4 y una tecnología actual son las siguientes: Diferentes tipos de información de movimiento candidato se insertan en diferentes listas de información de movimiento candidato; la corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque actual se decodifica basándose en información de movimiento correspondiente. Según la Realización 4, la lista de información de movimiento candidato basada en sub-bloque basada en modelo y otra información de movimiento candidato pueden distinguirse entre sí. Esto reduce de forma efectiva los costes de transmisión de la información de movimiento candidato óptimo.
Realización 5 (Lado del Codificador)
Se determina si un bloque de codificación actual satisface una condición preestablecida. Si el bloque de codificación actual satisface la condición preestablecida, se realizan S51 y S52; o si el bloque de codificación actual no satisface la condición preestablecida, se realiza S51. Alternativamente, si el bloque de codificación actual satisface la condición preestablecida, se realizan S51 y S52; o si el bloque de codificación actual no satisface la condición preestablecida, se realiza S52.
La condición preestablecida puede ser la siguiente:
(1) el ancho del bloque de codificación actual es mayor o igual que un umbral (por ejemplo, entre otros, 4, 8, 16 o 32), y/o la altura del bloque de codificación actual es mayor o igual que un umbral (por ejemplo, entre otros, 4, 8, 16 o 32); o
(2) una cantidad de muestra (ancho*altura) del bloque de codificación actual es mayor o igual que un umbral (por ejemplo, 256).
La condición preestablecida puede acordarse tanto del lado del codificador como del lado del decodificador, o puede ser especificada usando una sintaxis de nivel superior tal como una SPS o una PPS.
S51: Construir una primera lista (ListO) de información de movimiento candidato del bloque de codificación actual.
La primera lista de información de movimiento candidato se construye usando el método correspondiente, por ejemplo, el método en S11 en la Realización 1 o S31 en la Realización 3. En la presente memoria no se describen detalles nuevamente.
S52: Construir una segunda lista (List1) de información de movimiento candidato del bloque de codificación actual.
La segunda lista de información de movimiento candidato se construye usando el método correspondiente, por ejemplo, el método en S12 en la Realización 1 o S32 en la Realización 3. En la presente memoria no se describen detalles nuevamente.
S53: Seleccionar información de movimiento candidato óptimo.
Si el bloque de codificación actual satisface la condición preestablecida, la información de movimiento candidato óptimo se determina a partir de las dos listas de información de movimiento candidato según un criterio de coste de distorsión de tasa, como información de movimiento del bloque de codificación actual. Posteriormente, un índice (por ejemplo, list-idx) de una lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo y un valor de índice (por ejemplo, mv-idx) de una ubicación de la información de movimiento candidato óptimo en la lista se transfieren al lado del decodificador.
Si el bloque de codificación actual no satisface la condición preestablecida, la información de movimiento candidato óptimo se determina a partir de una lista de información de movimiento candidato según un criterio de coste de distorsión de tasa, como información de movimiento del bloque de codificación actual. Posteriormente, un valor de índice (por ejemplo, mv-idx) de una ubicación de la información de movimiento candidato óptimo en la lista de información de movimiento candidato se transfiere al lado del decodificador.
S54: Realizar compensación de movimiento en el bloque actual basándose en la información de movimiento candidato óptimo obtenida en S53, para obtener un predictor de muestra del bloque. Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S14 o S34.
Las diferencias entre la Realización 5 y una tecnología actual son las siguientes: Varios vectores de movimiento candidatos se insertan en diferentes listas de vectores de movimiento candidatos; una corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque actual se decodifica basándose en información de movimiento correspondiente. Adicionalmente, se deben construir diferentes listas de información de movimiento basándose en la condición preestablecida, y una lista candidato usada se analiza basándose en una característica del bloque de codificación actual, de modo que se puede reducir una cantidad de bits solicitada para indicar la lista candidato.
Con referencia a la Realización 5, se puede obtener un procedimiento de método de codificación como sigue. S161: Si un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, construir una primera lista.
S162: Construir una segunda lista, donde la primera lista es una lista de información de movimiento candidato basada en bloque, la segunda lista es una lista de información de movimiento candidato basada en sub-bloque, y un modo de inter-predicción usado para el bloque actual es un modo de fusión.
S163: Determinar información de movimiento candidato óptimo de la primera lista y de la segunda lista.
S164: Predecir el bloque actual basándose en la información de movimiento óptimo.
Opcionalmente, antes de S161, el método además puede incluir:
determinar si el tamaño del bloque actual satisface la cantidad de muestra preestablecida.
Opcionalmente, se determina si cualquiera del ancho o de la altura del bloque de codificación actual es mayor o igual que un umbral. Por ejemplo, se determina si el ancho y/o la altura es/son mayor o mayores o igual o iguales a 8.
Si el tamaño del bloque actual no satisface la cantidad de muestra preestablecida, el método además incluye: S165: Construir la primera lista, donde la primera lista es la lista de información de movimiento candidato basada en bloque, y el modo de inter-predicción usado para el bloque actual es el modo de fusión.
S166: Determinar la información de movimiento candidato óptimo a partir de la primera lista.
S167: Predecir el bloque actual basándose en la información de movimiento óptimo.
Debe entenderse que S165 a S167 pueden constituir un método de codificación que se puede implementar, independiente de S161 a S164.
Realización 6 (Lado del Decodificador)
S61: Analizar una corriente de bits basándose en una condición preestablecida, para obtener información de índice de información de movimiento candidato óptimo.
La condición preestablecida puede ser como sigue:
(1) el ancho de un bloque de codificación actual es mayor o igual que un umbral (por ejemplo, entre otros, 4, 8, 16 o 32), y/o la altura del bloque de codificación actual es mayor o igual que un umbral (por ejemplo, entre otros, 4, 8, 16 o 32); o
(2) una cantidad de muestra (ancho*altura) de un bloque de codificación actual es mayor o igual que un umbral (por ejemplo, 256).
La condición preestablecida puede acordarse tanto de un lado del codificador como del lado del decodificador, o puede ser especificada usando una sintaxis de nivel superior tal como una SPS o una PPS.
Cuando el bloque de codificación actual no satisface la condición preestablecida (lo cual se puede entender como que ninguna de las condiciones preestablecidas se satisfaga), no se analiza la información de índice de la información de movimiento (solo se usa información de movimiento basada en bloque). En este caso, una listo (list-idx=0 en implementación específica) se usa por defecto, y se analiza un valor de índice (mv-index) de una ubicación en la listo. Específicamente, solo se puede analizar el valor de índice (mv-index) de la ubicación en la lista list0.
Cuando el bloque de codificación actual satisface la condición (lo cual puede entenderse como que cualquiera de las condiciones preestablecidas se satisfaga), la corriente de bits se analiza para obtener un índice (por ejemplo, list-idx, en donde un valor de list-idx puede ser 0 o 1) de una lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo y obtener un valor de índice (por ejemplo, mv-index) de la ubicación de la información de movimiento candidato óptimo en la lista de información de movimiento candidato.
S62: Construir la lista de información de movimiento candidato basándose en el índice de la lista de información de movimiento candidato.
Específicamente, la lista puede construirse usando el método correspondiente en la Realización 2 o Realización 4. Específicamente, la lista puede construirse usando un método que es el mismo o similar al método en S22 o S42. En la presente memoria no se describen detalles nuevamente.
S63: Determinar la información de movimiento candidato óptimo basándose en la información de índice.
Específicamente, la información de movimiento candidato óptimo se determina a partir de la lista basándose en list-idx y mv-index. Específicamente, la información de movimiento candidato óptimo puede determinarse usando un método que es el mismo o similar al método en S23 o S43. En la presente memoria no se describen detalles nuevamente.
S64: Realizar compensación de movimiento en el bloque de codificación actual basándose en la información de movimiento candidato óptimo obtenida en S63, para obtener un predictor de muestra del bloque. Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S24 o s44. Las diferencias entre la Realización 6 y una tecnología actual son como las siguientes: Varios vectores de movimiento candidatos se insertan en diferentes listas de vectores de movimiento candidatos; la corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque de codificación actual se decodifica basándose en información de movimiento correspondiente. Adicionalmente, se han de construir diferentes listas de información de movimiento basándose en la condición preestablecida, y una lista candidato usada se analiza condicionalmente basándose en una característica del bloque de codificación actual, de modo que se puede reducir una cantidad de bits requerida para indicar la lista candidato. Con referencia a la Realización 6, se puede obtener un procedimiento de método de decodificación. Hacer referencia a la FIG. 17. El método incluye las siguientes etapas.
S171: Si un tamaño de un bloque actual satisface una cantidad de muestra preestablecida, obtener un identificador que se usa para determinar una lista de información de movimiento candidato que incluye información de movimiento candidato óptimo del bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, donde un modo de inter predicción usado para el bloque actual es un modo de fusión.
Opcionalmente, para una implementación específica, hacer referencia a S61.
S172: Construir la lista de información de movimiento candidato basándose en el identificador; y cuando el identificador es un primer valor de característica, construir una lista de información de movimiento candidato basada en bloque; o cuando el identificador es un segundo valor de característica, construir una lista de información de movimiento candidato basada en sub-bloque.
Opcionalmente, para una implementación específica, hacer referencia a S62.
S173: Determinar información de movimiento óptimo a partir de la lista de información de movimiento candidato construida basándose en el índice.
Opcionalmente, para una implementación específica, hacer referencia a S63.
S174: Predecir el bloque actual basándose en la información de movimiento óptimo.
Opcionalmente, para una implementación específica, hacer referencia a S64.
Antes de S171, el método además incluye: determinar si el tamaño del bloque actual satisface una condición preestablecida o la cantidad de muestra preestablecida.
Opcionalmente, se determina si cualquiera del ancho o de la altura del bloque de codificación actual es mayor o igual que un umbral. Por ejemplo, se determina si el ancho y/o la altura es/son mayores o iguales a 8.
Si el tamaño del bloque actual no satisface la cantidad de muestra preestablecida, el método además incluye: S175: Construir una primera lista, en donde la primera lista es la lista de información de movimiento candidato basada en bloque, y el modo de inter-predicción usado para el bloque actual es el modo de fusión.
S176: Determinar la información de movimiento candidato óptimo a partir de la primera lista.
S177: Predecir el bloque actual basándose en la información de movimiento óptimo.
Debe entenderse que S175 a S177 puede constituir un método de codificación que se puede implementar, independiente de S171 a S174.
Realización 7 (Lado del Decodificador)
S71: Analizar una corriente de bits basándose en una condición preestablecida, para obtener información de índice de información de movimiento candidato óptimo.
Cuando se satisface una primera condición preestablecida, un índice de una lista de información de movimiento candidato óptimo es 0 (solo se usa información de movimiento basada en bloque). En otras palabras, se usa una list0 (la cual puede también ser indicada por list-idx = 0).
Cuando se satisface una segunda condición preestablecida, un índice de una lista de información de movimiento candidato óptimo es 1 (solo se usa información de movimiento basada en sub-bloque). En otras palabras, se usa una list1 (la cual puede también ser indicada por list-idx = 1).
Cuando no se satisface ninguna, ni la primera condición preestablecida, ni la segunda condición preestablecida, la corriente de bits se analiza para obtener un índice (por ejemplo, list-idx) de una lista de información de movimiento candidato que incluye la información de movimiento candidato óptimo, y se determina, con base en list-idx, si se ha de usar la list0 o la list1. Finalmente, se analiza un valor de índice (por ejemplo, mv-index) de una ubicación de la información de movimiento candidato óptimo en la lista correspondiente.
La primera condición preestablecida puede ser de la siguiente forma:
(1) el ancho de un bloque de codificación actual es menor que un primer umbral (por ejemplo, 16), y/o la altura del bloque de codificación actual es menor que un primer umbral (por ejemplo, 16); o
(2) una cantidad de muestra (ancho*altura) de un bloque de codificación actual es menor que un primer umbral (por ejemplo, 256).
La primera condición preestablecida puede acordarse tanto de un lado del codificador como del lado del decodificador, o puede ser especificada usando una sintaxis de nivel superior tal como SPS o PPS.
La segunda condición preestablecida puede ser de la siguiente forma:
(1) el ancho de un bloque de codificación actual es mayor o igual que un segundo umbral (por ejemplo, 64), y/o la altura del bloque de codificación actual es mayor o igual que un segundo umbral (por ejemplo, 64); o
(2) una cantidad de muestra (ancho*altura) de un bloque de codificación actual es mayor o igual que un segundo umbral (por ejemplo, 1024).
La segunda condición preestablecida puede acordarse tanto de un lado del codificador como del lado del decodificador, o puede ser especificada usando una sintaxis de nivel superior tal como una SPS o una PPS. El segundo umbral es mayor que el primer umbral.
S72: Construir la lista de información de movimiento candidato basándose en el índice de la lista de información de movimiento candidato.
Específicamente, la lista puede construirse usando el método correspondiente en la Realización 2, Realización 4 o Realización 6. Específicamente, la lista puede construirse usando un método que es el mismo o similar al método en S22, S42 o S62. En la presente memoria no se describen detalles nuevamente.
S73: Determinar la información de movimiento candidato óptimo basándose en la información de índice.
Específicamente, la información de movimiento candidato óptimo se determina a partir de la lista basándose en list-idx y mv-index. Específicamente, la información de movimiento candidato óptimo puede determinarse usando un método que es el mismo o similar al método en S23, S43 o S63. En la presente memoria no se describen detalles nuevamente.
S74: Realizar compensación de movimiento en el bloque de codificación actual basándose en la información de movimiento candidato óptimo obtenida en S73, para obtener un predictor de muestra del bloque. Se puede realizar una implementación específica usando un método que es el mismo o similar al método en S24, S44 o S64.
Las diferencias entre la Realización 7 y una tecnología actual son las siguientes: Varios vectores de movimiento candidatos se insertan en diferentes listas de vectores de movimiento candidatos; la corriente de bits se analiza para obtener la información de índice de la información de movimiento candidato óptimo; y el bloque de codificación actual se decodifica basándose en información de movimiento correspondiente. Adicionalmente, se construyen diferentes listas de información de movimiento basándose en las condiciones preestablecidas, y una lista candidato usada se analiza basándose en una característica del bloque de codificación actual, de modo que se puede reducir una cantidad de bits solicitada para indicar la lista candidato.
Una realización de esta solicitud proporciona un aparato 1800. Hacer referencia a la FIG. 18. El aparato 1800 incluye:
un módulo 1801 de obtención, configurado para obtener información de índice de información de movimiento candidato óptimo de un bloque actual;
un módulo 1802 de construcción, configurado para construir una lista de información de movimiento candidato basándose en la información de índice, donde un modo de obtener un vector de movimiento incluido en la lista de información de movimiento candidato varía con un campo de la información de índice;
un módulo 1803 de determinación, configurado para determinar un vector de movimiento óptimo de la lista de información de movimiento candidato basándose en la información de índice; y
un módulo 1804 de predicción, configurado para predecir el bloque actual basándose en el vector de movimiento óptimo.
Específicamente, el módulo 1801 de obtención se configura para realizar el método correspondiente en S21 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1802 de construcción se configura para realizar el método correspondiente en S22 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1803 de determinación se configura para realizar el método correspondiente en S23 y un método equivalente que puede ser usado para reemplazo parcial. Específicamente, el módulo 1804 de predicción se configura para realizar el método correspondiente en S24 y un método equivalente que puede ser usado para reemplazo parcial.
Específicamente, el módulo 1801 de obtención se configura para realizar el método correspondiente en S41 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1802 de construcción se configura para realizar el método correspondiente en S42 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1803 de determinación se configura para realizar el método correspondiente en S43 y un método equivalente que puede ser usado para reemplazo parcial. Específicamente, el módulo 1804 de predicción se configura para realizar el método correspondiente en S44 y un método equivalente que puede ser usado para reemplazo parcial.
Específicamente, el módulo 1801 de obtención se configura para realizar el método correspondiente en S51 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1802 de construcción se configura para realizar el método correspondiente en S52 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1803 de determinación se configura para realizar el método correspondiente en S53 y un método equivalente que puede ser usado para reemplazo parcial. Específicamente, el módulo 1804 de predicción se configura para realizar el método correspondiente en S54 y un método equivalente que puede ser usado para reemplazo parcial.
Específicamente, el módulo 1801 de obtención se configura para realizar el método correspondiente en S61 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1802 de construcción se configura para realizar el método correspondiente en S62 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1803 de determinación se configura para realizar el método correspondiente en S63 y un método equivalente que puede ser usado para reemplazo parcial. Específicamente, el módulo 1804 de predicción se configura para realizar el método correspondiente en S64 y un método equivalente que puede ser usado para reemplazo parcial.
Específicamente, el módulo 1801 de obtención se configura para realizar el método correspondiente en S71 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1802 de construcción se configura para realizar el método correspondiente en S72 y un método equivalente que puede ser usado para reemplazo parcial. El módulo 1803 de determinación se configura para realizar el método correspondiente en S73 y un método equivalente que puede ser usado para reemplazo parcial. Específicamente, el módulo 1804 de predicción se configura para realizar el método correspondiente en S74 y un método equivalente que puede ser usado para reemplazo parcial.
Adicionalmente, el módulo 1801 de obtención se configura para realizar el método correspondiente a S141, S151 o S171 y un método equivalente que puede ser usado para reemplazo parcial de S141, S151 o S171. El módulo 1802 de construcción se configura para realizar el método correspondiente a S142, S152 o S172 y un método equivalente que puede ser usado para reemplazo parcial de S142, S152 o S172. El módulo 1803 de determinación se configura para realizar el método correspondiente a S143, S153 o S173 y un método equivalente que puede ser usado para reemplazo parcial de S143, S153 o S173. El módulo 1804 de predicción se configura para realizar el método correspondiente a S144, S154 o S174 y un método equivalente que puede ser usado para reemplazo parcial de S144, S154 o S174.
Una realización de esta solicitud proporciona un dispositivo 19 de codificación. Hacer referencia a la FIG. 19. El dispositivo puede ser un dispositivo de codificación versátil, e incluye una memoria no volátil y un procesador acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S11, S12, S13 y S14 y métodos equivalentes.
Una realización de esta solicitud proporciona un dispositivo 19 de codificación, que incluye una memoria no volátil y un procesador acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S31,<s>32, S33 y S34 y métodos equivalentes.
Una realización de esta solicitud proporciona un dispositivo 19 de codificación, incluyendo una memoria no volátil y un procesador acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S51, S52, S53 y S54 y métodos equivalentes.
Una realización de esta solicitud proporciona un dispositivo 19 de decodificación (donde el dispositivo puede ser un dispositivo de codificación), que incluye una memoria no volátil 1901 y un procesador 1902 acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S21, S22, S23 y S24 y métodos equivalentes.
Una realización de esta solicitud proporciona un dispositivo 19 de decodificación, que incluye una memoria no volátil 1901 y un procesador 1902 acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S41, S42, S43 y S44 y métodos equivalentes. Una realización de esta solicitud proporciona un dispositivo 19 de decodificación, que incluye una memoria no volátil 1901 y un procesador 1902 acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S61, S62, S63 y S64 y métodos equivalentes. Una realización de esta solicitud proporciona un dispositivo 19 de decodificación, que incluye una memoria no volátil 1901 y un procesador 1902 acoplados entre ellos. El procesador invoca un código de programa almacenado en la memoria para realizar métodos tales como S71, S72, S73 y S74 y métodos equivalentes. El dispositivo 19 de codificación puede además incluir un dispositivo 1903 de visualización, configurado para mostrar una imagen de video.
Una realización de esta solicitud proporciona un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena un código de programa. El código de programa incluye una instrucción usada para realizar algunas, o todas, las etapas de S11 a S14, S21 a S24, S31 a S34, S41 a S44, S51 a S54, S61 a S64 y/o S71 a S74.
Una realización de esta solicitud proporciona un producto de programa informático. Cuando el producto de programa informático se ejecuta en un ordenador, el ordenador realiza algunas o todas las etapas de S11 a S14, S21 a S24, S31 a S34, S41 a S44, S51 a S54, S61 a S64 y/o S71 a S74.
Debe entenderse que las explicaciones y descripciones de algunas características técnicas en las realizaciones de método también son aplicables a realizaciones de aparato, dispositivos de codificación, dispositivos de decodificación, programas informáticos, medios de almacenamiento y similares.
Una persona experta en la técnica puede entender que las funciones descritas con referencia a varios bloques lógicos ilustrativos, módulos y etapas de algoritmos divulgados y descritos en esta memoria descriptiva pueden implementarse por medio de hardware, software, firmware o cualquier combinación de los mismos. Si se implementa por software, las funciones descritas con referencia a los bloques lógicos ilustrativos, módulos y etapas pueden ser almacenados o transmitidos a través de un medio legible por ordenador como una o más instrucciones o código y ejecutarse por una unidad de procesamiento basada en hardware. El medio legible por ordenador puede incluir un medio de almacenamiento legible por ordenador, que corresponde a un medio tangible tal como un medio de almacenamiento de datos, o un medio de comunicaciones que incluye cualquier medio que facilite la transferencia de un programa informático de un lugar a otro (por ejemplo, según un protocolo de comunicación). En este sentido, el medio legible por ordenador puede en general corresponder a: (1) un medio de almacenamiento tangible, no transitorio y legible por ordenador o (2) un medio de comunicaciones tal como una señal o una onda portadora. El medio de almacenamiento de datos puede ser cualquier medio que se pueda usar que pueda ser accedido por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para implementar las tecnologías descritas en esta solicitud. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, entre otros, dichos medios de almacenamiento legibles por ordenador pueden incluir una RAM, una ROM, una EEPROM, un CD-ROM u otro aparato de almacenamiento de disco compacto, un aparato de almacenamiento de disco magnético u otro aparato de almacenamiento magnético, una memoria flash, o cualquier otro medio que pueda ser usado para almacenar código de programa deseado en forma de una instrucción o una estructura de datos y que pueda ser accedido por medio de un ordenador. Adicionalmente, cualquier conexión se denomina adecuadamente como un medio legible por ordenador. Por ejemplo, si una instrucción se transmite desde un sitio web, un servidor, u otra fuente remota a través de un cable coaxial, un cable de fibra óptica, un par trenzado, una línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, el DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en una definición del medio. Sin embargo, debe entenderse que el medio de almacenamiento legible por ordenador y el medio de almacenamiento de datos no incluye conexiones, ondas portadoras, señales u otros medios transitorios, sino que en realidad significan medios de almacenamiento tangibles no transitorios. Los discos usados en esta memoria descriptiva incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD) y un disco Blu-ray. Los discos usualmente reproducen datos magnéticamente, mientras que otros tipos de discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también deben incluirse dentro del alcance de los medios legibles por ordenador.
Una instrucción puede ser ejecutada por uno o más procesadores, tales como uno o más procesadores de señal digital (DSP), microprocesadores de propósito general, circuitos integrados de aplicaciones específicas (ASIC), matrices de puertas programables en campo (FPGA) u otro circuito integrado equivalente o circuitos lógicos discretos. Por tanto, el término “procesador” usado en esta memoria descriptiva puede ser cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para implementar las tecnologías descritas en esta memoria descriptiva. Adicionalmente, en algunos aspectos, las funciones descritas con referencia a los bloques lógicos ilustrativos, módulos y etapas descritos en esta memoria descriptiva pueden proporcionarse dentro de módulos de hardware y/o software dedicados, y configurados para codificar y decodificar, o pueden ser incorporados en un códec combinado. Adicionalmente, las tecnologías pueden ser completamente implementadas en uno o más circuitos o elementos lógicos.
Las tecnologías en esta solicitud pueden ser implementadas en varios aparatos o dispositivos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Varios componentes, módulos o unidades se describen en esta solicitud para enfatizar aspectos funcionales de los aparatos configurados para realizar las tecnologías descritas, pero no son necesariamente implementados a través de diferentes unidades de hardware. En realidad, tal como se describe anteriormente, varias unidades pueden ser combinadas en una unidad de hardware de códec en combinación con software y/o firmware adecuado, o pueden proporcionarse a través de unidades de hardware interoperables (incluyendo uno o más procesadores descritos anteriormente).

Claims (13)

REIVINDICACIONES
1. Un método de decodificación, en donde el método comprende:
analizar (s151) una corriente de bits para obtener un elemento de sintaxis, en donde el elemento de sintaxis comprende un índice de información de movimiento candidato óptimo de un bloque actual y un identificador; determinar (s152), basándose en el identificador, que se construya una primera lista o una segunda lista para el bloque actual, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; en donde el bloque es el bloque actual y el sub-bloque es un sub-bloque del bloque actual, la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo al bloque actual o de la información de movimiento de un bloque codificado temporalmente contiguo al bloque actual, y la lista de información de movimiento candidato basada en sub bloques incluye una lista de información de movimiento candidato que se construye en el modo de fusión de modelo afín, AMM, o en modo de fusión compleja, o solo en predicción avanzada de vector de movimiento temporal, ATMVP, o en una pluralidad de modos diferentes, y cuando el identificador es un primer valor de característica, indica que se construya la primera lista para el bloque actual, o cuando el identificador es un segundo valor de característica, indica que se construya la segunda lista para el bloque actual, en donde la pluralidad de modos diferentes son cualquier combinación de los tres modos de AMM, del modo de fusión compleja y del ATMVP;
en donde el AMM se realiza recorriendo bloques codificados contiguos al bloque actual para encontrar un bloque codificado afín, y se obtiene información de movimiento de un punto de control del bloque codificado afín, y se deriva información de movimiento del vértice superior izquierdo y del vértice superior derecho del bloque de codificación actual, en donde el modo de fusión complejo se realiza obteniendo información de movimiento de cada punto de control a través de la derivación y combinando la información de movimiento de puntos de control para obtener información de movimiento que no es de traslación;
determinar (s153) información de movimiento óptimo a partir de la primera lista o de la segunda lista basándose en el índice; y
predecir (s154) el bloque actual basándose en la información de movimiento óptimo.
2. El método según la reivindicación 1, en donde la lista de información de movimiento candidato basada en sub bloque comprende una lista de información de movimiento candidato que se construye solo en el modo de fusión basándose en sub-bloque de ATMVP.
3. El método según la reivindicación 1 o 2, en donde la construcción de una segunda lista comprende: determinar una imagen de referencia colocada al lado del bloque actual;
dividir el bloque actual en sub-bloques de M*N;
obtener información de movimiento de una muestra de ubicación de punto central de una unidad de sub-bloque que corresponde a cada uno de los sub-bloques de M*N obtenidos a través de la división y que está en la imagen de referencia colocada a su lado, y convertir la información de movimiento en información de movimiento del sub-bloque mediante escalamiento; y
obtener la segunda lista basada en la información de movimiento de cada sub-bloque.
4. El método según cualquiera de las reivindicaciones 1 a 3, en donde un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral.
5. Un aparato de decodificación, en donde el aparato comprende:
un módulo de obtención, configurado para analizar una corriente de bits para obtener un elemento de sintaxis, en donde el elemento de sintaxis comprende un índice de información de movimiento candidato óptimo de un bloque actual y un identificador;
un módulo de construcción, configurado para determinar, basándose en el elemento de sintaxis, que se construya una primera lista o una segunda lista para el bloque actual, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; en donde el bloque es el bloque actual y el sub-bloque es un sub bloque del bloque actual, la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo al bloque actual o la información de movimiento de un bloque codificado temporalmente contiguo al bloque actual, y la lista de información de movimiento candidato basada en sub-bloque incluye una lista de información de movimiento candidato que se construye en el modo de fusión de modelo afín, AMM, o en modo de fusión compleja, o solo en predicción avanzada de vector de movimiento temporal, ATMVP, o en una pluralidad de modos diferentes, y cuando el identificador es un primer valor de característica, indica que se construya la primera lista para el bloque actual, o cuando el identificador es un segundo valor de característica, indica que se construya la segunda lista para el bloque actual, en donde la pluralidad de modos diferentes son cualquier combinación de los tres modos del AMM, del modo de fusión compleja y del ATMVP;
en donde el AMM se realiza recorriendo bloques codificados contiguos al bloque actual para encontrar un bloque codificado afín, y se obtiene información de movimiento de un punto de control del bloque codificado afín, y se deriva información de movimiento del vértice superior izquierdo y del vértice superior derecho del bloque de codificación actual, en donde el modo de fusión complejo se realiza obteniendo información de movimiento de cada punto de control a través de la derivación y combinando la información de movimiento de puntos de control para obtener información de movimiento que no es de traslación;
un módulo de determinación, configurado para determinar información de movimiento óptimo a partir de la primera lista o de la segunda lista basándose en el índice; y
un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo.
6. El aparato según la reivindicación 5, en donde la lista de información de movimiento candidato basada en sub bloque comprende una lista de información de movimiento candidato que se construye solo en un modo de fusión basado en sub-bloque de ATMVP.
7. El aparato según la reivindicación 5, en donde el módulo de construcción se configura específicamente para: determinar una imagen de referencia colocada al lado del bloque actual;
dividir el bloque actual en sub-bloques de M*N;
obtener información de movimiento de una muestra de ubicación de punto central de una unidad de sub-bloque que corresponde a cada uno de los sub-bloques de M*N obtenidos a través de división y que está en la imagen de referencia colocada a su lado, y convertir la información de movimiento en información de movimiento del sub-bloque mediante escalamiento; y
obtener la segunda lista basada en la información de movimiento de cada sub-bloque.
8. El aparato según cualquiera de las reivindicaciones 5 a 7, en donde un ancho del bloque actual es mayor o igual que un umbral, y/o una altura del bloque actual es mayor o igual que un umbral.
9. Un método de codificación, en donde el método comprende:
construir una primera lista (S1301), en donde la primera lista es una lista de información de movimiento candidato basada en bloque;
construir una segunda lista (S1302), en donde la segunda lista es una lista de información de movimiento candidato basada en sub-bloque;
en donde el bloque es el bloque actual y el sub-bloque es un sub-bloque del bloque actual, la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo al bloque actual o de la información de movimiento de un bloque codificado temporalmente contiguo al bloque actual, y la lista de información de movimiento candidato basada en sub bloque incluye una lista de información de movimiento candidato que se construye en el modo de fusión de modelo afín, AMM, o en modo de fusión compleja, o solo en predicción avanzada de vector de movimiento temporal, ATMVP, o en una pluralidad de modos diferentes, en donde la pluralidad de modos diferentes son cualquier combinación de los tres modos del AMM, del modo de fusión compleja y del ATMVP;
en donde el AMM se realiza recorriendo bloques codificados contiguos al bloque actual para encontrar un bloque codificado afín, y se obtiene información de movimiento de un punto de control del bloque codificado afín, y se deriva información de movimiento del vértice superior izquierdo y del vértice superior derecho del bloque de codificación actual, en donde el modo de fusión compleja se realiza obteniendo información de movimiento de cada punto de control a través de la derivación y combinando la información de movimiento de puntos de control para obtener información de movimiento que no es de traslación;
determinar (S1303) información de movimiento candidato óptimo a partir de la primera lista y de la segunda lista; y
predecir (S1304) el bloque actual basándose en la información de movimiento óptimo;
obtener (S1305) un identificador que se usa para determinar una lista de información de movimiento candidato que comprende la información de movimiento candidato óptimo del bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es la primera lista, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es la segunda lista; y
codificar (S1306) el identificador y el índice en una corriente de bits.
10. El método según la reivindicación 9, en donde la construcción de una segunda lista comprende: determinar una imagen de referencia colocada al lado del bloque actual;
dividir el bloque actual en sub-bloques de M*N;
obtener información de movimiento de una muestra de ubicación de punto central de una unidad de sub-bloque que corresponde a cada uno de los sub-bloques de M*N obtenidos a través de la división y que está en la imagen de referencia colocada a su lado, y convertir la información de movimiento en información de movimiento del sub-bloque mediante escalamiento; y
obtener la segunda lista basada en la información de movimiento de cada sub-bloque.
11. Un aparato de codificación, en donde el aparato comprende:
un módulo de construcción, configurado para construir una primera lista y una segunda lista, en donde la primera lista es una lista de información de movimiento candidato basada en bloque, y la segunda lista es una lista de información de movimiento candidato basada en sub-bloque; en donde el bloque es el bloque actual y el sub bloque es un sub-bloque del bloque actual, la lista de información de movimiento candidato basada en bloque incluye al menos una de la información de movimiento de un bloque codificado espacialmente contiguo al bloque actual o la información de movimiento de un bloque codificado temporalmente contiguo al bloque actual, y la lista de información de movimiento candidato basada en sub-bloques incluye una lista de información de movimiento candidato que se construye en el modo de fusión de modelo afín, a Mm , o en modo de fusión compleja, o solo en predicción avanzada de vector de movimiento temporal, ATMVP, o en una pluralidad de modos diferentes, en donde la pluralidad de modos diferentes son cualquier combinación de los tres modos del AMM, del modo de fusión compleja y del ATMVP;
en donde el AMM se realiza recorriendo bloques codificados contiguos al bloque actual para encontrar un bloque codificado afín, y se obtiene información de movimiento de un punto de control del bloque codificado afín, y se deriva información de movimiento del vértice superior izquierdo y del vértice superior derecho del bloque de codificación actual, en donde el modo de fusión complejo se realiza obteniendo información de movimiento de cada punto de control a través de la derivación y combinando la información de movimiento de puntos de control para obtener información de movimiento que no es de traslación;
un módulo de determinación, configurado para determinar información de movimiento candidato óptimo a partir de la primera lista de información de movimiento candidato y de la segunda lista de información de movimiento candidato; y
un módulo de predicción, configurado para predecir el bloque actual basándose en la información de movimiento óptimo; y
un módulo de obtención, configurado para obtener un identificador que se usa para determinar una lista de información de movimiento candidato que comprende información de movimiento candidato óptimo del bloque actual, y obtener un índice de la información de movimiento candidato óptimo en la lista de información de movimiento candidato, en donde un modo de inter-predicción usado para el bloque actual es un modo de fusión, y cuando el identificador es un primer valor de característica, la lista de información de movimiento candidato es la primera lista, o cuando el identificador es un segundo valor de característica, la lista de información de movimiento candidato es la segunda lista;
un módulo de codificación, configurado para codificar el identificador y el índice en una corriente de bits.
12. El aparato según la reivindicación 11, en donde el módulo de construcción se configura específicamente para:
determinar una imagen de referencia colocada al lado del bloque actual;
dividir el bloque actual en sub-bloques de M*N;
obtener información de movimiento de una muestra de localización de punto central de una unidad de sub bloque que corresponde a cada uno de los sub-bloques de M*N obtenidos a través de la división y que está en la imagen de referencia colocada a su lado, y convertir la información de movimiento en información de movimiento del sub-bloque mediante escalamiento; y
obtener la segunda lista basada en la información de movimiento de cada sub-bloque.
13. Un medio de almacenamiento legible por ordenador, en donde el medio de almacenamiento legible por ordenador almacena un programa informático, y cuando el programa informático se ejecuta en un procesador, se implementa el método según cualquiera de las reivindicaciones 1 a 4, o 9 a 10.
ES19831026T 2018-07-02 2019-07-02 Método y dispositivo de predicción de vector de movimiento y códec Active ES2983310T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862693444P 2018-07-02 2018-07-02
US201862694451P 2018-07-06 2018-07-06
US201862699750P 2018-07-18 2018-07-18
PCT/CN2019/094429 WO2020007304A1 (zh) 2018-07-02 2019-07-02 一种运动矢量预测方法、装置与编解码器

Publications (1)

Publication Number Publication Date
ES2983310T3 true ES2983310T3 (es) 2024-10-22

Family

ID=69059326

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19831026T Active ES2983310T3 (es) 2018-07-02 2019-07-02 Método y dispositivo de predicción de vector de movimiento y códec

Country Status (12)

Country Link
US (2) US12113959B2 (es)
EP (2) EP3809705B1 (es)
JP (3) JP7223111B2 (es)
KR (3) KR102763166B1 (es)
CN (4) CN121334398A (es)
ES (1) ES2983310T3 (es)
HU (1) HUE067288T2 (es)
MX (1) MX2020013878A (es)
PL (1) PL3809705T3 (es)
PT (1) PT3809705T (es)
SG (1) SG11202012701XA (es)
WO (1) WO2020007304A1 (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102387873B1 (ko) * 2018-12-13 2022-04-18 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 구축된 아핀 병합 후보들을 도출하기 위한 방법
CN111698506B (zh) * 2019-03-11 2022-04-26 杭州海康威视数字技术股份有限公司 运动信息候选者列表构建方法、三角预测解码方法及装置
US12120308B2 (en) 2021-10-20 2024-10-15 Tencent America LLC Methods and devices for restriction on motion vector difference
US20230362402A1 (en) * 2022-05-09 2023-11-09 Tencent America LLC Systems and methods for bilateral matching for adaptive mvd resolution
CN115297333B (zh) * 2022-09-29 2023-03-24 北京达佳互联信息技术有限公司 视频数据的帧间预测方法、装置、电子设备及存储介质
CN115955572A (zh) * 2022-11-21 2023-04-11 浙江大华技术股份有限公司 编码方法、解码方法、电子设备和计算机可读存储介质
US12425623B2 (en) * 2023-01-09 2025-09-23 Tencent America LLC AMVP-merge mode with SBTMVP
WO2024148540A1 (zh) * 2023-01-11 2024-07-18 Oppo广东移动通信有限公司 编解码方法、解码器、编码器、码流及存储介质
EP4694134A1 (en) * 2023-03-30 2026-02-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Encoding/decoding method, code stream, encoder, decoder, and storage medium
KR20250148504A (ko) * 2024-04-05 2025-10-14 한국전자통신연구원 어파인 예측 모드를 포함하는 영상 부호화/복호화 방법, 장치 및 비트스트림 저장 매체

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5303556B2 (ja) * 2007-08-06 2013-10-02 トムソン ライセンシング 複数のインタービュー参照ピクチャを用いたモーションスキップモードのための方法及び装置
CN102595116B (zh) * 2011-01-14 2014-03-12 华为技术有限公司 多图像块划分的编解码方法和装置
CN103716631B (zh) * 2012-09-29 2017-04-05 华为技术有限公司 用于图像处理的方法、装置、编码器和解码器
GB2509704B (en) * 2013-01-04 2016-06-01 Canon Kk Method and device for processing prediction information for encoding or decoding at least part of an image
US9756337B2 (en) * 2013-12-17 2017-09-05 Qualcomm Incorporated Signaling color values for 3D lookup table for color gamut scalability in multi-layer video coding
US10666968B2 (en) * 2014-05-06 2020-05-26 Hfi Innovation Inc. Method of block vector prediction for intra block copy mode coding
CN104601988B (zh) * 2014-06-10 2018-02-02 腾讯科技(北京)有限公司 视频编码器、方法和装置及其帧间模式选择方法和装置
WO2016008157A1 (en) * 2014-07-18 2016-01-21 Mediatek Singapore Pte. Ltd. Methods for motion compensation using high order motion model
WO2016048834A1 (en) * 2014-09-26 2016-03-31 Vid Scale, Inc. Intra block copy coding with temporal block vector prediction
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US10271064B2 (en) 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
EP3355578B1 (en) * 2015-09-24 2020-12-09 LG Electronics Inc. Motion vector predictor derivation and candidate list construction
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US10721489B2 (en) * 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
TW201826796A (zh) * 2016-11-22 2018-07-16 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置、編碼方法及解碼方法
CN106789217A (zh) * 2016-12-13 2017-05-31 重庆金美通信有限责任公司 一种战术通信网络智能开通方法
EP3649780B1 (en) * 2017-07-03 2025-06-25 InterDigital VC Holdings, Inc. Motion-compensation prediction based on bi-directional optical flow
EP3688992A1 (en) * 2017-09-28 2020-08-05 Vid Scale, Inc. Complexity reduction of overlapped block motion compensation
CN107613305B (zh) * 2017-10-12 2020-04-07 杭州当虹科技股份有限公司 一种hevc中p、b帧快速运动估计方法
CN119922329A (zh) * 2017-11-01 2025-05-02 交互数字Vc控股公司 用于合并模式的解码器侧运动矢量细化和子块运动导出
US11889100B2 (en) * 2017-11-14 2024-01-30 Qualcomm Incorporated Affine motion vector prediction in video coding
US10397603B1 (en) * 2018-05-08 2019-08-27 Tencent America LLC Method and apparatus for video coding
US12348762B2 (en) * 2018-06-19 2025-07-01 Qualcomm Incorporated Signaling sub-prediction unit motion vector predictor
CN112585972B (zh) * 2018-08-17 2024-02-09 寰发股份有限公司 视频编解码的帧间预测方法及装置
EP3857888A4 (en) * 2018-10-06 2022-08-03 HFI Innovation Inc. METHOD AND APPARATUS FOR AN AREA OF A SHARED MERGER CANDIDATE LIST FOR ENABLING VIDEO CODING
KR102711166B1 (ko) * 2018-11-06 2024-09-30 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 모션 정보의 위치 의존적 저장

Also Published As

Publication number Publication date
HUE067288T2 (hu) 2024-10-28
JP2021530165A (ja) 2021-11-04
KR20230155621A (ko) 2023-11-10
KR102600670B1 (ko) 2023-11-08
CN112602326A (zh) 2021-04-02
CN121284271A (zh) 2026-01-06
KR102763166B1 (ko) 2025-02-04
US20210168355A1 (en) 2021-06-03
PT3809705T (pt) 2024-07-22
CN121334398A (zh) 2026-01-13
EP4362468A2 (en) 2024-05-01
PL3809705T3 (pl) 2024-08-26
EP3809705B1 (en) 2024-05-01
EP3809705A4 (en) 2021-04-21
KR20210019556A (ko) 2021-02-22
EP4362468A3 (en) 2024-06-26
US12113959B2 (en) 2024-10-08
CN112866720A (zh) 2021-05-28
JP2025060684A (ja) 2025-04-10
BR112020026941A2 (pt) 2021-03-30
CN112866720B (zh) 2022-02-18
JP2023065393A (ja) 2023-05-12
US20250024018A1 (en) 2025-01-16
WO2020007304A1 (zh) 2020-01-09
JP7223111B2 (ja) 2023-02-15
SG11202012701XA (en) 2021-01-28
EP3809705A1 (en) 2021-04-21
JP7853927B2 (ja) 2026-04-30
MX2020013878A (es) 2021-04-12
KR20250024100A (ko) 2025-02-18

Similar Documents

Publication Publication Date Title
ES2983310T3 (es) Método y dispositivo de predicción de vector de movimiento y códec
ES2965276T3 (es) Método de decodificación de vídeo y decodificador de vídeo
ES2974237T3 (es) Método y aparato de predicción de imágenes de vídeo
ES2993252T3 (en) An encoder, a decoder and corresponding methods using ibc merge list
ES3012742T3 (en) Interframe prediction method and device for video data
TW201931854A (zh) 統一合併候選列表運用
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
ES2981632T3 (es) Método y aparato de adquisición de vector de movimiento
ES3019563T3 (en) Image decoding and encoding apparatus based on motion prediction in sub-block unit in image coding system
BR112021004505A2 (pt) método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo
BR112017006018B1 (pt) Método de predição de imagem e aparelho de decodificação
ES2978268T3 (es) Método y aparato de codificación y decodificación de imágenes de video
ES2966509T3 (es) Método y dispositivo de partición de imagen
BR122021009779A2 (pt) Método e aparelho de decodificação de imagens com base em predição de movimento afim usando lista de candidatos a mvp afim no sistema de codificação de imagens
ES2984115T3 (es) Método y aparato de adquisición de vector de movimiento
CN104704819A (zh) 3d视频编码的视差矢量推导和视图间运动矢量预测的方法及装置
ES2998959T3 (en) Inter-frame prediction method and device
BR112021000349A2 (pt) Codificador de vídeo, decodificador de vídeo, e método correspondente
ES3038069T3 (en) Method and apparatus for inter prediction in video processing system
BR122023008874B1 (pt) Método e aparelho de predição de vetor de movimento, codificador, e decodificador
BR122022009459B1 (pt) Método e aparelho de predição de vetor de movimento, codificador, e decodificador
BR112020026941B1 (pt) Método e aparelho de predição de vetor de movimento, codificador, e decodificador
BR122023008877B1 (pt) Método e aparelho de predição de vetor de movimento, codificador, e decodificador
BR122023025289A2 (pt) Método e aparelho para codificar/decodificar imagem com base no cabeçalho de figura incluindo informações relacionadas à figura colocalizada, e método para transmitir fluxo de bits
BR112018000085B1 (pt) Método e aparelho de previsão de imagem e meio legível por computador