ES3049652T3 - Decoding method and device - Google Patents

Decoding method and device

Info

Publication number
ES3049652T3
ES3049652T3 ES20831928T ES20831928T ES3049652T3 ES 3049652 T3 ES3049652 T3 ES 3049652T3 ES 20831928 T ES20831928 T ES 20831928T ES 20831928 T ES20831928 T ES 20831928T ES 3049652 T3 ES3049652 T3 ES 3049652T3
Authority
ES
Spain
Prior art keywords
block
information
sub
target
index value
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
ES20831928T
Other languages
English (en)
Inventor
Fangdong Chen
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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Application granted granted Critical
Publication of ES3049652T3 publication Critical patent/ES3049652T3/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/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Landscapes

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

Abstract

La presente solicitud proporciona un método y un aparato para la codificación y decodificación, y su dispositivo. El método comprende: dividir un bloque actual en un primer subbloque triangular y un segundo subbloque triangular si la información de características del bloque actual cumple una condición específica; construir una lista de información de movimiento para el bloque actual, que comprende múltiples fragmentos de información de movimiento candidata; a partir de la lista de información de movimiento, obtener la primera información de movimiento objetivo del primer subbloque triangular y la segunda información de movimiento objetivo del segundo subbloque triangular, siendo la primera información de movimiento objetivo diferente de la segunda información de movimiento objetivo; según la primera información de movimiento objetivo, realizar una compensación de movimiento en el primer subbloque triangular para obtener un valor predicho del primer subbloque triangular; y, según la segunda información de movimiento objetivo, realizar una compensación de movimiento en el segundo subbloque triangular para obtener un valor predicho del segundo subbloque triangular. La solución técnica de la presente solicitud puede mejorar el rendimiento de la codificación. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0003] Método y dispositivo de decodificación
[0005] Campo técnico
[0007] La presente solicitud se refiere al campo técnico de la codificación y decodificación, y en particular a un método y a un dispositivo de codificación y decodificación.
[0009] Antecedentes
[0011] Con el fin de ahorrar espacio, las imágenes de vídeo se transmiten después de ser codificadas. Un método completo de codificación de vídeo puede incluir procesos tales como predicción, transformación, cuantificación, codificación por entropía, filtrado, y similares. La codificación predictiva puede incluir intra codificación e inter codificación. Además, la inter codificación puede usar píxeles de una imagen adyacente ya codificada para predecir el píxel actual utilizando la correlación en el dominio de tiempo del vídeo, con el fin de eliminar de forma eficaz la redundancia en el dominio de tiempo del vídeo. La intra codificación puede usar píxeles del bloque codificado en la porción (slice) actual de imagen para predecir el píxel actual utilizando la correlación en el dominio de tiempo del vídeo, con el fin de eliminar de forma eficaz la redundancia en el dominio de tiempo del vídeo.
[0013] En la inter codificación, un vector de movimiento se puede utilizar para representar el desplazamiento relativo entre un bloque actual de una porción (slice) actual de imagen y un bloque de referencia de una imagen de frame de referencia. Por ejemplo, una imagen A de una porción actual y una imagen B de un frame de referencia presentan una fuerte correlación temporal. Cuando se va a transmitir el bloque actual de la imagen A, se puede realizar una búsqueda de movimiento en la imagen B para encontrar un bloque de referencia B1 que se corresponda de la mejor manera con el bloque actual A1, y se puede determinar un desplazamiento relativo entre el bloque actual A1 y el bloque de referencia B1, lo que constituye el vector de movimiento del bloque actual A1.
[0015] En algunos ejemplos, el bloque actual es un rectángulo. Sin embargo, los bordes de un objeto real pueden no ser en general absolutamente horizontales ni verticales. Para un bloque actual situado en el borde del objeto, pueden existir dos objetos diferentes (tal como un objeto en primer plano y un fondo). En este caso, si el bloque rectangular actual se predice utilizando un único modo de predicción, se producirían problemas tales como un efecto de predicción deficiente, grandes residuales de codificación, un rendimiento de codificación deficiente, y similares.
[0017] Además, el documento WO2020142447A1 divulga un método para la codificación de vídeo. El método comprende: dividir imágenes de vídeo en una pluralidad de unidades de codificación (CU: Coding Units), al menos una de las cuales se divide adicionalmente en dos unidades de predicción (PU: Prediction Units), incluyendo al menos una PU de forma triangular con una orientación de partición en una de las siguientes: desde la esquina superior izquierda hacia la esquina inferior derecha, y desde la esquina superior derecha hacia la esquina inferior izquierda; construir una lista de candidatos de vector de movimiento de predicción unidireccional; determinar si una CU actual está codificada en modo de predicción triangular de acuerdo con la información codificada; señalizar un indicador de orientación de partición que indica la orientación de la partición; y señalizar valores de índice que indican las entradas seleccionadas en la lista construida de candidatos de vector de movimiento de predicción unidireccional.
[0019] El documento WO2020073896A1 divulga un aparato y métodos para la codificación y decodificación de vídeo, que derivan vectores de movimiento (MV: Motion Vectors) para un bloque de codificación.
[0021] El documento CN109819255A divulga un método de codificación y decodificación y un correspondiente equipo de lo mismo, y el método comprende las etapas de: dividir un bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular si la información característica del bloque actual cumple condiciones específicas; obtener primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub-bloque triangular; siendo la primera información de movimiento objetivo diferente de la segunda información de movimiento objetivo; y realizar un procesamiento de codificación o un procesamiento de decodificación en el bloque actual de acuerdo con la primera información de movimiento objetivo y la segunda información de movimiento objetivo.
[0023] Una solicitud no patentada de RU-LING LIAO ET AL: "CE10.3.1.b: Triangular prediction unit mode", 12. REUNIÓN JVET; 20181003 -20181012; MACAO; núm. JVET-L0124-v2; JVET-L0124, 2018-10-05, páginas 1-8, XP030194820, divulga un modo de unidad de predicción triangular según se describe en CE 10.
[0024] Resumen
[0025] La presente solicitud proporciona un método y un dispositivo de codificación y decodificación, que pueden mejorar el rendimiento de la codificación.
[0026] La presente invención se define en el conjunto de reivindicaciones adjuntas.
[0027] Se puede observar a partir de las soluciones anteriores que, en la forma de realización de la presente solicitud, si información característica de un bloque actual cumple condiciones específicas, el bloque actual se divide en un primer sub-bloque triangular y un segundo sub-bloque triangular; se adquiere, de la lista de información de movimiento, primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub-bloque triangular; se realiza compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; se realiza compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular. El método anterior puede mejorar la precisión de la predicción, mejorar el rendimiento de la predicción, mejorar el rendimiento de la codificación y reducir los residuales de codificación.
[0028] Breve descripción de los dibujos
[0029] Con el fin de describir más claramente la solución técnica de las formas de realización de la presente solicitud, a continuación se describen brevemente unos dibujos necesarios en dichas formas de realización. La Figura 1 es un diagrama esquemático de un marco de codificación de vídeo de acuerdo con una forma de realización de la presente solicitud.
[0030] La Figura 2 es un diagrama de flujo de un método de codificación y decodificación de acuerdo con una forma de realización de la presente solicitud.
[0031] La Figura 3 es un diagrama de flujo de un método de codificación de acuerdo con una forma de realización de la presente solicitud.
[0032] La Figura 4 es un diagrama de flujo de un método de decodificación de acuerdo con una forma de realización de la presente solicitud.
[0033] Las Figuras 5A-5B son diagramas esquemáticos de bloques candidatos de acuerdo con una forma de realización de la presente solicitud.
[0034] Las Figuras 6A-6B ilustran de forma esquemática la división de un bloque actual de acuerdo con una forma de realización de la presente solicitud.
[0035] La Figura 7A ilustra de forma esquemática una correspondencia entre valores de índice e información de movimiento unidireccional de acuerdo con una forma de realización de la presente solicitud.
[0036] Las Figuras 7B-7C ilustran de forma esquemática la división de sub-bloques triangulares de acuerdo con una forma de realización de la presente solicitud.
[0037] La Figura 7D es un diagrama esquemático de compensación de movimiento de acuerdo con una forma de realización de la presente solicitud.
[0038] Las Figuras 7E-7F son diagramas esquemáticos de almacenamiento de información de movimiento de acuerdo con una forma de realización de la presente solicitud.
[0039] La Figura 8 es un diagrama estructural de un aparato de codificación y decodificación de acuerdo con una forma de realización de la presente solicitud.
[0040] La Figura 9A es un diagrama estructural de hardware de un dispositivo de decodificación de acuerdo con una forma de realización de la presente solicitud.
[0041] La Figura 9B es un diagrama estructural de hardware de un dispositivo de codificación de acuerdo con una forma de realización de la presente solicitud.
[0042] Los términos utilizados en las formas de realización de la presente solicitud se usan únicamente con el propósito de describir formas de realización específicas, y no para limitar diversas formas de realización de la presente solicitud. Las formas singulares de “un/una”, “dicho/dicha” y “el/la” utilizadas en la presente solicitud y en las reivindicaciones también se entenderán como que incluyen las formas plurales, a menos que el contexto indique claramente otros significados. Asimismo, se debe entender que el término “y/o”, según se utiliza en el presente documento, se refiere a cualquiera o a todas las posibles combinaciones de uno o más de los elementos enumerados asociados. Se debe entender que, aunque los términos primero, segundo, tercero, etc. Se pueden utilizar en las formas de realización de la presente solicitud para describir diversa información, dicha información no se debe limitar a estos términos. Estos términos se utilizan únicamente para distinguir información del mismo tipo entre sí. Por ejemplo, sin apartarse del alcance de la presente solicitud, una primera información también se puede denominar segunda información, y de manera similar, la segunda información también se puede denominar primera información. Según el contexto, además, la palabra “si” se puede interpretar como “cuando” o “en respuesta a una determinación”.
[0044] Las formas de realización de la presente solicitud proponen un método, un aparato y un dispositivo de codificación y decodificación, que pueden involucrar los siguientes conceptos.
[0046] Tecnología de intra predicción e inter predicción: la intra predicción se refiere a predecir un píxel actual utilizando píxeles en el bloque codificado de una imagen actual basándose en la correlación del dominio espacial del vídeo, con el fin de eliminar la redundancia en el dominio espacial del vídeo; la inter predicción se refiere a predecir píxeles en una imagen actual utilizando píxeles en imágenes adyacentes ya codificadas basándose en la correlación de un dominio de tiempo del vídeo, dado que una secuencia de vídeo contiene una fuerte correlación en el dominio de tiempo, con el fin de eliminar de forma eficaz la redundancia en el dominio de tiempo del vídeo. La parte de inter predicción de un estándar de codificación de vídeo adopta básicamente la tecnología de compensación de movimiento basada en bloques. El principio consiste en encontrar un bloque de mejor correspondencia, para cada bloque de píxeles de la imagen actual, en una imagen previamente codificada. Este proceso se denomina Estimación de Movimiento (ME: Motion Estimation).
[0048] Vector de movimiento (MV: Motion Vector): en la inter codificación, un vector de movimiento se puede utilizar para representar un desplazamiento relativo entre un bloque de codificación actual y un bloque de mejor correspondencia en una imagen de referencia del bloque de codificación actual. Cada bloque dividido tiene un vector de movimiento correspondiente a transmitir a un extremo de decodificación. Codificar y transmitir de manera independiente un vector de movimiento de cada bloque, en particular cuando el bloque dividido tiene un tamaño pequeño, puede requerir un consumo considerable de bits. Con el fin de reducir el número de bits para la codificación del vector de movimiento, se puede utilizar la correlación espacial entre bloques de imagen adyacentes para predecir el vector de movimiento de un bloque actual a codificar basándose en los vectores de movimiento de los bloques codificados adyacentes, y a continuación se puede codificar la diferencia de predicción. De este modo, el número de bits que representan el vector de movimiento se puede reducir de forma eficaz. En el proceso de codificación del vector de movimiento del bloque actual, en primer lugar, se utilizan los vectores de movimiento de bloques codificados adyacentes para predecir el vector de movimiento del bloque actual, y a continuación se codifica el valor de diferencia de vector de movimiento (MVD: Motion Vector Difference) entre el valor de predicción de vector de movimiento (MVP: Motion Vector Prediction) y el valor de estimación real del vector de movimiento, reduciendo de este modo de forma eficaz el número de bits de codificación del MV.
[0050] Información de movimiento: dado que el vector de movimiento representa el desplazamiento de posición entre un bloque de imagen actual y un determinado bloque de imagen de referencia, con el fin de adquirir con precisión información relacionada con el bloque de imagen, además del vector de movimiento, también se utiliza información de índice de una imagen de frame de referencia para indicar qué imagen de frame de referencia se debe utilizar. En la tecnología de codificación de vídeo, se puede establecer habitualmente una lista de imágenes de frame de referencia para una imagen de porción (slice) actual, y la información de índice de imagen de frame de referencia indica qué imagen de frame de referencia en la lista de imágenes de frame de referencia adopta el bloque de imagen actual. Además, muchas tecnologías de codificación también admiten múltiples listas de imágenes de referencia. Por lo tanto, un valor de índice también se puede utilizar para indicar qué lista de imágenes de referencia se utiliza, pudiendo denominarse el valor de índice como dirección de referencia. En la tecnología de codificación de vídeo, la información relacionada con el movimiento, tal como vector de movimiento, índice de frame de referencia, dirección de referencia y similares, se puede denominar colectivamente información de movimiento.
[0052] Optimización tasa distorsión: dos indicadores para evaluar la eficiencia de codificación son la tasa de código y la Relación Pico Señal-Ruido (PSNR: Peak Signal to Noise Ratio). Cuanto menor es el flujo de bits, mayor es la tasa de compresión, y cuanto mayor es la relación PSNR, mejor es la calidad de la imagen reconstruida. En una selección de modo, una fórmula discriminante es esencialmente una evaluación integral de los dos indicadores. Por ejemplo, el coste correspondiente a un modo: J(modo) = D A * R, en el que D representa la distorsión, que se puede medir normalmente mediante un indicador SSE. El indicador SSE se refiere a una suma del cuadrado medio de la diferencia entre el bloque de imagen reconstruido y la imagen original; A es el multiplicador de Lagrange; y R es el número real de bits requeridos para la codificación del bloque de imagen en este modo, incluyendo la suma del número de bits requeridos para codificar información de modo, información de movimiento, residuales, etc.
[0053] Marco de codificación de vídeo: según se muestra en la Figura 1, un marco de codificación de vídeo se puede utilizar para implementar el flujo de procesamiento en el extremo de codificación de acuerdo con la forma de realización de la presente solicitud. Además, un diagrama esquemático de un marco de decodificación de vídeo es similar al de la Figura 1, por lo cual no se repetirá aquí, y el marco de decodificación de vídeo se puede utilizar para realizar el flujo de procesamiento en el extremo de decodificación de acuerdo con la forma de realización de la presente solicitud. En particular, el marco de codificación de vídeo y el marco de decodificación de vídeo pueden incluir módulos tales como intra predicción, estimación/compensación de movimiento, búfer de imagen de referencia, filtrado en bucle, reconstrucción, transformación, cuantificación, transformación inversa, cuantificación inversa, codificador por entropía, etc. En el extremo de codificación, el flujo de procesamiento en el extremo de codificación se puede realizar mediante la cooperación entre dichos módulos. En el extremo de decodificación, el flujo de procesamiento en el extremo de decodificación se puede realizar mediante la cooperación entre dichos módulos.
[0055] Codificación de indicadores (flag coding): en la codificación de vídeo, existen muchos modos, tales como el modo de fusión (Merge mode), el modo de partición geométrica con partición triangular, etc. Para un determinado bloque, se puede adoptar un modo específico. Con el fin de indicar qué modo se adopta, cada bloque necesita ser marcado codificando un correspondiente bit indicador (flag bit). En otras palabras, en el extremo de codificación, se puede determinar el valor del bit indicador, y a continuación dicho bit indicador se puede codificar y transmitir al extremo de decodificación. En el extremo de decodificación, se determina si un modo correspondiente está habilitado analizando el bit indicador.
[0057] Modo de fusión (Merge mode): el modo de fusión puede incluir, pero no se limita a, un modo de fusión regular (regular merge mode), un modo de partición geométrica con partición triangular (también denominado modo TPM), un modo de fusión con MVD (también denominado modo MMVD), un modo de fusión basado en sub-bloques (también denominado modo de fusión SB), y un modo combinado de fusión entre imágenes e intra predicción (también denominado modo CIIP). Si el bloque actual habilita el modo de fusión, se puede utilizar uno de los cinco modos de fusión mencionados anteriormente.
[0059] Modo skip (modo de omisión; skip mode): el modo skip es un modo de fusión especial, que se diferencia del modo de fusión en que el modo skip no requiere codificar residuales. Si el bloque actual adopta el modo skip, el modo CIIP es desactivado por defecto; sin embargo, el modo de fusión regular, el modo de partición geométrica con partición triangular, el modo de fusión con MVD y el modo de fusión basado en sub-bloques siguen siendo aplicables.
[0061] Se debe tener en cuenta que se puede generar un valor de predicción basándose en el modo de fusión regular, el modo TPM, el modo<m>M<v>D, el modo de fusión SB, el modo CIIP, etc. Después de que se haya generado el valor de predicción, para el modo de fusión, se pueden utilizar el valor de predicción y el valor residual para obtener un valor reconstruido; para el modo skip, no existe valor residual, y se utiliza directamente el valor de predicción para obtener el valor reconstruido.
[0063] Tipo de porción (Slice type): si la porción actual no se puede codificar con referencia a la información de otros frames, la porción actual puede ser una porción I; si la porción actual se puede codificar con referencia a la información de un determinado frame (pero no más de 1 frame), la porción actual puede ser una porción P; si la porción actual se puede codificar con referencia a la información de una determinada porción o de dos porciones, la porción actual puede ser una porción B.
[0065] Conjunto de parámetros de secuencia (SPS: Sequence Parameter Set): en un conjunto de parámetros de secuencia existen bits indicadores que determinan si ciertos mecanismos de conmutación de herramientas están permitidos en toda la secuencia. Si un bit indicador es igual a 1, una herramienta correspondiente a dicho bit indicador se puede habilitar en la secuencia de vídeo; si un bit indicador es 0, la herramienta correspondiente a dicho bit indicador no se puede habilitar en la secuencia de vídeo.
[0067] Codificación aritmética binaria adaptativa basada en contexto (CABAC: Context-Based Adaptive Binary Arithmetic Coding): CABAC es un método de codificación / decodificación por entropía comúnmente utilizado, que incluye dos modos, es decir, un modo CABAC que almacena y actualiza al menos un modelo de contexto, y un modo CABAC de bypass que no almacena ni actualiza el modelo de contexto.
[0069] Actualmente, el bloque actual es un rectángulo, y los bordes de un objeto real pueden no ser absolutamente horizontales ni verticales. Para un bloque actual en un borde de un objeto, pueden existir al mismo tiempo dos objetos diferentes (tal como un objeto en primer plano y un fondo). En este caso, si el bloque actual se predice utilizando un único modo de predicción, aparecen problemas tales como un efecto de predicción deficiente, grandes residuales de codificación, un rendimiento de codificación deficiente, y similares.
[0070] Con el fin de resolver los problemas anteriores, una forma de realización de la presente solicitud proporciona un modo de partición geométrica con partición triangular, en el cual un bloque actual se puede dividir en dos sub-bloques triangulares que poseen diferente información de movimiento objetivo, mejorando de este modo la compatibilidad con la implementación en hardware y mejorando el rendimiento de codificación. El método de codificación y decodificación en las formas de realización de la presente solicitud se describirá en detalle más adelante en combinación con varias formas de realización específicas.
[0072] Forma de realización 1: la Figura 2 es un diagrama de flujo esquemático de un método de codificación y decodificación de acuerdo con una forma de realización de la presente solicitud. El método de codificación y decodificación se puede aplicar a un extremo de decodificación o a un extremo de codificación, y puede comprender:
[0073] etapa 201: si información característica de un bloque actual cumple condiciones específicas, dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular; es decir, el extremo de decodificación / extremo de codificación puede dividir el bloque actual en dos sub-bloques triangulares.
[0074] En un ejemplo, la información característica puede incluir, pero no se limita a, uno o más de los siguientes elementos: modo de información de movimiento, información de tamaño, tipo de porción (slice type), información de control de conmutación a nivel de secuencia. Por supuesto, los anteriores son únicamente algunos ejemplos, y no existe limitación a los mismos.
[0076] Si la información característica incluye un modo de información de movimiento, y el modo de información de movimiento cumple al menos una de las siguientes condiciones, se determina que el modo de información de movimiento cumple condiciones específicas: el modo de información de movimiento del bloque actual es el modo de fusión o el modo skip; el modo de información de movimiento del bloque actual es el modo de fusión o el modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los otros tipos de sub-modos de fusión o skip excepto el sub-modo de predicción triangular; el modo de información de movimiento del bloque actual es el modo de fusión, y el modo de información de movimiento del bloque actual no es ninguno de los siguientes sub-modos: sub-modo de fusión regular (también denominado modo de fusión regular), el sub-modo MMVD (modo de fusión con MVD), el sub­ modo de fusión SB (modo de fusión basado en sub-bloques), o el sub-modo CIIP (modo combinado de fusión entre imágenes y predicción intra imagen); el modo de información de movimiento del bloque actual es el modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los siguientes sub-modos: sub-modo de fusión regular, sub-modo MMVD, sub-modo de fusión SB. Por supuesto, los anteriores son únicamente algunos ejemplos, a los cuales no se limita la presente invención. Los ejemplos anteriores se pueden utilizar para determinar si el modo de información de movimiento del bloque actual es el modo de partición geométrica con partición triangular. Cuando se determina que el modo de información de movimiento del bloque actual es el modo de partición geométrica con partición triangular, se determina que el modo de información de movimiento cumple condiciones específicas. Para facilitar la descripción, en la presente solicitud, el modo TPM y el sub-modo de predicción triangular se pueden utilizar de manera intercambiable, el modo de fusión regular y el sub-modo de fusión regular se pueden utilizar de manera intercambiable, el modo de fusión con MVD y el sub-modo MMVD se pueden utilizar de manera intercambiable, el modo de fusión basado en sub-bloques y el sub-modo de fusión SB se pueden utilizar de manera intercambiable, y el modo CIIP y el sub-modo CIIP se pueden utilizar de manera intercambiable.
[0077] Si la información característica incluye un tipo de porción (slice type), y el tipo de porción cumple al menos una de las siguientes condiciones, se determina que el tipo de porción cumple condiciones específicas: el tipo de porción indica que la porción actual en la que se encuentra el bloque actual es una porción B; el tipo de porción indica que la porción actual en la que se encuentra el bloque actual permite la copia intra bloque.
[0078] Si la información característica incluye información de control de conmutación a nivel de secuencia, y la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, se determina que la información de control de conmutación a nivel de secuencia cumple condiciones específicas.
[0080] Si la información característica incluye información de tamaño, y la información de tamaño incluye al menos uno de entre un valor de anchura, un valor de altura y un valor de área, cuando al menos uno de entre un valor de anchura, un valor de altura y un valor de área en la información de tamaño satisface una condición de umbral correspondiente, la información de tamaño cumple condiciones específicas. En un ejemplo, cuando la información de tamaño cumple al menos una de las siguientes condiciones, se determina que la información de tamaño cumple condiciones específicas:
[0081] 1. El valor de anchura del bloque actual es mayor que o igual a un primer umbral, y el valor de anchura del bloque actual es menor que o igual a un segundo umbral;
[0082] 2. El valor de altura del bloque actual es mayor que o igual a un tercer umbral, y el valor de altura del bloque actual es menor que o igual a un cuarto umbral;
[0083] 3. El valor de área del bloque actual es mayor que o igual a un quinto umbral, y el valor de área del bloque actual es menor que o igual a un sexto umbral;
[0084] 4. El valor de área del bloque actual es mayor que o igual a un séptimo umbral;
[0085] 5. El valor de área del bloque actual es menor que o igual a un octavo umbral;
[0086] 6. El valor de anchura del bloque actual es menor que o igual a un noveno umbral, y el valor de altura del bloque actual es menor que o igual a un décimo umbral.
[0087] Por supuesto, los anteriores son únicamente algunos ejemplos, y no existe limitación a los mismos. En un ejemplo, cada una de las condiciones de umbral anteriores se puede configurar basándose en la experiencia, y no existe limitación a dicha configuración.
[0089] En un ejemplo, la información característica incluye uno o más de los siguientes elementos: modo de información de movimiento, información de tamaño, tipo de porción (slice type), e información de control de conmutación a nivel de secuencia. Cuando la información característica incluye un modo de información de movimiento y el modo de información de movimiento cumple condiciones específicas, esto puede indicar que la información característica cumple condiciones específicas; cuando la información característica incluye un tipo de porción y el tipo de porción cumple condiciones específicas, esto puede indicar que la información característica cumple condiciones específicas, y así sucesivamente. Cuando la información característica incluye al menos dos de los siguientes elementos: modo de información de movimiento, información de tamaño, tipo de porción e información de control de conmutación a nivel de secuencia, se toman como ejemplo el modo de información de movimiento y el tipo de porción, y cuando el modo de información de movimiento cumple las condiciones específicas y el tipo de porción cumple las condiciones específicas, esto puede indicar que la información característica cumple las condiciones específicas, y así sucesivamente.
[0091] En un ejemplo, al menos una condición específica para cada tipo de información característica (tal como modo de información de movimiento, información de tamaño, tipo de porción, información de control de conmutación a nivel de secuencia, etc.) se puede combinar de manera arbitraria con al menos una condición específica de otro tipo de información característica, formando de este modo las condiciones específicas del bloque actual, sin restricción sobre este modo de combinación y pudiendo establecerse de manera arbitraria.
[0093] En un ejemplo, si el método de codificación y decodificación se aplica al extremo de decodificación, el extremo de decodificación divide el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular, lo cual puede incluir, pero no se limita a: adquirir, de un flujo de bits codificado, primera información de indicación, en el que la primera información de indicación se utiliza para indicar información de división del sub-bloque triangular; si la información de división del sub-bloque triangular se refiere a un método de división por diagonal principal, el bloque actual se divide en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la diagonal principal del bloque actual; si la información de división del sub-bloque triangular se refiere a un método de división por sub-diagonal, el bloque actual se divide en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la sub-diagonal del bloque actual.
[0095] En un ejemplo, la primera información de indicación se puede obtener mediante una decodificación aritmética binaria basada en bypass; o, la primera información de indicación se puede obtener mediante una decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0097] En un ejemplo, la técnica CABAC incluye dos modos: un modo CABAC que almacena y actualiza al menos un modelo de contexto (es decir, la codificación aritmética binaria adaptativa del contexto), y un modo CABAC de bypass que no almacena ni actualiza el modelo de contexto (es decir, la codificación aritmética binaria en modo bypass). Por lo tanto, la aritmética binaria basada en bypass es un tipo de modo CABAC, mientras que la aritmética binaria adaptativa basada en contexto que se basa en un modelo de contexto es otro tipo de modo CABAC.
[0099] En la etapa 202, se construye una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata.
[0100] En un ejemplo, se puede reutilizar un método de construcción de lista de información de movimiento del modo de fusión regular para construir la lista de información de movimiento para el bloque actual. Por ejemplo, primero se determina el método de construcción de lista de información de movimiento del modo de fusión regular, y a continuación se construye una lista de información de movimiento para el bloque actual basándose en el método de construcción de lista de información de movimiento del modo de fusión regular, y la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata.
[0102] En la etapa 203, se adquiere, de la lista de información de movimiento, primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub­ bloque triangular; en un ejemplo, la primera información de movimiento objetivo y la segunda información de movimiento objetivo pueden ser diferentes entre sí.
[0104] Si el método de codificación y decodificación se aplica a un extremo de decodificación, el extremo de decodificación adquiere, de la lista de información de movimiento, primera información de movimiento objetivo de un primer sub-bloque triangular y segunda información de movimiento objetivo de un segundo sub-bloque triangular, lo cual puede incluir, pero no se limita a: que el extremo de decodificación adquiere, del flujo de bits codificado, la segunda información de indicación, y la segunda información de indicación se utiliza para indicar un primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento, y un segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento. Basándose en la segunda información de indicación, el extremo de decodificación adquiere, de la lista de información de movimiento, información candidata correspondiente al primer valor de índice, y determina la información candidata correspondiente al primer valor de índice como primera información de movimiento objetivo del primer sub-bloque triangular; basándose en la segunda información de indicación, el extremo de decodificación adquiere, de la lista de información de movimiento, información candidata correspondiente al segundo valor de índice, y determina la información candidata correspondiente al segundo valor de índice como segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0106] En un ejemplo, el primer valor de índice se obtiene mediante una decodificación aritmética binaria basada en bypass; o, el primer valor de índice se obtiene mediante una decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto. El segundo valor de índice se obtiene mediante una decodificación aritmética binaria basada en bypass; o, el segundo valor de índice se obtiene mediante una decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0108] En un ejemplo, el primer valor de índice incluye M1 bits binarios, siendo N1 bits binarios de los M1 bits binarios obtenidos mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y los (M1-N1) bits binarios restantes de los M1 bits binarios se obtienen mediante la decodificación aritmética binaria basada en bypass; M1 es un número entero positivo mayor que o igual a 1, N1 es un número entero positivo mayor que o igual a 1, y M1 es mayor que o igual a N1. Por ejemplo, el primer valor de índice incluye cuatro bits binarios, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y los bits binarios segundo, tercero y cuarto se obtienen mediante la decodificación aritmética binaria basada en bypass. Por ejemplo, el primer valor de índice incluye dos bits binarios, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0110] En un ejemplo, el segundo valor de índice incluye M2 bits binarios, siendo N2 bits binarios de los M2 bits binarios obtenidos mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y los (M2-N2) bits binarios restantes de los M2 bits binarios se obtienen mediante la decodificación aritmética binaria basada en bypass; M2 es un número entero positivo mayor que o igual a 1, N2 es un número entero positivo mayor que o igual a 1, y M2 es mayor que o igual a n 2. Por ejemplo, el segundo valor de índice incluye cuatro bits binarios, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y los bits binarios segundo, tercero y cuarto se obtienen mediante la decodificación aritmética binaria basada en bypass. Por ejemplo, el segundo valor de índice incluye un bit binario, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0112] En un ejemplo, un modelo de contexto correspondiente al primer valor de índice es el mismo que un modelo de contexto correspondiente al segundo valor de índice. Alternativamente, un modelo de contexto correspondiente al primer valor de índice es diferente de un modelo de contexto correspondiente al segundo valor de índice. Alternativamente, un modelo de contexto correspondiente al primer valor de índice y a la primera información de división es el mismo que un modelo de contexto correspondiente al segundo valor de índice y a la primera información de división; un modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es el mismo que un modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división; un modelo de contexto correspondiente al primer valor de índice y a la primera información de división es diferente de un modelo de contexto correspondiente al primer valor de índice y a la segunda información de división. Alternativamente, un modelo de contexto correspondiente al primer valor de índice y a la primera información de división, un modelo de contexto correspondiente al segundo valor de índice y a la primera información de división, un modelo de contexto correspondiente al primer valor de índice y a la segunda información de división, y un modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división son todos diferentes entre sí. La primera información de división indica que la información de división del sub­ bloque triangular se refiere a un método de división por diagonal principal; la segunda información de división indica que la información de división del sub-bloque triangular se refiere a un método de división por sub-diagonal.
[0114] En un ejemplo, adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como primera información de movimiento objetivo del primer sub­ bloque triangular puede incluir, pero no se limita a: si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a listaO se determina como la primera información de movimiento objetivo del primer sub­ bloque triangular; si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista1 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular; si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular; si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista0 se determina como la primera información de movimiento objetivo del primer sub­ bloque triangular.
[0116] En un ejemplo, adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular puede incluir, pero no se limita a: si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista1 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0118] En un ejemplo, adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular puede incluir, pero no se limita a: si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista0 se determina como la primera información de movimiento objetivo del primer sub­ bloque triangular; si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista1 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular; si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular; si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista0 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0120] En un ejemplo, adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular puede incluir, pero no se limita a: si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista1 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a listal, la información de movimiento unidireccional correspondiente a lista1 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0122] En los ejemplos anteriores, cuando el tipo de porción (slice type) de la porción actual en la que se encuentra el bloque actual es una porción B, la porción B permite la existencia de inter bloques que apuntan a múltiples listas (listas de frames de referencia) al mismo tiempo, tales como un bloque de inter predicción que apunta a la lista0 y un bloque de inter predicción que apunta a la lista1. Por lo tanto, cuando la porción actual en la que se encuentra el bloque actual es una porción B, la configuración de frames de referencia de la porción actual en la que se encuentra el bloque actual puede incluir dos listas de frames de referencia, que pueden ser la lista0 y la lis ta l La información de movimiento candidata puede ser información de movimiento unidireccional, y la información de movimiento unidireccional es información de movimiento unidireccional correspondiente a lista0 o información de movimiento unidireccional correspondiente a lista1; o, la información de movimiento candidata puede ser información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lis ta l
[0124] En un ejemplo, el extremo de decodificación también puede adquirir un primer conjunto de candidatas y un segundo conjunto de candidatas. El primer conjunto de candidatas incluye partes de información de movimiento candidata de la lista de información de movimiento, el segundo conjunto de candidatas incluye partes de información de movimiento candidata de la lista de información de movimiento, y la información de movimiento candidata en el primer conjunto de candidatas no es exactamente la misma que la información de movimiento candidata en el segundo conjunto de candidatas. A continuación, el extremo de decodificación adquiere, del primer conjunto de candidatas, información de movimiento candidata correspondiente al primer valor de índice, y determina la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular. El extremo de decodificación adquiere, del segundo conjunto de candidatas, información de movimiento candidata correspondiente al segundo valor de índice, y determina la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0126] En la etapa 204, se realiza compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; se realiza compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular.
[0128] En un ejemplo, después de obtener la primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular, se almacena la primera información de movimiento objetivo para el sub-bloque en el primer sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacena la segunda información de movimiento objetivo para el sub-bloque en el segundo sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional se almacena para el sub­ bloque, en el que se realiza compensación de predicción ponderada.
[0130] El almacenamiento de la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional para el sub-bloque, en el que se realiza compensación de predicción ponderada, puede incluir, pero no se limita a cualquiera de las siguientes acciones: almacenar la primera información de movimiento objetivo para el sub-bloque; almacenar la segunda información de movimiento objetivo para el sub-bloque; almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque; almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual; o almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque y la dirección de división del bloque actual.
[0131] El almacenamiento de la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional para el sub-bloque, en el que se realiza compensación de predicción ponderada, puede incluir, pero no se limita a lo siguiente: si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se combinan en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional para el sub-bloque. Alternativamente, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la primera información de movimiento objetivo para el sub-bloque, o se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0133] En un ejemplo, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, almacenar la primera información de movimiento objetivo para el sub­ bloque o almacenar la segunda información de movimiento objetivo para el sub-bloque puede incluir, pero no se limita a cualquiera de las siguientes acciones: almacenar la primera información de movimiento objetivo para el sub-bloque; almacenar la segunda información de movimiento objetivo para el sub-bloque; almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque; almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual; almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque y la dirección de división del bloque actual; almacenar un valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo para el sub-bloque; o almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub­ bloque basándose en la información de tamaño del bloque actual.
[0135] Se puede observar a partir de las soluciones anteriores que, en la forma de realización de la presente solicitud, si información característica de un bloque actual cumple condiciones específicas, el bloque actual se divide en un primer sub-bloque triangular y un segundo sub-bloque triangular; se adquiere, de la lista de información de movimiento, primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub-bloque triangular; se realiza compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; se realiza compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular. El método anterior puede mejorar la precisión de la predicción, mejorar el rendimiento de la predicción, mejorar el rendimiento de la codificación y reducir los residuales de codificación.
[0137] Forma de realización 2: de manera similar al concepto de invención que se ha descrito anteriormente, una forma de realización de la presente solicitud proporciona un método de codificación, que se puede aplicar a un extremo de codificación. La Figura 3 es un diagrama de flujo esquemático del método. El método puede comprender:
[0139] En la etapa 301, determinar, por parte del extremo de codificación, si la información característica del bloque actual cumple condiciones específicas; en caso afirmativo, habilitar el modo de partición geométrica con partición triangular y ejecutar la etapa 302; en caso negativo, no habilitar el modo de partición geométrica con partición triangular y no implementar más la solución técnica de esta forma de realización.
[0141] En la etapa 302, construir, por parte del extremo de codificación, una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata.
[0143] En la etapa 303, dividir, por parte del extremo de codificación, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular. Por ejemplo, el bloque actual se divide en un primer sub­ bloque triangular y un segundo sub-bloque triangular de acuerdo con la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha); o, el bloque actual se divide en un primer sub­ bloque triangular y un segundo sub-bloque triangular de acuerdo con la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha).
[0145] En la etapa 304, adquirir, de la lista de información de movimiento, por parte del extremo de codificación, primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular; la primera información de movimiento objetivo y la segunda información de movimiento objetivo pueden ser diferentes entre sí.
[0147] En la etapa 305, realizar, por parte del extremo de codificación, compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; realizar compensación de movimiento en el segundo sub­ bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular. El valor de predicción del primer sub-bloque triangular y el valor de predicción del segundo sub-bloque triangular constituyen el valor de predicción del bloque actual.
[0148] En la etapa 306, almacenar, por parte del extremo de codificación, la información de movimiento del bloque actual para su uso como referencia de codificación de bloques subsiguientes.
[0149] Forma de realización 3: de manera similar al concepto de invención que se ha descrito anteriormente, una forma de realización de la presente solicitud proporciona un método de decodificación, que se puede aplicar a un extremo de decodificación. La Figura 4 es un diagrama de flujo esquemático del método. El método comprende:
[0151] En la etapa 401, determinar, por parte del extremo de decodificación, si la información característica del bloque actual cumple condiciones específicas; en caso afirmativo, habilitar el modo de partición geométrica con partición triangular y ejecutar la etapa 402; en caso negativo, no habilitar el modo de partición geométrica con partición triangular y no implementar más la solución técnica de esta forma de realización.
[0152] En la etapa 402, construir, por parte del extremo de decodificación, una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata.
[0154] En la etapa 403, dividir, por parte del extremo de decodificación, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular. Por ejemplo, el bloque actual se divide en un primer sub­ bloque triangular y un segundo sub-bloque triangular de acuerdo con la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha); o, el bloque actual se divide en un primer sub­ bloque triangular y un segundo sub-bloque triangular de acuerdo con la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha).
[0156] En la etapa 404, adquirir, de la lista de información de movimiento, por parte del extremo de decodificación, primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub-bloque triangular; la primera información de movimiento objetivo y la segunda información de movimiento objetivo son diferentes entre sí.
[0158] En la etapa 405, realizar, por parte del extremo de decodificación, compensación de movimiento en un primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; realizar compensación de movimiento en un segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular. El valor de predicción del primer sub-bloque triangular y el valor de predicción del segundo sub-bloque triangular constituyen el valor de predicción del bloque actual.
[0159] En la etapa 406, almacenar, por parte del extremo de decodificación, la información de movimiento del bloque actual para su uso como referencia de codificación de bloques subsiguientes.
[0161] Forma de realización 4: en la etapa 301 y la etapa 401, el extremo de codificación / extremo de decodificación determina si la información característica del bloque actual cumple condiciones específicas; en caso afirmativo, se habilita el modo de partición geométrica con partición triangular, es decir, el bloque actual se divide en el primer sub-bloque triangular y el segundo sub-bloque triangular; en caso negativo, no se habilitará el modo de partición geométrica con partición triangular. En un ejemplo, la información característica puede incluir, pero no se limita a, uno o más de los siguientes elementos: modo de información de movimiento, información de tamaño, tipo de porción (slice type), información de control de conmutación a nivel de secuencia.
[0163] A continuación, se describe que la información característica del bloque actual cumple condiciones específicas en combinación con varios escenarios de aplicación concretos.
[0165] Escenario de aplicación 1: cuando la información característica cumple la siguiente condición, se determina que la información característica del bloque actual cumple condiciones específicas:
[0166] el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los otros tipos de sub-modos de fusión o sub-modos skip, excepto el sub-modo de predicción triangular.
[0168] Escenario de aplicación 2: cuando la información característica cumple al menos las siguientes condiciones al mismo tiempo, se determina que la información característica del bloque actual cumple condiciones específicas:
[0169] la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, es decir, el control a nivel de secuencia permite que el modo de partición geométrica con partición triangular sea o esté habilitado; es decir, el conmutador de control a nivel de secuencia es o está activado, lo que indica que el bloque actual es o está autorizado a utilizar el modo de partición geométrica con partición triangular;
[0171] la porción actual en la que se encuentra el bloque actual es una porción B, es decir, la porción actual permite la existencia de dos listas de frames de referencia;
[0172] el área (anchura * altura) del bloque actual es mayor que o igual a N*N, pudiendo ser N igual a 8; el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip.
[0173] Escenario de aplicación 3: cuando la información característica cumple al menos las siguientes condiciones al mismo tiempo, se determina que la información característica del bloque actual cumple condiciones específicas:
[0174] la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, es decir, el control a nivel de secuencia permite que el modo de partición geométrica con partición triangular sea o esté habilitado; es decir, el conmutador de control a nivel de secuencia es o está activado, lo que indica que el bloque actual es o está autorizado a utilizar el modo de partición geométrica con partición triangular;
[0175] la porción actual en la que se encuentra el bloque actual es una porción B, es decir, la porción actual permite la existencia de dos listas de frames de referencia;
[0176] el área (anchura * altura) del bloque actual es mayor que o igual a N*N, pudiendo ser N igual a 8; el modo de información de movimiento del bloque actual es un modo de fusión, y el modo de información de movimiento del bloque actual no es ninguno de los sub-modos siguientes: sub-modo de fusión regular, sub-modo MMVD, sub-modo de fusión SB ni sub-modo CIIP;
[0177] el modo de información de movimiento del bloque actual es un modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los sub-modos siguientes: sub-modo de fusión regular, sub­ modo MMVD ni sub-modo de fusión SB.
[0178] Escenario de aplicación 4: cuando la información característica cumple al menos las siguientes condiciones al mismo tiempo, se determina que la información característica del bloque actual cumple condiciones específicas:
[0179] la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, es decir, el control a nivel de secuencia permite que el modo de partición geométrica con partición triangular sea o esté habilitado; es decir, el conmutador de control a nivel de secuencia es o está activado, lo que indica que el bloque actual es o está autorizado a utilizar el modo de partición geométrica con partición triangular;
[0180] la porción actual en la que se encuentra el bloque actual es una porción B, es decir, la porción actual permite la existencia de dos listas de frames de referencia;
[0181] el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip;
[0182] el área (anchura * altura) del bloque actual es mayor que o igual a N*N, pudiendo ser N igual a 8;
[0183] la anchura del bloque actual es menor que o igual a M, la altura del bloque actual es menor que o igual a M, pudiendo ser M igual a 128.
[0184] Escenario de aplicación 5: cuando la información característica cumple al menos las siguientes condiciones al mismo tiempo, se determina que la información característica del bloque actual cumple condiciones específicas:
[0185] la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, es decir, el control a nivel de secuencia permite que el modo de partición geométrica con partición triangular sea o esté habilitado; es decir, el conmutador de control a nivel de secuencia es o está activado, lo que indica que el bloque actual es o está autorizado a utilizar el modo de partición geométrica con partición triangular;
[0186] la porción actual en la que se encuentra el bloque actual es una porción B, es decir, la porción actual permite la existencia de dos listas de frames de referencia;
[0187] el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip;
[0188] el área (anchura * altura) del bloque actual es mayor que o igual a N*N, pudiendo ser N igual a 8; el área (anchura * altura) del bloque actual es mayor que o igual a M*M, pudiendo ser M igual a 128. Escenario de aplicación 6: cuando la información característica cumple al menos las siguientes condiciones al mismo tiempo, se determina que la información característica del bloque actual cumple condiciones específicas:
[0189] la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice el modo de partición geométrica con partición triangular, es decir, el control a nivel de secuencia permite que el modo de partición geométrica con partición triangular sea o esté habilitado; es decir, el conmutador de control a nivel de secuencia es o está activado, lo que indica que el bloque actual es o está autorizado a utilizar el modo de partición geométrica con partición triangular;
[0190] la porción actual en la que se encuentra el bloque actual es una porción B, es decir, la porción actual permite la existencia de dos listas de frames de referencia;
[0191] el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip;
[0192] el valor de anchura del bloque actual está dentro de un intervalo de [Wmin, Wmax]; en un ejemplo, tanto Wmin como Wmax pueden ser potencias enteras positivas de 2, por ejemplo, Wmin es 4 y Wmax es 128; el valor de altura del bloque actual está dentro de un intervalo de [Hmin, Hmax]; en un ejemplo, tanto Hmin como Hmax pueden ser potencias enteras positivas de 2, por ejemplo, Hmin es 4 y Hmax es 128; el valor de área del bloque actual está dentro del intervalo de [Smin, Smax]; en un ejemplo, tanto Smin como Smax pueden ser potencias enteras positivas de 2, por ejemplo, Smin es 64 y Smax es 128*128=16384.
[0193] En los ejemplos anteriores, [a, b] significa mayor o igual que a, y menor que o igual a b.
[0194] Escenario de aplicación 7: para cualquiera de los escenarios de aplicación 2 a 6, “ la porción actual en la que se encuentra el bloque actual es una porción B” se puede modificar por “ la porción actual en la que se encuentra el bloque actual permite copia intra bloque, y las demás limitaciones permanecen sin cambios”. Que la porción actual en la que se encuentra el bloque actual permita la copia intra bloque significa que el bloque actual puede buscar bloques similares en el bloque reconstruido decodificado de la porción actual (en lugar de en bloques reconstruidos decodificados de otros frames). Bajo esta condición, la porción actual en la que se encuentra el bloque actual no necesita ser una porción B.
[0195] Escenario de aplicación 8: si tanto el valor de altura como el valor de anchura del bloque actual son CTU_Size, el modo de partición geométrica con partición triangular no es o está habilitado; es decir, la información característica no cumple condiciones específicas. Si el valor de altura del bloque actual es menor que CTU_Size, o el valor de anchura del bloque actual es menor que CTU_Size, se puede adoptar cualquiera de los escenarios de aplicación 1 a 7 para determinar si se habilita el modo de partición geométrica con partición triangular.
[0196] En un ejemplo, CTU_Size se refiere al tamaño máximo permitido por el bloque actual, que puede ser 128 u otros valores.
[0197] Escenario de aplicación 9: si tanto el valor de altura como el valor de anchura del bloque actual son CTU_Size, el modo de partición geométrica con partición triangular no es o está habilitado; es decir, la información característica no cumple condiciones específicas. Si el valor de altura del bloque actual es menor que CTU_Size, y el valor de anchura del bloque actual es menor que CTU_Size, se puede adoptar cualquiera de los escenarios de aplicación 1 a 7 para determinar si se habilita el modo de partición geométrica con partición triangular.
[0198] En un ejemplo, CTU_Size se refiere al tamaño máximo permitido por el bloque actual, que puede ser 128 u otros valores.
[0199] Forma de realización 5: en la etapa 302 y la etapa 402, el extremo de codificación / extremo de decodificación construye una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento puede incluir múltiples piezas de información de movimiento candidata. El proceso de construcción de la lista de información de movimiento se describe a continuación.
[0200] Modo 1: el extremo de codificación / decodificación puede construir una lista de información de movimiento, y la lista de información de movimiento puede incluir múltiples piezas de información de movimiento candidata, por ejemplo, 5 piezas de información de movimiento candidata, sin que el número esté limitado. Por ejemplo, se adquiere el bloque candidato correspondiente al bloque actual, se añade la información de movimiento del bloque candidato a la lista de información de movimiento, y cada información de movimiento en la lista de información de movimiento se puede denominar información de movimiento candidata. El bloque candidato correspondiente al bloque actual se muestra en la Figura 5A. Los bloques en estas 7 posiciones se pueden considerar bloques candidatos correspondientes al bloque actual. En la Figura 5A, el bloque 1, el bloque 2, el bloque 3, el bloque 4 y el bloque 5 son bloques candidatos en la porción actual, y el bloque 6 y el bloque 7 son bloques candidatos en otros frames (es decir, bloques correspondientes en el dominio de tiempo). En primer lugar, se recopila la información de movimiento disponible de estas 7 posiciones, y se ordena en un orden de: la información de movimiento unidireccional, la información de movimiento L0 predicha bidireccional, la información de movimiento L1 predicha bidireccional, el valor promedio de la información de movimiento L0 predicha bidireccional y la información de movimiento L1. A continuación, las 5 primeras informaciones de movimiento se rellenan en la lista de información de movimiento. Cuando el número de informaciones de movimiento añadidas en la lista de información de movimiento es inferior a 5, se puede utilizar un vector de movimiento nulo para completar. En el proceso de rellenado anterior, también se puede realizar un procesamiento de verificación de duplicados para evitar información de movimiento repetida en la lista de información de movimiento.
[0202] Modo 2: el extremo de codificación / extremo de decodificación puede utilizar un método de construcción de lista de información de movimiento del modo de fusión regular para construir la lista de información de movimiento para el bloque actual. Por ejemplo, se determina el método de construcción de lista de información de movimiento del modo de fusión regular, y a continuación se construye una lista de información de movimiento para el bloque actual basándose en el método de construcción de lista de información de movimiento del modo de fusión regular, incluyendo la lista de información de movimiento múltiples piezas de información de movimiento candidata. Es decir, el método para construir una lista de información de movimiento en el modo de partición geométrica con partición triangular es el mismo que el método para construir una lista de información de movimiento en el modo de fusión regular.
[0204] Por ejemplo, el método para construir una lista de información de movimiento en el modo de fusión regular se muestra en la Figura 5B. Los bloques candidatos correspondientes al bloque actual incluyen el bloque A1, el bloque A0, el bloque B0, el bloque B1 y el bloque B2, se recopila la información de movimiento disponible de estas 5 posiciones, la información de movimiento disponible recopilada se ordena en el orden de bloque A1, bloque A0, bloque B0, bloque B1, bloque B2, y la lista de información de movimiento se rellena con múltiples piezas de información de movimiento (por ejemplo, 5 informaciones de movimiento) colocadas en posiciones de orden superior. El método para construir una lista de información de movimiento en el modo de partición geométrica con partición triangular consiste en: recopilar la información de movimiento disponible de estas 5 posiciones, ordenar la información de movimiento disponible recopilada en el orden de bloque A1, bloque A0, bloque B0, bloque B1, bloque B2, y rellenar la lista de información de movimiento con múltiples piezas de información de movimiento (por ejemplo, 5 piezas de información de movimiento) colocadas en posiciones de orden superior. Por supuesto, el método anterior es únicamente un ejemplo de la construcción de la lista de información de movimiento del modo de fusión regular, y no existe limitación a esto.
[0206] Forma de realización 6: en la etapa 303 y la etapa 403, el extremo de codificación / extremo de decodificación divide el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular. Por ejemplo, según se muestra en la Figura 6A, el bloque actual se puede dividir en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha); o, según se muestra en la Figura 6B, el bloque actual se puede dividir en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha).
[0207] Con el fin de dividir el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular, se pueden utilizar los siguientes modos:
[0209] Modo 1: el extremo de codificación utiliza el método de la diagonal principal para dividir el bloque actual por defecto mediante acuerdo, y el extremo de decodificación utiliza el método de la diagonal principal para dividir el bloque actual por defecto mediante acuerdo. Sobre esta base, según se muestra en la Figura 6A, el extremo de codificación puede dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con el método de la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha); el extremo de decodificación puede dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con el método de la diagonal principal.
[0211] Modo 2: por defecto mediante acuerdo, el extremo de codificación utiliza el método de la sub-diagonal para dividir el bloque actual y el extremo de decodificación utiliza el método de la sub-diagonal para dividir el bloque actual. Sobre esta base, según se muestra en la Figura 6B, el extremo de codificación puede dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con el método de la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha); el extremo de decodificación puede dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con el método de la sub-diagonal.
[0213] Modo 3: el extremo de codificación determina un coste tasa distorsión 1 correspondiente al método de división por diagonal principal y un coste tasa distorsión 2 correspondiente al método de división por sub­ diagonal. El método para determinar el coste tasa distorsión 1 y el coste tasa distorsión 2 no está limitado en el presente documento. Si el coste tasa distorsión 1 es menor que el coste tasa distorsión 2, según se muestra en la Figura 6A, el extremo de codificación puede dividir el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con el método de la diagonal principal. Alternativamente, si el coste tasa distorsión 1 es mayor que el coste tasa distorsión 2, según se muestra en la Figura 6B, el extremo de codificación puede dividir el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con el método de la sub-diagonal. Por supuesto, el extremo de codificación también puede adoptar otras estrategias o decisiones para dividir los sub-bloques triangulares de acuerdo con el método de la diagonal principal o el método de la sub-diagonal, sin limitación a esto.
[0215] Cuando el extremo de codificación envía el flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una primera información de indicación que se utiliza para indicar información de división del sub-bloque triangular, tal como el método de división por diagonal principal o el método de división por sub-diagonal.
[0217] Por ejemplo, si el extremo de codificación divide el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con el método de la diagonal principal, la información de división del sub-bloque triangular puede ser el método de división por diagonal principal. Si el extremo de codificación divide el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con el método de la sub-diagonal, la información de división del sub-bloque triangular puede ser el método de división por sub-diagonal.
[0219] Después de recibir el flujo de bits codificado, el extremo de decodificación puede adquirir, del flujo de bits, la primera información de indicación codificada, que se utiliza para indicar información de división del sub­ bloque triangular, tal como el método de división por diagonal principal o el método de división por sub­ diagonal. Si la información de división del sub-bloque triangular es el método de división por diagonal principal, según se muestra en la Figura 6A, el extremo de decodificación divide el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la diagonal principal del bloque actual; si la información de división de los sub-bloques es el método de división por sub-diagonal, según se muestra en la Figura 6B, el extremo de decodificación divide el bloque actual en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la sub-diagonal del bloque actual.
[0221] Por supuesto, las tres modalidades de implementación anteriores son únicamente ejemplos, y no existe limitación respecto al modo de división del sub-bloque triangular.
[0223] Forma de realización 7: en la forma de realización 6 anterior, cuando el extremo de codificación envía un flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una primera información de indicación, que se utiliza para indicar información de división del sub-bloque triangular. Por ejemplo, un bit indicador (flag bit) indica la información de división del sub-bloque triangular. Por ejemplo, cuando el bit indicador es un primer identificador 0, indica que la información de división del sub-bloque triangular es el método de división por diagonal principal. Cuando el bit indicador es un segundo identificador 1, indica que la información de división del sub-bloque triangular es el método de división por sub-diagonal.
[0224] En un ejemplo, para la información de división del sub-bloque triangular, el extremo de codificación puede utilizar el modo CABAC para codificar la primera información de indicación. Por supuesto, CABAC es únicamente un ejemplo, y no existe limitación respecto a este método de codificación. La técnica CABAC incluye dos modos: un modo CABAC que almacena y actualiza al menos un modelo de contexto (es decir, la codificación aritmética binaria adaptativa del contexto), y un modo CABAC de bypass que no necesita almacenar ni actualizar el modelo de contexto (es decir, la codificación aritmética binaria en modo bypass). Sobre esta base, la primera información de indicación (tal como los bits indicadores de la información de división del sub-bloque triangular) se puede codificaren un método de codificación aritmética binaria basada en bypass, o la primera información de indicación se puede codificaren un método de codificación aritmética binaria adaptativa basada en contexto, es decir, la primera información de indicación se codifica en un método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto.
[0226] Cuando el extremo de codificación utiliza el modo CABAC para codificar la primera información de indicación, el extremo de decodificación puede utilizar el modo CABAC para decodificar la primera información de indicación. Por ejemplo, cuando el extremo de codificación codifica la primera información de indicación en el método de codificación aritmética binaria basada en bypass, el extremo de decodificación decodifica la primera información de indicación en el método de decodificación aritmética binaria basada en bypass para obtener la información de división del sub-bloque triangular. Alternativamente, cuando el extremo de codificación codifica la primera información de indicación en un método de codificación aritmética binaria adaptativa basada en contexto, el extremo de decodificación decodifica la primera información de indicación en el método de decodificación aritmética binaria adaptativa basada en contexto para obtener la información de división del sub-bloque triangular. Es decir, de acuerdo con el modelo de contexto, la primera información de indicación se decodifica en el método de codificación aritmética binaria adaptativa basada en contexto para obtener la información de división del sub-bloque triangular.
[0228] En resumen, después de que se decodifique la primera información de indicación, se puede obtener la información de división del sub-bloque triangular, tal como un bit indicador que indica la información de división del sub-bloque triangular. Cuando el bit indicador es un primer identificador 0, indica que la información de división del sub-bloque triangular es el método de división por diagonal principal. Cuando el bit indicador es un segundo identificador 1, indica que la información de división del sub-bloque triangular es el método de división por sub-diagonal.
[0230] En resumen, el extremo de decodificación puede decodificar los bits indicadores de la información de división del sub-bloque triangular. Por ejemplo, se adopta el modo CABAC para decodificación por entropía, y la técnica CABAC adopta un modo de bypass sin almacenamiento ni actualización del modelo de contexto. Alternativamente, el extremo de decodificación puede decodificar los bits indicadores de la información de división del sub-bloque triangular. Por ejemplo, se adopta el modo CABAC para la decodificación por entropía, y la técnica CABAC adopta un modo que contiene el modelo de contexto.
[0232] Forma de realización 8: en la etapa 304 y la etapa 404, el extremo de codificación / extremo de decodificación adquiere, de la lista de información de movimiento, la primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub­ bloque triangular. La primera información de movimiento objetivo y la segunda información de movimiento objetivo pueden ser diferentes entre sí. El proceso de adquisición de la primera información de movimiento objetivo y la segunda información de movimiento objetivo se describe a continuación:
[0234] Modo 1: el extremo de codificación puede determinar la primera información de movimiento objetivo mediante acuerdo por defecto. Por ejemplo, el extremo de codificación puede determinar por defecto que la primera información de movimiento candidata en la lista de información de movimiento es la primera información de movimiento objetivo del primer sub-bloque triangular. El extremo de decodificación puede determinar la primera información de movimiento objetivo mediante acuerdo por defecto. Por ejemplo, el extremo de decodificación puede determinar por defecto que la primera información de movimiento candidata en la lista de información de movimiento es la primera información de movimiento objetivo del primer sub-bloque triangular. El extremo de codificación puede determinar la segunda información de movimiento objetivo mediante acuerdo por defecto. Por ejemplo, el extremo de codificación puede determinar por defecto que la segunda información de movimiento candidata en la lista de información de movimiento es la segunda información de movimiento objetivo del segundo sub-bloque triangular. El extremo de decodificación puede determinar la segunda información de movimiento objetivo mediante acuerdo por defecto. Por ejemplo, el extremo de decodificación puede determinar por defecto que la segunda información de movimiento candidata en la lista de información de movimiento es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0236] Modo 2: el extremo de codificación determina el coste tasa distorsión correspondiente a cada información de movimiento candidata en la lista de información de movimiento, sin que exista limitación sobre el método de determinación, y la información de movimiento candidata correspondiente al coste tasa distorsión mínimo se considera que es la primera información de movimiento objetivo del primer sub-bloque triangular. El extremo de codificación excluye la primera información de movimiento objetivo de la lista de información de movimiento (es decir, no selecciona la primera información de movimiento objetivo en la lista de información de movimiento). Sobre esta base, el extremo de codificación determina el coste tasa distorsión correspondiente a cada información de movimiento candidata restante en la lista de información de movimiento (es decir, cada información de movimiento candidata restante excluyendo la primera información de movimiento objetivo), y determina la información de movimiento candidata correspondiente al coste tasa distorsión mínimo como la segunda información de movimiento objetivo del segundo sub­ bloque triangular. Por supuesto, el extremo de codificación también puede adoptar otras estrategias para determinar la primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular, sin que exista limitación a esto.
[0237] Cuando el extremo de codificación envía un flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una segunda información de indicación, que se utiliza para indicar un primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento (que se utiliza para indicar cuál información de movimiento candidata es la primera información de movimiento objetivo en la lista de información de movimiento), y un segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento (que se utiliza para indicar cuál información de movimiento candidata es la segunda información de movimiento objetivo en la lista de información de movimiento).
[0239] Después de recibir el flujo de bits codificado, el extremo de decodificación puede adquirir, del flujo de bits codificado, la segunda información de indicación, la cual se utiliza para indicar un primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento (utilizado para indicar cuál información de movimiento candidata es la primera información de movimiento objetivo en la lista de información de movimiento), y un segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento (utilizado para indicar cuál información de movimiento candidata es la segunda información de movimiento objetivo en la lista de información de movimiento). Basándose en el primer valor de índice indicado por la segunda información de indicación, el extremo de decodificación adquiere, de la lista de información de movimiento, la información candidata correspondiente al primer valor de índice, y determina la información candidata adquirida correspondiente al primer valor de índice como primera información de movimiento objetivo del primer sub-bloque triangular; basándose en el segundo valor de índice indicado por la segunda información de indicación, el extremo de decodificación adquiere, de la lista de información de movimiento, la información candidata correspondiente al segundo valor de índice, y determina la información candidata adquirida correspondiente al segundo valor de índice como segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0241] Forma de realización 9: en la forma de realización 8 anterior, el extremo de codificación / extremo de decodificación también puede determinar qué información de movimiento unidireccional se utiliza para la primera información de movimiento objetivo del primer sub-bloque triangular basándose en la paridad del primer valor de índice, y el extremo de codificación / extremo de decodificación también puede determinar qué información de movimiento unidireccional se utiliza para la segunda información de movimiento objetivo del segundo sub-bloque triangular basándose en la paridad del segundo valor de índice.
[0243] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el primer valor de índice (utilizado para indicar el valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento), si el primer valor de índice es un número par, se determina si la información de movimiento candidata correspondiente al primer valor de índice incluye la información de movimiento unidireccional correspondiente a lista0. En caso afirmativo, se determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub­ bloque triangular. En caso negativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0245] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0247] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el primer valor de índice (utilizado para indicar el valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento), si el primer valor de índice es un número impar, se determina si la información de movimiento candidata correspondiente al primer valor de índice incluye la información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, la información de movimiento unidireccional correspondiente a lista1 se determina como la primera información de movimiento objetivo del primer sub­ bloque triangular; en caso negativo, la información de movimiento unidireccional correspondiente a lista0 se determina como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0249] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice. Si el primer valor de índice es un número impar, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número impar, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a listal, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número impar, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0251] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice (utilizado para indicar el valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento), si el segundo valor de índice es un número par, se determina si la información de movimiento candidata correspondiente al segundo valor de índice incluye la información de movimiento unidireccional correspondiente a lista0: en caso afirmativo, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; y en caso negativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0253] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0255] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice (utilizado para indicar el valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento), si el segundo valor de índice es un número impar, se determina si la información de movimiento candidata correspondiente al segundo valor de índice incluye la información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, la información de movimiento unidireccional correspondiente a lista1 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, la información de movimiento unidireccional correspondiente a lista0 se determina como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0257] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0259] Cuando se determina la primera información de movimiento objetivo del primer sub-bloque triangular, el extremo de codificación selecciona, de la lista de información de movimiento (denominada en lo sucesivo A1), la información de movimiento candidata correspondiente al coste tasa distorsión mínimo, y determina el valor de índice (es decir, el primer valor de índice) de la información de movimiento candidata A1 en la lista de información de movimiento, siendo el primer valor de índice indicativo de la posición de la información de movimiento candidata A1 en la lista de información de movimiento.
[0261] Si el primer valor de índice es un número par, el extremo de codificación determina si la información de movimiento candidata A1 incluye información de movimiento unidireccional correspondiente a lista0; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub­ bloque triangular.
[0263] Si el primer valor de índice es un número impar, el extremo de codificación determina si la información de movimiento candidata A1 incluye información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular; y en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub­ bloque triangular.
[0265] Cuando se determina la segunda información de movimiento objetivo del segundo sub-bloque triangular, el extremo de codificación selecciona, de la lista de información de movimiento (denominada en lo sucesivo A2), la información de movimiento candidata correspondiente al coste tasa distorsión mínimo, y determina el valor de índice (es decir, el segundo valor de índice) de la información de movimiento candidata A2 en la lista de información de movimiento, siendo el segundo valor de índice indicativo de la posición de la información de movimiento candidata A2 en la lista de información de movimiento.
[0267] Si el segundo valor de índice es un número par, el extremo de codificación determina si la información de movimiento candidata A2 incluye información de movimiento unidireccional correspondiente a lista0; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0269] Si el segundo valor de índice es un número impar, el extremo de codificación determina si la información de movimiento candidata A2 incluye información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0271] En resumen, según se muestra en la Figura 7A, cuando el primer valor de índice / segundo valor de índice es un número par, si existe información de movimiento unidireccional correspondiente a lista0 en la información de movimiento candidata correspondiente al primer valor de índice / segundo valor de índice, la información de movimiento unidireccional correspondiente a lista0 se considera que es la información de movimiento objetivo; si no existe información de movimiento unidireccional correspondiente a lista0 en la información de movimiento candidata correspondiente al primer valor de índice / segundo valor de índice, la información de movimiento unidireccional correspondiente a lista1 se considera que es la información de movimiento objetivo. Cuando el primer valor de índice / segundo valor de índice es un número impar, si existe información de movimiento unidireccional correspondiente a lista1 en la información de movimiento candidata correspondiente al primer valor de índice / segundo valor de índice, la información de movimiento unidireccional correspondiente a lista1 se considera que es la información de movimiento objetivo; si no existe información de movimiento unidireccional correspondiente a lista1 en la información de movimiento candidata correspondiente al primer valor de índice / segundo valor de índice, la información de movimiento unidireccional correspondiente a lista0 se considera que es la información de movimiento objetivo.
[0273] En la forma de realización anterior, el primer valor de índice se puede registrar como candIdx1, y el segundo valor de índice se puede registrar como candIdx2.
[0275] En un ejemplo, cuando el tipo de porción (slice type) de la porción actual en la que se encuentra el bloque actual es una porción B, la porción B permite la existencia de inter bloques que apuntan a múltiples listas (listas de frames de referencia) al mismo tiempo, tales como un bloque de inter predicción que apunta a la lista0 y un bloque de inter predicción que apunta a la lista1. Por lo tanto, cuando la porción actual en la que se encuentra el bloque actual es una porción B, la configuración de frames de referencia de la porción actual en la que se encuentra el bloque actual puede incluir dos listas de frames de referencia, es decir, la lista0 y la lista1. En resumen, la información de movimiento candidata puede ser información de movimiento unidireccional, y la información de movimiento unidireccional es información de movimiento unidireccional correspondiente a lista0 o información de movimiento unidireccional correspondiente a lista1; o, la información de movimiento candidata puede ser información de movimiento bidireccional, y la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1.
[0277] Forma de realización 10: en la forma de realización 8 anterior, el extremo de codificación / extremo de decodificación también puede determinar qué información de movimiento unidireccional se utiliza para la primera información de movimiento objetivo del primer sub-bloque triangular basándose en la paridad del primer valor de índice, y el extremo de codificación / extremo de decodificación también puede determinar qué información de movimiento unidireccional se utiliza para la segunda información de movimiento objetivo del segundo sub-bloque triangular basándose en la paridad del segundo valor de índice.
[0279] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el primer valor de índice (utilizado para indicar el valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento), si el primer valor de índice es un número impar, se determina si la información de movimiento candidata correspondiente al primer valor de índice incluye la información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, se determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub­ bloque triangular; y en caso negativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0281] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice. Si el primer valor de índice es un número impar, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0283] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el primer valor de índice (utilizado para indicar el valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento), si el primer valor de índice es un número par, se determina si la información de movimiento candidata correspondiente al primer valor de índice incluye la información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub­ bloque triangular; y en caso negativo, se determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0285] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al primer valor de índice. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es un número par, y la información de movimiento candidata correspondiente al primer valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a listaO se puede determinar como la primera información de movimiento objetivo del primer sub-bloque triangular.
[0287] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice (utilizado para indicar el valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento), si el segundo valor de índice es un número impar, se determina si la información de movimiento candidata correspondiente al segundo valor de índice incluye la información de movimiento unidireccional correspondiente a lista0; en caso afirmativo, se determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; y en caso negativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0289] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, y de este modo la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número impar, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0291] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice (utilizado para indicar el valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento), si el segundo valor de índice es un número par, se determina si la información de movimiento candidata correspondiente al segundo valor de índice incluye la información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, se determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, se determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0293] En un ejemplo, el extremo de decodificación puede adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional incluye información de movimiento unidireccional correspondiente a lista0 e información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista1, entonces la información de movimiento unidireccional correspondiente a lista1 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es un número par, y la información de movimiento candidata correspondiente al segundo valor de índice es información de movimiento bidireccional, la información de movimiento bidireccional es información de movimiento unidireccional correspondiente a lista0, entonces la información de movimiento unidireccional correspondiente a lista0 se puede determinar como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0295] Cuando se determina la primera información de movimiento objetivo del primer sub-bloque triangular, el extremo de codificación selecciona, de la lista de información de movimiento (denominada en lo sucesivo A1), la información de movimiento candidata correspondiente al coste tasa distorsión mínimo, y determina el valor de índice (es decir, el primer valor de índice) de la información de movimiento candidata A1 en la lista de información de movimiento, siendo el primer valor de índice indicativo de la posición de la información de movimiento candidata A1 en la lista de información de movimiento.
[0297] Si el primer valor de índice es un número impar, el extremo de codificación determina si la información de movimiento candidata A1 incluye información de movimiento unidireccional correspondiente a listaO; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub­ bloque triangular.
[0299] Si el primer valor de índice es un número par, el extremo de codificación determina si la información de movimiento candidata A1 incluye información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular; y en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la primera información de movimiento objetivo del primer sub­ bloque triangular.
[0301] Cuando se determina la segunda información de movimiento objetivo del segundo sub-bloque triangular, el extremo de codificación selecciona, de la lista de información de movimiento (denominada en lo sucesivo A2), la información de movimiento candidata correspondiente al coste tasa distorsión mínimo, y determina el valor de índice (es decir, el segundo valor de índice) de la información de movimiento candidata A2 en la lista de información de movimiento, siendo el segundo valor de índice indicativo de la posición de la información de movimiento candidata A2 en la lista de información de movimiento.
[0303] Si el segundo valor de índice es un número impar, el extremo de codificación determina si la información de movimiento candidata A2 incluye información de movimiento unidireccional correspondiente a lista0; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0305] Si el segundo valor de índice es un número par, el extremo de codificación determina si la información de movimiento candidata A2 incluye información de movimiento unidireccional correspondiente a lista1; en caso afirmativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular; en caso negativo, el extremo de codificación determina la información de movimiento unidireccional correspondiente a lista0 como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0307] Forma de realización 11: en la forma de realización 8 anterior, el extremo de codificación / extremo de decodificación también puede adquirir un primer conjunto de candidatas y un segundo conjunto de candidatas basándose en la lista de información de movimiento. En un ejemplo, el primer conjunto de candidatas puede incluir partes de información de movimiento candidata de la lista de información de movimiento, el segundo conjunto de candidatas puede incluir partes de información de movimiento candidata de la lista de información de movimiento, y la información de movimiento candidata en el primer conjunto de candidatas no es exactamente la misma que la información de movimiento candidata en el segundo conjunto de candidatas.
[0309] El extremo de codificación determina el coste tasa distorsión correspondiente a cada información de movimiento candidata en el primer conjunto de candidatas, y la información de movimiento candidata correspondiente al coste tasa distorsión mínimo se determina como la primera información de movimiento objetivo del primer sub-bloque triangular. A continuación, el extremo de codificación excluye la primera información de movimiento objetivo del segundo conjunto de candidatas, y determina el coste tasa distorsión correspondiente a cada información de movimiento candidata restante en el segundo conjunto de candidatas (es decir, cada información de movimiento candidata restante excluyendo la primera información de movimiento objetivo), y determina la información de movimiento candidata correspondiente al coste tasa distorsión mínimo como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0310] Cuando el extremo de codificación envía un flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una segunda información de indicación, y la segunda información de indicación se utiliza para indicar un primer valor de índice de la primera información de movimiento objetivo en el primer conjunto de candidatas (utilizado para indicar cuál información de movimiento candidata es la primera información de movimiento objetivo en el primer conjunto de candidatas), y un segundo valor de índice de la segunda información de movimiento objetivo en el segundo conjunto de candidatas (utilizado para indicar cuál información de movimiento candidata es la segunda información de movimiento objetivo en el segundo conjunto de candidatas).
[0312] Para el extremo de decodificación, después de que el extremo de decodificación recibe un flujo de bits codificado, el extremo de decodificación también puede adquirir, del flujo de bits codificado, una segunda información de indicación. La segunda información de indicación se puede utilizar para indicar el primer valor de índice de la primera información de movimiento objetivo en el primer conjunto de candidatas, y el segundo valor de índice de la segunda información de movimiento objetivo en el segundo conjunto de candidatas. Basándose en el primer valor de índice de la segunda información de indicación, el extremo de decodificación puede adquirir, del primer conjunto de candidatas, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular. Además, basándose en el segundo valor de índice de la segunda información de indicación, el extremo de decodificación puede adquirir, del segundo conjunto de candidatas, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0314] Forma de realización 12: la Figura 7B es un diagrama esquemático para dividir un sub-bloque triangular cuando splitDir = 0. SplitDir es un bit indicador de la dirección de división, que indica la información de división del sub-bloque triangular. SplitDir = 0 indica que el bloque actual se divide en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha). La lista de información de movimiento incluye información de movimiento del bloque A1, información de movimiento del bloque B1, información de movimiento del bloque B0, información de movimiento del bloque A0 e información de movimiento del bloque B2.
[0316] En un ejemplo, el orden de clasificación de la información de movimiento en la lista de información de movimiento puede ser: la información de movimiento del bloque A1, la información de movimiento del bloque B1, la información de movimiento del bloque B0, la información de movimiento del bloque A0 y la información de movimiento del bloque B2. Si la información de movimiento del bloque A1 está disponible, la información de movimiento del bloque A1 se añade a la lista de información de movimiento de acuerdo con el orden de clasificación anterior; si la información de movimiento del bloque A1 no está disponible, la información de movimiento del bloque A1 no se añade a la lista de información de movimiento; si la información de movimiento del bloque B1 está disponible, la información de movimiento del bloque B1 se añade a la lista de información de movimiento de acuerdo con el orden de clasificación anterior; si la información de movimiento del bloque B1 no está disponible, la información de movimiento del bloque B1 no se añade a la lista de información de movimiento, y así sucesivamente. En aplicaciones prácticas, también se pueden insertar otros tipos de información de movimiento, tales como información de movimiento en el dominio de tiempo, entre la información de movimiento del bloque B0 y la información de movimiento del bloque A0, sin que exista limitación en el presente documento.
[0318] Para el primer sub-bloque triangular superior, existe una alta probabilidad de que la información de movimiento del bloque A1 y la información de movimiento del bloque A0 no sean seleccionadas. Suponiendo que, en la lista de información de movimiento, el valor de índice de la información de movimiento del bloque A1 es 0, y el valor de índice de la información de movimiento del bloque B0 es 0, el valor de índice de la información de movimiento del bloque B1 es 2, el valor de índice de la información de movimiento del bloque A0 es 3, el valor de índice de la información de movimiento del bloque B2 es 4, y que el primer conjunto de candidatas incluya la información de movimiento del bloque B0, la información de movimiento del bloque B1 y la información de movimiento del bloque B2.
[0320] El extremo de codificación codifica la información de movimiento del bloque B0 con el primer valor de índice “0”, que indica la primera información de movimiento candidata en el primer conjunto de candidatas y también la segunda información de movimiento candidata en la lista de información de movimiento. Es decir, el primer valor de índice “0” puede corresponder al valor de índice 1 en la lista de información de movimiento. El extremo de codificación codifica la información de movimiento del bloque B1 con el primer valor de índice “10”, que indica la segunda información de movimiento candidata en el primer conjunto de candidatas y también la tercera información de movimiento candidata en la lista de información de movimiento. Es decir, el primer valor de índice “10” puede corresponder al valor de índice 2 en la lista de información de movimiento. El extremo de codificación codifica la información de movimiento del bloque B2 con el primer valor de índice “11”, que indica la tercera información de movimiento candidata en el primer conjunto de candidatas y también la quinta información de movimiento candidata en la lista de información de movimiento. Es decir, el primer valor de índice “11” puede corresponder al valor de índice 4 en la lista de información de movimiento.
[0322] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el primer valor de índice, si el primer valor de índice es “0”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el primer conjunto de candidatas (es decir, la segunda información de movimiento candidata en la lista de información de movimiento) es la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es “10”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la tercera información de movimiento candidata en la lista de información de movimiento) es la primera información de movimiento objetivo del primer sub-bloque triangular. Si el primer valor de índice es “11”, el extremo de decodificación puede considerar que la tercera información de movimiento candidata en el primer conjunto de candidatas (es decir, la quinta información de movimiento candidata en la lista de información de movimiento) es la primera información de movimiento objetivo del primer sub-bloque triangular.
[0324] Para el segundo sub-bloque triangular inferior, existe una alta probabilidad de que la información de movimiento del bloque B1 y la información de movimiento del bloque B0 no sean seleccionadas. Suponiendo que, en la lista de información de movimiento, el valor de índice de la información de movimiento del bloque A1 es 0, y el valor de índice de la información de movimiento del bloque B0 es 0, el valor de índice de la información de movimiento del bloque B1 es 2, el valor de índice de la información de movimiento del bloque A0 es 3, el valor de índice de la información de movimiento del bloque B2 es 4, y que el segundo conjunto de candidatas puede incluir la información de movimiento del bloque A0, la información de movimiento del bloque B1 y la información de movimiento del bloque A1.
[0326] El extremo de codificación codifica la información de movimiento del bloque A1 con el segundo valor de índice “0”, que indica la primera información de movimiento candidata en el segundo conjunto de candidatas y también la primera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “0” puede corresponder al valor de índice 0 de la lista de información de movimiento. El extremo de codificación codifica la información de movimiento del bloque A0 con el segundo valor de índice “10”, que indica la segunda información de movimiento candidata en el segundo conjunto de candidatas y también la cuarta información de movimiento candidata en la lista de información de movimiento. Es decir, el segundo valor de índice “10” puede corresponder al valor de índice 3 de la lista de información de movimiento. El extremo de codificación codifica la información de movimiento del bloque B2 con el segundo valor de índice “10”, que indica la tercera información de movimiento candidata en el segundo conjunto de candidatas y también la quinta información de movimiento candidata en la lista de información de movimiento. Es decir, el segundo valor de índice “10” puede corresponder al valor de índice 3 de la lista de información de movimiento.
[0328] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice, si el segundo valor de índice es “0”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la primera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “10”, el extremo de decodificación puede considerar que la segunda información de movimiento candidata en el segundo conjunto de candidatas (es decir, la cuarta información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “11”, el extremo de decodificación puede considerar que la segunda información de movimiento candidata en el tercer conjunto de candidatas (es decir, la quinta información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0330] En un ejemplo, dado que la segunda información de movimiento objetivo es diferente de la primera información de movimiento objetivo, es decir, el segundo valor de índice y el primer valor de índice no corresponden a la misma información de movimiento candidata en la lista de información de movimiento. Por lo tanto, cuando la primera información de movimiento objetivo es la información de movimiento del bloque B2, es decir, el primer valor de índice es “11”, y el segundo conjunto de candidatas incluye la información de movimiento del bloque A0 y la información de movimiento del bloque A1.
[0332] El extremo de codificación codifica la información de movimiento del bloque A1 con el segundo valor de índice “0”, que indica la primera información de movimiento candidata en el segundo conjunto de candidatas y también la primera información de movimiento candidata en la lista de información de movimiento. El extremo de codificación codifica la información de movimiento del bloque A0 con el segundo valor de índice “1”, que indica la segunda información de movimiento candidata en el segundo conjunto de candidatas y también la cuarta información de movimiento candidata en la lista de información de movimiento. Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice, si el segundo valor de índice es “0”, la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la primera información de movimiento candidata en la lista de información de movimiento) se considera que es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “1”, la segunda información de movimiento candidata en el segundo conjunto de candidatas (es decir, la cuarta información de movimiento candidata en la lista de información de movimiento) se considera que es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0334] En un ejemplo, si la primera información de movimiento objetivo no es la información de movimiento del bloque B2, el segundo conjunto de candidatas incluye la información de movimiento del bloque A0, la información de movimiento del bloque A1 y la información de movimiento del bloque B2. Para el método de codificación y decodificación, puede remitirse a la forma de realización que se ha mencionado anteriormente, sin necesidad de repetir los detalles en este documento.
[0336] En resumen, si el primer valor de índice (candIdx1) es 11, es decir, el valor de índice de la correspondiente lista de información de movimiento es 4, el segundo valor de índice (candIdx2) tiene únicamente dos posibilidades: valor de índice 0 y valor de índice 3. Por lo tanto, el extremo de codificación codifica la información de movimiento correspondiente al valor de índice 0 (es decir, la primera información de movimiento candidata en la lista de información de movimiento) con el segundo valor de índice “0”, y el extremo de codificación codifica la información de movimiento correspondiente al valor de índice 3 (es decir, la cuarta información de movimiento candidata en la lista de información de movimiento) con el segundo valor de índice “1”. Si el primer valor de índice (candIdx1) no es “11”, es decir, no corresponde al valor de índice 4 de la lista de información de movimiento, entonces el proceso de decodificación del segundo valor de índice puede remitirse a la Tabla 1. En este caso, el segundo valor de índice (candIdx2) tiene tres posibilidades: valor de índice 0, valor de índice 3 y valor de índice 4. Por lo tanto, el extremo de codificación codifica la información de movimiento correspondiente al valor de índice 0 con el segundo valor de índice “0”, el extremo de codificación codifica la información de movimiento correspondiente al valor de índice 3 con el segundo valor de índice “10”, y el extremo de codificación codifica la información de movimiento correspondiente al valor de índice 4 con el segundo valor de índice “11”.
[0338] Tabla 1
[0341]
[0344] En un ejemplo, el primer valor de índice (candIdx1) se puede limitar a corresponder a los valores de índice 1 y 2, es decir, el primer valor de índice corresponde a la información de movimiento del bloque B0 (el valor de índice es 1) o a la información de movimiento del bloque B1 (el valor de índice es 2). Es decir, el primer valor de índice (candIdx1) solo necesita 1 bit binario para codificarse. Por ejemplo, el valor de índice 1 se codifica con 0 y el valor de índice 2 se codifica con 1. El segundo valor de índice (candIdx2) puede corresponder a los valores de índice 0, 3 y 4, es decir, el segundo valor de índice corresponde a la información de movimiento del bloque A1 (el valor de índice es 0), a la información de movimiento del bloque A0 (el valor de índice es 3) y a la información de movimiento del bloque B2 (el valor de índice es 4). Obviamente, la información de movimiento correspondiente al segundo valor de índice es diferente de la información de movimiento correspondiente al primer valor de índice. Sobre esta base, los tres valores de índice se pueden codificar con 0, 10 y 11. Por ejemplo, el valor de índice 0 se codifica con 0, el valor de índice 3 se codifica con 10, y el valor de índice 4 se codifica con 11. El método anterior no necesita depender del primer valor de índice para realizar el proceso de decodificación, lo cual reduce la dependencia del análisis (parsing).
[0346] En un ejemplo, el primer valor de índice (candIdx1) se puede limitar a corresponder a los valores de índice 1, 2 y 4, es decir, el primer valor de índice corresponde a la información de movimiento del bloque B0 (el valor de índice es 1), la información de movimiento del bloque B1 (el valor de índice es 2) y la información de movimiento del bloque B2 (el valor de índice es 4). Es decir, el primer valor de índice (candIdx1) se puede codificar con 0, 10 y 11. Por ejemplo, el valor de índice 1 se codifica con 0, el valor de índice 2 se codifica con 10, y el valor de índice 4 se codifica con 11. El segundo valor de índice (candIdx2) se puede limitar a corresponder a los valores de índice 0 y 3, es decir, el segundo valor de índice corresponde a la información de movimiento del bloque A1 (el valor de índice es 0) y a la información de movimiento del bloque A0 (el valor de índice es 3). Obviamente, la información de movimiento correspondiente al segundo valor de índice es diferente de la información de movimiento correspondiente al primer valor de índice. Sobre esta base, los dos valores de índice se pueden codificar con 0 y 1. Por ejemplo, el valor de índice 0 se codifica con 0, y el valor de índice 3 se codifica con 1. El método anterior no necesita depender del primer valor de índice para realizar el proceso de decodificación, lo cual reduce la dependencia del análisis (parsing).
[0348] Forma de realización 13: la Figura 7C es un diagrama esquemático para dividir un sub-bloque triangular cuando splitDir = 1. SplitDir es un bit indicador de la dirección de división, que indica la información de división del sub-bloque triangular. SplitDir = 1 indica que el bloque actual se divide en el primer sub-bloque triangular y el segundo sub-bloque triangular de acuerdo con la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha). La lista de información de movimiento incluye información de movimiento del bloque A1, información de movimiento del bloque B1, información de movimiento del bloque B0, información de movimiento del bloque A0 e información de movimiento del bloque B2.
[0350] Para el primer sub-bloque triangular superior, no es necesario construir un primer conjunto de candidatas para el primer sub-bloque triangular. El extremo de codificación / extremo de decodificación puede seleccionar directamente, de la lista de información de movimiento, la primera información de movimiento objetivo, y el proceso de selección no se repetirá aquí.
[0352] Para el segundo sub-bloque triangular inferior, existe una alta probabilidad de que la información de movimiento del bloque B2 no sea seleccionada. Suponiendo que, en la lista de información de movimiento, el valor de índice de la información de movimiento del bloque A1 es 0, el valor de índice de la información de movimiento del bloque B0 es 0, el valor de índice de la información de movimiento del bloque B1 es 2, el valor de índice de la información de movimiento del bloque A0 es 3, el valor de índice de la información de movimiento del bloque B2 es 4, y que el segundo conjunto de candidatas puede incluir la información de movimiento del bloque A1, la información de movimiento del bloque A0, la información de movimiento del bloque B0 y la información de movimiento del bloque B1.
[0354] Si la primera información de movimiento objetivo es la quinta información de movimiento en la lista de información de movimiento (la información de movimiento del bloque B2), el valor de índice correspondiente a la primera información de movimiento objetivo es 4. En este caso, el extremo de codificación puede codificar la información de movimiento del bloque A1 con el segundo valor de índice “0”, que indica la primera información de movimiento candidata en el segundo conjunto de candidatas y también la primera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “0” puede corresponder al valor de índice 0 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B0 con el segundo valor de índice “10”, que indica la segunda información de movimiento candidata en el segundo conjunto de candidatas y también la segunda información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “10” puede corresponder al valor de índice 1 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B1 con el segundo valor de índice “110”, que indica la tercera información de movimiento candidata en el segundo conjunto de candidatas y también la tercera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “110” puede corresponder al valor de índice 2 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque A0 con el segundo valor de índice “111”, que indica la cuarta información de movimiento candidata en el segundo conjunto de candidatas y también la cuarta información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “111” puede corresponder al valor de índice 3 de la lista de información de movimiento.
[0356] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice, si el segundo valor de índice es “0”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la primera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “10”, el extremo de decodificación puede considerar que la segunda información de movimiento candidata en el segundo conjunto de candidatas (es decir, la segunda información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “110”, el extremo de decodificación puede considerar que la tercera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la tercera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “111”, el extremo de decodificación puede considerar que la cuarta información de movimiento candidata en el segundo conjunto de candidatas (es decir, la cuarta información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0358] Si el primer valor de índice no corresponde al valor de índice 4, la siguiente descripción toma como ejemplo el primer valor de índice correspondiente al valor de índice 3, lo cual indica que la primera información de movimiento objetivo es la cuarta información de movimiento en la lista de información de movimiento (es decir, la información de movimiento del bloque B2). En este caso, el extremo de codificación puede codificar la información de movimiento del bloque A1 con el segundo valor de índice “0”, que indica la primera información de movimiento candidata en el segundo conjunto de candidatas y también la primera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “0” puede corresponder al valor de índice 0 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B0 con el segundo valor de índice “10”, que indica la segunda información de movimiento candidata en el segundo conjunto de candidatas y también la segunda información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “10” puede corresponder al valor de índice 1 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B1 con el segundo valor de índice “110”, que indica la tercera información de movimiento candidata en el segundo conjunto de candidatas y también la tercera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “110” puede corresponder al valor de índice 2 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque A0 con el segundo valor de índice “111”, que indica la cuarta información de movimiento candidata en el segundo conjunto de candidatas y también la cuarta información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “111” puede corresponder al valor de índice 3 de la lista de información de movimiento.
[0360] Después de que el extremo de decodificación adquiere, del flujo de bits codificado, el segundo valor de índice, si el segundo valor de índice es “0”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la primera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “10”, el extremo de decodificación puede considerar que la segunda información de movimiento candidata en el segundo conjunto de candidatas (es decir, la segunda información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “110”, el extremo de decodificación puede considerar que la tercera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la tercera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “111”, el extremo de decodificación puede considerar que la cuarta información de movimiento candidata en el segundo conjunto de candidatas (es decir, la cuarta información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0362] Si el primer valor de índice no corresponde al valor de índice 4, la siguiente descripción toma como ejemplo el primer valor de índice correspondiente al valor de índice 3, lo cual indica que la primera información de movimiento objetivo es la cuarta información de movimiento en la lista de información de movimiento (es decir, la información de movimiento del bloque B2). En este caso, el extremo de codificación puede codificar la información de movimiento del bloque A1 con el segundo valor de índice “0”, que indica la primera información de movimiento candidata en el segundo conjunto de candidatas y también la primera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “0” puede corresponder al valor de índice 0 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B0 con el segundo valor de índice “10”, que indica la segunda información de movimiento candidata en el segundo conjunto de candidatas y también la segunda información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “10” puede corresponder al valor de índice 1 de la lista de información de movimiento. El extremo de codificación puede codificar la información de movimiento del bloque B1 con el segundo valor de índice “11”, que indica la tercera información de movimiento candidata en el segundo conjunto de candidatas y también la tercera información de movimiento candidata en la lista de información de movimiento, es decir, el segundo valor de índice “11” puede corresponder al valor de índice 2 de la lista de información de movimiento.
[0364] Después de que el extremo de decodificación adquiera, del flujo de bits codificado, el segundo valor de índice, si el segundo valor de índice es “0”, el extremo de decodificación puede considerar que la primera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la primera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “10”, el extremo de decodificación puede considerar que la segunda información de movimiento candidata en el segundo conjunto de candidatas (es decir, la segunda información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular. Si el segundo valor de índice es “11”, el extremo de decodificación puede considerar que la tercera información de movimiento candidata en el segundo conjunto de candidatas (es decir, la tercera información de movimiento candidata en la lista de información de movimiento) es la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0366] En resumen, si el primer valor de índice (candIdx1) es “11”, es decir, corresponde al valor de índice 4 de la lista de información de movimiento, el proceso de decodificación del segundo valor de índice (candIdx2) se puede mostrar en la Tabla 2. En resumen, si el primer valor de índice (candIdx1) no es “11”, es decir, no corresponde al valor de índice 4 de la lista de información de movimiento, el proceso de decodificación del segundo valor de índice (candIdx2) se puede mostrar en la Tabla 3.
[0368] Tabla 2
[0371]
[0372] Tabla 3
[0375]
[0378] En un ejemplo, el segundo valor de índice (candIdx2) se puede codificar en primer lugar, ya que el segundo valor de índice (candIdx2) solo puede corresponder a los valores de índice 0, 1, 2 y 3. Por lo tanto, se pueden utilizar 0, 10, 110 y 111 para la codificación, es decir, el segundo valor de índice (candIdx2) se puede codificar con un máximo de 3 bits binarios. Por ejemplo, el valor de índice 0 se codifica con 0, el valor de índice 1 se codifica con 10, el valor de índice 2 se codifica con 110, y el valor de índice 3 se codifica con 111. A continuación, se puede codificar el primer valor de índice (candIdx1), es decir, candIdx1 -= candIdx1 < candIdx2 ? 0 : 1, es decir, el primer valor de índice (candIdx1) corresponde a los cuatro valores restantes entre los valores de índice 0, 1, 2, 3 y 4, excluyendo el segundo valor de índice (candIdx2). Por lo tanto, también se pueden utilizar 0, 10, 110 y 111 para la codificación, es decir, se utilizan como máximo 3 bits binarios para codificar el primer valor de índice (candIdx1). Obviamente, de este modo, no es necesario depender del tamaño del valor de índice anterior para determinar cuántos bits binarios se deben decodificar en ese momento, reduciendo de este modo la dependencia del análisis (parsing).
[0380] En un ejemplo, cuando splitDir = 1, el segundo valor de índice (candIdx2) se puede codificar en primer lugar, y a continuación se puede codificar el primer valor de índice (candIdx1). Cuando splitDir = 0, el primer valor de índice (candIdx1) se puede codificar en primer lugar, y el segundo valor de índice (candIdx2) se puede codificar posteriormente; o, el segundo valor de índice (candIdx2) se puede codificar en primer lugar, y a continuación se puede codificar el primer valor de índice (candIdx1).
[0382] En un ejemplo, cuando splitDir = 0, se puede utilizar la forma de forma de realización 12 para el procesamiento, y cuando splitDir = 1 , se puede utilizar la forma de forma de realización 13 para el procesamiento. Por supuesto, las formas de forma de realización 12 y 13 anteriores son únicamente ejemplos, y no existe limitación a las mismas.
[0384] En un ejemplo, los ejemplos anteriores de codificación de valores de índice ilustran únicamente que la lista de información de movimiento incluye 5 piezas de información de movimiento candidata. Cuando la lista de información de movimiento incluye información de movimiento candidata en otros ejemplos, la implementación es similar, y los detalles no se repiten aquí.
[0386] Forma de realización 14: en los ejemplos anteriores, cuando el extremo de codificación envía un flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una segunda información de indicación, la cual se utiliza para indicar el primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento, y el segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento. En un ejemplo, para el primer valor de índice, el extremo de codificación puede utilizar el modo CABAC para codificar el primer valor de índice, y el extremo de decodificación puede utilizar el modo CABAC para decodificar el primer valor de índice. Para el segundo valor de índice, el extremo de codificación puede utilizar el modo CABAC para codificar el segundo valor de índice, y el extremo de decodificación puede utilizar el modo CABAC para decodificar el segundo valor de índice. Por supuesto, la técnica CABAC es únicamente un ejemplo, y no existe limitación a la misma.
[0388] A modo de ejemplo, suponiendo que la lista de información de movimiento incluye 5 piezas de información de movimiento candidata, el primer valor de índice (denotado como candIdx1) se puede representar con cuatro bits binarios, y el segundo valor de índice (denotado como candIdx2) se puede representar con cuatro bits binarios.
[0390] En el extremo de codificación, si candIdx1 representa la primera información de movimiento candidata en la lista de información de movimiento, el primer bit binario se codifica en el modo CABAC, y el primer bit binario es 0. Si candIdx1 representa la segunda información de movimiento candidata en la lista de información de movimiento, el primer bit binario y el segundo bit binario se codifican en modo CABAC, siendo el primer bit binario 1 y el segundo bit binario 0. Si candIdx1 representa la tercera información de movimiento candidata en la lista de información de movimiento, el primer bit binario, el segundo bit binario y el tercer bit binario se codifican en modo CABAC, siendo el primer bit binario 1, el segundo bit binario 1 y el tercer bit binario 0. Si candIdx1 representa la cuarta información de movimiento candidata en la lista de información de movimiento, el primer bit binario, el segundo bit binario, el tercer bit binario y el cuarto bit binario se codifican en modo CABAC, siendo el primer bit binario 1, el segundo bit binario 1, el tercer bit binario 1 y el cuarto bit binario 0. Si candIdx1 representa la quinta información de movimiento candidata en la lista de información de movimiento, el primer bit binario, el segundo bit binario, el tercer bit binario y el cuarto bit binario se codifican en modo CABAC, siendo el primer bit binario 1, el segundo bit binario 1, el tercer bit binario 1 y el cuarto bit binario 0.
[0391] En el extremo de decodificación, el primer bit binario de candIdxl se decodifica mediante el modo CABAC. Si el primer bit binario es 0, se determina que candIdx1 corresponde a 0, y candIdx1 representa la primera información de movimiento candidata en la lista de información de movimiento. Si el primer bit binario es 1, el segundo bit binario de candIdx1 se decodifica mediante el modo CABAC. Si el segundo bit binario es 0, se determina que candIdx1 corresponde a 1 (representado como 10), y candIdx1 representa la primera información de movimiento candidata en la lista de información de movimiento. Si el primer bit binario es 2, el tercer bit binario de candIdx1 se decodifica mediante el modo CABAC. Si el tercer bit binario es 0, se determina que candIdx1 corresponde a 2 (representado como 110), y candIdx1 representa la tercera información de movimiento candidata en la lista de información de movimiento. Si el primer bit binario es 3, el cuarto bit binario de candIdx1 se decodifica mediante el modo CABAC. Si el cuarto bit binario es 0, se determina que candIdx1 corresponde a 3 (representado como 1110), y candIdx1 representa la cuarta información de movimiento candidata en la lista de información de movimiento. Si el cuarto bit binario es 1, dado que el número de bits binarios alcanza el máximo, se determina que candIdx1 corresponde a 4 (representado como 1111), y candIdx1 representa la quinta información de movimiento candidata en la lista de información de movimiento.
[0393] En un ejemplo, en el proceso de decodificación, la condición de terminación puede ser: que el bit binario resuelto es 0, o que el número de bits binarios resueltos alcance el máximo (numCandminus1). El valor numCandminus1 se puede obtener mediante información sintáctica, y no existe limitación al respecto. Si numCandminus1 es 4, indica que el número máximo de bits binarios del primer valor de índice candIdx1 es 4.
[0395] En la forma de realización anterior, se ha presentado el proceso de codificación de candIdx1 por parte del extremo de codificación y el proceso de decodificación de candIdx1 por parte del extremo de decodificación. El proceso de codificación y el proceso de decodificación de candIdx2 son similares a los de la forma de realización anterior, y no se repetirán aquí.
[0397] Para los ejemplos anteriores, el bit binario correspondiente a candIdx1/candIdx2 se muestra en la Tabla 4.
[0399] Tabla 4
[0401]
[0404] Forma de realización 15: en el ejemplo anterior, cuando el extremo de codificación envía un flujo de bits codificado al extremo de decodificación, el flujo de bits codificado puede incluir una segunda información de indicación, la cual se utiliza para indicar el primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento, y el segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento. En un ejemplo, para el primer valor de índice, el extremo de codificación puede utilizar el modo CABAC para codificar el primer valor de índice, y el extremo de decodificación puede utilizar el modo CABAC para decodificar el primer valor de índice. Para el segundo valor de índice, el extremo de codificación puede utilizar el modo CABAC para codificar el segundo valor de índice, y el extremo de decodificación puede utilizar el modo CABAC para decodificar el segundo valor de índice. Por supuesto, la técnica CABAC es únicamente un ejemplo, y no existe limitación respecto a la misma.
[0406] La técnica CABAC incluye un modo CABAC que almacena y actualiza al menos un modelo de contexto (es decir, la codificación aritmética binaria adaptativa del contexto), y un modo CABAC de bypass que no almacena ni actualiza el modelo de contexto (es decir, la codificación aritmética binaria en modo bypass). El primer valor de índice se puede codificar en un método de codificación aritmética binaria basada en bypass, o el primer valor de índice se puede codificar en un método de codificación aritmética binaria adaptativa basada en contexto. Es decir, el primer valor de índice se codifica en un método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto. El segundo valor de índice se codifica en un método de codificación aritmética binaria basada en bypass, o el segundo valor de índice se codifica en un método de codificación aritmética binaria adaptativa basada en contexto. Es decir, el segundo valor de índice se codifica en un método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto.
[0408] Cuando el extremo de codificación utiliza el modo CABAC para codificar el primer valor de índice, el extremo de decodificación puede utilizar el modo CABAC para decodificar el primer valor de índice. Por ejemplo, cuando el extremo de codificación codifica el primer valor de índice en el método de codificación aritmética binaria basada en bypass, el extremo de decodificación decodifica el primer valor de índice en el método de decodificación aritmética binaria basada en bypass para obtener el primer valor de índice. Cuando el extremo de codificación codifica el primer valor de índice en un método de codificación aritmética binaria adaptativa basada en contexto, el extremo de decodificación decodifica el primer valor de índice en el método de decodificación aritmética binaria adaptativa basada en contexto para obtener el primer valor de índice. Es decir, de acuerdo con el modelo de contexto, el primer valor de índice se decodifica en el método de codificación aritmética binaria adaptativa basada en contexto para obtener el primer valor de índice.
[0409] Cuando el extremo de codificación utiliza el modo CABAC para codificar el segundo valor de índice, el extremo de decodificación puede utilizar el modo CABAC para decodificar el segundo valor de índice. Por ejemplo, cuando el extremo de codificación codifica el segundo valor de índice en el método de codificación aritmética binaria basada en bypass, el extremo de decodificación decodifica el segundo valor de índice en el método de decodificación aritmética binaria basada en bypass para obtener el segundo valor de índice. Cuando el extremo de codificación codifica el segundo valor de índice en un método de codificación aritmética binaria adaptativa basada en contexto, el extremo de decodificación decodifica el segundo valor de índice en el método de decodificación aritmética binaria adaptativa basada en contexto para obtener el segundo valor de índice. Es decir, de acuerdo con el modelo de contexto, el segundo valor de índice se decodifica en el método de codificación aritmética binaria adaptativa basada en contexto para obtener el segundo valor de índice.
[0411] En un ejemplo, el primer valor de índice puede incluir M1 bits binarios, siendo N1 bits binarios de los M1 bits binarios obtenidos mediante la decodificación aritmética binaria adaptativa basada en contexto, y los (M1 - N1) bits binarios restantes de los M1 bits binarios obtenidos mediante la decodificación aritmética binaria basada en bypass; M1 es mayor que o igual a N1. Por ejemplo, el primer valor de índice incluye cuatro bits binarios, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y el segundo, tercer y cuarto bits binarios se obtienen mediante la decodificación aritmética binaria basada en bypass.
[0413] Por ejemplo, para el primer bit binario en el primer valor de índice, el extremo de codificación codifica el primer bit binario en el método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto. El extremo de decodificación decodifica el primer bit binario en el método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto, para obtener el primer bit binario.
[0415] Si existen otros bits binarios en el primer valor de índice (tales como el segundo bit binario, el tercer bit binario, el cuarto bit binario, etc.), el extremo de codificación codifica los otros bits binarios en el método de codificación aritmética binaria basada en bypass. El extremo de decodificación decodifica los otros bits binarios en el método de decodificación aritmética binaria basada en bypass, para obtener los otros bits binarios.
[0417] En resumen, para el primer bit binario, el extremo de codificación / extremo de decodificación puede utilizar el modo CABAC que actualiza un determinado modelo de contexto para la codificación / decodificación. Para los demás bits binarios, el extremo de codificación / extremo de decodificación puede utilizar el modo CABAC que no actualiza el modelo de contexto para la codificación / decodificación, es decir, puede utilizar el modo CABAC en modo Bypass.
[0419] En un ejemplo, el segundo valor de índice puede incluir M2 bits binarios, siendo N2 bits binarios de los M2 bits binarios obtenidos mediante la decodificación aritmética binaria adaptativa basada en contexto, y los (M2 - N2) bits binarios restantes de los M2 bits binarios obtenidos mediante la decodificación aritmética binaria basada en bypass; M2 es mayor que o igual a N2. Por ejemplo, el segundo valor de índice incluye cuatro bits binarios, el primer bit binario se obtiene mediante la decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto, y el segundo, tercer y cuarto bits binarios se obtienen mediante la decodificación aritmética binaria basada en bypass.
[0421] Por ejemplo, para el primer bit binario en el segundo valor de índice, el extremo de codificación codifica el primer bit binario en el método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto. El extremo de decodificación decodifica el primer bit binario en el método de codificación aritmética binaria adaptativa basada en contexto de acuerdo con el modelo de contexto, para obtener el primer bit binario.
[0423] Si existen otros bits binarios en el segundo valor de índice (tales como el segundo bit binario, el tercer bit binario, el cuarto bit binario, etc.), el extremo de codificación codifica los otros bits binarios en el método de codificación aritmética binaria basada en bypass. El extremo de decodificación decodifica los otros bits binarios en el método de decodificación aritmética binaria basada en bypass, para obtener los otros bits binarios.
[0425] En resumen, para el primer bit binario, el extremo de codificación / extremo de decodificación puede utilizar el modo CABAC que actualiza un determinado modelo de contexto para la codificación / decodificación. Para los demás bits binarios, el extremo de codificación / extremo de decodificación puede utilizar el modo CABAC que no actualiza el modelo de contexto para la codificación / decodificación, es decir, puede utilizar el modo CABAC en modo Bypass.
[0427] Forma de realización 16: el modelo de contexto correspondiente al primer valor de índice es el mismo que el modelo de contexto correspondiente al segundo valor de índice. Alternativamente, el modelo de contexto correspondiente al primer valor de índice es diferente del modelo de contexto correspondiente al segundo valor de índice. Alternativamente, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es el mismo que el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división; el modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es el mismo que el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división; el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es diferente del modelo de contexto correspondiente al primer valor de índice y a la segunda información de división. Alternativamente, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división, el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división, el modelo de contexto correspondiente al primer valor de índice y a la segunda información de división, y el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división son todos diferentes entre sí. Alternativamente, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es diferente del modelo de contexto correspondiente al segundo valor de índice y a la primera información de división; el modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es el mismo que el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división. Alternativamente, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es el mismo que el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división; el modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es diferente del modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división. En un ejemplo, la primera información de división indica que la información de división del sub-bloque triangular es un método de división por diagonal principal; la segunda información de división indica que la información de división del sub-bloque triangular es un método de división por sub-diagonal.
[0429] A continuación, se ofrece una descripción detallada del modelo de contexto anterior en combinación con varios escenarios de aplicación específicos.
[0431] Escenario de aplicación 1: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto A1Model. El modelo de contexto correspondiente al primer valor de índice (un valor de índice utilizado para indicar la primera información de movimiento objetivo del primer sub-bloque triangular en el modo de partición geométrica con partición triangular) es el modelo de contexto A1Model, el modelo de contexto correspondiente al segundo valor de índice (un valor de índice utilizado para indicar la segunda información de movimiento objetivo del segundo sub-bloque triangular en el modo de partición geométrica con partición triangular) es el modelo de contexto A1Model, y el modelo de contexto correspondiente al valor de índice del modo de fusión regular es el modelo de contexto A1 Model.
[0433] En un ejemplo, si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el primer valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto A1Model para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto A1Model para codificar o decodificar el segundo valor de índice (tal como el segundo bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto A1Model para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0435] Escenario de aplicación 2: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto B1Model y el modelo de contexto B2Model. El modelo de contexto correspondiente al primer valor de índice es el modelo de contexto B1Model, el modelo de contexto correspondiente al segundo valor de índice es el modelo de contexto B1Model, y el modelo de contexto correspondiente al valor de índice del modo de fusión regular es el modelo de contexto B2Model.
[0437] En un ejemplo, si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el primer valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto B1Model para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto B1Model para codificar o decodificar el segundo valor de índice (tal como el segundo bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto B2 Modei para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0439] Escenario de aplicación 3: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto C1, el modelo de contexto C2 y el modelo de contexto C3. El modelo de contexto correspondiente al primer valor de índice es el modelo de contexto C1, el modelo de contexto correspondiente al segundo valor de índice es el modelo de contexto C2, y el modelo de contexto correspondiente al valor de índice del modo de fusión regular es el modelo de contexto C3.
[0441] En un ejemplo, si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el primer valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto C1 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, se utiliza el modelo de contexto C2 para codificar o decodificar el segundo valor de índice (tal como el segundo bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto C3 para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0443] Escenario de aplicación 4: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto D1, el modelo de contexto D2 y el modelo de contexto D3. En un ejemplo, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es el modelo de contexto D1; el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división es el modelo de contexto D1. El modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es el modelo de contexto D2; el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división es el modelo de contexto D2. El modelo de contexto correspondiente al valor de índice del modo de fusión regular (tal como el modo de fusión regular) es el modelo de contexto D3.
[0445] En un ejemplo, si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el primer valor de índice de acuerdo con el modelo de contexto, primero se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división (que indica que el bloque actual se divide en el primer sub-bloque triangular y el segundo sub­ bloque triangular de acuerdo con la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha)), se utiliza el modelo de contexto D1 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice); si la información de división del sub-bloque triangular es la segunda información de división (que indica que el bloque actual se divide en el primer sub­ bloque triangular y el segundo sub-bloque triangular de acuerdo con la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha)), se utiliza el modelo de contexto D2 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, primero se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto D1 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto D2 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto D3 para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0446] Escenario de aplicación 5: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto E1, el modelo de contexto E2, el modelo de contexto E3, el modelo de contexto E4 y el modelo de contexto E5. En un ejemplo, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división es el modelo de contexto E1; el modelo de contexto correspondiente al primer valor de índice y a la segunda información de división es el modelo de contexto E2; el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división es el modelo de contexto E3; el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división es el modelo de contexto E4. El modelo de contexto correspondiente al valor de índice del modo de fusión regular (tal como el modo de fusión regular) es el modelo de contexto E5.
[0448] En un ejemplo, si el extremo de codificación / extremo de decodificación codifica o decodifica el primer valor de índice de acuerdo con el modelo de contexto, se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto E1 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto E2 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación necesita codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, primero se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto E3 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto E4 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto E5 para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0450] Escenario de aplicación 6 : el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto F1, el modelo de contexto F2, el modelo de contexto F3 y el modelo de contexto F4. En un ejemplo, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división puede ser el modelo de contexto F1; el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división puede ser el modelo de contexto F2. El modelo de contexto correspondiente al primer valor de índice y a la segunda información de división puede ser el modelo de contexto F3; el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división puede ser el modelo de contexto F3. El modelo de contexto correspondiente al valor de índice del modo de fusión regular (tal como el modo de fusión regular) es el modelo de contexto F4.
[0452] En un ejemplo, si el extremo de codificación / extremo de decodificación codifica o decodifica el primer valor de índice de acuerdo con el modelo de contexto, se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto F1 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto F3 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, primero se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto F2 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto F3 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto F4 para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0454] Escenario de aplicación 7: el extremo de codificación / extremo de decodificación puede mantener el modelo de contexto G1, el modelo de contexto G2, el modelo de contexto G3 y el modelo de contexto G4. En un ejemplo, el modelo de contexto correspondiente al primer valor de índice y a la primera información de división puede ser el modelo de contexto G1; el modelo de contexto correspondiente al segundo valor de índice y a la primera información de división puede ser el modelo de contexto G1. El modelo de contexto correspondiente al primer valor de índice y a la segunda información de división puede ser el modelo de contexto G2; el modelo de contexto correspondiente al segundo valor de índice y a la segunda información de división puede ser el modelo de contexto G3. El modelo de contexto correspondiente al valor de índice del modo de fusión regular (tal como el modo de fusión regular) es el modelo de contexto G4.
[0456] Si el extremo de codificación / extremo de decodificación codifica o decodifica el primer valor de índice de acuerdo con el modelo de contexto, se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto G1 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto G2 para codificar o decodificar el primer valor de índice (tal como el primer bit binario del primer valor de índice). Si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el segundo valor de índice de acuerdo con el modelo de contexto, primero se determina la información de división del sub-bloque triangular; si la información de división del sub-bloque triangular es la primera información de división, se utiliza el modelo de contexto G1 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si la información de división del sub-bloque triangular es la segunda información de división, se utiliza el modelo de contexto G3 para codificar o decodificar el segundo valor de índice (tal como el primer bit binario del segundo valor de índice); si el extremo de codificación / extremo de decodificación requiere codificar o decodificar el valor de índice del modo de fusión regular de acuerdo con el modelo de contexto, se utiliza el modelo de contexto G4 para codificar o decodificar el valor de índice del modo de fusión regular (tal como el primer bit binario del valor de índice del modo de fusión regular).
[0458] Forma de realización 17: el extremo de codificación codifica primero la información de división del sub­ bloque triangular, y a continuación codifica el primer valor de índice y el segundo valor de índice. El extremo de decodificación decodifica primero la información de división del sub-bloque triangular, y a continuación decodifica el primer valor de índice y el segundo valor de índice. Alternativamente, el extremo de codificación codifica el primer valor de índice y el segundo valor de índice, y a continuación codifica la información de división del sub-bloque triangular. El extremo de decodificación decodifica el primer valor de índice y el segundo valor de índice, y a continuación decodifica la información de división del sub-bloque triangular.
[0459] Forma de realización 18: en la etapa 305 y la etapa 405, el extremo de codificación / extremo de decodificación realiza compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener el valor de predicción del primer sub-bloque triangular, y realiza compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener el valor de predicción del segundo sub-bloque triangular. El proceso anterior es también el proceso de compensación de movimiento.
[0461] En un ejemplo, el bloque actual se puede dividir en múltiples sub-bloques. Para cada uno de los sub­ bloques, si un sub-bloque se encuentra en el primer sub-bloque triangular, se realiza compensación de movimiento en el sub-bloque basándose en la primera información de movimiento objetivo; si un sub-bloque se encuentra en el segundo sub-bloque triangular, se realiza compensación de movimiento en el sub-bloque basándose en la segunda información de movimiento objetivo; si un sub-bloque se encuentra en el primer sub-bloque triangular y en el segundo sub-bloque triangular al mismo tiempo, se realiza compensación de movimiento ponderada (también denominada compensación de predicción ponderada) en el sub-bloque basándose en la primera información de movimiento objetivo y la segunda información de movimiento objetivo.
[0463] El bloque actual se divide en un sub-bloque de primera área, un sub-bloque de segunda área y un sub­ bloque de tercera área; el sub-bloque de primera área se encuentra en el primer sub-bloque triangular, y el sub-bloque de segunda área se encuentra en el segundo sub-bloque triangular. La distancia vertical entre el centro de cada sub-bloque en el sub-bloque de tercera área y la diagonal que divide el primer sub-bloque triangular y el segundo sub-bloque triangular es menor que un umbral preestablecido; se realiza compensación de movimiento en el sub-bloque de primera área basándose en la primera información de movimiento objetivo; se realiza compensación de movimiento en el sub-bloque de segunda área basándose en la segunda información de movimiento objetivo; se realiza compensación de movimiento ponderada en el sub-bloque de tercera área basándose en la primera información de movimiento objetivo y la segunda información de movimiento objetivo. Por ejemplo, para cada sub-bloque en el sub-bloque de tercera área, se determina el primer valor de predicción del sub-bloque basándose en la primera información de movimiento objetivo; se determina el segundo valor de predicción del sub-bloque basándose en la segunda información de movimiento objetivo; la compensación ponderada se realiza en el sub-bloque basándose en un primer valor de predicción, un primer coeficiente de ponderación correspondiente al primer valor de predicción, un segundo valor de predicción y un segundo coeficiente de ponderación correspondiente al segundo valor de predicción. Por ejemplo, si el sub-bloque se encuentra en el primer sub-bloque triangular, el primer coeficiente de ponderación es mayor que el segundo coeficiente de ponderación; si el sub-bloque se encuentra en el segundo sub-bloque triangular, el primer coeficiente de ponderación es menor que el segundo coeficiente de ponderación; si el sub-bloque se encuentra en una diagonal, el primer coeficiente de ponderación es igual al segundo coeficiente de ponderación. En el que, “el sub-bloque se encuentra en una diagonal” significa que el centro del sub-bloque cae sobre la diagonal.
[0465] Con referencia a la Figura 7D, para el sub-bloque del área Z1 (es decir, el sub-bloque de primera área), el sub-bloque del área Z1 se encuentra en el primer sub-bloque triangular, y se utiliza la primera información de movimiento objetivo del primer sub-bloque triangular para realizar la compensación de movimiento en el sub-bloque del área Z1 para obtener el valor de predicción, sin que exista limitación respecto al proceso de compensación de movimiento. Para el sub-bloque del área Z2 (es decir, el sub-bloque de segunda área), el sub-bloque del área Z2 se encuentra en el segundo sub-bloque triangular, y se utiliza la segunda información de movimiento objetivo del segundo sub-bloque triangular para realizar la compensación de movimiento en el sub-bloque del área Z2 para obtener el valor de predicción, sin que exista limitación respecto al proceso de compensación de movimiento. Para los sub-bloques en áreas distintas del área Z1 y del área Z2 (es decir, el sub-bloque de la tercera área), que incluyen el sub-bloque marcado como 1 (denotado como sub-bloque 1 ), el sub-bloque marcado como 2 (denotado como sub-bloque 2 ), el sub­ bloque marcado como 3 (denotado como sub-bloque 3), el sub-bloque marcado como 4 (denotado como sub-bloque 4), el sub-bloque marcado como 5 (denotado como sub-bloque 5), el sub-bloque marcado como 6 (denotado como sub-bloque 6 ), y el sub-bloque marcado como 7 (denotado como sub-bloque 7).
[0467] Para cada sub-bloque 7 marcado como 7, el valor de predicción P1 del sub-bloque 7 se puede determinar basándose en la primera información de movimiento objetivo, y el valor de predicción P2 del sub-bloque 7 se puede determinar basándose en la segunda información de movimiento objetivo. Suponiendo que el primer coeficiente de ponderación del valor de predicción P1 es a, y que el segundo coeficiente de ponderación del valor de predicción P2 es b, entonces la compensación de movimiento ponderada se realiza en el sub-bloque 7, y el valor de predicción después de compensación de movimiento ponderada puede ser: P1*a P2*b. Dado que el sub-bloque 7 se encuentra en el primer sub-bloque triangular, el primer coeficiente de ponderación a es mayor que el segundo coeficiente de ponderación b. Suponiendo que a es 7/8 y b es 1/8, el valor de predicción después de compensación de movimiento ponderada es P1*7/8 P2*1/8.
[0469] Para cada sub-bloque 6 denotado como 6, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. Dado que el sub-bloque 6 se encuentra en el primer sub-bloque triangular, el primer coeficiente de ponderación a es mayor que el segundo coeficiente de ponderación b, y dado que el sub­ bloque 6 está más próximo al área p2 que el sub-bloque 7, por lo tanto, el primer coeficiente de ponderación a del sub-bloque 6 puede ser menor que el primer coeficiente de ponderación a del sub-bloque 7. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 6 es 6/8 y b es 2/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*6 /8 P2*2 /8.
[0471] Para cada sub-bloque 5 marcado como 5, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. El primer coeficiente de ponderación a del sub-bloque 5 es 5/8, y el segundo coeficiente de ponderación b del sub-bloque 5 es 3/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*5/8 P2*3/8.
[0473] Para cada sub-bloque 4 marcado como 4, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. Dado que el sub-bloque 4 se encuentra sobre la diagonal, el primer coeficiente de ponderación a puede ser igual al segundo coeficiente de ponderación b. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 4 es 4/8, y el segundo coeficiente de ponderación b del sub-bloque 4 es 4/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*4/8 P2*4/8.
[0475] Para cada sub-bloque 3 marcado como 3, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. El primer coeficiente de ponderación a del sub-bloque 3 es 3/8, y el segundo coeficiente de ponderación b del sub-bloque 3 es 5/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*3/8 P2*5/8.
[0477] Para cada sub-bloque 2 marcado como 2, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. Dado que el sub-bloque 2 se encuentra en el segundo sub-bloque triangular, el primer coeficiente de ponderación a puede ser menor que el segundo coeficiente de ponderación b. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 2 es 2/8, y el segundo coeficiente de ponderación b del sub-bloque 2 es 6/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*2 /8 P2*6 /8.
[0479] Para cada sub-bloque 1 marcado como 1, remítase al sub-bloque 7 para su proceso de procesamiento, que no se repetirá aquí. Dado que el sub-bloque 1 se encuentra en el segundo sub-bloque triangular, el primer coeficiente de ponderación a es menor que el segundo coeficiente de ponderación b. Dado que el sub­ bloque 1 está más próximo al área P2 que el sub-bloque 2, por lo tanto, el primer coeficiente de ponderación a del sub-bloque 1 puede ser menor que el primer coeficiente de ponderación a del sub-bloque 2. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 1 es 1/8 y b es 7/8, entonces el valor de predicción después de compensación de movimiento ponderada es P1*1/8 P2*7/8.
[0481] En resumen, esta forma de realización propone un conjunto de coeficientes de ponderación para el componente de luminancia (luma). En la dirección desde el área Z1 hacia el área Z2, el primer coeficiente de ponderación a de cada sub-bloque es {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8}. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 7 es 7/8, el primer coeficiente de ponderación a del sub-bloque 6 es 6/8, el primer coeficiente de ponderación a del sub-bloque 5 es 5/8, el primer coeficiente de ponderación a del sub-bloque 4 es 4/8, el primer coeficiente de ponderación a del sub-bloque 3 es 3/8, el primer coeficiente de ponderación a del sub-bloque 2 es 2/8, y el primer coeficiente de ponderación a del sub-bloque 1 es 1/8. El componente de luminancia anterior significa que el valor de predicción P1 es un valor de predicción de luminancia, el valor de predicción P2 es un valor de predicción de luminancia, y el valor de predicción después de la compensación ponderada P1*a P2*b es también un valor de predicción de luminancia.
[0482] Según se muestra en la Figura 7D, esta forma de realización propone un conjunto de coeficientes de ponderación para el componente de crominancia (chroma). En la dirección desde el área Z1 hacia el área Z2, el primer coeficiente de ponderación a de cada sub-bloque es {6/8, 4/8, 2/8}. Por ejemplo, el primer coeficiente de ponderación a del sub-bloque 6 es 6/8, el primer coeficiente de ponderación a del sub-bloque 4 es 4/8, y el primer coeficiente de ponderación a del sub-bloque 2 es 2/8. El componente de crominancia anterior significa que el valor de predicción P1 es un valor de predicción de crominancia, el valor de predicción P2 es un valor de predicción de crominancia, y el valor de predicción después de la compensación ponderada es también un valor de predicción de crominancia.
[0484] Forma de realización 19: en la etapa 306 y la etapa 406, el extremo de codificación / extremo de decodificación almacena la información de movimiento del bloque actual. Se almacena la primera información de movimiento objetivo para el sub-bloque en el primer sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacena la segunda información de movimiento objetivo para el sub-bloque en el segundo sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional se almacenan para el sub-bloque, en el que se realiza compensación de predicción ponderada.
[0486] Según se muestra en la Figura 7E, suponiendo que el bloque 2, el bloque 3, el bloque 4, el bloque 7, el bloque 8 y el bloque 12 son sub-bloques en el primer sub-bloque triangular, en los cuales se realiza compensación de predicción no ponderada, entonces se puede almacenar la primera información de movimiento objetivo (es decir, la primera información de movimiento objetivo del primer sub-bloque triangular) para el bloque 2, el bloque 3, el bloque 4, el bloque 7, el bloque 8 y el bloque 12. Suponiendo que el bloque 5, el bloque 9, el bloque 10, el bloque 13, el bloque 14 y el bloque 15 son sub-bloques en el segundo sub-bloque triangular, en los cuales se realiza compensación de predicción no ponderada, entonces se puede almacenar la segunda información de movimiento objetivo (es decir, la segunda información de movimiento objetivo del segundo sub-bloque triangular) para el bloque 5, el bloque 9, el bloque 10, el bloque 13, el bloque 14 y el bloque 15. Suponiendo que el bloque 1, el bloque 6 , el bloque 11 y el bloque 16 son sub-bloques en los cuales se realiza compensación de predicción ponderada, entonces se pueden almacenar la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional para el bloque 1, el bloque 6 , el bloque 11 y el bloque 16; el método específico de almacenamiento puede remitirse a las formas de realización posteriores.
[0487] Según se muestra en la Figura 7F, suponiendo que el bloque 1, el bloque 2, el bloque 3, el bloque 5, el bloque 6 y el bloque 9 son sub-bloques en el primer sub-bloque triangular, en los cuales se realiza compensación de predicción no ponderada, entonces se puede almacenar la primera información de movimiento objetivo (es decir, la primera información de movimiento objetivo del primer sub-bloque triangular) para el bloque 1, el bloque 2, el bloque 3, el bloque 5, el bloque 6 y el bloque 9. Suponiendo que el bloque 8 , el bloque 11, el bloque 12, el bloque 14, el bloque 15 y el bloque 16 son sub-bloques en el segundo sub-bloque triangular, en los cuales se realiza compensación de predicción no ponderada, entonces se puede almacenar la segunda información de movimiento objetivo (es decir, la segunda información de movimiento objetivo del segundo sub-bloque triangular) para el bloque 8 , el bloque 11, el bloque 12, el bloque 14, el bloque 15 y el bloque 16. Suponiendo que el bloque 4, el bloque 7, el bloque 10 y el bloque 13 son sub-bloques en los cuales se realiza compensación de predicción ponderada, entonces se pueden almacenar la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento bidireccional para el bloque 4, el bloque 7, el bloque 10 y el bloque 13; el método específico de almacenamiento puede remitirse a las formas de realización posteriores.
[0488] En un ejemplo, se puede almacenar la información de movimiento para cada sub-bloque con un tamaño de 4*4. Por supuesto, el tamaño del sub-bloque no está limitado.
[0490] Forma de realización 20: se almacena la primera información de movimiento objetivo para el sub-bloque en el primer sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacena la segunda información de movimiento objetivo para el sub-bloque en el segundo sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada.
[0492] Escenario de aplicación 1: almacenar directamente la primera información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada.
[0494] Escenario de aplicación 2: almacenar directamente la segunda información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada.
[0496] Escenario de aplicación 3: almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada, de acuerdo con la dirección de división del bloque actual (tal como la dirección de la diagonal principal o la dirección de la sub-diagonal).
[0498] En un ejemplo, si la dirección de división del bloque actual es la dirección de la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha), se almacena la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha), se almacena la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división del bloque actual es la dirección de la sub-diagonal (ángulo incluido de 135 grados respecto a la dirección horizontal derecha), se almacena la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal (ángulo incluido de 45 grados respecto a la dirección horizontal derecha), se almacena la primera información de movimiento objetivo para el sub­ bloque.
[0500] Escenario de aplicación 4: almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada, de acuerdo con la posición del sub-bloque (tal como el sub-bloque sobre la diagonal, por encima de la diagonal, por debajo de la diagonal, etc.).
[0502] En un ejemplo, si el sub-bloque se encuentra sobre la diagonal o por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por encima de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por debajo de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por debajo de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por encima de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0504] Escenario de aplicación 5: se pueden almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque, en el que se realiza compensación de predicción ponderada, de acuerdo con la posición del sub-bloque (por ejemplo, el sub-bloque sobre la diagonal, por encima de la diagonal, por debajo de la diagonal, etc.) y la dirección de división del bloque actual (por ejemplo, la dirección de la diagonal principal o la dirección de la sub-diagonal).
[0506] En un ejemplo, si el sub-bloque se encuentra sobre una diagonal, se pueden almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque basándose en la dirección de división del bloque actual. Por ejemplo, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se almacena la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se almacena la primera información de movimiento objetivo para el sub-bloque.
[0508] En un ejemplo, si el sub-bloque se encuentra por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque.
[0510] En un ejemplo, si el sub-bloque se encuentra por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0512] Forma de realización 21: se almacena la primera información de movimiento objetivo para el sub-bloque en el primer sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacena la segunda información de movimiento objetivo para el sub-bloque en el segundo sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; se almacenan la primera información de movimiento objetivo, la segunda información de movimiento objetivo o la información de movimiento unidireccional (la información de movimiento unidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque, en el que se realiza compensación de predicción ponderada.
[0514] Escenario de aplicación 1: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la primera información de movimiento objetivo para el sub-bloque.
[0515] Escenario de aplicación 2: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0516] Escenario de aplicación 3: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual (tal como la dirección de la diagonal principal o la dirección de la sub-diagonal).
[0518] En un ejemplo, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque.
[0520] Escenario de aplicación 4: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque (tal como sub-bloque sobre la diagonal, por encima de la diagonal, por debajo de la diagonal, etc.).
[0522] En un ejemplo, si el sub-bloque se encuentra sobre la diagonal o por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por encima de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por debajo de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. O, si el sub-bloque se encuentra sobre la diagonal o por debajo de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque; si el sub-bloque se encuentra por encima de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0524] Escenario de aplicación 5: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque (por ejemplo, el sub-bloque sobre la diagonal, por encima de la diagonal, por debajo de la diagonal, etc.) y la dirección de división del bloque actual (por ejemplo, la dirección de la diagonal principal o la dirección de la sub-diagonal).
[0526] En un ejemplo, si el sub-bloque se encuentra sobre una diagonal, se pueden almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque basándose en la dirección de división del bloque actual. Por ejemplo, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se almacena la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se almacena la primera información de movimiento objetivo para el sub-bloque.
[0528] En un ejemplo, si el sub-bloque se encuentra por encima de la diagonal, se almacena la primera información de movimiento objetivo para el sub-bloque.
[0530] En un ejemplo, si el sub-bloque se encuentra por debajo de la diagonal, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0532] Escenario de aplicación 6 : para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional (es decir, información de movimiento bidireccional compuesta por la primera información de movimiento objetivo y la segunda información de movimiento objetivo) para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se almacena un valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo para el sub-bloque, o se almacena la segunda información de movimiento objetivo para el sub-bloque. Por ejemplo, si el frame de referencia de la lista correspondiente a la primera información de movimiento objetivo es el mismo que el frame de referencia de la lista correspondiente a la segunda información de movimiento objetivo, se almacena el valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo para el sub­ bloque.
[0534] En un ejemplo, el valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo puede incluir: un valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo, por ejemplo, el valor promedio de un vector de movimiento en la primera información de movimiento objetivo y un vector de movimiento en la segunda información de movimiento objetivo; en otras palabras, los pesos de ambos pueden ser iguales. O, un valor promedio ponderado de la primera información de movimiento objetivo y la segunda información de movimiento objetivo, por ejemplo, un valor promedio ponderado de la primera información de movimiento objetivo y la segunda información de movimiento objetivo; en otras palabras, los pesos de ambas pueden ser diferentes entre sí.
[0536] En un ejemplo, si el frame de referencia de la lista correspondiente a la primera información de movimiento objetivo es el mismo que el frame de referencia de la lista correspondiente a la segunda información de movimiento objetivo, se almacena el valor promedio de la primera información de movimiento objetivo y la segunda información de movimiento objetivo para el sub-bloque. Si el frame de referencia de la lista correspondiente a la primera información de movimiento objetivo es diferente del frame de referencia de la lista correspondiente a la segunda información de movimiento objetivo, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual (tal como la dirección de la diagonal principal o la dirección de la sub-diagonal).
[0538] Por ejemplo, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división del bloque actual es la dirección de la sub-diagonal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división del bloque actual es la dirección de la diagonal principal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque.
[0540] Escenario de aplicación 7: para el sub-bloque, en el que se realiza compensación de predicción ponderada, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional para el sub-bloque. Si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, se pueden almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la información de tamaño del bloque actual.
[0542] En un ejemplo, si el valor de anchura y el valor de altura del bloque actual son iguales, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub­ bloque de acuerdo con la dirección de división del bloque actual. Por ejemplo, si la dirección de división es la dirección de la sub-diagonal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque. Si la dirección de división es la dirección de la diagonal principal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. O, si la dirección de división es la dirección de la sub-diagonal, se puede almacenar la segunda información de movimiento objetivo para el sub-bloque. Si la dirección de división es la dirección de la diagonal principal, se puede almacenar la primera información de movimiento objetivo para el sub-bloque.
[0544] En un ejemplo, si el valor de anchura y el valor de altura del bloque actual no son iguales, se almacena la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub­ bloque basándose en una relación anchura-altura. Por ejemplo, si el valor de altura del bloque actual es mayor que el valor de anchura del bloque actual, se almacena la primera información de movimiento objetivo para el sub-bloque; si el valor de altura del bloque actual es menor que el valor de anchura del bloque actual, se almacena la segunda información de movimiento objetivo para el sub-bloque.
[0546] Escenario de aplicación 8 : para el sub-bloque, en el que se realiza compensación de predicción ponderada, se puede almacenar información de movimiento bidireccional, derivándose la información de movimiento bidireccional según las siguientes reglas: si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo se fusionan directamente en información de movimiento bidireccional, y se almacena la información de movimiento bidireccional para el sub-bloque. En caso contrario, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan ambas de una lista, denominada ListaX (X=0/1), entonces:
[0547] si el frame de referencia de la segunda información de movimiento objetivo es el mismo que un determinado frame de referencia de Lista(l-X), se escala la segunda información de movimiento objetivo a dicho frame de referencia, y la primera información de movimiento objetivo y la segunda información de movimiento objetivo escalada se combinan en la información de movimiento bidireccional;
[0548] si el frame de referencia de la primera información de movimiento objetivo es el mismo que un determinado frame de referencia de Lista(l-X), se escala la primera información de movimiento objetivo a dicho frame de referencia, y la segunda información de movimiento objetivo y la primera información de movimiento objetivo escalada se combinan en la información de movimiento bidireccional;
[0549] en caso contrario, estos sub-bloques que utilizan compensación de predicción ponderada almacenan únicamente la primera información de movimiento objetivo.
[0551] Basándose en el mismo concepto inventivo que el método anterior, una forma de realización de la presente solicitud también propone un dispositivo de codificación y decodificación, que se aplica a un extremo de codificación o a un extremo de decodificación. La Figura 8 es un diagrama estructural del aparato, y el aparato puede comprender:
[0552] un módulo de división 81, configurado para dividir, si información característica de un bloque actual cumple condiciones específicas, el bloque actual en un primer sub-bloque triangular y un segundo sub­ bloque triangular;
[0553] un módulo de construcción 82, configurado para construir una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata;
[0554] un módulo de adquisición 83, configurado para adquirir, de la lista de información de movimiento, la primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular, en el que la primera información de movimiento objetivo es diferente de la segunda información de movimiento objetivo; y
[0555] un módulo de codificación y decodificación 84, configurado para realizar compensación de movimiento en un primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; y realizar compensación de movimiento en un segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular.
[0557] En un ejemplo, la información característica incluye uno o más de los siguientes elementos: un modo de información de movimiento, información de tamaño, un tipo de porción (slice type) e información de control de conmutación a nivel de secuencia.
[0559] El módulo de división 81 está configurado además para determinar, si la información característica incluye el modo de información de movimiento y el modo de información de movimiento cumple al menos una de las siguientes condiciones, que el modo de información de movimiento cumple condiciones específicas; el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip; el modo de información de movimiento del bloque actual es un modo de fusión o un modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los otros tipos de sub-modos de fusión o sub-modos skip excepto el sub-modo de predicción triangular;
[0560] el modo de información de movimiento del bloque actual es un modo de fusión, y el modo de información de movimiento del bloque actual no es ninguno de los sub-modos siguientes: sub-modo de fusión regular, sub-modo MMVD, sub-modo de fusión SB o sub-modo CIIP;
[0561] el modo de información de movimiento del bloque actual es un modo skip, y el modo de información de movimiento del bloque actual no es ninguno de los sub-modos siguientes: sub-modo de fusión regular, sub­ modo MMVD o sub-modo de fusión SB.
[0563] El módulo de división 81 está configurado además para determinar, si la información característica incluye el tipo de porción (slice type) y el tipo de porción cumple al menos una de las siguientes condiciones, que el tipo de porción cumple condiciones específicas;
[0564] el tipo de porción indica que la porción actual en la que se encuentra el bloque actual es una porción B; el tipo de porción indica que la porción actual en la que se encuentra el bloque actual permite copia intra bloque.
[0566] El módulo de división 81 está configurado además para determinar, si la información característica comprende la información de control de conmutación a nivel de secuencia, y la información de control de conmutación a nivel de secuencia permite que el bloque actual utilice un modo de partición geométrica con partición triangular, que la información de control de conmutación a nivel de secuencia cumple condiciones específicas.
[0568] El módulo de división 81 está configurado además para determinar, si la información característica comprende la información de tamaño, y la información de tamaño cumple al menos una de las siguientes condiciones, que la información de tamaño cumple condiciones específicas;
[0569] un valor de anchura del bloque actual es mayor que o igual a un primer umbral, y es menor que o igual a un segundo umbral;
[0570] un valor de altura del bloque actual es mayor que o igual a un tercer umbral, y es menor que o igual a un cuarto umbral;
[0571] un valor de área del bloque actual es mayor que o igual a un quinto umbral, y es menor que o igual a un sexto umbral;
[0572] el valor de área del bloque actual es mayor que o igual a un séptimo umbral;
[0573] el valor de área del bloque actual es menor que o igual a un octavo umbral;
[0574] el valor de anchura del bloque actual es menor que o igual a un noveno umbral, y el valor de altura del bloque actual es menor que o igual a un décimo umbral.
[0576] Cuando el método de codificación y decodificación se aplica a un extremo de decodificación, para dividir el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular, el módulo de división 81 está configurado además para: adquirir, de un flujo de bits codificado, primera información de indicación, en el que la primera información de indicación se utiliza para indicar información de división de un sub­ bloque triangular; dividir, si la información de división del sub-bloque triangular es un modo de división por diagonal principal, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con la diagonal principal del bloque actual; y dividir, si la información de división del sub-bloque triangular es un modo de división por sub-diagonal, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con la sub-diagonal del bloque actual.
[0578] En un ejemplo, la primera información de indicación se obtiene mediante decodificación aritmética binaria basada en bypass; o, la primera información de indicación se obtiene mediante decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0580] Para construir una lista de información de movimiento para el bloque actual, el módulo de construcción 82 está específicamente configurado para: construir una lista de información de movimiento para el bloque actual utilizando un modo de construcción de una lista de información de movimiento en un modo de fusión regular.
[0582] Cuando el método de codificación y decodificación se aplica a un extremo de decodificación, para adquirir, de la lista de información de movimiento, la primera información de movimiento objetivo del primer sub­ bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular, el módulo de adquisición 83 está específicamente configurado para:
[0583] adquirir, de un flujo de bits codificado, segunda información de indicación, en el que la segunda información de indicación se utiliza para indicar un primer valor de índice de la primera información de movimiento objetivo en la lista de información de movimiento y un segundo valor de índice de la segunda información de movimiento objetivo en la lista de información de movimiento;
[0584] adquirir, de la lista de información de movimiento, basándose en la segunda información de indicación, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular; y
[0585] adquirir, de la lista de información de movimiento, basándose en la segunda información de indicación, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0586] El primer valor de índice se obtiene mediante decodificación aritmética binaria basada en bypass; o, el primer valor de índice se obtiene mediante decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto; el segundo valor de índice se obtiene mediante decodificación aritmética binaria basada en bypass; o, el segundo valor de índice se obtiene mediante decodificación aritmética binaria adaptativa basada en contexto que se realiza basándose en un modelo de contexto.
[0588] El primer valor de índice incluye M1 bits binarios, en el que N1 bits binarios de los M1 bits binarios se obtienen mediante decodificación aritmética binaria adaptativa basada en contexto, y los (M1-N1) bits binarios restantes de los M1 bits binarios se obtienen mediante decodificación aritmética binaria basada en bypass; y en el que M1 es un número entero positivo mayor que o igual a 1, N1 es un número entero positivo mayor que o igual a 1, y M1 es mayor que o igual a N1.
[0590] El segundo valor de índice incluye M2 bits binarios, en el que N2 bits binarios de los M2 bits binarios se obtienen mediante decodificación aritmética binaria adaptativa basada en contexto, y los (M2-N2) bits binarios restantes de los M2 bits binarios se obtienen mediante decodificación aritmética binaria basada en bypass; y en el que M2 es un número entero positivo mayor que o igual a 1, N2 es un número entero positivo mayor que o igual a 1, y M2 es mayor que o igual a N1.
[0592] El modelo de contexto correspondiente al primer valor de índice es el mismo que el modelo de contexto correspondiente al segundo valor de índice; o, el modelo de contexto correspondiente al primer valor de índice es diferente de un modelo de contexto correspondiente al segundo valor de índice.
[0594] Para adquirir, de la lista de información de movimiento, basándose en la segunda información de indicación, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular, el módulo de adquisición 83 está específicamente configurado para:
[0595] determinar, si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a listaO como la primera información de movimiento objetivo del primer sub-bloque triangular;
[0596] determinar, si el primer valor de índice es un número par y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular;
[0597] determinar, si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice incluye información de movimiento unidireccional correspondiente a lista1 , la información de movimiento unidireccional correspondiente a lista1 como la primera información de movimiento objetivo del primer sub-bloque triangular;
[0598] determinar, si el primer valor de índice es un número impar y la información de movimiento candidata correspondiente al primer valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a listaO como la primera información de movimiento objetivo del primer sub-bloque triangular;
[0599] adquirir, de la lista de información de movimiento, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular incluye:
[0600] determinar, si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a listaO como la segunda información de movimiento objetivo del segundo sub-bloque triangular;
[0601] determinar, si el segundo valor de índice es un número par y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a listaO, la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular;
[0602] determinar, si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice incluye información de movimiento unidireccional correspondiente a lista1 , la información de movimiento unidireccional correspondiente a lista1 como la segunda información de movimiento objetivo del segundo sub-bloque triangular;
[0603] determinar, si el segundo valor de índice es un número impar y la información de movimiento candidata correspondiente al segundo valor de índice no incluye información de movimiento unidireccional correspondiente a lista1, la información de movimiento unidireccional correspondiente a listaO como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0605] El módulo de adquisición 83 está configurado además para: adquirir un primer conjunto de candidatas y un segundo conjunto de candidatas, en el que el primer conjunto de candidatas incluye partes de información de movimiento candidata en la lista de información de movimiento, el segundo conjunto de candidatas incluye partes de información de movimiento candidata en la lista de información de movimiento, y la información de movimiento candidata en el primer conjunto de candidatas no es exactamente la misma que la información de movimiento candidata en el segundo conjunto de candidatas; adquirir, del primer conjunto de candidatas, información de movimiento candidata correspondiente al primer valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al primer valor de índice como la primera información de movimiento objetivo del primer sub-bloque triangular; y adquirir, del segundo conjunto de candidatas, información de movimiento candidata correspondiente al segundo valor de índice, y determinar la información de movimiento candidata adquirida correspondiente al segundo valor de índice como la segunda información de movimiento objetivo del segundo sub-bloque triangular.
[0607] El aparato comprende además: un módulo de almacenamiento, configurado para almacenar primera información de movimiento objetivo para un sub-bloque en el primer sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; almacenar segunda información de movimiento objetivo para un sub-bloque en el segundo sub-bloque triangular, en el que se realiza compensación de predicción no ponderada; almacenar primera información de movimiento objetivo, segunda información de movimiento objetivo o información de movimiento bidireccional para un sub-bloque, en el que se realiza compensación de predicción ponderada.
[0609] Para almacenar primera información de movimiento objetivo, segunda información de movimiento objetivo o información de movimiento bidireccional para un sub-bloque, en el que se realiza compensación de predicción ponderada, el módulo de almacenamiento está específicamente configurado para: almacenar primera información de movimiento objetivo para el sub-bloque; o
[0610] almacenar segunda información de movimiento objetivo para el sub-bloque; o
[0611] almacenar primera información de movimiento objetivo o segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque; o
[0612] almacenar primera información de movimiento objetivo o segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual; o
[0613] almacenar primera información de movimiento objetivo o segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque y la dirección de división del bloque actual.
[0614] Para almacenar primera información de movimiento objetivo, segunda información de movimiento objetivo o información de movimiento bidireccional para un sub-bloque, en el que se realiza compensación de predicción ponderada, el módulo de almacenamiento está específicamente configurado para: fusionar, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo en información de movimiento bidireccional, y almacenar la información de movimiento bidireccional para el sub-bloque;
[0615] almacenar, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque.
[0617] Para almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque, el módulo de almacenamiento está específicamente configurado para: almacenar la primera información de movimiento objetivo para el sub-bloque; o
[0618] almacenar la segunda información de movimiento objetivo para el sub-bloque; o
[0619] almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque; o
[0620] almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la dirección de división del bloque actual; o
[0621] almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque de acuerdo con la posición del sub-bloque y la dirección de división del bloque actual; o
[0622] almacenar la primera información de movimiento objetivo y la segunda información de movimiento objetivo para el sub-bloque; o
[0623] almacenar la primera información de movimiento objetivo o la segunda información de movimiento objetivo para el sub-bloque basándose en la información de tamaño del bloque actual.
[0625] Desde el nivel de hardware del dispositivo de decodificación proporcionado por la forma de realización de la presente solicitud, el diagrama esquemático de su arquitectura de hardware se puede remitir específicamente al que se muestra en la Figura 9A. Comprende: un procesador 91 y un medio de almacenamiento legible por ordenador 92, en el que: el medio de almacenamiento legible por ordenador 92 almacena instrucciones ejecutables por ordenador que pueden ser ejecutadas por el procesador 91; el procesador 91 se utiliza para ejecutar las instrucciones ejecutables por ordenador para implementar el método divulgado en los ejemplos anteriores de la presente solicitud. Por ejemplo, el procesador 91 está configurado para ejecutar las instrucciones ejecutables por ordenador para implementar las etapas siguientes: dividir, si información característica de un bloque actual cumple condiciones específicas, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular; construir una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata; adquirir, de la lista de información de movimiento, la primera información de movimiento objetivo del primer sub-bloque triangular y la segunda información de movimiento objetivo del segundo sub-bloque triangular, en el que la primera información de movimiento objetivo es diferente de la segunda información de movimiento objetivo; realizar compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; y realizar compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular.
[0627] Desde el nivel de hardware del dispositivo de codificación proporcionado por la forma de realización de la presente solicitud, el diagrama esquemático de su arquitectura de hardware se puede remitir específicamente al que se muestra en la Figura 9B. Comprende: un procesador 93 y un medio de almacenamiento legible por ordenador 94, en el que: el medio de almacenamiento legible por ordenador 94 almacena instrucciones ejecutables por ordenador que pueden ser ejecutadas por el procesador 93; el procesador 93 se utiliza para ejecutar las instrucciones ejecutables por ordenador para implementar el método divulgado en los ejemplos anteriores de la presente solicitud. Por ejemplo, el procesador 93 está configurado para ejecutar las instrucciones ejecutables por ordenador para implementar las etapas siguientes: dividir, si información característica de un bloque actual cumple condiciones específicas, el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular; construir una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata; adquirir, de la lista de información de movimiento, primera información de movimiento objetivo del primer sub-bloque triangular y segunda información de movimiento objetivo del segundo sub-bloque triangular, en el que la primera información de movimiento objetivo es diferente de la segunda información de movimiento objetivo; realizar compensación de movimiento en el primer sub-bloque triangular basándose en la primera información de movimiento objetivo para obtener un valor de predicción del primer sub-bloque triangular; y realizar compensación de movimiento en el segundo sub-bloque triangular basándose en la segunda información de movimiento objetivo para obtener un valor de predicción del segundo sub-bloque triangular.
[0629] Basándose en el mismo concepto de aplicación que el método anterior, una forma de realización de la presente solicitud también proporciona un medio de almacenamiento legible por ordenador, en el que se almacenan varias instrucciones informáticas en el medio de almacenamiento legible por ordenador. Las instrucciones informáticas pueden implementar el método de codificación y decodificación divulgado en los ejemplos anteriores cuando son ejecutadas por el procesador. En el que el medio de almacenamiento legible por ordenador puede ser cualquier sistema de almacenamiento electrónico, magnético, óptico u otro sistema físico que pueda contener o almacenar información, tal como instrucciones ejecutables, datos y similares. Por ejemplo, el medio de almacenamiento legible por ordenador puede ser: memoria RAM (Random Access Memory), memoria volátil, memoria no volátil, memoria flash, una unidad de almacenamiento (tal como un disco duro), disco de estado sólido, cualquier tipo de disco de almacenamiento (tal como un CD, DVD, etc.), o un medio de almacenamiento similar, o una combinación de los anteriores.
[0631] El sistema, dispositivo, módulo o unidad descritos en las formas de realización anteriores se pueden implementar mediante un chip o entidad informática, o mediante un producto con una determinada función. Un dispositivo de implementación típico es un ordenador. La forma específica de ordenador puede ser un ordenador personal, un ordenador portátil, un teléfono móvil, un teléfono con cámara, un teléfono inteligente, un asistente digital personal, un reproductor multimedia, un dispositivo de navegación, un transmisor de correo electrónico, una tableta, un dispositivo portátil (wearable) o cualquier combinación de estos dispositivos.
[0633] Para facilitar la descripción, los dispositivos anteriores se dividen en varias unidades según sus funciones. Por supuesto, las funciones de cada unidad se pueden realizar en uno o más componentes de software y/o hardware al implementar la presente solicitud. Los expertos en la materia apreciarán que las formas de realización de la presente solicitud se pueden proporcionar en forma de un método, un sistema o un producto de programa informático. Por lo tanto, la presente solicitud puede adoptar la forma de una forma de realización totalmente de hardware, una forma de realización totalmente de software o una forma de realización en combinación de software y hardware. Además, la forma de realización de la presente solicitud puede adoptar la forma de un producto de programa informático implementado en uno o más medios de almacenamiento utilizables por ordenador (que incluyen, pero no se limitan a, almacenamiento en disco, CD-ROM, almacenamiento óptico, etc.), que incluyen código de programa utilizable por ordenador.
[0635] La presente solicitud se describe con referencia a un diagrama de flujo y/o un diagrama de bloques de un método, dispositivo (sistema) y producto de programa informático de acuerdo con una forma de realización de la presente solicitud. Se debe entender que cada flujo y/o bloque en un diagrama de flujo y/o en un diagrama de bloques, así como la combinación de los flujos y/o bloques en un diagrama de flujo y/o en un diagrama de bloques, se pueden implementar mediante instrucciones de programa informático. Estas instrucciones de programa informático se pueden proporcionar a un procesador de un ordenador de propósito general, un ordenador dedicado, un procesador embebido u otro dispositivo programable de procesamiento de datos para generar una máquina tal que las instrucciones ejecutadas por un procesador de un ordenador u otro dispositivo programable de procesamiento de datos generen un aparato que implemente las funciones especificadas en uno o varios procesos en el diagrama de flujo y/o en uno o varios bloques en el diagrama de bloques.
[0637] Estas instrucciones de programa informático también pueden cargarse en un ordenador u otro dispositivo programable de procesamiento de datos de tal manera que se ejecuten una serie de etapas de operación en el ordenador u otro dispositivo programable para producir un proceso implementado por ordenador, de modo que las instrucciones ejecutadas en el ordenador u otro dispositivo programable proporcionen etapas para implementar las funciones especificadas en uno o varios procesos en el diagrama de flujo y/o en uno o varios bloques en el diagrama de bloques.

Claims (11)

1. Reivindicaciones
1. Un método de decodificación de vídeo, caracterizado porque comprende:
detectar (401) una condición específica mediante la cual un bloque actual se divide en un primer sub­ bloque triangular y un segundo sub-bloque triangular;
recibir el bloque actual codificado;
construir (402) una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata;
dividir (403) el bloque actual en un primer sub-bloque triangular y un segundo sub-bloque triangular de acuerdo con una línea de partición, en el que el primer sub-bloque triangular está situado por encima de la línea de partición y el segundo sub-bloque triangular está situado por debajo de la línea de partición; adquirir (404), de la lista de información de movimiento, primera información de movimiento objetivo y segunda información de movimiento objetivo; en el que la primera información de movimiento objetivo es información de movimiento objetivo del primer sub-bloque triangular, y la segunda información de movimiento objetivo es información de movimiento objetivo del segundo sub-bloque triangular, siendo la primera información de movimiento objetivo diferente de la segunda información de movimiento objetivo; determinar una primera área, una segunda área y una tercera área incluidas en el bloque actual basándose en el primer sub-bloque triangular y el segundo sub-bloque triangular divididos de acuerdo con la línea de partición, en el que la primera área está situada en el primer sub-bloque triangular, la segunda área está situada en el segundo sub-bloque triangular, la línea de partición está situada en la tercera área, y existe un área de solapamiento entre la tercera área y el primer sub-bloque triangular y un área de solapamiento entre la tercera área y el segundo sub-bloque triangular; y
realizar (405) compensación de movimiento en el primer sub-bloque triangular de acuerdo con la primera información de movimiento objetivo para obtener valores de píxel predichos del primer sub-bloque triangular;
realizar (405) compensación de movimiento en el segundo sub-bloque triangular de acuerdo con la segunda información de movimiento objetivo para obtener valores de píxel predichos del segundo sub­ bloque triangular;
realizar un proceso de ponderación para obtener el valor predicho del bloque actual basándose en la primera área, la segunda área y la tercera área;
decodificar dicho bloque actual codificado basándose en dicho valor predicho del bloque actual; en el que el método comprende además:
almacenar (406) la primera información de movimiento objetivo para un sub-bloque en la primera área; almacenar (406) la segunda información de movimiento objetivo para un sub-bloque en la segunda área; almacenar (406) la segunda información de movimiento objetivo o información de movimiento bidireccional para un sub-bloque en la tercera área, comprendiendo:
fusionar, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de listas diferentes, la primera información de movimiento objetivo y la segunda información de movimiento objetivo en información de movimiento bidireccional, y almacenar la información de movimiento bidireccional para el sub-bloque;
almacenar, si la primera información de movimiento objetivo y la segunda información de movimiento objetivo se derivan de la misma lista, la segunda información de movimiento objetivo para el sub-bloque.
2. El método según la reivindicación 1, en el que la información de movimiento se almacena en una unidad de un bloque de 4*4, o en el que los dos sub-bloques triangulares son dos sub-bloques triangulares divididos a partir del bloque actual de acuerdo con un método de partición indicado por información de indicación.
3. El método según la reivindicación 1, en el que, después de determinar una primera área, una segunda área y una tercera área incluidas en un bloque actual basándose en el primer sub-bloque triangular y el segundo sub-bloque triangular divididos de acuerdo con la línea de partición, el método comprende además: realizar compensación de movimiento en cada sub-bloque en la primera área basándose en la primera información de movimiento objetivo, para obtener un valor de predicción de cada sub-bloque en la primera área;
realizar compensación de movimiento en cada sub-bloque en la segunda área basándose en la segunda información de movimiento objetivo, para obtener un valor de predicción de cada sub-bloque en la segunda área;
realizar compensación de movimiento ponderada en cada sub-bloque en la tercera área basándose en la primera información de movimiento objetivo y la segunda información de movimiento objetivo, para obtener un valor de predicción de cada sub-bloque en la tercera área;
determinar un valor de predicción del bloque actual basándose en el valor de predicción de cada sub­ bloque en la primera área, el valor de predicción de cada sub-bloque en la segunda área, y el valor de predicción de cada sub-bloque en la tercera área;
en el que, realizar compensación de movimiento ponderada en cada sub-bloque en la tercera área basándose en la primera información de movimiento objetivo y la segunda información de movimiento objetivo, para obtener un valor de predicción de cada sub-bloque en la tercera área comprende:
para cada sub-bloque en la tercera área, determinar un primer valor de predicción del sub-bloque basándose en la primera información de movimiento objetivo, y determinar un segundo valor de predicción
del sub-bloque basándose en la segunda información de movimiento objetivo;
realizar compensación de movimiento ponderada en el sub-bloque basándose en el primer valor de predicción, un primer coeficiente de ponderación correspondiente al primer valor de predicción, el segundo valor de predicción, y un segundo coeficiente de ponderación correspondiente al segundo valor de predicción, para obtener el valor de predicción del sub-bloque.
4. El método según la reivindicación 3, en el que:
si el sub-bloque en la tercera área se encuentra en el primer sub-bloque triangular, el primer coeficiente de ponderación correspondiente al primer valor de predicción del sub-bloque es mayor que el segundo coeficiente de ponderación correspondiente al segundo valor de predicción del sub-bloque;
si el sub-bloque en la tercera área se encuentra en el segundo sub-bloque triangular, el primer coeficiente de ponderación correspondiente al primer valor de predicción del sub-bloque es menor que el segundo coeficiente de ponderación correspondiente al segundo valor de predicción del sub-bloque;
si el sub-bloque en la tercera área se extiende a ambos lados de la línea de partición, el primer coeficiente de ponderación correspondiente al primer valor de predicción del sub-bloque es igual al segundo coeficiente de ponderación correspondiente al segundo valor de predicción del sub-bloque.
5. El método según la reivindicación 1, en el que adquirir (404) la primera información de movimiento objetivo y la segunda información de movimiento objetivo comprende:
construir (402) una lista de información de movimiento para el bloque actual, en el que la lista de información de movimiento incluye múltiples piezas de información de movimiento candidata; seleccionar, de la lista de información de movimiento, una pieza de información de movimiento candidata correspondiente al primer valor de índice basándose en un primer valor de índice indicado por información de indicación, y determinar la información de movimiento candidata como la primera información de movimiento objetivo;
seleccionar, de la lista de información de movimiento, otra pieza de información de movimiento candidata correspondiente al segundo valor de índice basándose en un segundo valor de índice indicado por información de indicación, y determinar dicha información de movimiento candidata como la segunda información de movimiento objetivo.
6. El método según la reivindicación 1, en el que las etapas de la reivindicación 1 se realizan cuando un modo de información de movimiento del bloque actual, información de tamaño del bloque actual, un tipo de porción de una porción actual e información de control de conmutación a nivel de secuencia del bloque actual cumplen condiciones específicas; en el que el modo de información de movimiento del bloque actual que cumple la condición específica comprende que el modo de información de movimiento del bloque actual es un modo de fusión, y el modo de información de movimiento del bloque actual no es un modo de fusión regular, un modo de fusión basado en sub-bloques o un modo combinado de fusión entre imágenes y predicción intra imagen; y en el que el tipo de porción de la porción actual que cumple la condición específica comprende que la porción actual en la que se encuentra el bloque actual es una porción B.
7. El método según la reivindicación 3, en el que, si el primer valor de predicción es P1, el segundo valor de predicción es P2, el primer coeficiente de ponderación es a, y el segundo coeficiente de ponderación es b, entonces un valor de predicción después de compensación de movimiento ponderada del sub-bloque es P1*a P2*b; un conjunto de valores del primer coeficiente de ponderación es {7/8, 6 /8 , 5/8, 4/8, 3/8, 2/8, 1/8 }, y una suma del primer coeficiente de ponderación y el segundo coeficiente de ponderación es 1 ; en el que, cada sub-bloque en la tercera área comprende un componente de luminancia, y el conjunto de coeficientes de ponderación para el componente de luminancia es {7/8, 6 /8 , 5/8, 4/8, 3/8, 2/8, 1/8}; para cualquier componente de luminancia, el primer valor de predicción es un valor de predicción de luminancia determinado basándose en la primera información de movimiento objetivo, el segundo valor de predicción es un valor de predicción de luminancia determinado basándose en la segunda información de movimiento objetivo, y el valor de predicción después de compensación de movimiento ponderada del sub­ bloque es un valor de predicción de luminancia después de compensación de movimiento ponderada determinado basándose en el primer valor de predicción, el segundo valor de predicción, el primer coeficiente de ponderación y el segundo coeficiente de ponderación.
8. El método según la reivindicación 7, en el que cada sub-bloque en la tercera área comprende un componente de crominancia, y para el componente de crominancia, el primer valor de predicción es un valor de predicción de crominancia determinado basándose en la primera información de movimiento objetivo, el segundo valor de predicción es un valor de predicción de crominancia determinado basándose en la segunda información de movimiento objetivo, y el valor de predicción después de compensación de movimiento ponderada del sub-bloque es un valor de predicción de crominancia después de compensación de movimiento ponderada determinado basándose en el primer valor de predicción, el segundo valor de predicción, el primer coeficiente de ponderación y el segundo coeficiente de ponderación.
9. Un dispositivo de decodificación, que comprende: un procesador (91) configurado para realizar el método según una cualquiera de las reivindicaciones 1 a 8.
10. Un programa informático que comprende instrucciones que, cuando el programa es ejecutado por un procesador (91), hacen que el procesador (91) lleve a cabo el método según una cualquiera de las reivindicaciones 1 a 8.
11. Un medio de almacenamiento no transitorio que tiene almacenadas en el mismo instrucciones que, cuando son ejecutadas por un procesador (91), hacen que el procesador (91) lleve a cabo el método según una cualquiera de las reivindicaciones 1 a 8.
ES20831928T 2019-06-24 2020-06-17 Decoding method and device Active ES3049652T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910551169.9A CN112135144B (zh) 2019-06-24 2019-06-24 一种编解码方法、装置及其设备
PCT/CN2020/096649 WO2020259372A1 (zh) 2019-06-24 2020-06-17 一种编解码方法、装置及其设备

Publications (1)

Publication Number Publication Date
ES3049652T3 true ES3049652T3 (en) 2025-12-17

Family

ID=70324672

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20831928T Active ES3049652T3 (en) 2019-06-24 2020-06-17 Decoding method and device

Country Status (11)

Country Link
US (1) US12041266B2 (es)
EP (1) EP3989573B1 (es)
JP (2) JP7311635B2 (es)
KR (1) KR102802051B1 (es)
CN (17) CN113055682B (es)
ES (1) ES3049652T3 (es)
FI (1) FI3989573T3 (es)
MX (1) MX2021015939A (es)
PH (1) PH12021552965A1 (es)
PL (1) PL3989573T3 (es)
WO (2) WO2020259372A1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113055682B (zh) 2019-06-24 2022-09-30 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN110312130B (zh) * 2019-06-25 2021-10-15 浙江大华技术股份有限公司 基于三角模式的帧间预测、视频编码方法及设备
CN114710663B (zh) 2019-09-20 2024-10-25 杭州海康威视数字技术股份有限公司 一种解码、编码方法、装置及其设备
CN112104867B (zh) * 2020-11-09 2021-03-02 腾讯科技(深圳)有限公司 一种视频处理方法、视频处理装置、智能设备及存储介质
WO2024043666A1 (ko) * 2022-08-22 2024-02-29 현대자동차주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2738325B2 (ja) 1995-01-24 1998-04-08 日本電気株式会社 動き補償フレーム間予測装置
KR0181063B1 (ko) * 1995-04-29 1999-05-01 배순훈 특징점을 이용한 움직임 보상에서의 그리드 형성방법 및 장치
JP4232496B2 (ja) 2003-03-19 2009-03-04 セイコーエプソン株式会社 画像処理方法および画像処理装置ならびに画像処理プログラム
JP2004297416A (ja) 2003-03-26 2004-10-21 Monolith Co Ltd 対応点情報圧縮方法および装置
JP2006260527A (ja) * 2005-02-16 2006-09-28 Toshiba Corp 画像マッチング方法およびこれを用いた画像補間方法
KR20110047814A (ko) * 2009-10-30 2011-05-09 한국전자통신연구원 동영상 시스템에서 동영상 데이터 분할 장치 및 방법
CN105812812B (zh) * 2009-12-01 2018-08-24 数码士有限公司 用于编码高分辨率图像的方法
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
CN102215396A (zh) 2010-04-09 2011-10-12 华为技术有限公司 一种视频编解码方法和系统
EP2464116A1 (en) * 2010-12-13 2012-06-13 Thomson Licensing Method and device for video encoding using geometry adaptive block partitioning
CN102884794B (zh) 2011-03-07 2016-08-10 松下知识产权经营株式会社 运动补偿装置、运动图像编码装置、运动图像解码装置、运动补偿方法、以及集成电路
WO2012120870A1 (ja) 2011-03-08 2012-09-13 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム
US9621894B2 (en) 2012-01-13 2017-04-11 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
CN103561263B (zh) * 2013-11-06 2016-08-24 北京牡丹电子集团有限责任公司数字电视技术中心 基于运动矢量约束和加权运动矢量的运动补偿预测方法
FR3032583B1 (fr) * 2015-02-06 2018-03-02 Orange Procede de codage d'une image numerique, procede de decodage, dispositifs, et programmes d'ordinateurs associes
CN104717513B (zh) * 2015-03-31 2018-02-09 北京奇艺世纪科技有限公司 一种双向帧间预测方法及装置
KR20170058838A (ko) * 2015-11-19 2017-05-29 한국전자통신연구원 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
CA3072997A1 (en) * 2017-08-22 2019-02-28 Panasonic Intellectual Property Corporation Of America Image encoder, image decoder, image encoding method, and image decoding method
BR112020001991A2 (pt) * 2017-08-22 2020-08-18 Panasonic Intellectual Property Corporation Of America codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
CN109510991B (zh) 2017-09-15 2021-02-19 浙江大学 一种运动矢量导出方法及装置
WO2019079611A1 (en) * 2017-10-18 2019-04-25 Huawei Technologies Co., Ltd. GENERATION OF MOVEMENT VECTOR CANDIDATES LIST DEPENDING ON THE AVAILABILITY OF A NEIGHBORING BLOCK
CN118214854A (zh) 2017-10-26 2024-06-18 英迪股份有限公司 用于基于非对称子块的图像编码/解码的方法及装置
TWI703861B (zh) * 2018-07-06 2020-09-01 聯發科技股份有限公司 解碼器的視訊解碼方法及裝置
CN112823518B (zh) 2018-10-08 2023-10-20 华为技术有限公司 用于译码块的几何划分块的帧间预测的装置及方法
CN112889269B (zh) * 2018-10-23 2023-10-27 腾讯美国有限责任公司 视频解码方法及装置
WO2020094077A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Weights derivation for geometric partitioning
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
CN112584164B (zh) 2018-12-28 2022-05-31 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN113196755A (zh) 2018-12-30 2021-07-30 北京达佳互联信息技术有限公司 用于三角形预测的视频编解码的方法和装置
US11140406B2 (en) * 2019-02-20 2021-10-05 Qualcomm Incorporated Signalling for merge mode with motion vector differences in video coding
US11350083B2 (en) * 2019-04-19 2022-05-31 Qualcomm Incorporated Intra block copy merging data syntax for video coding
CN113055682B (zh) 2019-06-24 2022-09-30 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN114208197B (zh) * 2019-08-15 2026-02-10 阿里巴巴集团控股有限公司 用于视频编解码的块划分方法
KR102732809B1 (ko) * 2019-09-01 2024-11-21 두인 비전 컴퍼니 리미티드 비디오 코딩에서의 예측 가중치 정렬
WO2021045171A1 (en) * 2019-09-05 2021-03-11 Sharp Kabushiki Kaisha Systems and methods for performing inter prediction coding in video coding
US11310497B2 (en) * 2019-11-15 2022-04-19 Qualcomm Incorporated Geometric partition mode with increased efficiency
US11477437B2 (en) * 2021-01-28 2022-10-18 Lemon Inc. Coding of motion information

Also Published As

Publication number Publication date
CN111064964B (zh) 2021-02-26
CN112135144A (zh) 2020-12-25
CN113055689A (zh) 2021-06-29
CN113055689B (zh) 2022-11-01
KR102802051B1 (ko) 2025-04-28
US12041266B2 (en) 2024-07-16
CN113163210A (zh) 2021-07-23
CN113055685A (zh) 2021-06-29
CN113163209B (zh) 2022-11-25
US20220232248A1 (en) 2022-07-21
CN113163204B (zh) 2022-11-01
CN113055685B (zh) 2022-09-30
CN113163206A (zh) 2021-07-23
CN113163210B (zh) 2022-11-01
CN113055688B (zh) 2022-11-01
MX2021015939A (es) 2022-02-03
WO2020259372A1 (zh) 2020-12-30
CN113163205A (zh) 2021-07-23
EP3989573A4 (en) 2022-07-06
EP3989573B1 (en) 2025-08-13
PH12021552965A1 (en) 2022-07-25
CN113055684B (zh) 2022-09-30
CN113055682A (zh) 2021-06-29
JP7541599B2 (ja) 2024-08-28
CN111064964A (zh) 2020-04-24
CN112135144B (zh) 2022-11-01
CN113163205B (zh) 2022-11-01
CN113055683B (zh) 2022-11-01
CN113163207B (zh) 2022-11-01
CN113163209A (zh) 2021-07-23
CN113055683A (zh) 2021-06-29
PL3989573T3 (pl) 2026-01-26
EP3989573A1 (en) 2022-04-27
CN113163207A (zh) 2021-07-23
CN113055688A (zh) 2021-06-29
CN113055687B (zh) 2022-07-29
CN113163208B (zh) 2022-11-01
CN113055686B (zh) 2022-11-01
CA3139453A1 (en) 2020-12-30
CN113163206B (zh) 2022-11-01
WO2020259388A1 (zh) 2020-12-30
JP7311635B2 (ja) 2023-07-19
CN113055682B (zh) 2022-09-30
CN113055684A (zh) 2021-06-29
FI3989573T3 (fi) 2025-09-25
CN113055687A (zh) 2021-06-29
JP2022534718A (ja) 2022-08-03
CN113163208A (zh) 2021-07-23
CN113163204A (zh) 2021-07-23
JP2023118926A (ja) 2023-08-25
KR20220003020A (ko) 2022-01-07
CN113055686A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
ES3049652T3 (en) Decoding method and device
CN110710212A (zh) 通过子像素运动矢量细化对视频数据进行编码或解码的方法和装置
CN112449181B (zh) 一种编解码方法、装置及其设备
RU2852642C2 (ru) Способ, аппарат и устройство декодирования, электронное устройство декодирования и носитель информации
RU2797353C1 (ru) Способ, аппарат и устройство кодирования и декодирования
CA3139453C (en) Encoding and decoding method, apparatus, and device
HK40054475A (en) Coding and decoding method, device and equipment
HK40054475B (en) Coding and decoding method, device and equipment