ES2972076T3 - Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo - Google Patents

Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo Download PDF

Info

Publication number
ES2972076T3
ES2972076T3 ES19883291T ES19883291T ES2972076T3 ES 2972076 T3 ES2972076 T3 ES 2972076T3 ES 19883291 T ES19883291 T ES 19883291T ES 19883291 T ES19883291 T ES 19883291T ES 2972076 T3 ES2972076 T3 ES 2972076T3
Authority
ES
Spain
Prior art keywords
prediction
block
candidate
prediction unit
information
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
ES19883291T
Other languages
English (en)
Inventor
Bae Keun Lee
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Application granted granted Critical
Publication of ES2972076T3 publication Critical patent/ES2972076T3/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/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/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
    • 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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/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/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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un método de decodificación de imágenes según la presente invención puede comprender las etapas de: dividir un bloque de codificación en una primera unidad de predicción y una segunda unidad de predicción; derivar una lista de candidatos de fusión para el bloque de codificación; derivar la primera información de movimiento para la primera unidad de predicción y la segunda información de movimiento para la segunda unidad de predicción por medio de la lista de candidatos de fusión; y basándose en la primera información de movimiento y la segunda información de movimiento, adquirir una muestra de predicción dentro del bloque de codificación. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo
CAMPO TÉCNICO
La presente divulgación se refiere a un método de codificación y decodificación de señales de vídeo y a un aparato para lo mismo.
ANTECEDENTES
Debido a que los paneles de visualización se van haciendo cada vez más grandes, se requieren cada vez más servicios de vídeo de una calidad aún más alta. El mayor problema de los servicios de vídeo de alta definición es un aumento significativo en el volumen de datos y, para solucionar este problema, se están llevando a cabo activamente estudios para mejorar la tasa de compresión de vídeo. Como un ejemplo representativo, el Grupo de Expertos en Imágenes en Movimiento (MPEG) y el Grupo de Expertos en Codificación de Vídeo (VCEG) en el marco de la Unión Internacional de Telecomunicaciones-Telecomunicaciones (UIT-T) han formado el Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) en 2009. El JCT-VC ha propuesto la Codificación de Vídeo de Alta Eficiencia (HEVC), que es una norma de compresión de vídeo que tiene un rendimiento de compresión aproximadamente el doble del rendimiento de compresión de H.264/AVC, y se aprueba como norma el 25 de enero de 2013. Con el rápido avance en los servicios de vídeo de alta definición, el rendimiento de la HEVC revela gradualmente sus limitaciones.
El documento US2013202038A1 divulga un dispositivo de codificación de vídeo que genera una lista de candidatos de vector de movimiento (MV) para una unidad de predicción (PU) de una unidad de codificación (CU) que está dividida en cuatro PU del mismo tamaño. El dispositivo de codificación de vídeo convierte un candidato de MV bidireccional de la lista de candidatos de MV en un candidato de MV unidireccional. Además, el dispositivo de codificación de vídeo determina un candidato de MV seleccionado de la lista de candidatos de fusión y genera un bloque de vídeo predictivo para la PU basándose al menos en parte en uno o más bloques de referencia indicados por la información de movimiento especificada por el candidato de MV seleccionado.
El documento US2013114717A1 divulga que, al generar una lista de candidatos para codificación de vídeo de inter predicción, un codificador de vídeo puede realizar operaciones de poda cuando se añaden candidatos espaciales y candidatos temporales a una lista de candidatos mientras que no realiza operaciones de poda cuando añade un candidato generado artificialmente a la lista de candidatos. El candidato generado artificialmente puede tener información de movimiento que es la misma que la información de movimiento de un candidato espacial o un candidato temporal que ya esté en la lista de candidatos.
SUMARIO
La invención está definida en las reivindicaciones independientes. Aspectos adicionales de la invención se definen en las reivindicaciones dependientes, los dibujos y la siguiente descripción. Un objeto de la presente divulgación es proporcionar un método para aplicar una subdivisión a un bloque de codificación para obtener una pluralidad de bloques de predicción al codificar/decodificar una señal de vídeo y un aparato para realizar el método.
Otro objeto de la presente divulgación es proporcionar un método para derivar información de movimiento de cada uno de una pluralidad de bloques de predicción, al codificar/decodificar una señal de vídeo.
Otro objeto de la presente divulgación es proporcionar un método para derivar un candidato de fusión usando una lista de información de movimiento inter-región, al codificar/decodificar una señal de vídeo.
Los problemas técnicos que van a lograrse en la presente divulgación no se limitan a los problemas técnicos mencionados anteriormente, y otros problemas no mencionados pueden ser entendidos claramente a partir de la siguiente descripción por los expertos en la materia.
Un método para decodificar/codificar una señal de vídeo de acuerdo con la presente divulgación puede incluir las etapas de: aplicar una subdivisión a un bloque de codificación para obtener una primera unidad de predicción y una segunda unidad de predicción; derivar una lista de candidatos de fusión para el bloque de codificación; derivar la primera información de movimiento para la primera unidad de predicción y la segunda información de movimiento para la segunda unidad de predicción usando la lista de candidatos de fusión; y obtener una muestra de predicción en el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento. En este punto, si se aplica o no la subdivisión al bloque de codificación se determina basándose en el tamaño del bloque de codificación, y se deriva la primera información de movimiento para la primera unidad de predicción de un primer candidato de fusión en la lista de candidatos de fusión, y se deriva la segunda información de movimiento para la segunda unidad de predicción de un segundo candidato de fusión diferente del primer candidato de fusión.
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, cuando al menos una de entre la anchura y la altura del bloque de codificación es mayor que un valor umbral, es posible que no se permita la subdivisión del bloque de codificación.
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, el método puede incluir además la etapa de decodificar la primera información de índice para especificar el primer candidato de fusión y la segunda información de índice para especificar el segundo candidato de fusión de un flujo de bits, y cuando un valor de la segunda información de índice es igual o mayor que un valor de la primera información de índice, se obtiene el valor de la segunda información de índice que especifica el segundo candidato de fusión añadiendo 1 al valor de la segunda información de índice
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, cuando la muestra de predicción se incluye en una región límite entre la primera unidad de predicción y la segunda unidad de predicción, la muestra de predicción se puede derivar basándose en una operación de suma ponderada de una primera muestra de predicción derivada basándose en la primera información de movimiento y una segunda muestra prevista derivada basándose en la segunda información de movimiento.
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, se puede determinar un primer valor de ponderación aplicado a la primera muestra de predicción basándose en una coordenada del eje x y una coordenada del eje y de la muestra de predicción.
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, se puede derivar un segundo valor de ponderación aplicado a la segunda muestra de predicción restando el primer valor de ponderación de un valor constante.
En el método de codificación y decodificación de señales de vídeo de acuerdo con la presente divulgación, se puede determinar el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir basándose en si el bloque de codificación está dividido en la primera unidad de predicción y la segunda unidad de predicción. Las características resumidas brevemente anteriormente con respecto a la presente divulgación son simplemente aspectos ilustrativos de la descripción detallada de la presente divulgación que se describirán a continuación, y no limitan el alcance de la presente divulgación.
De acuerdo con la presente divulgación, la eficiencia de inter predicción puede mejorarse proporcionando un método de aplicación de subdivisión de un bloque de codificación para obtener una pluralidad de bloques de predicción y derivar información de movimiento de cada uno de los bloques de predicción.
De acuerdo con la presente divulgación, la eficiencia de inter predicción se puede mejorar proporcionando un método para derivar un candidato de fusión usando una lista de información de movimiento de inter-región.
Los efectos que pueden obtenerse a partir de la presente divulgación no se limitan a los efectos mencionados anteriormente, y otros efectos no mencionados pueden ser entendidos claramente a partir de la siguiente descripción por los expertos en la materia.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una realización de la presente divulgación.
La figura 2 es un diagrama de bloques que muestra un decodificador de vídeo de acuerdo con una realización de la presente divulgación.
La figura 3 es una vista que muestra una unidad de árbol de codificación básica de acuerdo con una realización de la presente divulgación.
La figura 4 es una vista que muestra diversos tipos de subdivisión de un bloque de codificación.
La figura 5 es una vista que muestra un patrón de subdivisión de una unidad de árbol de codificación. La figura 6 es un diagrama de flujo que ilustra un método de inter predicción de acuerdo con una realización de la presente divulgación.
La figura 7 es una vista que muestra movimientos no lineales de un objeto.
La figura 8 es un diagrama de flujo que ilustra un método de inter predicción basándose en un movimiento afín de acuerdo con una realización de la presente divulgación.
La figura 9 es una vista que muestra un ejemplo de vectores de semilla afines de cada modelo de movimiento afín.
La figura 10 es una vista que muestra un ejemplo de vectores afines de subbloques en un modelo de movimiento de 4 parámetros.
La figura 11 es un diagrama de flujo que ilustra un proceso para derivar información de movimiento de un bloque actual usando un modo de fusión.
La figura 12 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
La figura 13 es una vista que muestra las posiciones de muestras de referencia.
La figura 14 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
La figura 15 es un diagrama de flujo que ilustra un proceso de actualización de una lista de información de movimiento de inter región.
La figura 16 es una vista que muestra una realización de la actualización de una lista de candidatos de fusión de inter región.
La figura 17 es una vista que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión de inter región previamente almacenado.
La figura 18 es una vista que muestra la posición de un subbloque representativo.
La figura 19 es una vista que muestra un ejemplo en el que se genera una lista de información de movimiento de inter región para cada modo de inter predicción.
La figura 20 es una vista que muestra un ejemplo en el que un candidato de fusión de inter región incluido en una lista de información de movimiento a largo plazo se añade a una lista de candidatos de fusión.
La figura 21 es una vista que muestra un ejemplo en el que se realiza una comprobación de redundancia únicamente en algunos de los candidatos de fusión.
La figura 22 es una vista que muestra un ejemplo en el que se omite una comprobación de redundancia para un candidato de fusión específico.
La figura 23 es una vista que muestra ejemplos de aplicación de subdivisión de un bloque de codificación para obtener una pluralidad de unidades de predicción usando una línea diagonal.
La figura 24 es una vista que muestra ejemplos de aplicación de subdivisión de un bloque de codificación para obtener dos unidades de predicción.
La figura 25 es una vista que muestra ejemplos de aplicación de subdivisión de un bloque de codificación para obtener una pluralidad de bloques de predicción de diferente tamaño.
La figura 26 es una vista que muestra bloques vecinos usados para derivar un candidato de fusión triangular. La figura 27 es una vista para describir ejemplos de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Las figuras 28 y 29 son vistas que muestran ejemplos de derivación de una muestra de predicción basándose en una operación de suma ponderada de una primera muestra de predicción y una segunda muestra de predicción.
DESCRIPCIÓN DETALLADA
En lo sucesivo en el presente documento, se describirá con detalle una realización de la presente divulgación con referencia a los dibujos adjuntos.
La codificación y decodificación de un vídeo se realiza por la unidad de bloque. Por ejemplo, puede realizarse un proceso de codificación/decodificación tal como transformada, cuantificación, predicción, filtrado en bucle, reconstrucción o similares sobre un bloque de codificación, un bloque de transformada o un bloque de predicción.
En lo sucesivo en el presente documento, un bloque que va a codificarse/decodificarse se denominará 'bloque actual'. Por ejemplo, el bloque actual puede representar un bloque de codificación, un bloque de transformada o un bloque de predicción de acuerdo con una etapa de proceso de codificación/decodificación actual.
Además, puede entenderse que el término 'unidad' usado en esta memoria descriptiva indica una unidad básica para realizar un proceso de codificación/decodificación específico, y el término 'bloque' indica una matriz ordenada de muestras de un tamaño predeterminado. A menos que se exponga lo contrario, el 'bloque' y la 'unidad' pueden usarse para tener el mismo significado. Por ejemplo, en una realización descrita a continuación, puede entenderse que un bloque de codificación y una unidad de codificación tienen el mismo significado.
La figura 1 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una realización de la presente divulgación.
Haciendo referencia a la figura 1, un aparato de codificación de vídeo 100 puede incluir una parte de subdivisión de imagen 110, una parte de predicción 120 y 125, una parte de transformada 130, una parte de cuantificación 135, una parte de reorganización 160, una parte de codificación por entropía 165, una parte de cuantificación inversa 140, una parte de transformada inversa 145, una parte de filtro 150 y una memoria 155.
Se muestra independientemente que cada uno de los componentes mostrados en figura 1 representa funciones características diferentes entre sí en un aparato de codificación de vídeo, y no significa que cada componente esté formado por la unidad de configuración de hardware separado o por software único. Es decir, cada componente se incluye para enumerarse como un componente por conveniencia de explicación, y al menos dos de los componentes pueden combinarse para formar un único componente, o un componente puede dividirse en una pluralidad de componentes para realizar una función. También se incluyen realizaciones integradas y realizaciones separadas de los componentes en el alcance de la presente divulgación si los mismas no se apartan de la esencia de la presente divulgación.
Además, algunos de los componentes no son componentes esenciales que realizan funciones esenciales en la presente divulgación, sino que pueden ser componentes opcionales únicamente para mejorar el rendimiento. La presente divulgación puede implementarse incluyendo únicamente componentes esenciales para implementar la esencia de la presente divulgación excluyendo componentes usados para mejorar el rendimiento, y también se incluye en el alcance de la presente divulgación una estructura que incluye solo los componentes esenciales excluyendo los componentes opcionales usados para mejorar el rendimiento.
La parte de subdivisión de imagen 110 puede aplicar una subdivisión a una imagen de entrada para obtener al menos una unidad de procesamiento. En este punto, la unidad de procesamiento puede ser una unidad de predicción (PU), una unidad de transformada (TU) o una unidad de codificación (CU). La parte de subdivisión de imagen 110 puede aplicar una subdivisión una imagen en una combinación de una pluralidad de unidades de codificación, unidades de predicción y unidades de transformada, y codificar una imagen seleccionando una combinación de una unidad de codificación, una unidad de predicción y una unidad de transformada basándose en un criterio predeterminado (por ejemplo, una función de coste).
Por ejemplo, una imagen puede subdividirse en una pluralidad de unidades de codificación. Para subdividir las unidades de codificación en una imagen, puede usarse una estructura de árbol recursivo tal como una estructura de árbol cuádruple. Un vídeo o una unidad de codificación subdividida en diferentes unidades de codificación usando la unidad de codificación más grande como raíz puede subdividirse para tener tantos nodos secundarios como el número de unidades de codificación subdivididas. Una unidad de codificación que ya no se subdivide más de acuerdo con una restricción predeterminada se vuelve un nodo hoja. Es decir, cuando se asume que únicamente es posible la subdivisión cuadrada para una unidad de codificación, la unidad de codificación puede subdividirse en hasta cuatro unidades de codificación diferentes.
En lo sucesivo en el presente documento, en una realización de la presente divulgación, la unidad de codificación puede usarse como un significado de una unidad que realiza una codificación o con un significado de una unidad que realiza una decodificación.
La unidad de predicción puede ser una que se subdivide en una forma de al menos un cuadrado, rectángulo o similar del mismo tamaño dentro de una unidad de codificación, o puede ser una unidad de predicción cualquiera, de entre las unidades de predicción subdivididas dentro de una unidad de codificación, que se subdivide para tener una forma y/o tamaño diferente de los de otra unidad de predicción.
Si la unidad de codificación no es una unidad de codificación más pequeña cuando se genera una unidad de predicción que realiza una intra predicción basándose en la unidad de codificación, la intra predicción puede realizarse sin subdividir una imagen en una pluralidad de unidades de predicción N x N.
La parte de predicción 120 y 125 puede incluir una parte de inter predicción 120 que realiza una inter predicción y una parte intra predicción 125 que realiza una intra predicción. Puede determinarse si usar una inter predicción o realizar una intra predicción para una unidad de predicción y determinar información específica (por ejemplo, modo de intra predicción, vector de movimiento, imagen de referencia, etc.) de acuerdo con cada método de predicción. En este punto, una unidad de procesamiento para realizar predicción puede ser diferente de una unidad de procesamiento para determinar un método de predicción y contenido específico. Por ejemplo, pueden determinarse un método de predicción y un modo de predicción en una unidad de predicción, y la predicción puede realizarse sobre una unidad de transformada. Un coeficiente residual (bloque residual) entre el bloque de predicción generado y el bloque original puede introducirse en la parte de transformada 130. Además, la información de modo de predicción, la información de vector de movimiento y similares usados para predicción pueden codificarse mediante la parte de codificación por entropía 165 junto con el coeficiente residual y transferirse a un decodificador. Cuando se usa un modo de codificación específico, un bloque original puede codificarse tal cual está y transmitirse a un decodificador sin generar un bloque de predicción a través de la parte de predicción 120 y 125.
La parte de inter predicción 120 puede predecir una unidad de predicción basándose en información acerca de al menos una imagen de entre imágenes antes o después de la imagen actual, y en algunos casos, puede predecir una unidad de predicción basándose en información acerca de un área parcial que se ha codificado en la imagen actual. La parte de inter predicción 120 puede incluir una parte de interpolación de imagen de referencia, una parte de predicción de movimiento y una parte de compensación de movimiento.
La parte de interpolación de imagen de referencia puede recibir información de imagen de referencia de la memoria 155 y generar información de muestra de un número entero de muestras o menor a partir de la imagen de referencia. En el caso de una muestra de luminancia, puede usarse un filtro de interpolación de 8 derivaciones basado en DCT con un coeficiente de filtro variable para generar información de muestra de un número entero de muestras o menos por la unidad de 1/4 de muestra. En el caso de una señal de diferencia de color, puede usarse un filtro de interpolación de 4 derivaciones basado en DCT con un coeficiente de filtro variable para generar información de muestra de un número entero de muestras o menor por la unidad de 1/8 de muestra.
La parte de predicción de movimiento puede realizar predicción de movimiento basándose en la imagen de referencia interpolada por la parte de interpolación de imagen de referencia. Pueden usarse diversos métodos tales como un algoritmo de coincidencia de bloques basada en búsqueda completa (FBMA), una búsqueda de tres etapas (TSS) y un algoritmo de nueva búsqueda de tres etapas (NTS) como un método para calcular un vector de movimiento. El vector de movimiento puede tener un valor de vector de movimiento de una unidad de 1/2 o 1/4 de muestra basándose en muestras interpoladas. La parte de predicción de movimiento puede predecir una unidad de predicción actual variando el método de predicción de movimiento. Pueden usarse diversos métodos tales como un método de omisión, un método de fusión, un método de predicción de vector de movimiento avanzado (AMVP), un método de copia de intra bloque y similares como el método de predicción de movimiento.
La parte de intra predicción 125 puede generar una unidad de predicción basándose en la información acerca de muestras de referencia en las proximidades del bloque actual, que es información de muestras en la imagen actual. Cuando un bloque en las proximidades de la unidad de predicción actual es un bloque sobre el que se ha realizado una inter predicción y, por lo tanto, la muestra de referencia es una muestra sobre la que se ha realizado una inter predicción, puede usarse la muestra de referencia incluida en el bloque sobre el que se ha realizado una inter predicción en lugar de información de muestra de referencia de un bloque en las proximidades sobre el que se ha realizado una intra predicción. Es decir, cuando no está disponible una muestra de referencia, puede usarse al menos una muestra de referencia de entre muestras de referencia disponibles en lugar de información de muestra de referencia no disponible.
En la intra predicción, el modo de predicción puede tener un modo de predicción angular que usa información de muestra de referencia de acuerdo con una dirección de predicción, y un modo de predicción no angular que no usa información direccional cuando se realiza una predicción. Un modo para predecir información de luminancia puede ser diferente de un modo para predecir información de diferencia de color, y puede usarse información del modo de intra predicción usada para predecir información de luminancia o información de señal de luminancia prevista para predecir la información de diferencia de color.
Si el tamaño de la unidad de predicción es igual que el tamaño de la unidad de transformada cuando se realiza una intra predicción, la intra predicción puede realizarse para la unidad de predicción basándose en una muestra en el lado izquierdo, una muestra en el lado superior izquierdo y una muestra en la parte superior de la unidad de predicción. Sin embargo, si el tamaño de la unidad de predicción es diferente del tamaño de la unidad de transformada cuando se realiza la intra predicción, la intra predicción puede realizarse usando una muestra de referencia basándose en la unidad de transformada. Además, la intra predicción usando una subdivisión N x N únicamente puede usarse para la unidad de codificación más pequeña.
El método de intra predicción puede generar un bloque de predicción después de aplicar un filtro de intra alisado adaptativo (AIS) a la muestra de referencia de acuerdo con un modo de predicción. El tipo de filtro de AIS aplicado a la muestra de referencia puede variar. Para realizar el método de intra predicción, el modo de intra predicción de la unidad de intra predicción actual puede predecirse a partir del modo de intra predicción de la unidad de intra predicción existente en las proximidades de la unidad de intra predicción actual. Cuando se predice un modo de predicción de la unidad de predicción actual usando la información de modo predicho de la unidad de predicción vecina, si los modos de intra predicción de la unidad de predicción actual son iguales que los de la unidad de predicción en las proximidades, la información que indica que los modos de predicción de la unidad de predicción actual son iguales que los de la unidad de predicción en las proximidades pueden transmitirse usando información de bandera predeterminada, y si los modos de predicción de la unidad de predicción actual y la unidad de predicción en las proximidades son diferentes entre sí, puede codificarse información de modo de predicción del bloque actual realizando una codificación por entropía.
Además, puede generarse un bloque residual que incluye una unidad de predicción que ha realizado una predicción basándose en la unidad de predicción generada por la parte de predicción 120 y 125 y la información de coeficiente residual, que es un valor de diferencia de la unidad de predicción con el bloque original. El bloque residual generado puede introducirse en la parte de transformada 130.
La parte de transformada 130 puede transformar el bloque residual que incluye el bloque original y la información de coeficiente residual de la unidad de predicción generada a través de la parte de predicción 120 y 125 usando un método de transformada tal como transformada discreta del coseno (DCT) o transformada discreta del seno (DST). En el presente caso, el núcleo de transformada DCT incluye al menos una de entre DCT2 y DCT8, y el núcleo de transformada DST incluye DST7. Puede determinarse si aplicar, o no, DCT o DST para transformar el bloque residual basándose en información de modo de intra predicción de una unidad de predicción usada para generar el bloque residual. La transformada sobre el bloque residual puede omitirse. Puede codificarse una bandera que indica si omitir, o no, la transformada sobre el bloque residual. La omisión de transformada puede permitirse para un bloque residual que tiene un tamaño menor que o igual a un umbral, un componente de luma o un componente de croma bajo el formato 4 : 4 : 4.
La parte de cuantificación 135 puede cuantificar valores transformados en el dominio de la frecuencia por la parte de transformada 130. Los coeficientes de cuantificación pueden variar de acuerdo con el bloque o la importancia de un vídeo. Puede proporcionarse un valor calculado por la parte de cuantificación 135 a la parte de cuantificación inversa 140 y la parte de reorganización 160.
La parte de reorganización 160 puede reorganizar los valores de coeficiente para los coeficientes residuales cuantificados.
La parte de reorganización 160 puede cambiar los coeficientes de una forma de bloque bidimensional a una forma vectorial unidimensional a través de un método de exploración de coeficientes. Por ejemplo, la parte de reorganización 160 puede explorar coeficientes de CC hasta coeficientes de dominio de alta frecuencia usando un método de exploración en zigzag, y cambiar los coeficientes a una forma vectorial unidimensional. De acuerdo con el tamaño de la unidad de transformada y el modo de intra predicción, puede usarse una exploración vertical para explorar los coeficientes de una forma de bloque bidimensional en la dirección por columnas y una exploración horizontal para explorar los coeficientes de una forma de bloque bidimensional en la dirección por filas en lugar de la exploración en zigzag. Es decir, de acuerdo con el tamaño de la unidad de transformada y el modo de intra predicción, puede determinarse un método de exploración que se usará de entre la exploración en zigzag, la exploración de dirección vertical y la exploración de dirección horizontal.
La parte de codificación por entropía 165 puede realizar una codificación por entropía basándose en valores calculados por la parte de reorganización 160. La codificación por entropía puede usar diversos métodos de codificación tales como Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC) y similares.
La parte de codificación por entropía 165 puede codificar diversa información tal como información de coeficiente residual e información de tipo de bloque de una unidad de codificación, información de modo de predicción, información de unidad de subdivisión, información de unidad de predicción e información de unidad de transmisión, información de vector de movimiento, información de trama de referencia, información de interpolación de bloque e información de filtrado introducida desde la parte de reorganización 160 y las partes de predicción 120 y 125.
La parte de codificación por entropía 165 puede codificar por entropía el valor de coeficiente de una unidad de codificación que se introduce desde la parte de reorganización 160.
La parte de cuantificación inversa 140 y la parte de transformada inversa 145 cuantifican inversamente los valores cuantificados por la parte de cuantificación 135 y transforman inversamente los valores transformados por la parte de transformada 130. El coeficiente residual generado por la parte de cuantificación inversa 140 y la parte de transformada inversa 145 puede combinarse con la unidad de predicción prevista a través de una parte de estimación de movimiento, una parte de compensación de movimiento y una parte intra predicción incluida en la parte de predicción 120 y 125 para generar un bloque reconstruido.
La parte de filtro 150 puede incluir al menos uno de entre un filtro de desbloqueo, una unidad de corrección de desplazamiento y un filtro de bucle adaptativo (ALF).
El filtro de desbloqueo puede eliminar la distorsión de bloque generada por el límite entre bloques en la imagen reconstruida. Para determinar si realizar, o no, un desbloqueo, puede determinarse si aplicar, o no, el filtro de desbloqueo al bloque actual basándose en las muestras incluidas en varias columnas o filas incluidas en el bloque. Puede aplicarse un filtro fuerte o un filtro débil de acuerdo con la fuerza de filtrado de desbloqueo necesaria cuando se aplica el filtro de desbloqueo a un bloque. Además, cuando el filtrado de dirección vertical y el filtrado de dirección horizontal se realizan aplicando el filtro de desbloqueo, el filtrado de dirección horizontal y el filtrado de dirección vertical pueden procesarse en paralelo.
La unidad de corrección de desplazamiento puede corregir un desplazamiento al vídeo original por la unidad de muestra para un vídeo sobre el que se ha realizado el desbloqueo. Para realizar la corrección de desplazamiento para una imagen específica, es posible usar un método para dividir muestras incluidas en el vídeo en un cierto número de áreas, determinar un área para realizar el desplazamiento y aplicar el desplazamiento al área, o un método para aplicar un desplazamiento considerando información de borde de cada muestra.
El filtrado de bucle adaptativo (ALF) puede realizarse basándose en un valor obtenido mediante la comparación del vídeo reconstruido y filtrado y el vídeo original. Después de dividir las muestras incluidas en el vídeo en grupos predeterminados, puede determinarse un filtro que va a aplicarse a un grupo correspondiente y el filtrado puede realizarse de forma diferente para cada grupo. Puede transmitirse una señal de luminancia, que es la información relacionada con si aplicar, o no, ALF, para cada unidad de codificación (CU), y el coeficiente de filtro y forma de un filtro ALF que va a aplicarse pueden variar de acuerdo con cada bloque. Además, puede aplicarse un filtro ALF del mismo tipo (tipo fijo) independientemente de la característica de un bloque que va a aplicarse.
La memoria 155 puede almacenar el bloque o imagen reconstruida calculada a través de la parte de filtro 150, y el bloque o imagen reconstruida y almacenada pueden proporcionarse a la parte de predicción 120 y 125 cuando se realiza una inter predicción.
La figura 2 es un diagrama de bloques que muestra un decodificador de vídeo de acuerdo con una realización de la presente divulgación.
Haciendo referencia a fa figura 2, un decodificador de vídeo 200 puede incluir una parte de decodificación por entropía 210, una parte de reorganización 215, una parte de cuantificación inversa 220, una parte de transformada inversa 225, una parte de predicción 230 y 235, una parte de filtro 240 y una memoria 245.
Cuando un flujo de bits de vídeo se introduce desde un codificador de vídeo, el flujo de bits de entrada puede decodificarse en un procedimiento opuesto al del codificador de vídeo.
La parte de decodificación por entropía 210 puede realizar una decodificación por entropía en un procedimiento opuesto al de realizar una codificación por entropía en la parte de decodificación por entropía del codificador de vídeo. Por ejemplo, pueden aplicarse diversos métodos correspondientes al método realizado por el codificador de vídeo, tal como Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC) y codificación aritmética binaria adaptativa al contexto (CABAC).
La parte de decodificación por entropía 210 puede decodificar información relacionada con la intra predicción y la inter predicción realizadas por el codificador.
La parte de reorganización 215 puede realizar una reorganización sobre el flujo de bits decodificado por entropía por la parte de decodificación por entropía 210 basándose en el método de reorganización realizado por el codificador. Los coeficientes expresados en una forma vectorial unidimensional pueden reconstruirse y reorganizarse como coeficientes de forma de bloque bidimensional. La parte de reorganización 215 puede recibir información relacionada con la exploración de coeficientes realizada por la parte de codificación y realizar una reconstrucción a través de un método de exploración inversa basándose en el orden de exploración realizado por la parte de codificación correspondiente.
La parte de cuantificación inversa 220 puede realizar una cuantificación inversa basándose en un parámetro de cuantificación proporcionado por el codificador y un valor de coeficiente del bloque reorganizado.
La parte de transformada inversa 225 puede realizar una transformada inversa sobre la transformada, es decir, DCT o DST, realizada por la parte de transformada sobre un resultado de la cuantificación realizada por el codificador de vídeo, es decir, DCT inversa o DST inversa. En el presente caso, el núcleo de transformada DCT puede incluir al menos una de entre DCT2 y DCT8, y el núcleo de transformada DST puede incluir DST7. Como alternativa, cuando la transformada se omite en el codificador de vídeo, incluso la parte de transformada inversa 225 puede no realizar la transformada inversa. La transformada inversa puede realizarse basándose en una unidad de transmisión determinada por el codificador de vídeo. La parte de transformada inversa 225 del decodificador de vídeo puede realizar de forma selectiva una técnica de transformada (por ejemplo, DCT o DST) de acuerdo con una pluralidad de fragmentos de información tal como un método de predicción, un tamaño de un bloque actual, una dirección de predicción y similares.
La parte de predicción 230 y 235 puede generar un bloque de predicción basándose en información relacionada con la generación de un bloque de predicción proporcionado por el decodificador por entropía 210 e información acerca de un bloque o imagen previamente decodificado proporcionado por la memoria 245.
Como se ha descrito anteriormente, si el tamaño de la unidad de predicción y el tamaño de la unidad de transformada son los mismos cuando la intra predicción se realiza de la misma forma que la operación del codificador de vídeo, la intra predicción se realiza sobre la unidad de predicción basándose en la muestra existente en el lado izquierdo, la muestra en el lado superior izquierdo y la muestra en la parte superior de la unidad de predicción. Sin embargo, si el tamaño de la unidad de predicción y el tamaño de la unidad de transformada son diferentes cuando se realiza una intra predicción, la intra predicción puede realizarse usando una muestra de referencia basándose en una unidad de transformada. Además, la intra predicción usando una subdivisión N x N únicamente puede usarse para la unidad de codificación más pequeña.
La parte de predicción 230 y 235 puede incluir una parte de determinación de unidad de predicción, una parte de inter predicción y una parte intra predicción. La parte de determinación de unidad de predicción puede recibir diversa información tal como información de unidad de predicción introducida desde la parte de decodificación por entropía 210, información de modo de predicción del método de intra predicción, información relacionada con la predicción de movimiento de un método de inter predicción y similares, identificar la unidad de predicción de la unidad de codificación actual y determinar si la unidad de predicción realiza una inter predicción o una intra predicción. La parte de inter predicción 230 puede realizar una inter predicción sobre la unidad de predicción actual basándose en información incluida en al menos una imagen de entre imágenes antes o después de la imagen actual que incluye la unidad de predicción actual mediante el uso de información necesaria para inter predicción de la unidad de predicción actual proporcionada por el codificador de vídeo. Como alternativa, la parte de inter predicción 230 puede realizar una inter predicción basándose en información acerca de un área parcial previamente reconstruida en la imagen actual que incluye la unidad de inter predicción actual.
Para realizar una inter predicción, puede determinarse, basándose en la unidad de codificación, si el método de predicción de movimiento de la unidad de predicción incluida en una unidad de codificación correspondiente es un modo de omisión, un modo de fusión, un modo de predicción de vector de movimiento (modo de AMVP) o un modo de copia de intra bloque.
La parte de intra predicción 235 puede generar un bloque de predicción basándose en la información acerca de la muestra en la imagen actual. Cuando la unidad de intra predicción es una unidad de intra predicción que ha realizado una intra predicción, la intra predicción puede realizarse basándose en información de modo de intra predicción de la unidad de intra predicción proporcionada por el codificador de vídeo. La parte de intra predicción 235 puede incluir un filtro de intra alisado adaptativo (AIS), una parte de interpolación de muestra de referencia y un filtro de CC. El filtro de AIS es una parte que realiza el filtrado sobre la muestra de referencia del bloque actual, y puede determinar si aplicar, o no, el filtro de acuerdo con el modo de predicción de la unidad de predicción actual y se aplica el filtro. El filtrado de AIS puede realizarse sobre la muestra de referencia del bloque actual mediante el uso del modo de predicción e información de filtro de AIS de la unidad de predicción proporcionada por el codificador de vídeo. Cuando el modo de predicción del bloque actual es un modo que no realiza el filtrado de AIS, el filtro de AIS puede no aplicarse.
Cuando el modo de predicción de la unidad de predicción es una unidad de intra predicción que realiza una intra predicción basándose en un valor de muestra obtenido mediante la interpolación de la muestra de referencia, la parte de interpolación de muestra de referencia puede generar una muestra de referencia de una unidad de muestra que tiene un valor entero o menos mediante la interpolación de la muestra de referencia. Cuando el modo de predicción de la unidad de predicción actual es un modo de predicción que genera un bloque de predicción sin interpolar la muestra de referencia, la muestra de referencia puede no interpolarse. El filtro de CC puede generar un bloque de predicción a través del filtrado cuando el modo de predicción del bloque actual es el modo de CC.
El bloque o imagen reconstruida puede proporcionarse a la parte de filtro 240. La parte de filtro 240 puede incluir un filtro de desbloqueo, una unidad de corrección de desplazamiento y un ALF.
El codificador de vídeo puede proporcionar información acerca de si se aplica un filtro de desbloqueo a un bloque o imagen correspondiente e información acerca de si se aplica un filtro fuerte o un filtro débil cuando se aplica un filtro de desbloqueo. El filtro de desbloqueo del decodificador de vídeo puede proporcionarse con información relacionada con el filtro de desbloqueo proporcionado por el codificador de vídeo, y el decodificador de vídeo puede realizar filtrado de desbloqueo sobre un bloque correspondiente.
La unidad de corrección de desplazamiento puede realizar corrección de desplazamiento sobre el vídeo reconstruido basándose en el tipo de corrección de desplazamiento y la información de valor de desplazamiento aplicada al vídeo cuando se realiza la codificación.
El ALF puede aplicarse a una unidad de codificación basándose en información acerca de si aplicar, o no, el ALF e información acerca de coeficientes ALF proporcionados por el codificador. La información de ALF puede proporcionarse para incluirse en un conjunto de parámetros específico.
La memoria 245 puede almacenar la imagen o bloque reconstruido y usarlo como una imagen de referencia o un bloque de referencia y puede proporcionar la imagen reconstruida a una unidad de salida.
La figura 3 es una vista que muestra una unidad de árbol de codificación básica de acuerdo con una realización de la presente divulgación.
Un bloque de codificación de un tamaño máximo puede definirse como un bloque de árbol de codificación. Una imagen se subdivide en una pluralidad de unidades de árbol de codificación (CTU). La unidad de árbol de codificación es una unidad de codificación que tiene un tamaño máximo y puede denominarse unidad de codificación grande (LCU). La figura 3 muestra un ejemplo en el que una imagen se subdivide en una pluralidad de unidades de árbol de codificación.
El tamaño de la unidad de árbol de codificación puede definirse a un nivel de imagen o a un nivel de secuencia. Para este fin, puede señalizarse información que indica el tamaño de la unidad de árbol de codificación a través de un conjunto de parámetros de imagen o un conjunto de parámetros de secuencia.
Por ejemplo, el tamaño de la unidad de árbol de codificación para toda la imagen en una secuencia puede establecerse a 128 x 128. Como alternativa, al nivel de imagen, puede determinarse uno cualquiera de entre 128 x 128 y 256 x 256 como el tamaño de la unidad de árbol de codificación. Por ejemplo, el tamaño de la unidad de árbol de codificación puede establecerse a 128 x 128 en una primera imagen, y el tamaño de la unidad de árbol de codificación puede establecerse a 256 x 256 en una segunda imagen.
Pueden generarse bloques de codificación subdividiendo una unidad de árbol de codificación. El bloque de codificación indica una unidad básica para realizar una codificación/decodificación. Por ejemplo, puede realizarse predicción o transformada para cada bloque de codificación, o puede determinarse un modo de codificación de predicción para cada bloque de codificación. En el presente caso, el modo de codificación de predicción indica un método para generar una imagen de predicción. Por ejemplo, el modo de codificación de predicción puede incluir predicción dentro de una imagen (intra predicción), predicción entre imágenes (inter predicción), referenciación de imagen actual (CPR) o copia de intra bloque (IBC) o predicción combinada. Para el bloque de codificación, puede generarse un bloque de predicción mediante el uso de al menos un modo de codificación de predicción de entre la intra predicción, la inter predicción, la referenciación de imagen actual y la predicción combinada.
Puede señalizarse información que indica el modo de codificación de predicción del bloque actual a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit que indica si el modo de codificación de predicción es un modo intra o un modo inter. Solo cuando el modo de codificación de predicción del bloque actual se determina como el modo inter, puede usarse la referenciación de imagen actual o la predicción combinada.
La referencia de imagen actual es para establecer la imagen actual como una imagen de referencia y obtener un bloque de predicción del bloque actual de un área que ya se ha codificado/decodificado en la imagen actual. En el presente caso, la imagen actual significa una imagen que incluye el bloque actual. Puede señalizarse información que indica si la referencia de imagen actual se aplica al bloque actual a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit. Cuando la bandera es verdadera, el modo de codificación de predicción del bloque actual puede determinarse como la referencia de imagen actual, y cuando la bandera es falsa, el modo de predicción del bloque actual puede determinarse como inter predicción.
Como alternativa, puede determinarse el modo de codificación de predicción del bloque actual basándose en un índice de imagen de referencia. Por ejemplo, cuando el índice de imagen de referencia indica la imagen actual, el modo de codificación de predicción del bloque actual puede determinarse como la referencia de imagen actual. Cuando el índice de imagen de referencia indica una imagen que no es la imagen actual, el modo de codificación de predicción del bloque actual puede determinarse como inter predicción. Es decir, la referencia de imagen actual es un método de predicción que usa información acerca de un área en la que se ha completado la codificación/decodificación en la imagen actual, y la inter predicción es un método de predicción que usa información acerca de otra imagen en la que se ha completado la codificación/decodificación.
La predicción combinada representa un modo de codificación en el que se combinan dos o más de entre la intra predicción, la inter predicción y la imagen de referencia actual. Por ejemplo, cuando se aplica la predicción combinada, puede generarse un primer bloque de predicción basándose en uno de entre la intra predicción, la inter predicción y la referenciación de imagen actual, y puede generarse un segundo bloque de predicción basándose en otro. Cuando se generan el primer bloque de predicción y el segundo bloque de predicción, puede generarse un bloque de predicción final a través de una operación promedio o una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. Puede señalizarse información que indica si la predicción combinada se aplica, o no, a través de un flujo de bits. La información puede ser una bandera de 1 bit.
La figura 4 es una vista que muestra diversos tipos de subdivisión de un bloque de codificación.
El bloque de codificación puede subdividirse en una pluralidad de bloques de codificación basándose en una subdivisión de árbol cuádruple, una subdivisión de árbol binario o una subdivisión de árbol ternario. El bloque de codificación subdividido puede subdividirse de nuevo en una pluralidad de bloques de codificación basándose en la subdivisión de árbol cuádruple, la subdivisión de árbol binario o la subdivisión de árbol ternario.
La subdivisión de árbol cuádruple se refiere a una técnica de subdivisión que subdivide un bloque actual en cuatro bloques. Como resultado de la subdivisión de árbol cuádruple, el bloque actual puede subdividirse en cuatro subdivisiones de forma cuadrada (véase 'SPLIT_QT' de la figura 4 (a)).
La subdivisión de árbol binario se refiere a una técnica de subdivisión que subdivide un bloque actual en dos bloques. Subdividir un bloque actual en dos bloques a lo largo de la dirección vertical (es decir, usar una línea vertical que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección vertical, y subdividir un bloque actual en dos bloques a lo largo de la dirección horizontal (es decir, usar una línea horizontal que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección horizontal. Como resultado de la subdivisión de árbol binario, el bloque actual puede subdividirse en dos subdivisiones de forma no cuadrada. 'SPLIT_BT_VER' de la figura 4 (b) muestra un resultado de la subdivisión de árbol binario de dirección vertical y 'SPLIT_BT_HOR' de la figura 4 (c) muestra un resultado de la subdivisión de árbol binario de dirección horizontal.
La subdivisión de árbol ternario se refiere a una técnica de subdivisión que subdivide un bloque actual en tres bloques. Subdividir un bloque actual en tres bloques a lo largo de la dirección vertical (es decir, usar dos líneas verticales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección vertical, y subdividir un bloque actual en tres bloques a lo largo de la dirección horizontal (es decir, usar dos líneas horizontales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección horizontal. Como resultado de la subdivisión de árbol ternario, el bloque actual puede subdividirse en tres subdivisiones de forma no cuadrada. En este punto, la anchura/altura de una subdivisión situada en el centro del bloque actual puede ser dos veces más grande que la anchura/altura de las otras subdivisiones. 'SPLIT_TT_VER' de la figura 4 (d) muestra un resultado de la subdivisión de árbol ternario de dirección vertical y 'SPLIT_TT_HOR' de la figura 4 (e) muestra un resultado de la subdivisión de árbol ternario de dirección horizontal.
El número de veces de subdivisión de una unidad de árbol de codificación puede definirse como una profundidad de subdivisión. La profundidad de subdivisión máxima de una unidad de árbol de codificación puede determinarse a un nivel de secuencia o de imagen. En consecuencia, la profundidad de subdivisión máxima de una unidad de árbol de codificación puede ser diferente para cada secuencia o imagen.
Como alternativa, la profundidad de subdivisión máxima para cada técnica de subdivisión puede determinarse individualmente. Por ejemplo, la profundidad de subdivisión máxima permitida para la subdivisión de árbol cuádruple puede ser diferente de la profundidad de subdivisión máxima permitida para la subdivisión de árbol binario y/o la subdivisión de árbol ternario.
El codificador puede señalizar información que indica al menos uno de entre el tipo de subdivisión y la profundidad de subdivisión del bloque actual a través de un flujo de bits. El decodificador puede determinar el tipo de subdivisión y la profundidad de subdivisión de una unidad de árbol de codificación basándose en la información analizada desde el flujo de bits.
La figura 5 es una vista que muestra un patrón de subdivisión de una unidad de árbol de codificación.
Subdividir un bloque de codificación usando una técnica de subdivisión tal como una subdivisión de árbol cuádruple, una subdivisión de árbol binario y/o subdivisión de árbol ternario puede denominarse subdivisión de árbol múltiple.
Los bloques de codificación generados mediante la aplicación de la subdivisión de árbol múltiple a un bloque de codificación pueden denominarse bloques de codificación inferiores. Cuando la profundidad de subdivisión de un bloque de codificación es k, la profundidad de subdivisión de los bloques de codificación inferiores se establece a k 1.
Por el contrario, para los bloques de codificación que tienen una profundidad de subdivisión de k 1, un bloque de codificación que tiene una profundidad de subdivisión de k puede denominarse bloque de codificación superior.
El tipo de subdivisión del bloque de codificación actual puede determinarse basándose en al menos uno de entre un tipo de subdivisión de un bloque de codificación superior y un tipo de subdivisión de un bloque de codificación vecino. En el presente caso, el bloque de codificación vecino es un bloque de codificación adyacente al bloque de codificación actual y puede incluir al menos uno de entre un bloque vecino superior y un bloque vecino izquierdo del bloque de codificación actual, y un bloque vecino adyacente a la esquina superior izquierda. En el presente caso, el tipo de subdivisión puede incluir al menos uno de entre si se aplica la subdivisión de árbol cuádruple, si se aplica la subdivisión de árbol binario, una dirección de subdivisión de árbol binario, si se aplica la subdivisión de árbol ternario y una dirección de subdivisión de árbol ternario.
Para determinar un tipo de subdivisión de un bloque de codificación, puede señalizarse información que indica si puede subdividirse, o no, el bloque de codificación a través de un flujo de bits. La información es una bandera de 1 bit de 'split_cu_flag' y cuando la bandera es verdadera, indica que el bloque de codificación se subdivide mediante una técnica de subdivisión de árbol cuádruple.
Cuando split_cu_flag es verdadera, puede señalizarse información que indica si el bloque de codificación se subdivide en árbol cuádruple a través de un flujo de bits. La información es una bandera de 1 bit de split_qt_flag, y cuando la bandera es verdadera, el bloque de codificación puede subdividirse en cuatro bloques.
Por ejemplo, en el ejemplo mostrado en la figura 5, como una unidad de árbol de codificación se subdivide en árbol cuádruple, se generan cuatro bloques de codificación que tienen una profundidad de subdivisión de 1. Además, se muestra que la subdivisión de árbol cuádruple se aplica de nuevo al primer y cuarto bloque de codificación de entre los cuatro bloques de codificación generados como resultado de la subdivisión de árbol cuádruple. Como resultado, pueden generarse cuatro bloques de codificación que tienen una profundidad de subdivisión de 2.
Además, los bloques de codificación que tienen una profundidad de subdivisión de 3 pueden generarse mediante la aplicación de la subdivisión de árbol cuádruple de nuevo a un bloque de codificación que tiene una profundidad de subdivisión de 2.
Cuando no se aplica una subdivisión de árbol cuádruple al bloque de codificación, puede determinarse si se realiza una subdivisión de árbol binario o una subdivisión de árbol ternario sobre el bloque de codificación considerando al menos uno de entre el tamaño del bloque de codificación, si el bloque de codificación se sitúa en el límite de imagen, la profundidad de subdivisión máxima y el tipo de subdivisión de un bloque vecino. Cuando se determina realizar una subdivisión de árbol binario o una subdivisión de árbol ternario sobre el bloque de codificación, puede señalizarse información que indica la dirección de subdivisión a través de un flujo de bits. La información puede ser una bandera de 1 bit de mtt_split_cu_vertical_flag. Basándose en la bandera, puede determinarse si la dirección de subdivisión es una dirección vertical o una dirección horizontal. Además, puede señalizarse información que indica si se aplica una subdivisión de árbol binario o una subdivisión de árbol ternario al bloque de codificación a través de un flujo de bits. La información puede ser una bandera de 1 bit de mtt_split_cu_binary flag. Basándose en la bandera, puede determinarse si se aplica una subdivisión de árbol binario o una subdivisión de árbol ternario al bloque de codificación.
Por ejemplo, en el ejemplo mostrado en la figura 5, se muestra que la subdivisión de árbol binario de dirección vertical se aplica a un bloque de codificación que tiene una profundidad de subdivisión de 1, la subdivisión de árbol ternario de dirección vertical se aplica al bloque de codificación del lado izquierdo de entre los bloques de codificación generados como resultado de la subdivisión y la subdivisión de árbol binario de dirección vertical se aplica al bloque de codificación del lado derecho.
La inter predicción es un modo de codificación de predicción que predice un bloque actual mediante el uso de información de una imagen previa. Por ejemplo, un bloque en la misma posición que el bloque actual en la imagen previa (en lo sucesivo en el presente documento, un bloque ubicado conjuntamente) puede establecerse como el bloque de predicción del bloque actual. En lo sucesivo en el presente documento, un bloque de predicción generado basándose en un bloque en la misma posición que el bloque actual se denominará bloque de predicción ubicado conjuntamente.
Por otra parte, cuando un objeto existente en la imagen previa se ha movido a otra posición en la imagen actual, el bloque actual puede predecirse eficazmente mediante el uso de un movimiento del objeto. Por ejemplo, cuando pueden conocerse la dirección de movimiento y el tamaño de un objeto mediante la comparación de la imagen previa y la imagen actual, puede generarse un bloque de predicción (o una imagen de predicción) del bloque actual considerando información de movimiento del objeto. En lo sucesivo en el presente documento, el bloque de predicción generado usando información de movimiento puede denominarse bloque de predicción de movimiento.
Puede generarse un bloque residual restando el bloque de predicción del bloque actual. En este punto, cuando hay un movimiento de un objeto, la energía del bloque residual puede reducirse mediante el uso del bloque de predicción de movimiento en lugar del bloque de predicción ubicado conjuntamente y, por lo tanto, puede mejorarse el rendimiento de compresión del bloque residual.
Como se ha descrito anteriormente, generar un bloque de predicción mediante el uso de información de movimiento puede denominarse predicción de compensación de movimiento. En la mayoría de la inter predicción, puede generarse un bloque de predicción basándose en la predicción de compensación de movimiento.
La información de movimiento puede incluir al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional. El vector de movimiento indica la dirección de movimiento y el tamaño de un objeto. El índice de imagen de referencia especifica una imagen de referencia del bloque actual de entre imágenes de referencia incluidas en una lista de imágenes de referencia. La dirección de predicción indica una cualquiera de entre una predicción L0 unidireccional, una predicción L1 unidireccional y una predicción bidireccional (predicción L0 y predicción L1). De acuerdo con la dirección de predicción del bloque actual, puede usarse al menos una de entre información de movimiento en la dirección L0 e información de movimiento en la dirección L1. El índice de factor de ponderación bidireccional especifica un valor de ponderación aplicado a un bloque de predicción L0 y un valor de ponderación aplicado a un bloque de predicción L1.
La figura 6 es un diagrama de flujo que ilustra un método de inter predicción de acuerdo con una realización de la presente divulgación.
Haciendo referencia a la figura 9, el método de inter predicción incluye las etapas de determinar un modo de inter predicción de un bloque actual (S601), adquirir información de movimiento del bloque actual de acuerdo con el modo de inter predicción determinado (S602) y realizar predicción de compensación de movimiento para el bloque actual basándose en la información de movimiento adquirida (S603).
En el presente caso, el modo de inter predicción representa diversas técnicas para determinar información de movimiento del bloque actual, y puede incluir un modo de inter predicción que usa información de movimiento de traslación y un modo de inter predicción que usa información de movimiento afín. Por ejemplo, el modo de inter predicción que usa información de movimiento de traslación puede incluir un modo de fusión y un modo de predicción de vector de movimiento, y el modo de inter predicción que usa información de movimiento afín puede incluir un modo de fusión afín y un modo de predicción de vector de movimiento afín. La información de movimiento del bloque actual puede determinarse basándose en un bloque vecino adyacente al bloque actual o información analizada desde un flujo de bits de acuerdo con el modo de inter predicción.
En lo sucesivo en el presente documento, se describirá con detalle el método de inter predicción que usa información de movimiento afín.
La figura 7 es una vista que muestra movimientos no lineales de un objeto.
Puede generare un movimiento no lineal de un objeto en un vídeo. Por ejemplo, como se muestra en el ejemplo de la figura 7, puede tener lugar un movimiento no lineal de un objeto, tal como un zum de acercamiento, un zum de alejamiento, una rotación, una transformada afín o similares de una cámara. Cuando tiene lugar un movimiento no lineal de un objeto, el movimiento del objeto no puede expresarse eficazmente con un vector de movimiento de traslación. En consecuencia, puede mejorarse la eficiencia de codificación usando un movimiento afín en lugar de un movimiento de traslación en un área en la que tiene lugar un movimiento no lineal de un objeto.
La figura 8 es un diagrama de flujo que ilustra un método de inter predicción basándose en un movimiento afín de acuerdo con una realización de la presente divulgación.
Puede determinarse si se aplica una técnica de inter predicción basándose en un movimiento afín al bloque actual basándose en la información analizada a partir de un flujo de bits. Específicamente, si se aplica la técnica de inter predicción basándose en un movimiento afín al bloque actual puede determinarse basándose en al menos una de entre una bandera que indica si se aplica el modo de fusión afín al bloque actual y una bandera que indica si se aplica el modo de predicción de vector de movimiento afín al bloque actual.
Cuando se aplica la técnica de inter predicción basándose en un movimiento afín al bloque actual, puede determinarse un modelo de movimiento afín del bloque actual (S1101 ^ S801). El modelo de movimiento afín puede determinarse como al menos uno de entre un modelo de movimiento afín de seis parámetros y un modelo de movimiento afín de cuatro parámetros. El modelo de movimiento afín de seis parámetros expresa un movimiento afín usando seis parámetros, y el modelo de movimiento afín de cuatro parámetros expresa un movimiento afín usando cuatro parámetros.
La ecuación 1 expresa un movimiento afín usando seis parámetros. El movimiento afín representa un movimiento de traslación para un área predeterminada determinada por vectores de semilla afines.
[Ecuación l]
Vx<=>ax — by e
vy<=>ex<+>dy f
Cuando se expresa un movimiento afín usando seis parámetros, puede expresarse un movimiento complicado. Sin embargo, a medida que aumenta el número de bits requerido para codificar cada uno de los parámetros, puede reducirse la eficiencia de codificación. En consecuencia, el movimiento afín puede expresarse usando cuatro parámetros. La ecuación 2 expresa un movimiento afín usando cuatro parámetros.
[Ecuación 2]
vx<=>ax — by e
vy = bx ay f
Puede codificarse información para determinar un modelo de movimiento afín del bloque actual, y señalizarse la misma a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit de 'affine_type_flag'. Cuando el valor de la bandera es 0, puede indicar que se aplica un modelo de movimiento afín de 4 parámetros, y cuando el valor de la bandera es 1, puede indicar que se aplica un modelo de movimiento afín de 6 parámetros. La bandera puede codificarse mediante la unidad de sector, de tesela o de bloque (por ejemplo, mediante la unidad de bloque de codificación o de árbol de codificación). Cuando se señaliza una bandera al nivel de sector, puede aplicarse un modelo de movimiento afín determinado al nivel de sector a todos los bloques que pertenecen al sector.
Como alternativa, puede determinarse un modelo de movimiento afín del bloque actual basándose en un modo de inter predicción afín del bloque actual. Por ejemplo, cuando se aplica el modo de fusión afín, puede determinarse el modelo de movimiento afín del bloque actual como un modelo de movimiento de 4 parámetros. Por otro lado, cuando se aplica el modo de predicción de vector de movimiento afín, puede codificarse y señalizarse información para determinar el modelo de movimiento afín del bloque actual a través de un flujo de bits. Por ejemplo, cuando se aplica el modo de predicción de vector de movimiento afín al bloque actual, puede determinarse el modelo de movimiento afín del bloque actual basándose en la bandera de 1 bit de 'affine_type_flag'.
A continuación, puede derivarse un vector de semilla afín del bloque actual (S1102 ^ S802). Cuando se selecciona un modelo de movimiento afín de 4 parámetros, pueden derivarse vectores de movimiento en dos puntos de control del bloque actual. Por otro lado, cuando se selecciona un modelo de movimiento afín de 6 parámetros, pueden derivarse vectores de movimiento en tres puntos de control del bloque actual. El vector de movimiento en un punto de control puede denominarse vector de semilla afín. El punto de control puede incluir al menos una de entre la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda del bloque actual.
La figura 9 es una vista que muestra un ejemplo de vectores de semilla afines de cada modelo de movimiento afín.
En el modelo de movimiento afín de 4 parámetros, pueden derivarse vectores de semilla afines para dos de entre la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda. Por ejemplo, como se muestra en el ejemplo de la figura 9 (a), cuando se selecciona un modelo de movimiento afín de 4 parámetros, puede derivarse un vector afín usando el vector de semilla afín sv<0>para la esquina superior izquierda del bloque actual (por ejemplo, la muestra superior izquierda (x1, y1)) y el vector de semilla afín sv<1>para la esquina superior derecha del bloque actual (por ejemplo, la muestra superior derecha (x1, y1)). También es posible usar un vector de semilla afín para la esquina inferior izquierda en lugar del vector de semilla afín para la esquina superior izquierda, o usar un vector de semilla afín para la esquina inferior izquierda en lugar del vector de semilla afín para la esquina superior derecha.
En el modelo de movimiento afín de 6 parámetros, pueden derivarse vectores de semilla afines para la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda. Por ejemplo, como se muestra en el ejemplo de la figura 9 (b), cuando se selecciona un modelo de movimiento afín de 6 parámetros, puede derivarse un vector afín usando el vector de semilla afín sv<0>para la esquina superior izquierda del bloque actual (por ejemplo, muestra superior izquierda (x1, y1)), el vector de semilla afín sv<1>para la esquina superior derecha del bloque actual (por ejemplo, la muestra superior derecha (x1, y1)) y el vector de semilla afín sv<2>para la esquina superior izquierda del bloque actual (por ejemplo, la muestra superior izquierda (x2, y2)).
En la realización descrita a continuación, en el modelo de movimiento afín de 4 parámetros, los vectores de semilla afines del punto de control superior izquierdo y del punto de control superior derecho se denominarán primer vector de semilla afín y segundo vector de semilla afín, respectivamente. En las realizaciones que usan el primer vector de semilla afín y el segundo vector de semilla afín descritos a continuación, puede sustituirse al menos uno de entre el primer vector de semilla afín y el segundo vector de semilla afín por el vector de semilla afín del punto de control inferior izquierdo (un tercer vector de semilla afín) o el vector de semilla afín del punto de control inferior derecho (un cuarto vector de semilla afín).
Además, en el modelo de movimiento afín de 6 parámetros, los vectores de semilla afines del punto de control superior izquierdo, el punto de control superior derecho y el punto de control inferior izquierdo se denominarán primer vector de semilla afín, segundo vector de semilla afín y tercer vector de semilla afín, respectivamente. En las realizaciones que usan el primer vector de semilla afín, el segundo vector de semilla afín y el tercer vector de semilla afín descritos a continuación, puede sustituirse al menos uno de entre el primer vector de semilla afín, el segundo vector de semilla afín y el tercer vector de semilla afín por el vector de semilla afín del punto de control inferior derecho (un cuarto vector de semilla afín).
Puede derivarse un vector afín para cada subbloque usando los vectores de semilla afines (S 1103). En el presente caso, el vector afín representa un vector de movimiento de traslación derivado basándose en los vectores de semilla afines. El vector afín de un subbloque puede denominarse vector de movimiento de subbloque afín o un vector de movimiento de subbloque.
La figura 10 es una vista que muestra un ejemplo de vectores afines de subbloques en un modelo de movimiento de 4 parámetros.
El vector afín del subbloque puede derivarse basándose en la posición del punto de control, la posición del subbloque y el vector de semilla afín. Por ejemplo, la ecuación 3 muestra un ejemplo de derivación de un vector de subbloque afín.
En la ecuación 3, (x, y) denota la posición de un subbloque. En el presente caso, la posición de un subbloque indica la posición de una muestra de referencia incluida en el subbloque. La muestra de referencia puede ser una muestra situada en la esquina superior izquierda del subbloque o una muestra de la que al menos una de entre las coordenadas del eje x y del eje y es un punto central. (x<0>, yü) denota la posición del primer punto de control y (svüx, svüy) denota el primer vector de semilla afín. Además, (x<1>, y<1>) denota la posición del segundo punto de control y (sv<1>x, sv<1>y) denota el segundo vector de semilla afín.
Cuando el primer punto de control y el segundo punto de control corresponden a la esquina superior izquierda y a la esquina superior derecha del bloque actual, respectivamente, X<1>-X<0>puede establecerse a un valor igual a la anchura del bloque actual.
Posteriormente, puede realizarse una predicción de compensación de movimiento para cada subbloque usando el vector afín de cada subbloque (S1104 ^ S804). Como resultado de la realización de predicción de compensación de movimiento, puede generarse un bloque de predicción para cada subbloque. Los bloques de predicción de los subbloques pueden establecerse como los bloques de predicción del bloque actual.
A continuación, se describirá en detalle un método de predicción intermedia que utiliza información de movimiento de traslación.
La información de movimiento del bloque actual puede derivarse de información de movimiento de otro bloque. En el presente caso, otro bloque puede ser un bloque codificado/decodificado mediante inter predicción antes del bloque actual. Establecer que la información de movimiento del bloque actual para que sea igual a la información de movimiento de otro bloque puede definirse como un modo de fusión. Además, establecer el vector de movimiento de otro bloque como el valor de predicción del vector de movimiento del bloque actual puede definirse como un modo de predicción de vector de movimiento.
La figura 11 es un diagrama de flujo que ilustra un proceso para derivar información de movimiento de un bloque actual usando un modo de fusión.
Puede derivarse un candidato de fusión del bloque actual (S1101). El candidato de fusión del bloque actual puede derivarse de un bloque codificado/decodificado mediante inter predicción antes del bloque actual.
La figura 12 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión. Los bloques candidatos pueden incluir al menos uno de entre bloques vecinos que incluyen una muestra adyacente al bloque actual o bloques no vecinos que incluyen una muestra no adyacente al bloque actual. En lo sucesivo en el presente documento, las muestras para determinar los bloques candidatos se definen como muestras de referencia. Además, una muestra de referencia adyacente al bloque actual se denomina muestra de referencia vecina, y una muestra de referencia no adyacente al bloque actual se denomina muestra de referencia no vecina.
La muestra de referencia vecina puede incluirse en una columna vecina de la columna más a la izquierda del bloque actual o una fila vecina de la fila más superior del bloque actual. Por ejemplo, cuando las coordenadas de la muestra superior izquierda del bloque actual son (0, 0), puede usarse al menos una de entre un bloque que incluye una muestra de referencia en la posición de (-1, H-1), un bloque que incluye una muestra de referencia en la posición de (W-1, -1), un bloque que incluye una muestra de referencia en la posición de (W, -1), un bloque que incluye una muestra de referencia en la posición de (-1, H) y un bloque que incluye una muestra de referencia en la posición de (-1, -1) como un bloque candidato. Haciendo referencia al dibujo, pueden usarse bloques vecinos del índice 0 a 4 como bloques candidatos.
La muestra de referencia no vecina representa una muestra de la que al menos una de entre una distancia del eje x y una distancia del eje y con respecto a una muestra de referencia adyacente al bloque actual tiene un valor predefinido. Por ejemplo, puede usarse al menos uno de entre un bloque que incluye una muestra de referencia de la cual la distancia del eje x con respecto a la muestra de referencia izquierda es un valor predefinido, un bloque que incluye una muestra no vecina de la cual la distancia del eje y con respecto a la muestra de referencia superior es un valor predefinido, y un bloque que incluye una muestra no vecina de la cual la distancia del eje x y la distancia del eje y con respecto a la muestra de referencia superior izquierda son valores predefinidos como un bloque candidato. Los valores predefinidos pueden ser un número natural tal como 4, 8, 12, 16 o similares. Haciendo referencia al dibujo, puede usarse al menos uno de entre los bloques del índice 5 a 26 como un bloque candidato.
Una muestra que no esté situada en la misma línea vertical, horizontal o diagonal que la muestra de referencia vecina se puede establecer como muestra de referencia no vecina.
La figura 13 es una vista que muestra las posiciones de muestras de referencia.
Según se muestra en el ejemplo de la figura 13, las coordenadas x de las muestras de referencia no vecinas superiores se pueden establecer para que sean diferentes de las coordenadas x de las muestras de referencia vecinas superiores. Por ejemplo, cuando la posición de la muestra de referencia vecina superior es (W-1, -1), la posición de una muestra de referencia no vecina superior separada tanto como N de la muestra de referencia vecina superior en el eje y se puede establecer en ((W/2)-1, -1-N), y la posición de una muestra de referencia no vecina superior separada tanto como 2N de la muestra de referencia vecina superior en el eje y se puede establecer en (0, -1-2N). Es decir, la posición de una muestra de referencia no adyacente se puede determinar basándose en la posición de una muestra de referencia adyacente y una distancia desde la muestra de referencia adyacente.
En lo sucesivo, un bloque candidato que incluya una muestra de referencia vecina de entre los bloques candidatos se denominará bloque vecino, y un bloque que incluya una muestra de referencia no vecina se denominará bloque no vecino.
Cuando la distancia entre el bloque actual y el bloque candidato es mayor o igual que un valor umbral, el bloque candidato se puede establecer como no disponible como candidato de fusión. El valor umbral se puede determinar basándose en el tamaño de la unidad de árbol de codificación. Por ejemplo, el valor umbral se puede establecer en la altura (ctu_height) de la unidad de árbol de codificación o en un valor obtenido sumando o restando un desplazamiento a o desde la altura (por ejemplo, ctu_height ± N) de la unidad de árbol de codificación. El desplazamiento N es un valor predefinido en el codificador y el decodificador, y se puede establecer en 4, 8, 16, 32 o ctu_height.
Cuando la diferencia entre la coordenada del eje y del bloque actual y la coordenada del eje y de una muestra incluida en un bloque candidato es mayor que el valor umbral, se puede determinar que el bloque candidato no está disponible como candidato de fusión.
Como alternativa, puede establecerse que un bloque candidato que no pertenece a la misma unidad de árbol de codificación que el bloque actual no esté disponible como candidato de fusión. Por ejemplo, cuando una muestra de referencia se desvía del límite superior de una unidad de árbol de codificación a la que pertenece el bloque actual, puede establecerse que un bloque candidato que incluye la muestra de referencia no esté disponible como candidato de fusión.
Cuando el límite superior del bloque actual es adyacente al límite superior de la unidad de árbol de codificación, se determina que varios bloques candidatos no están disponibles como candidatos de fusión y, por lo tanto, la eficacia de codificación/decodificación del bloque actual puede disminuir. Para resolver este problema, los bloques candidatos pueden establecerse de forma que el número de bloques candidatos situados en el lado izquierdo del bloque actual sea mayor que el número de bloques candidatos situados en la parte superior del bloque actual.
La figura 14 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
Según se muestra en el ejemplo de la figura 14, los bloques superiores que pertenecen a las N columnas superiores del bloque actual y los bloques del lado izquierdo que pertenecen a las M columnas del lado izquierdo del bloque actual pueden establecerse como bloques candidatos. En este punto, el número de bloques candidatos del lado izquierdo puede ser mayor que el número de bloques candidatos superiores estableciendo M mayor que N.
Por ejemplo, la diferencia entre la coordenada del eje y de la muestra de referencia en el bloque actual y la coordenada del eje y del bloque superior que puede utilizarse como bloque candidato se puede establecer de modo que no supere N veces la altura del bloque actual. Además, la diferencia entre la coordenada del eje x de la muestra de referencia en el bloque actual y la coordenada del eje x del bloque del lado izquierdo que puede utilizarse como bloque candidato se puede establecer de modo que no supere M veces la anchura del bloque actual.
Por ejemplo, en el ejemplo mostrado en la figura 14, se muestra que los bloques pertenecientes a las dos columnas de bloque superiores del bloque actual y los bloques pertenecientes a las cinco columnas de bloque izquierdas del bloque actual se establecen como bloques candidatos.
Un candidato de fusión también puede derivarse de un bloque temporalmente vecino incluido en una imagen diferente del bloque actual. Por ejemplo, un candidato de fusión puede derivarse de un bloque ubicado conjuntamente incluido en una imagen ubicada conjuntamente.
Puede establecerse que la información de movimiento del candidato de fusión sea igual a la información de movimiento del bloque candidato. Por ejemplo, al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional del bloque candidato puede establecerse como información de movimiento del candidato de fusión.
Puede generarse una lista de candidatos de fusión que incluye candidatos de fusión (S1102). Los candidatos de fusión pueden dividirse en un candidato de fusión adyacente obtenido de un bloque vecino adyacente al bloque actual y un candidato de fusión no adyacente obtenido de un bloque no vecino.
Los índices de candidatos de fusión en la lista de candidatos de fusión pueden asignarse de acuerdo con un orden predeterminado. Por ejemplo, un índice asignado a un candidato de fusión adyacente puede tener un valor menor que un índice asignado a un candidato de fusión no adyacente. Como alternativa, un índice se puede asignar a cada uno de los candidatos de fusión basándose en el índice de cada bloque mostrado en la figura 12 o 14.
Cuando se incluye una pluralidad de candidatos de fusión en la lista de candidatos de fusión, puede seleccionarse al menos uno de entre la pluralidad de candidatos de fusión (S1103). En este punto, la información que indica si la información de movimiento del bloque actual se obtiene de un candidato de fusión adyacente se puede indicar a través de un flujo de bits. La información puede ser una bandera de 1 bit. Por ejemplo, un elemento de sintaxis isAdjancentMergeFlag que indique si la información de movimiento del bloque actual se obtiene de un candidato de fusión adyacente se puede indicar a través de un flujo de bits. Cuando el valor del elemento de sintaxis isAdjancentMergeFlag es 1, la información de movimiento del bloque actual se puede obtener basándose en el candidato de fusión adyacente. Por otra parte, cuando el valor del elemento de sintaxis isAdjancentMergeFlag es 0, la información de movimiento del bloque actual se puede obtener basándose en un candidato de fusión no adyacente.
Puede señalizarse información para especificar uno cualquiera de entre una pluralidad de candidatos de fusión a través de un flujo de bits. Por ejemplo, puede señalizarse información que indica un índice de uno cualquiera de entre los candidatos de fusión incluidos en la lista de candidatos de fusión a través de un flujo de bits.
Cuando isAdjacentMergeflag es 1, se puede indicar el elemento sintáctico merge_idx especificando uno cualquiera de entre los candidatos de fusión adyacentes. El valor máximo del elemento sintáctico merge_idx se puede establecer en un valor obtenido restando 1 del número de candidatos de fusión adyacentes.
Cuando isAdjacentMergeflag es 0, se puede indicar el elemento sintáctico NA_merge_idx especificando uno cualquiera de los candidatos de fusión no adyacentes. El elemento sintáctico NA_merge_idx representa un valor obtenido restando el número de candidatos de fusión adyacentes del índice del candidato de fusión no adyacente. El decodificador puede seleccionar un candidato de fusión no adyacente sumando el número de candidatos de fusión adyacentes a un índice especificado por NA_merge_idx.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es menor que un valor umbral, el candidato de fusión incluido en la lista de información de movimiento inter-región puede añadirse a la lista de candidatos de fusión. En el presente caso, el valor umbral puede ser el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión o un valor obtenido restando un desplazamiento del número máximo de candidatos de fusión. El desplazamiento puede ser un número natural tal como 1,2 o similares. La lista de información de movimiento inter-región puede incluir un candidato de fusión derivado basándose en un bloque codificado/decodificado antes del bloque actual.
La lista de información de movimiento inter-región incluye un candidato de fusión derivado de un bloque codificado/decodificado basándose en la inter predicción en la imagen actual. Por ejemplo, puede establecerse que la información de movimiento de un candidato de fusión incluido en la lista de información de movimiento inter región sea igual a la información de movimiento de un bloque codificado/decodificado basándose en una inter predicción. En el presente caso, la información de movimiento puede incluir al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional.
Para facilitar la explicación, un candidato de fusión incluido en la lista de información de movimiento inter-región se denominará candidato de fusión inter-región.
El número máximo de candidatos de fusión que puede incluir la lista de información de movimiento inter-región puede ser predefinido por un codificador y un decodificador. Por ejemplo, el número máximo de candidatos de fusión que la lista de información de movimiento inter-región puede incluir puede ser 1,2, 3, 4, 5, 6, 7, 8 o más (por ejemplo, 16).
Como alternativa, la información que indica el número máximo de candidatos de fusión en la lista de información de movimiento inter-región se puede indicar a través de un flujo de bits. La información se puede indicar a nivel de secuencia, imagen o corte.
Como alternativa, el número máximo de candidatos de fusión de la lista de información de movimiento inter-región se puede determinar de acuerdo con el tamaño de una imagen, el tamaño de un sector o el tamaño de una unidad de árbol de codificación.
La lista de información de movimiento inter-región puede ser inicializada por la unidad de imagen, rebanada, mosaico, ladrillo, unidad de árbol de codificación, o línea de unidad de árbol de codificación (fila o columna). Por ejemplo, cuando se inicializa una rebanada, también se inicializa la lista de información de movimiento inter-región, y la lista de información de movimiento inter-región puede no incluir ningún candidato de fusión.
Como alternativa, la información que indica si inicializar o no la lista de información de movimiento inter-región se puede indicar a través de un flujo de bits. La información puede ser señalada a nivel de rebanada, baldosa, ladrillo o bloque. Hasta que la información indique que se debe inicializar la lista de información de movimiento inter-región, se puede utilizar una lista de información de movimiento inter-región previamente configurada.
Como alternativa, la información sobre el candidato inicial a la fusión inter-región se puede indicar a través de un conjunto de parámetros de imagen o una cabecera de corte. Aunque el corte esté inicializado, la lista de información de movimiento inter-región puede incluir el candidato de fusión inter-región inicial. En consecuencia, se puede utilizar un candidato de fusión inter-región para un bloque que sea el primer objetivo de codificación/decodificación en el corte.
Los bloques se codifican/decodifican de acuerdo con un orden de codificación/decodificación, y los bloques codificados/decodificados basándose en inter predicción pueden establecerse secuencialmente como un candidato de fusión inter-región de acuerdo con un orden de codificación/decodificación.
La figura 15 es un diagrama de flujo que ilustra un proceso de actualización de una lista de información de movimiento de inter región.
Cuando se realiza la inter predicción en el bloque actual (S1501), se puede obtener un candidato de fusión inter-región basándose en el bloque actual (S 1502). Puede establecerse que la información de movimiento del candidato de fusión inter-región sea igual a la información de movimiento del bloque candidato.
Cuando la lista de información de movimiento inter-región está vacía (S1503), el candidato de fusión inter-región obtenido basándose en el bloque actual se puede añadir a la lista de información de movimiento inter-región (S1504).
Cuando la lista de información de movimiento inter-región ya incluye el candidato de fusión inter-región (S1503), se puede realizar una comprobación de redundancia en la información de movimiento del bloque actual (o del candidato de fusión inter-región obtenido basándose en el bloque actual) (S 1505). La comprobación de redundancia sirve para determinar si la información de movimiento de un candidato de fusión inter-región almacenada previamente en la lista de información de movimiento inter-región y la información de movimiento del bloque actual son iguales. La comprobación de redundancia se puede llevar a cabo en todos los candidatos de fusión inter-región previamente almacenados en la lista de información de movimiento inter-región. Como alternativa, la comprobación de redundancia se puede llevar a cabo en los candidatos de fusión inter-región que tengan un índice mayor que un valor umbral o menor que un valor umbral de entre los candidatos de fusión inter-región previamente almacenados en la lista de información de movimiento inter-región.
Cuando no se incluye un candidato de fusión inter-región que tiene la misma información de movimiento que la información de movimiento del bloque actual, el candidato de fusión inter-región obtenido del bloque actual se puede añadir a la lista de información de movimiento inter-región (S 1508). Si los candidatos de fusión inter-región son iguales se puede determinar basándose en si la información de movimiento (por ejemplo, un vector de movimiento y/o un índice de la imagen de referencia) de los candidatos de fusión inter-región es la misma.
En este punto, cuando el número máximo de candidatos de fusión inter-región ya está almacenado en la lista de información de movimiento inter-región (S1506), el candidato de fusión inter-región más antiguo se elimina (S 1507), y el candidato de fusión inter-región obtenido basándose en el bloque actual se puede añadir a la lista de información de movimiento inter-región (S 1508).
Cada uno de los candidatos de fusión inter-región puede identificarse mediante un índice. Cuando un candidato de fusión inter-región obtenido del bloque actual se añade a la lista de información de movimiento inter-región, el índice más bajo (por ejemplo, 0) se asigna al candidato de fusión inter-región, y los índices de los candidatos de fusión inter región almacenados previamente pueden incrementarse en 1. En este punto, cuando el número máximo de candidatos de fusión inter-región ya están almacenados en la lista de información de movimiento inter-región, se elimina un candidato de fusión inter-región que tiene el índice más grande.
Como alternativa, cuando el candidato de fusión inter-región obtenido del bloque actual se añade a la lista de información de movimiento inter-región, se puede asignar el índice mayor al candidato de fusión inter-región. Por ejemplo, cuando el número de candidatos de fusión inter-región previamente almacenados en la lista de información de movimiento inter-región es menor que un valor máximo, se puede asignar al candidato de fusión inter-región un índice que tenga el mismo valor que el número de candidatos de fusión inter-región previamente almacenados. Como alternativa, cuando el número de candidatos de fusión inter-región almacenados previamente en la lista de información de movimiento inter-región es el mismo que el valor máximo, se puede asignar al candidato de fusión inter-región un índice que reste 1 al valor máximo. Además, se elimina un candidato de fusión inter-región que tenga el índice más pequeño, y los índices de los restantes candidatos de fusión inter-región almacenados previamente pueden reducirse en 1.
La figura 16 es una vista que muestra una realización de la actualización de una lista de candidatos de fusión de inter región.
Se supone que a medida que el candidato de fusión inter-región obtenido del bloque actual se añade a la lista de candidatos de fusión inter-región, se asigna el índice mayor al candidato de fusión inter-región. Además, se supone que el número máximo de candidatos de fusión inter-región ya está almacenado en la lista de candidatos de fusión inter-región.
Cuando el candidato de fusión inter-región HmvpCand[n 1] obtenido del bloque actual se añade a la lista de candidatos de fusión inter-región HmvpCandList, el candidato de fusión inter-región HmvpCand[0] que tiene el índice más pequeño de entre los candidatos de fusión inter-región previamente almacenados se elimina, y los índices de los restantes candidatos de fusión inter-región pueden reducirse en 1. Además, el índice del candidato de fusión inter región HmvpCand[n 1] obtenido del bloque actual se puede establecer en un valor máximo (n en el ejemplo mostrado en la figura 16).
Cuando se almacena previamente un candidato de fusión inter-región igual al candidato de fusión inter-región obtenido basándose en el bloque actual (S 1505), el candidato de fusión inter-región obtenido basándose en el bloque actual puede no añadirse a la lista de información de movimiento inter-región (S 1509).
Como alternativa, cuando el candidato de fusión inter-región obtenido del bloque actual se añade a la lista de información de movimiento inter-región, puede eliminarse un candidato de fusión inter-región previamente almacenado que sea el mismo que el candidato de fusión inter-región. En este caso, se obtiene un efecto igual al de actualizar de nuevo el índice del candidato de fusión inter-región previamente almacenado.
La figura 17 es una vista que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión de inter región previamente almacenado.
Cuando el índice de un candidato de fusión inter-región previamente almacenado mvCand que es el mismo que el candidato de fusión inter-región mvCand obtenido basándose en el bloque actual es hIdx, el candidato de fusión inter región previamente almacenado se elimina, y los índices de los candidatos de fusión inter-región que tienen un índice mayor que hIdx pueden disminuirse en 1. Por ejemplo, en el ejemplo mostrado en la figura 17, se muestra que HmvpCand[2] el mismo que mvCand se borra de la lista de información de movimiento inter-región HvmpCandList, y los índices de HmvpCand[3] a HmvpCand[n] se disminuyen en 1.
Además, el candidato de fusión inter-región mvCy obtenido basándose en el bloque actual se puede añadir al final de la lista de información de movimiento inter-región.
Como alternativa, el índice asignado al candidato de fusión inter-regional previamente almacenado que es el mismo que el candidato de fusión inter-regional obtenido basándose en el bloque actual puede ser actualizado. Por ejemplo, el índice del candidato de fusión inter-región previamente almacenado puede cambiarse a un valor mínimo o a un valor máximo.
Puede establecerse que no se añada la información de movimiento de los bloques incluidos en un área predeterminada a la lista de información de movimiento inter-región. Por ejemplo, un candidato de fusión inter-región derivado basándose en la información de movimiento de un bloque incluido en el área de procesamiento de fusión no puede añadirse a la lista de información de movimiento inter-región. Dado que no se ha definido un orden de codificación/decodificación para los bloques incluidos en el área de procesamiento de fusión, no es apropiado utilizar la información de movimiento de cualquiera de los bloques para la inter predicción de otro bloque. En consecuencia, los candidatos de fusión inter-región derivados basándose en los bloques incluidos en el área de procesamiento de fusión no pueden añadirse a la lista de información de movimiento inter-región.
Cuando la unidad de subbloque realiza la predicción de compensación de movimiento, se puede obtener un candidato de fusión inter-región basándose en la información de movimiento de un subbloque representativo de entre varios subbloques incluidos en el bloque actual. Por ejemplo, cuando se utiliza un candidato de fusión de subbloque para el bloque actual, se puede obtener un candidato de fusión inter-región basándose en la información de movimiento de un subbloque representativo de entre los subbloques.
Los vectores de movimiento de los subbloques se pueden obtener en el siguiente orden. En primer lugar, se selecciona uno de los candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual y se obtiene un vector de desplazamiento inicial (shVector) basándose en el vector de movimiento del candidato de fusión seleccionado. A continuación, se puede obtener un subbloque de desplazamiento, en el que la posición de la muestra de referencia es (xColSb, yColSb), ya que el vector de desplazamiento inicial se añade a la posición (xSb, ySb) de la muestra de referencia (por ejemplo, la muestra superior izquierda o la muestra en el centro) de cada subbloque en el bloque de codificación. La ecuación 4 muestra una ecuación para obtener un subbloque de desplazamiento.
[Ecuación 4]
(xColSb,yColSb) = (xSb + shVector{0] » 4,ySb + sh.Vector[l] »4)
Entonces, el vector de movimiento de un bloque colocado correspondiente a la posición central del subbloque que incluye (xColSb, yColSb) se puede establecer como el vector de movimiento del subbloque que incluye (xSb, ySb).
Por subbloque representativo puede entenderse un subbloque que incluya la muestra superior izquierda o la muestra situada en el centro del bloque actual.
La figura 18 es una vista que muestra la posición de un subbloque representativo.
La figura 18 (a) muestra un ejemplo en el que el subbloque colocado en la parte superior izquierda del bloque actual se establece como el subbloque representativo, y la FIG. 18 (b) muestra un ejemplo en el que el subbloque colocado en el centro del bloque actual se establece como el subbloque representativo. Cuando la predicción de compensación de movimiento se lleva a cabo por unidad de subbloque, se puede obtener un candidato de fusión inter-región del bloque actual basándose en el vector de movimiento del subbloque que incluya la muestra superior izquierda del bloque actual o el subbloque que incluya la muestra en el centro del bloque actual.
Se puede determinar si utilizar o no el bloque actual como candidato de fusión inter-región, basándose en el modo de inter predicción del bloque actual. Por ejemplo, un bloque codificado/decodificado basándose en un modelo de movimiento afín puede establecerse para que no esté disponible como candidato de fusión inter-región. En consecuencia, aunque el bloque actual se codifique/decodifique mediante inter predicción, cuando el modo de inter predicción del bloque actual es el modo de predicción afín, la lista de información de movimiento inter región puede no actualizarse basándose en el bloque actual.
Como alternativa, el candidato de fusión inter-región puede derivarse basándose en al menos un vector de subbloque de entre los subbloques incluidos en el bloque codificado/decodificado basándose en el modelo de movimiento afín. Por ejemplo, el candidato de fusión inter-región se puede obtener utilizando un subbloque posicionado en la parte superior izquierda, un subbloque posicionado en el centro, o un subbloque posicionado en la parte superior derecha del bloque actual. Como alternativa, un valor medio de los vectores de subbloque de varios subbloques se puede establecer como el vector de movimiento del candidato de fusión inter-región.
Como alternativa, el candidato de fusión inter-región puede derivarse basándose en un valor promedio de vectores semilla afines del bloque codificado/decodificado basándose en el modelo de movimiento afín. Por ejemplo, una media de al menos uno de entre el primer vector semilla afín, el segundo vector semilla afín y el tercer vector semilla afín del bloque actual se puede establecer como el vector de movimiento del candidato de fusión inter-región.
Como alternativa, puede configurarse una lista de información de movimiento inter-región para cada modo de inter predicción. Por ejemplo, puede definirse al menos una de entre una lista de información de movimiento inter-región para un bloque codificado/decodificado por copia intra-bloque, una lista de información de movimiento inter-región para un bloque codificado/decodificado basándose en un modelo de movimiento de traslación, y una lista de información de movimiento inter-región para un bloque codificado/decodificado basándose en un modelo de movimiento afín. De acuerdo con el modo de inter predicción del bloque actual, se puede seleccionar una cualquiera de entre una pluralidad de listas de información de movimiento inter-región.
La figura 19 es una vista que muestra un ejemplo en el que se genera una lista de información de movimiento de inter región para cada modo de inter predicción.
Cuando un bloque se codifica/decodifica basándose en un modelo de movimiento no afín, un candidato de fusión inter región mvCand obtenido basándose en el bloque se puede añadir a una lista inter-región de información de movimiento no afín HmvpCandList. Por otro lado, cuando un bloque se codifica/decodifica basándose en un modelo de movimiento afín, un candidato de fusión inter-región mvAfCand obtenido basándose en el bloque se puede añadir a una lista de información de movimiento afín inter-región HmvpAfCandList.
Los vectores semilla afines de un bloque codificado/decodificado basándose en el modelo de movimiento afín pueden almacenarse en un candidato de fusión inter-región derivado del bloque. En consecuencia, el candidato de fusión inter región puede utilizarse como candidato de fusión para obtener el vector semilla afín del bloque actual.
Además de la lista de información de movimiento inter-región descrita anteriormente, puede definirse una lista adicional de información de movimiento inter-región. Además de la lista de información de movimiento inter-región descrita anteriormente (denominada en lo sucesivo primera lista de información de movimiento inter-región), puede definirse una lista de información de movimiento a largo plazo (denominada en lo sucesivo segunda lista de información de movimiento inter-región). Aquí, la lista de información de movimiento a largo plazo incluye candidatos de fusión a largo plazo.
Cuando tanto la primera lista de información de movimiento inter-región como la segunda lista de información de movimiento inter-región estén vacías, podrán añadirse primero candidatos de fusión inter-región a la segunda lista de información de movimiento inter-región. Sólo después de que el número de candidatos de fusión inter-región disponibles alcance el número máximo en la segunda lista de información de movimiento inter-región, podrán añadirse candidatos de fusión inter-región a la primera lista de información de movimiento inter-región.
Como alternativa, se puede añadir un candidato de fusión inter-región tanto a la segunda lista de información de movimiento inter-región como a la primera lista de información de movimiento inter-región.
En este punto, la segunda lista de información de movimiento inter-región, cuya configuración se ha completado, puede no actualizarse más. Como alternativa, cuando la región decodificada es mayor o igual que una proporción predeterminada del segmento, la segunda lista de información de movimiento inter-región puede actualizarse. Como alternativa, la segunda lista de información de movimiento inter-región puede ser actualizada para cada N líneas de unidad de árbol de codificación.
Por otro lado, la primera lista de información de movimiento inter-región puede actualizarse siempre que se genere un bloque codificado/decodificado mediante inter predicción. Sin embargo, se puede establecer que no se utilice el candidato de fusión inter-región añadido a la segunda lista de información de movimiento inter-región, para actualizar la primera lista de información de movimiento inter-región.
La información para seleccionar cualquiera de entre la primera lista de información de movimiento inter-región y la segunda lista de información de movimiento inter-región se puede indicar a través de un flujo de bits. Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es menor que un valor umbral, el candidato de fusión incluido en la lista de información de movimiento inter-región puede añadirse a la lista de candidatos de fusión.
Como alternativa, se puede seleccionar una lista de información de movimiento inter-región basándose en el tamaño y la forma del bloque actual, el modo de inter predicción, si la predicción bidireccional está activada, si el perfeccionamiento del vector de movimiento está activado, o si la subdivisión triangular está activada.
Como alternativa, aunque se añada un candidato de fusión inter-región incluido en la primera lista de información de movimiento inter-región, cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo de fusiones, los candidatos de fusión inter-región incluidos en la segunda lista de información de movimiento inter-región podrán añadirse a la lista de candidatos de fusión.
La figura 20 es una vista que muestra un ejemplo en el que un candidato de fusión de inter región incluido en una lista de información de movimiento a largo plazo se añade a una lista de candidatos de fusión.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es menor que el número máximo, los candidatos de fusión inter-región incluidos en la primera lista de información de movimiento inter-región HmvpCyList podrán añadirse a la lista de candidatos de fusión. Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo, aunque los candidatos de fusión inter-región incluidos en la primera lista de información de movimiento inter-región se añadan a la lista de candidatos de fusión, los candidatos de fusión inter-región incluidos en la lista de información de movimiento a largo plazo HmvpLTCandList podrán añadirse a la lista de candidatos de fusión.
El candidato de fusión inter-región puede estar configurado para incluir información adicional, además de la información de movimiento. Por ejemplo, para el candidato de fusión inter-región, puede almacenarse adicionalmente información sobre el tamaño, la forma o la subdivisión de un bloque. Cuando se construye la lista de candidatos de fusión del bloque actual, sólo se utilizan de entre los candidatos de fusión inter-región los que tienen un tamaño, una forma o una información de subdivisión iguales o similares a los del bloque actual, o bien se pueden añadir a la lista de candidatos de fusión en primer lugar los candidatos de fusión inter-región que tienen un tamaño, una forma o una información de subdivisión iguales o similares a los del bloque actual.
Como alternativa, se puede generar una lista de información de movimiento inter-región para cada información de tamaño, forma o subdivisión de un bloque. Entre las varias listas de información de movimiento inter-región, se puede generar una lista de candidatos de fusión del bloque actual utilizando una lista de información de movimiento inter región correspondiente a la información de forma, tamaño o subdivisión del bloque actual.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual es menor que el valor umbral, los candidatos de fusión inter-región incluidos en la lista de información de movimiento inter-región se pueden añadir a la lista de candidatos de fusión. El proceso de adición se realiza en un orden ascendente o descendente basándose en el índice. Por ejemplo, un candidato de fusión inter-región que tenga el índice más alto se puede añadir primero a la lista de candidatos de fusión.
Cuando se desea añadir un candidato de fusión inter-región incluido en la lista de información de movimiento inter región a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia entre el candidato de fusión inter-región y los candidatos de fusión almacenados previamente en la lista de candidatos de fusión.
La comprobación de redundancia se puede llevar a cabo sólo en algunos de los candidatos de fusión inter-región incluidos en la lista de información de movimiento inter-región. Por ejemplo, la comprobación de redundancia se puede llevar a cabo sólo en los candidatos de fusión inter-región que tengan un índice mayor que un valor umbral o menor que un valor umbral. Como alternativa, la comprobación de redundancia se puede llevar a cabo sólo en N candidatos de fusión que tengan el índice mayor o N candidatos de fusión que tengan el índice menor.
Como alternativa, la comprobación de redundancia se puede llevar a cabo sólo en algunos de los candidatos de fusión previamente almacenados en la lista de candidatos de fusión. Por ejemplo, la comprobación de redundancia se puede llevar a cabo sólo en un candidato de fusión que tenga un índice mayor que un valor umbral o menor que un valor umbral, o en un candidato de fusión obtenido de un bloque en una posición específica. Aquí, la posición específica puede incluir al menos uno de entre un bloque vecino izquierdo, un bloque vecino superior, un bloque vecino superior derecho, y un bloque vecino inferior izquierdo del bloque actual.
La figura 21 es una vista que muestra un ejemplo en el que se realiza una comprobación de redundancia únicamente en algunos de los candidatos de fusión.
Cuando se desea añadir el candidato de fusión inter-región HmvpCand[j] a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión inter-región con dos candidatos de fusión mergeCandList[NumMerge-2] y mergeCandList[NumMerge-1] que tengan los mayores índices. Aquí, NumMerge puede representar el número de candidatos de fusión espacial y candidatos de fusión temporal que están disponibles.
A diferencia del ejemplo mostrado en el dibujo, cuando se desea añadir un candidato de fusión inter-región HmvpCand[j] a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión inter-región con hasta dos candidatos de fusión que tengan el índice más pequeño. Por ejemplo, es posible comprobar si mergeCandList[0] y mergeCandList[1] coinciden con HmvpCand[j]. Como alternativa, se puede realizar una comprobación de redundancia sólo en los candidatos de fusión obtenidos en una posición específica. Por ejemplo, la comprobación de redundancia se puede llevar a cabo en al menos uno de los candidatos de fusión obtenidos de un bloque vecino situado a la izquierda del bloque actual y un candidato de fusión obtenido de un bloque vecino situado en la parte superior del bloque actual. Cuando un candidato de fusión obtenido en una posición específica no existe en la lista de candidatos de fusión, se puede añadir un candidato de fusión inter-región a la lista de candidatos de fusión sin realizar una comprobación de redundancia.
Cuando se encuentra un candidato de fusión igual al primer candidato de fusión inter-región y se lleva a cabo una comprobación de redundancia en el segundo candidato de fusión inter-región, puede omitirse la comprobación de redundancia con un candidato de fusión igual al primer candidato de fusión inter-región.
La figura 22 es una vista que muestra un ejemplo en el que se omite una comprobación de redundancia para un candidato de fusión específico.
Cuando se desea añadir un candidato de fusión inter-región HmvpCand[i] con índice i a la lista de candidatos de fusión, se lleva a cabo una comprobación de redundancia entre el candidato de fusión inter-región y los candidatos de fusión almacenados previamente en la lista de candidatos de fusión. En este punto, cuando se encuentra un candidato de fusión mergeCandList[j] igual al candidato de fusión inter-región HmvpCand[i], la comprobación de redundancia se puede llevar a cabo entre el candidato de fusión inter-región HmvpCand[i-1] con índice i-1 y los candidatos de fusión sin añadir el candidato de fusión inter-región HmvpCand[i] a la lista de candidatos de fusión. En este punto, puede omitirse la comprobación de redundancia entre el candidato de fusión inter-región HmvpCand[i-1] y el candidato de fusión mergeCandList[j].
Por ejemplo, en el ejemplo mostrado en la figura 22, se determina que HmvpCand[i] y mergeCandList[2] son iguales. En consecuencia, HmvpCand[i] no se añade a la lista de candidatos de fusión, y se puede realizar una comprobación de redundancia en HmvpCand[i-1]. En este punto, puede omitirse la comprobación de redundancia entre HvmpCand[i-1] y mergeCandList[2].
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual es inferior al valor umbral, puede incluirse al menos un candidato de fusión por pares y un candidato de fusión cero, además del candidato de fusión inter-región. El candidato de fusión por pares es un candidato de fusión que tiene un valor medio de los vectores de movimiento de dos o más candidatos de fusión como vector de movimiento, y el candidato de fusión cero es un candidato de fusión que tiene un vector de movimiento 0.
Un candidato de fusión se puede añadir a la lista de candidatos de fusión del bloque actual en el siguiente orden.
Candidato a la fusión espacial - Candidato a la fusión temporal - Candidato a la fusión inter-región - (Candidato a la fusión inter-región afín) - Candidato a la fusión por pares - Candidato a la fusión cero
El candidato de fusión espacial es un candidato de fusión obtenido de al menos un bloque vecino y un bloque no vecino, y el candidato de fusión temporal es un candidato de fusión obtenido de una imagen de referencia anterior. El candidato de fusión afín inter-región representa un candidato de fusión inter-región obtenido de un bloque codificado/decodificado con un modelo de movimiento afín.
La lista de información de movimiento inter-región también puede usarse en el modo de predicción de vector de movimiento. Por ejemplo, cuando el número de modo de predicción de vectores de movimiento incluidos en una lista de modo de predicción de vectores de movimiento del bloque actual es inferior a un valor umbral, un candidato de fusión inter-región incluido en la lista de información de movimiento inter-región se puede establecer como candidato de predicción de vector de movimiento para el bloque actual. Específicamente, el vector de movimiento del candidato de fusión inter-región se puede establecer como un candidato de predicción de vector de movimiento.
Cuando se selecciona uno de los candidatos de predicción de vectores de movimiento incluidos en la lista de candidatos de predicción de vectores de movimiento del bloque actual, el candidato seleccionado se puede establecer como el predictor del vector de movimiento del bloque actual. A partir de entonces, después de decodificar un coeficiente residual del vector de movimiento del bloque actual, se puede obtener un vector de movimiento del bloque actual sumando el predictor del vector de movimiento y el coeficiente residual del vector de movimiento.
La lista de candidatos a la predicción del vector de movimiento del bloque actual puede configurarse en el siguiente orden.
Candidato a la predicción del vector de movimiento espacial - Candidato a la predicción del vector de movimiento temporal - Candidato a la fusión inter-región - (Candidato a la fusión afín inter-región) - Candidato a la predicción del vector de movimiento cero
El candidato de predicción de vector de movimiento espacial es un candidato de predicción de vector de movimiento obtenido de al menos uno de los bloques vecinos y no vecinos, y el candidato de predicción de vector de movimiento temporal es un candidato de predicción de vector de movimiento obtenido de una imagen de referencia anterior. El candidato de fusión afín inter-región representa un candidato de predicción de vector de movimiento inter-región obtenido de un bloque codificado/decodificado con el modelo de movimiento afín. El candidato de predicción de vector de movimiento cero representa un candidato que tiene un valor de vector de movimiento de 0.
Un bloque de codificación puede subdividirse en una pluralidad de unidades de predicción y la predicción puede realizarse sobre cada una de las unidades de predicción subdivididas. En el presente caso, una unidad de predicción representa una unidad básica para realizar la predicción.
Un bloque de codificación puede subdividirse usando al menos una de entre una línea vertical, una línea horizontal, una línea oblicua y una línea diagonal. Puede señalizarse información para determinar al menos uno de entre el número, los ángulos y las posiciones de líneas que subdividen un bloque de codificación a través de un flujo de bits. Por ejemplo, puede señalizarse información que indica uno cualquiera de entre candidatos de tipo de subdivisión de un bloque de codificación a través de un flujo de bits, o puede señalizarse información que especifica uno cualquiera de entre una pluralidad de candidatos de línea para subdivisión de un bloque de codificación a través de un flujo de bits. Como alternativa, puede señalizarse información para determinar el número o tipos de candidatos de línea que subdividen un bloque de codificación a través del flujo de bits. Por ejemplo, si una línea oblicua que tiene un ángulo mayor que el de una línea diagonal y/o una línea oblicua que tiene un ángulo menor que el de una línea diagonal puede usarse como candidato de línea puede determinarse usando una bandera de 1 bit.
Como alternativa, puede determinarse adaptativamente al menos uno de entre el número, los ángulos y las posiciones de líneas que subdividen un bloque de codificación basándose en al menos uno de entre el modo de intra predicción del bloque de codificación, el modo de inter predicción del bloque de codificación, la posición de un candidato de fusión disponible del bloque de codificación y un patrón de subdivisión de un bloque vecino.
Cuando un bloque de codificación se subdivide en una pluralidad de unidades de predicción, la intra predicción o la inter predicción pueden realizarse sobre cada una de las unidades de predicción subdivididas.
La figura 23 es una vista que muestra ejemplos de aplicación de subdivisión de un bloque de codificación para obtener una pluralidad de unidades de predicción usando una línea diagonal.
Como se muestra en los ejemplos de las figuras 23 (a) y 23 (b), un bloque de codificación puede subdividirse en dos unidades de predicción triangulares usando una línea diagonal.
En las figuras 23 (a) y 23 (b), se muestra que un bloque de codificación se subdivide en dos unidades de predicción usando una línea diagonal que conecta dos vértices del bloque de codificación. Sin embargo, el bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, al menos un extremo de la cual no pasa a través de un vértice del bloque de codificación.
La figura 24 es una vista que muestra ejemplos de aplicación de subdivisión de un bloque de codificación para obtener dos unidades de predicción.
Como se muestra en los ejemplos de las figuras 24 (a) y 24 (b), un bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, ambos extremos de la cual están en contacto con el límite superior y el límite inferior del bloque de codificación, respectivamente.
Como alternativa, como se muestra en los ejemplos de las figuras 24 (c) y 24 (d), un bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, ambos extremos de la cual están en contacto con el límite izquierdo y el límite derecho del bloque de codificación, respectivamente.
Como alternativa, un bloque de codificación puede subdividirse en dos bloques de predicción de tamaño diferente. Por ejemplo, un bloque de codificación puede subdividirse en dos unidades de predicción de tamaño diferente estableciendo una subdivisión de línea oblicua del bloque de codificación para entrar en contacto con dos superficies fronterizas que forman un vértice.
La figura 25 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en una pluralidad de bloques de predicción de diferente tamaño.
Como se muestra en los ejemplos de las figuras 25 (a) y 25 (b), debido a que se establece que una línea diagonal que conecta las esquinas superior izquierda e inferior derecha del bloque de codificación pase a través del límite izquierdo, el límite derecho, el límite superior o el límite inferior, en lugar de pasar a través de la esquina superior izquierda o la esquina inferior derecha del bloque de codificación, el bloque de codificación puede subdividirse en dos unidades de predicción que tienen diferentes tamaños.
Como alternativa, como se muestra en los ejemplos de las figuras 25 (c) y 25 (d), debido a que se establece que una línea diagonal que conecta las esquinas superior derecha e inferior izquierda del bloque de codificación pase a través del límite izquierdo, el límite derecho, el límite superior o el límite inferior, en lugar de pasar a través de la esquina superior izquierda o la esquina inferior derecha del bloque de codificación, el bloque de codificación puede subdividirse en dos unidades de predicción que tienen diferentes tamaños.
Cada una de las unidades de predicción generadas subdividiendo un bloque de codificación se denominará 'N-ésima unidad de predicción'. Por ejemplo, en los ejemplos mostrados en las figuras 23 a 25, PU1 puede definirse como una primera unidad de predicción y PU2 puede definirse como una segunda unidad de predicción. La primera unidad de predicción significa una unidad de predicción que incluye una muestra ubicada conjuntamente en la parte inferior izquierda o una muestra situada en la parte superior izquierda en el bloque de codificación, y la segunda unidad de predicción significa una unidad de predicción que incluye una muestra ubicada conjuntamente en la parte superior derecha o una muestra situada en la parte inferior derecha en el bloque de codificación.
Por el contrario, una unidad de predicción que incluye una muestra ubicada en la parte superior derecha o una muestra ubicada en la parte inferior derecha en el bloque de codificación puede definirse como una primera unidad de predicción, y una unidad de predicción que incluye una muestra ubicada en la parte inferior izquierda o una muestra ubicada en la parte superior izquierda en el bloque de codificación puede definirse como una segunda unidad de predicción.
Las realizaciones a continuación se describen centrándose en ejemplos de subdivisión de un bloque de codificación usando una línea diagonal. Particularmente, la subdivisión de un bloque de codificación en dos unidades de predicción usando una línea diagonal se denomina subdivisión diagonal o subdivisión triangular, y una unidad de predicción generada basándose en la subdivisión diagonal se denomina unidad de predicción triangular. Sin embargo, también es posible aplicar las realizaciones descritas a continuación a los ejemplos de subdivisión de un bloque de codificación usando una línea oblicua de un ángulo diferente del de una línea vertical, una línea horizontal o una línea diagonal.
Puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en al menos uno de entre un tipo de sector, el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión, el tamaño del bloque de codificación, la forma del bloque de codificación, el modo de codificación de predicción del bloque de codificación y el patrón de subdivisión del nodo primario.
Por ejemplo, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si el sector actual es de tipo B. Una subdivisión diagonal puede permitirse solo cuando el sector actual es de tipo B.
Como alternativa, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si el número máximo de candidatos de fusión incluidos en la lista de candidatos de fusión es dos o más. La subdivisión diagonal puede permitirse solo cuando el número máximo de candidatos de fusión incluidos en la lista de candidatos de fusión es dos o más.
Como alternativa, cuando al menos una de entre la anchura y la altura es mayor que 64 en la implementación de hardware, existe un problema en que se accede de forma redundante a una unidad de procesamiento de datos de un tamaño de 64 x 64. En consecuencia, cuando al menos una de entre la anchura y la altura del bloque de codificación es mayor que un valor umbral, puede no permitirse subdividir un bloque de codificación en una pluralidad de bloques de predicción. Por ejemplo, cuando al menos una de entre la anchura y la altura de un bloque de codificación es mayor que 64 (por ejemplo, cuando al menos una de entre la anchura y la altura es 128), puede no usarse una subdivisión diagonal.
Como alternativa, puede no permitirse la subdivisión diagonal para un bloque de codificación del cual el número de muestras es mayor que un valor umbral, considerando el número máximo de muestras que pueden procesarse simultáneamente en la implementación de hardware. Por ejemplo, puede no permitirse la subdivisión diagonal para un bloque de árbol de codificación del cual el número de muestras es mayor que 4.096.
Como alternativa, puede no permitirse una subdivisión diagonal para un bloque de codificación del cual el número de muestras incluidas en el bloque de codificación es menor que un valor umbral. Por ejemplo, puede establecerse no aplicar la subdivisión diagonal a un bloque de codificación cuando el número de muestras incluidas en el bloque de codificación es menor que 64.
Como alternativa, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si la relación de anchura a altura del bloque de codificación es menor que un primer valor umbral o si la relación de anchura a altura del bloque de codificación es mayor que un segundo valor umbral. En el presente caso, la relación de anchura a altura whRatio del bloque de codificación puede determinarse como una relación de la anchura CbW con respecto a la altura CbH del bloque de codificación como se muestra en la Ecuación 5.
[Ecuación 5]
whRatio = CbW/CbH
El segundo valor umbral puede ser un número inverso del primer valor umbral. Por ejemplo, cuando el primer valor umbral es k, el segundo valor umbral puede ser 1/k.
La subdivisión diagonal puede aplicarse a un bloque de codificación solo cuando la relación de anchura a altura del bloque de codificación está entre el primer valor umbral y el segundo valor umbral.
Como alternativa, puede usarse una subdivisión triangular solo cuando la relación de anchura a altura del bloque de codificación es menor que el primer valor umbral o mayor que el segundo valor umbral. Por ejemplo, cuando el primer valor umbral es 16, puede no permitirse una subdivisión diagonal para un bloque de codificación de un tamaño 64 x 4 o 4 x 64.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el patrón de subdivisión del nodo primario. Por ejemplo, cuando un bloque de codificación de nodo primario se subdivide basándose en una subdivisión de árbol cuádruple, puede aplicarse una subdivisión diagonal a un bloque de codificación de nodo hoja. Por otra parte, puede establecerse no permitir la subdivisión diagonal al bloque de codificación de nodo hoja cuando el bloque de codificación de nodo primario se subdivide basándose en una subdivisión de árbol binario o de árbol ternario.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el modo de codificación de predicción de un bloque de codificación. Por ejemplo, puede permitirse la subdivisión diagonal solo cuando el bloque de codificación se codifica mediante intra predicción, cuando el bloque de codificación se codifica mediante inter predicción, o cuando el bloque de codificación se codifica mediante un modo de inter predicción predefinido. En el presente caso, el modo de inter predicción predefinido puede representar al menos uno de entre un modo de fusión, un modo de predicción de vector de movimiento, un modo de fusión afín y un modo de predicción de vector de movimiento afín.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el tamaño de una región de procesamiento paralelo. Por ejemplo, cuando el tamaño de un bloque de codificación es mayor que el tamaño de una región de procesamiento paralelo, puede no usarse una subdivisión diagonal.
Puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación considerando dos o más de las condiciones enumeras anteriormente.
Como otro ejemplo, puede señalizarse información que indica si aplicar, o no, la subdivisión diagonal a un bloque de codificación a través de un flujo de bits. La información puede señalizarse a un nivel de secuencia, de imagen, de sector o de bloque. Por ejemplo, puede señalizarse una bandera triangle_partition_flag que indica si se aplica una subdivisión triangular a un bloque de codificación a un nivel de bloque de codificación.
Cuando se determina aplicar la subdivisión diagonal a un bloque de codificación, puede señalizarse información que indica el número de líneas que subdividen el bloque de codificación o las posiciones de las líneas a través de un flujo de bits.
Por ejemplo, cuando un bloque de codificación se subdivide mediante una línea diagonal, puede señalizarse información que indica la dirección de la línea diagonal que subdivide el bloque de codificación a través de un flujo de bits. Por ejemplo, puede señalizarse una bandera triangIe_partition_type_flag que indica la dirección de la línea diagonal a través de un flujo de bits. La bandera indica si el bloque de codificación se subdivide mediante una línea diagonal que conecta la esquina superior izquierda y la esquina inferior derecha o si el bloque de codificación se subdivide mediante una línea diagonal que conecta la esquina superior derecha y la esquina inferior izquierda. La subdivisión de un bloque de codificación por una línea diagonal que conecta la esquina superior izquierda y la esquina inferior derecha puede denominarse tipo de subdivisión triangular izquierda, y la subdivisión de un bloque de codificación por una línea diagonal que conecta la esquina superior derecha y la esquina inferior izquierda puede denominarse tipo de subdivisión triangular derecha. Por ejemplo, cuando el valor de la bandera es 0, puede indicar que el tipo de subdivisión del bloque de codificación es el tipo de subdivisión triangular izquierda, y cuando el valor de la bandera es 1, puede indicar que el tipo de subdivisión del bloque de codificación es el tipo de subdivisión triangular derecha.
Además, puede señalizarse información que indica si las unidades de predicción tienen el mismo tamaño o información que indica la posición de una línea diagonal para subdividir el bloque de codificación a través de un flujo de bits. Por ejemplo, cuando la información que indica los tamaños de las unidades de predicción indica que los tamaños de las unidades de predicción son iguales, se omite la codificación de la información que indica la posición de la diagonal y el bloque de codificación puede subdividirse en dos unidades de predicción usando una línea diagonal que pasa a través de dos vértices del bloque de codificación. Por otra parte, cuando la información que indica los tamaños de las unidades de predicción indica que los tamaños de las unidades de predicción no son los mismos, puede determinarse la posición de la línea diagonal que subdivide el bloque de codificación basándose en la información que indica la posición de la línea diagonal. Por ejemplo, cuando el tipo de subdivisión triangular izquierda se aplica a una codificación adyacente a la esquina superior derecha, a un bloque vecino adyacente a la esquina inferior izquierda, a un bloque vecino ubicado en la parte superior y a un bloque vecino ubicado en el lado izquierdo. Por ejemplo, puede establecerse que el tipo de subdivisión del bloque actual sea igual que el tipo de subdivisión de un bloque vecino. Como alternativa, puede determinarse el tipo de subdivisión del bloque actual basándose en si el tipo de subdivisión triangular izquierda se aplica al bloque vecino superior izquierda o si el tipo de subdivisión triangular derecha se aplica al bloque vecino superior derecha o al bloque vecino inferior izquierda.
Para realizar la compensación de predicción de movimiento sobre una primera unidad de predicción triangular y una segunda unidad de predicción triangular, puede derivarse información de movimiento de cada una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular. En este punto, la información de movimiento de la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse de candidatos de fusión incluidos en la lista de candidatos de fusión. Para distinguir una lista de candidatos de fusión general de una lista de candidatos de fusión usada para derivar la información de movimiento de las unidades de predicción triangulares, la lista de candidatos de fusión para derivar la información de movimiento de las unidades de predicción triangulares se denomina lista de candidatos de fusión triangular, y un candidato de fusión incluido en la lista de candidatos de fusión triangular se denominará candidato de fusión triangular. Sin embargo, el uso del método para derivar un candidato de fusión y el método para construir una lista de candidatos de fusión descrita anteriormente por los candidatos de fusión triangular y el método para construir la lista de candidatos de fusión triangular también se incluye en la presente divulgación.
Puede señalizarse información para determinar el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular a través de un flujo de bits. La información puede indicar una diferencia entre el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión y el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular.
Los candidatos de fusión triangular pueden derivarse de un bloque espacialmente vecino y un bloque temporalmente vecino de un bloque de codificación.
La figura 26 es una vista que muestra bloques vecinos usados para derivar un candidato de fusión triangular.
Un candidato de fusión triangular puede derivarse usando al menos uno de entre un bloque vecino ubicado en la parte superior de un bloque de codificación, un bloque vecino ubicado en el lado izquierdo del bloque de codificación, y un bloque ubicado conjuntamente incluido en una imagen diferente del bloque de codificación. El bloque vecino superior puede incluir al menos uno de entre un bloque que incluye una muestra (xCb CbW - 1, yCb - 1) situada en la parte superior del bloque de codificación, un bloque que incluye una muestra (xCb CbW, yCb - 1) situada en la parte superior del bloque de codificación y un bloque que incluye una muestra (xCb - 1, yCb - 1) situada en la parte superior del bloque de codificación. El bloque vecino izquierdo puede incluir al menos uno de entre un bloque que incluye una muestra (xCb - 1, yCb CbH - 1) ubicada en el lado izquierdo del bloque de codificación y un bloque que incluye una muestra (xCb - 1, yCb CbH) ubicada en el lado izquierdo del bloque de codificación. El bloque ubicado conjuntamente puede determinarse como uno cualquiera de entre un bloque que incluye una muestra (xCb CbW, yCb CbH) adyacente a la esquina superior derecha del bloque de codificación y un bloque que incluye una muestra (xCb/2, yCb/2) situada en el centro del bloque de codificación, en una imagen ubicada conjuntamente.
Los bloques vecinos pueden buscarse en un orden predefinido, y los candidatos de fusión triangular pueden construirse como una lista de candidatos de fusión triangular de acuerdo con un orden predefinido. Por ejemplo, la lista de candidatos de fusión triangular puede construirse mediante la búsqueda de los candidatos de fusión triangular en el orden de B1, A1, B0, A0, C0, B2 y C1.
La información de movimiento de las unidades de predicción triangulares puede derivarse basándose en la lista de candidatos de fusión triangular. Es decir, las unidades de predicción triangulares pueden compartir una lista de candidatos de fusión triangular.
Para derivar información de movimiento de la unidad de fusión triangular, puede señalizarse información para especificar al menos uno de entre los candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular a través de un flujo de bits. Por ejemplo, puede señalizarse información de índice merge_triangle_idx para especificar al menos uno de entre los candidatos de fusión triangular a través de un flujo de bits.
La información de índice puede especificar una combinación de un candidato de fusión de la primera unidad de predicción triangular y un candidato de fusión de la segunda unidad de predicción triangular. Por ejemplo, la Tabla 1 muestra un ejemplo de una combinación de candidatos de fusión de acuerdo con información de índice merge_triangle_idx.
Tabla 1
Cuando el valor de información de índice merge_triangle_idx es 1, indica que la información de movimiento de la primera unidad de predicción triangular se deriva de un candidato de fusión que tiene un índice de 1, y la información de movimiento de la segunda unidad de predicción triangular se deriva de un candidato de fusión que tiene un índice de 0. Un candidato de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular y un candidato de fusión triangular para derivar información de movimiento de la segunda unidad de predicción triangular pueden determinarse a través de información de índice merge_triangle_idx.
Puede determinarse un tipo de subdivisión de un bloque de codificación al cual se aplica la subdivisión diagonal basándose en la información de índice. Es decir, la información de índice puede especificar una combinación de un candidato de fusión de la primera unidad de predicción triangular, un candidato de fusión de la segunda unidad de predicción triangular y una dirección de subdivisión del bloque de codificación. Cuando se determina un tipo de subdivisión del bloque de codificación basándose en la información de índice, puede no codificarse información triangle_partition_type_flag que indica la dirección de una línea diagonal que subdivide el bloque de codificación. La Tabla 2 expresa tipos de subdivisión de un bloque de codificación con respecto a información de índice merge_triangle_idx.
Tabla 2
Cuando la variable TriangleDir es 0, indica que el tipo de subdivisión triangular izquierda se aplica al bloque de codificación, y cuando la variable TriangleDir es 1, indica que el tipo de subdivisión triangular derecha se aplica al bloque de codificación. Combinando la Tabla 1 y la Tabla 2, puede establecerse especificar una combinación del candidato de fusión de la primera unidad de predicción triangular, el candidato de fusión de la segunda unidad de predicción triangular y la dirección de subdivisión del bloque de codificación mediante información de índice merge_triangle_idx.
Como otro ejemplo, puede señalizarse información de índice solo para una cualquiera de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular, y puede determinarse un índice de un candidato de fusión triangular para la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular basándose en la información de índice. Por ejemplo, un candidato de fusión triangular de la primera unidad de predicción triangular puede determinarse basándose en información de índice merge_triangle_idx que indica un índice de uno cualquiera de entre los candidatos de fusión triangular. Además, puede especificarse un candidato de fusión triangular de la segunda unidad de predicción triangular basándose en merge_triangle_idx. Por ejemplo, el candidato de fusión triangular de la segunda unidad de predicción triangular puede derivarse sumando o restando un desplazamiento a información de índice merge_triangle_idx. El desplazamiento puede ser un número entero tal como 1 o 2. Por ejemplo, un candidato de fusión triangular que tiene un valor obtenido sumando 1 a merge_triangle_idx como un índice puede determinarse como el candidato de fusión triangular de la segunda unidad de predicción triangular. Cuando merge_triangle_idx indica un candidato de fusión triangular que tiene el valor de índice más grande de entre los candidatos de fusión triangular, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de un candidato de fusión triangular que tiene un índice de 0 o un candidato de fusión triangular que tiene un valor obtenido restando 1 de merge_triangle_idx como un índice.
Como alternativa, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de un candidato de fusión triangular que tiene una imagen de referencia igual que la del candidato de fusión triangular de la primera unidad de predicción triangular especificada por la información de índice. En el presente caso, el candidato de fusión triangular que tiene una imagen de referencia igual que el candidato de fusión triangular de la primera unidad de predicción triangular puede indicar un candidato de fusión triangular que tiene al menos uno de entre la imagen de referencia L0 y la imagen de referencia L1 igual que los del candidato de fusión triangular de la primera unidad de predicción triangular. Cuando hay una pluralidad de candidatos de fusión triangular que tienen una imagen de referencia igual que la del candidato de fusión triangular de la primera unidad de predicción triangular, puede seleccionarse al menos uno de entre los candidatos de fusión triangular basándose en si el candidato de fusión incluye información de movimiento bidireccional o un valor de diferencia entre el índice del candidato de fusión y la información de índice.
Como otro ejemplo, puede señalizarse información de índice para cada una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Por ejemplo, pueden señalizarse una primera información de índice 1st_merge_idx para determinar un candidato de fusión triangular de la primera unidad de predicción triangular y una segunda información de índice 2nd_merge_idx para determinar un candidato de fusión triangular de la segunda unidad de predicción triangular a través de un flujo de bits. La información de movimiento de la primera unidad de predicción triangular puede derivarse del candidato de fusión triangular determinado basándose en la primera información de índice 1st_merge_idx, y la información de movimiento de la segunda unidad de predicción triangular puede derivarse del candidato de fusión triangular determinado basándose en la segunda información de índice 2nd_merge_idx.
La primera información de índice 1 st_merge_idx puede indicar un índice de uno cualquiera de entre los candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular. El candidato de fusión triangular de la primera unidad de predicción triangular puede determinarse como un candidato de fusión triangular indicado por primera información de índice 1st_merge_idx.
Puede establecerse no usar el candidato de fusión triangular indicado por la primera información de índice 1st_merge_idx como un candidato de fusión triangular de la segunda unidad de predicción triangular. En consecuencia, la segunda información de índice 2nd_merge_idx de la segunda unidad de predicción triangular puede indicar un índice de uno cualquiera de entre los candidatos de fusión triangular restantes excluyendo el candidato de fusión triangular indicado por la primera información de índice. Cuando el valor de segunda información de índice 2nd_merge_idx es menor que el valor de primera información de índice 1st_merge_idx, el candidato de fusión triangular de la segunda unidad de predicción triangular puede determinarse como un candidato de fusión triangular que tiene la información de índice indicada por segunda información de índice 2nd_merge_idx. Por otro lado, cuando el valor de la segunda información de índice 2nd_merge_idx es igual a o mayor que el valor de la primera información de índice 1st_merge_idx, el candidato de fusión triangular de la segunda unidad de predicción triangular puede determinarse como un candidato de fusión triangular que tiene un valor obtenido sumando 1 al valor de la segunda información de índice 2nd_merge_idx como un índice.
Como alternativa, puede determinarse si señalizar, o no, la segunda información de índice de acuerdo con el número de candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular. Por ejemplo, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular no supera 2, puede omitirse la señalización de la segunda información de índice. Cuando se omite la señalización de la segunda información de índice, puede derivarse un segundo candidato de fusión triangular sumando o restando un desplazamiento a la primera información de índice. Por ejemplo, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular es 2 y la primera información de índice indica el índice 0, el segundo candidato de fusión triangular puede derivarse sumando 1 a la primera información de índice. Como alternativa, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular es 2 y la primera información de índice indica 1, el segundo candidato de fusión triangular puede derivarse restando 1 de la primera información de índice.
Como alternativa, cuando se omite la señalización de la segunda información de índice, la segunda información de índice puede establecerse a un valor por defecto. En el presente caso, el valor por defecto puede ser 0. El segundo candidato de fusión triangular puede derivarse mediante la comparación de la primera información de índice y la segunda información de índice. Por ejemplo, cuando la segunda información de índice es menor que la primera información de índice, un candidato de fusión que tiene el índice 0 puede establecerse como el segundo candidato de fusión triangular, y cuando la segunda información de índice es igual a o mayor que la primera información de índice, un candidato de fusión que tiene el índice 1 puede establecerse como el segundo candidato de fusión triangular.
Cuando el candidato de fusión triangular tiene información de movimiento unidireccional, la información de movimiento unidireccional del candidato de fusión triangular puede establecerse como información de movimiento de la unidad de predicción triangular. Por otro lado, cuando el candidato de fusión triangular tiene información de movimiento bidireccional, solo uno de entre información de movimiento L0 e información de movimiento L1 puede establecerse como información de movimiento de la unidad de predicción triangular. Cuál se tomará de entre la información de movimiento L0 y la información de movimiento L1 puede determinarse basándose en el índice del candidato de fusión triangular o información de movimiento de otra unidad de predicción triangular.
Por ejemplo, cuando el índice del candidato de fusión triangular es un número par, la información de movimiento L0 de la unidad de predicción triangular puede establecerse a 0, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la unidad de predicción triangular. Por otro lado, cuando el índice del candidato de fusión triangular es un número impar, la información de movimiento L1 de la unidad de predicción triangular puede establecerse a 0, y la información de movimiento L0 del candidato de fusión triangular puede establecerse a 0. Por el contrario, cuando el índice del candidato de fusión triangular es un número par, la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la unidad de predicción triangular, y cuando el índice del candidato de fusión triangular es un número impar, la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la unidad de predicción triangular. Como alternativa, cuando el candidato de fusión triangular es un número par para la primera unidad de predicción triangular, la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la primera unidad de predicción triangular, mientras que, cuando el candidato de fusión triangular es un número impar para la segunda unidad de predicción triangular, la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la segunda unidad de predicción triangular.
Como alternativa, cuando la primera unidad de predicción triangular tiene información de movimiento L0, la información de movimiento L0 de la segunda unidad de predicción triangular puede establecerse a 0, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la segunda unidad de predicción triangular. Por otro lado, cuando la primera unidad de predicción triangular tiene información de movimiento L1, la información de movimiento L1 de la segunda unidad de predicción triangular puede establecerse a 0, y la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la segunda unidad de predicción triangular.
Una lista de candidatos de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular y una lista de candidatos de fusión triangular para derivar información de movimiento de la segunda unidad de predicción triangular puede establecerse de forma diferente.
Por ejemplo, cuando un candidato de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular en la lista de candidatos de fusión triangular se especifica basándose en la información de índice para la primera unidad de predicción triangular, la información de movimiento de la segunda unidad de predicción triangular puede derivarse usando la lista de candidatos de fusión triangular que incluye los candidatos de fusión triangular restantes excluyendo el candidato de fusión triangular indicado por la información de índice. Específicamente, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de uno cualquiera de entre los candidatos de fusión triangular restantes.
En consecuencia, el número máximo de candidatos de fusión triangular que incluye la lista de candidatos de fusión triangular de la primera unidad de predicción triangular y el número máximo de candidatos de fusión triangular que incluye la lista de candidatos de fusión triangular de la segunda unidad de predicción triangular puede ser diferente. Por ejemplo, cuando la lista de candidatos de fusión triangular de la primera unidad de predicción triangular incluye M candidatos de fusión, la lista de candidatos de fusión triangular de la segunda unidad de predicción triangular puede incluir M - 1 candidatos de fusión excluyendo el candidato de fusión triangular indicado por la información de índice de la primera unidad de predicción triangular.
Como otro ejemplo, se deriva un candidato de fusión de cada unidad de predicción triangular basándose en bloques vecinos adyacentes a un bloque de codificación, y puede determinarse la disponibilidad de los bloques vecinos considerando la forma o la posición de la unidad de predicción triangular.
La figura 27 es una vista para describir ejemplos de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Un bloque vecino no adyacente a la primera unidad de predicción triangular puede establecerse como no disponible para la primera unidad de predicción triangular, y un bloque vecino no adyacente a la segunda unidad de predicción triangular puede establecerse como no disponible para la segunda unidad de predicción triangular.
Por ejemplo, como se muestra en el ejemplo de la figura 27 (a), cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, puede determinarse que los bloques A1, A0 y A2 adyacentes a la primera unidad de predicción triangular de entre los bloques vecinos adyacentes al bloque de codificación están disponibles para la primera unidad de predicción triangular, mientras que los bloques B0 y B1 no están disponibles para la primera unidad de predicción triangular. En consecuencia, la lista de candidatos de fusión triangular para la primera unidad de predicción triangular puede incluir candidatos de fusión triangular derivados de los bloques A1, A0 y A2 y puede no incluir candidatos de fusión triangular derivados de los bloques B0 y B1.
Como se muestra en el ejemplo de la figura 27 (b), cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, puede determinarse que los bloques B0 y B1 adyacentes a la segunda unidad de predicción triangular están disponibles para la segunda unidad de predicción triangular, mientras que los bloques A1, A0 y A2 no están disponibles para la segunda unidad de predicción triangular. En consecuencia, la lista de candidatos de fusión triangular para la segunda unidad de predicción triangular puede incluir candidatos de fusión triangular derivados de los bloques B0 y B1 y puede no incluir candidatos de fusión triangular derivados de los bloques A1, A0 y A2.
En consecuencia, el número de candidatos de fusión triangular o el intervalo de candidatos de fusión triangular que la unidad de predicción triangular puede usar puede determinarse basándose en al menos uno de entre la posición de la unidad de predicción triangular o el tipo de subdivisión del bloque de codificación.
Como otro ejemplo, el modo de fusión puede aplicarse a solo uno de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Además, puede establecerse que la información de movimiento de la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular sea igual que la información de movimiento de la unidad de predicción triangular a la cual se aplica el modo de fusión, o puede derivarse perfeccionando la información de movimiento de la unidad de predicción triangular a la cual se aplica el modo de fusión.
Por ejemplo, un vector de movimiento y un índice de imagen de referencia de la primera unidad de predicción triangular puede derivarse basándose en un candidato de fusión triangular, y un vector de movimiento de la segunda unidad de predicción triangular puede derivarse perfeccionando el vector de movimiento de la primera unidad de predicción triangular. Por ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse sumando o restando un vector de movimiento de perfeccionamiento {Rx, Ry} al vector de movimiento {mvD1LXx, mvD1LXy} de la primera unidad de predicción triangular. Puede establecerse que el índice de imagen de referencia de la segunda unidad de predicción triangular sea igual que el índice de imagen de referencia de la primera unidad de predicción triangular.
Puede señalizarse información para determinar un vector de movimiento de perfeccionamiento que indica la diferencia entre el vector de movimiento de la primera unidad de predicción triangular y el vector de movimiento de la segunda unidad de predicción triangular a través de un flujo de bits. La información puede incluir al menos una de entre información que indica el tamaño del vector de movimiento de perfeccionamiento e información que indica el signo del vector de movimiento de perfeccionamiento.
Como alternativa, el signo del vector de movimiento de perfeccionamiento puede derivarse basándose en al menos uno de entre la posición de la unidad de predicción triangular, el índice de la unidad de predicción triangular y el tipo de subdivisión aplicado al bloque de codificación.
Como otro ejemplo, puede señalizarse el vector de movimiento y el índice de imagen de referencia de una cualquiera de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. El vector de movimiento de la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse perfeccionando el vector de movimiento señalizado.
Por ejemplo, el vector de movimiento y el índice de imagen de referencia de la primera unidad de predicción triangular pueden determinarse basándose en información señalizada desde un flujo de bits. Además, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse mediante el perfeccionamiento del vector de movimiento de la primera unidad de predicción triangular. Por ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse sumando o restando un vector de movimiento de perfeccionamiento {Rx, Ry} al vector de movimiento {mvD1 LXx, mvD1 LXy} de la primera unidad de predicción triangular. Puede establecerse que el índice de imagen de referencia de la segunda unidad de predicción triangular sea igual que el índice de imagen de referencia de la primera unidad de predicción triangular.
La predicción de compensación de predicción de movimiento para cada bloque de codificación puede realizarse basándose en la información de movimiento de la primera unidad de predicción triangular y la información de movimiento de la segunda unidad de predicción triangular. En este punto, puede tener lugar un deterioro de la calidad de vídeo en el límite entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Por ejemplo, la continuidad de la calidad de vídeo puede deteriorarse en las proximidades de un borde existente en el límite entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Para reducir el deterioro de la calidad de vídeo en el límite, puede derivarse una muestra de predicción a través de un filtro de alisado o una predicción ponderada.
Las muestras de predicción en un bloque de codificación al cual se aplica una subdivisión diagonal pueden derivarse basándose en una operación de suma ponderada de una primera muestra de predicción obtenida basándose en la información de movimiento de la primera unidad de predicción triangular y una segunda muestra de predicción obtenida basándose en la información de movimiento de la segunda unidad de predicción triangular. Como alternativa, una muestra de predicción de la primera unidad de predicción triangular se deriva de un primer bloque de predicción determinado basándose en la información de movimiento de la primera unidad de predicción triangular, y una muestra de predicción de la segunda unidad de predicción triangular se deriva de un segundo bloque de predicción determinado basándose en la información de movimiento de la segunda unidad de predicción triangular, y una muestra de predicción ubicada en la región fronteriza de la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse basándose en una operación de suma ponderada de la primera muestra de predicción incluida en el primer bloque de predicción y la segunda muestra de predicción incluida en el segundo bloque de predicción. Por ejemplo, la Ecuación 6 muestra un ejemplo de derivación de muestras de predicción de la primera unidad de predicción triangular y la segunda unidad de predicción triangular.
[Ecuación 6]
P(x,y) = wl * Pl(x ,y ) (1 — w l) * P2(x,y)
En la Ecuación 6,P1denota una primera muestra de predicción y P2 denota una segunda muestra de predicción.w 1denota un valor de ponderación aplicado a la primera muestra de predicción y (1-wl) denota un valor de ponderación aplicado a la segunda muestra de predicción. Como se muestra en el ejemplo de la Ecuación 6, el valor de ponderación aplicado a la segunda muestra de predicción puede derivarse restando el valor de ponderación aplicado a la primera muestra de predicción de un valor constante.
Cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, la región fronteriza puede incluir muestras de predicción de las cuales la coordenada de eje x y la coordenada de eje y son iguales. Por otro lado, cuando el tipo de subdivisión triangular derecha se aplica a un bloque de codificación, la región fronteriza puede incluir muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es mayor que o igual a un primer valor umbral y menor que un segundo valor umbral.
Puede determinarse un tamaño de la región fronteriza basándose en al menos uno de entre el tamaño del bloque de codificación, la forma del bloque de codificación, información de movimiento de las unidades de predicción triangulares, un valor de diferencia entre los vectores de movimiento de las unidades de predicción triangulares, un orden de salida de imágenes de referencia y un valor de diferencia entre la primera muestra de predicción y la segunda muestra de predicción en el límite diagonal.
Las figuras 28 y 29 son vistas que muestran ejemplos de derivación de una muestra de predicción basándose en una operación de suma ponderada de una primera muestra de predicción y una segunda muestra de predicción. La figura 28 muestra un ejemplo de aplicación del tipo de subdivisión triangular izquierda a un bloque de codificación y la figura 29 muestra un ejemplo de aplicación del tipo de subdivisión triangular derecha a un bloque de codificación. Además, las figuras 28 (a) y 29 (a) son vistas que muestran patrones de predicción para un componente de luma y las figuras 28 (b) y 29 (b) son vistas que muestran patrones de predicción para un componente de croma.
En los dibujos, los números marcados en las muestras de predicción ubicadas cerca del límite entre la primera unidad de predicción y la segunda unidad de predicción indican valores de ponderación aplicados a la primera muestra de predicción. Por ejemplo, cuando un número marcado en una muestra de predicción es N, la muestra de predicción puede derivarse aplicando un valor de ponderación de N/8 a la primera muestra de predicción y aplicando un valor de ponderación de (1-(N/8)) a la segunda muestra de predicción.
En una región no fronteriza, puede determinarse la primera muestra de predicción o la segunda muestra de predicción como una muestra de predicción. Haciendo referencia al ejemplo de la figura 28, en una región que pertenece a la primera unidad de predicción triangular de entre las regiones en las que el valor absoluto de la diferencia de entre la coordenada de eje x y la coordenada de eje y es mayor que un valor umbral, la primera muestra de predicción derivada basándose en la información de movimiento de la primera unidad de predicción triangular puede determinarse como una muestra de predicción. Por otro lado, en una región que pertenece a la segunda unidad de predicción triangular de entre las regiones en las que el valor de diferencia de entre la coordenada de eje x y la coordenada de eje y es mayor que un valor umbral, la segunda muestra de predicción derivada basándose en la información de movimiento de la segunda unidad de predicción triangular puede determinarse como una muestra de predicción.
Haciendo referencia al ejemplo de la figura 29, en una región en la que la suma de la coordenada de eje x y la coordenada de eje y es menor que un primer valor umbral, la primera muestra de predicción derivada basándose en la información de movimiento de la primera unidad de predicción triangular puede determinarse como una muestra de predicción. Por otro lado, en una región en la que la suma de la coordenada de eje x y la coordenada de eje y es mayor que un segundo valor umbral, la segunda muestra de predicción derivada basándose en la información de movimiento de la segunda unidad de predicción triangular puede determinarse como una muestra de predicción.
Puede determinarse un valor umbral para determinar una región no fronteriza basándose en al menos uno de entre el tamaño de un bloque de codificación, la forma del bloque de codificación y un componente de color. Por ejemplo, cuando el valor umbral para un componente de luma se establece a N, el valor umbral para un componente de croma puede establecerse a N/2.
Las muestras de predicción incluidas en la región fronteriza pueden derivarse basándose en una operación de suma ponderada de la primera muestra de predicción y la segunda muestra de predicción. En este punto, pueden determinarse los valores de ponderación aplicados a la primera muestra de predicción y a la segunda muestra de predicción basándose en al menos uno de entre la posición de una muestra de predicción, el tamaño de un bloque de codificación, la forma del bloque de codificación y un componente de color.
Por ejemplo, como se muestra en el ejemplo de la figura 28 (a), pueden derivarse muestras de predicción en la posición de la misma coordenada de eje x y de coordenada de eje y aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales el valor absoluto de la diferencia entre la coordenada de eje x y la coordenada de eje y es 1 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (3 : 1) o (1 : 3). Además, las muestras de predicción de las cuales el valor absoluto de la diferencia de la coordenada de eje x y la coordenada de eje y es 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como alternativa, como se muestra en el ejemplo de la figura 28 (b), pueden derivarse muestras de predicción en la posición de las mismas coordenada de eje x y coordenada de eje y aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción, y pueden derivarse muestras de predicción de las cuales el valor absoluto de la diferencia entre la coordenada de eje x y la coordenada de eje y es 1 estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Por ejemplo, como se muestra en el ejemplo de la figura 29 (a), pueden derivarse muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es más pequeña que la anchura o la altura de un bloque de codificación por 1 aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es igual a o menor que la anchura o la altura del bloque de codificación por 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (3 : 1) o (1 : 3). Pueden derivarse muestras predichas de las cuales la suma de las coordenadas de eje x y las coordenadas de eje y es mayor o más pequeña que la anchura o la altura del bloque de codificación por 1 o 3 estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como alternativa, como se muestra en el ejemplo de la figura 29 (b), pueden derivarse muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es más pequeña que la anchura o la altura del bloque de codificación por 1 aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es igual a o menor que la anchura o la altura del bloque de codificación por 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como otro ejemplo, puede determinarse el valor de ponderación considerando la posición de una muestra de predicción o la forma de un bloque de codificación. Las ecuaciones 7 a 9 muestran un ejemplo de derivación de un valor de ponderación cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación. La Ecuación 7 muestra un ejemplo de derivación de un valor de ponderación aplicado a la primera muestra de predicción cuando el bloque de codificación es una forma cuadrada.
[Ecuación 7]
w l = (x - y 4)/8
En la Ecuación 7, x e y denotan la posición de una muestra de predicción. Cuando un bloque de codificación es una forma no cuadrada, puede derivarse un valor de ponderación aplicado a la primera muestra de predicción como se muestra en la Ecuación 8 o 9. La Ecuación 8 muestra un caso en el que la anchura de un bloque de codificación es mayor que la altura, y la Ecuación 9 muestra un caso en el que la anchura de un bloque de codificación es menor que la altura.
[Ecuación 8]
wl = ((x/whRatio) — y 4)/8
[ Ecuación 9 ]
<w l>—<( x — ( y *>whRatio<)>4)/ 8
Cuando el tipo de subdivisión triangular derecha se aplica a un bloque de codificación, puede determinarse un valor de ponderación aplicado a la primera muestra de predicción como se muestra en las Ecuaciones 10 a 12. La Ecuación 10 muestra un ejemplo de derivación de un valor de ponderación aplicado a la primera muestra de predicción cuando el bloque de codificación es una forma cuadrada.
[Ecuación 10]
<w l =>(CbW<->1- x - y )4)/8
En la Ecuación 10,CbWdenota la anchura de un bloque de codificación. Cuando el bloque de codificación es una forma no cuadrada, puede derivarse el valor de ponderación aplicado a la primera muestra de predicción como se muestra en la Ecuación 11 o Ecuación 12. La Ecuación 11 muestra un caso en el que la anchura de un bloque de codificación es mayor que la altura, y la Ecuación 12 muestra un caso en el que la anchura de un bloque de codificación es menor que la altura.
[Ecuación l l ]
<w l =>((CbH —1 — (x/whRatio) — y)<+>4)/8
[Ecuación 12]
<w l =>(CbW<->1<->x(y<*>whRatio)4)/8
En la Ecuación 11,CbHdenota la altura del bloque de codificación.
Como se muestra en el ejemplo, de entre las muestras de predicción en la región fronteriza, las muestras de predicción incluidas en la primera unidad de predicción triangular se derivan asignando un valor de ponderación mayor que el de la segunda muestra de predicción a la primera muestra de predicción, y las muestras de predicción incluidas en la segunda unidad de predicción triangular se derivan asignando un valor de ponderación mayor que el de la primera muestra de predicción a la segunda muestra de predicción.
Cuando la subdivisión diagonal se aplica a un bloque de codificación, puede establecerse no aplicar un modo de predicción combinada que combina el modo de intra predicción y el modo de fusión al bloque de codificación.
La intra predicción es para predecir un bloque actual usando muestras reconstruidas que se han codificado/decodificado en las proximidades del bloque actual. En este punto, pueden usarse muestras reconstruidas antes de aplicar un filtro en bucle para intra predicción del bloque actual.
La técnica de intra predicción incluye intra predicción basada en matriz e intra predicción general considerando la direccionalidad con respecto a las muestras reconstruidas vecinas. Puede señalizarse información que indica la técnica de intra predicción del bloque actual a través de un flujo de bits. La información puede ser una bandera de 1 bit. Como alternativa, puede determinarse la técnica de intra predicción del bloque actual basándose en al menos uno de entre la posición del bloque actual, el tamaño del bloque actual, la forma del bloque actual y una técnica de intra predicción de un bloque vecino. Por ejemplo, cuando el bloque actual existe a través de un límite de imagen, puede establecerse no aplicar la intra predicción de intra predicción basada en matriz al bloque actual.
La intra predicción de intra predicción basada en matriz es un método para adquirir un bloque de predicción del bloque actual mediante un codificador y un decodificador basándose en un producto de matriz entre una matriz previamente almacenada y muestras reconstruidas en las proximidades del bloque actual. Puede señalizarse información para especificar una cualquiera de entre una pluralidad de matrices previamente almacenadas a través de un flujo de bits. El decodificador puede determinar una matriz para intra predicción del bloque actual basándose en la información y el tamaño del bloque actual.
La intra predicción general es un método para adquirir un bloque de predicción para el bloque actual basándose en un modo de intra predicción no angular o un modo de intra predicción angular.
Una imagen residual derivada puede derivarse restando un vídeo de predicción de un vídeo original. En este punto, cuando el vídeo residual se cambia al dominio de la frecuencia, la calidad de vídeo subjetiva del vídeo no se reduce significativamente, aunque se eliminan las componentes de alta frecuencia de entre las componentes de frecuencia. En consecuencia, cuando los valores de las componentes de alta frecuencia se convierten para ser pequeños o los valores de las componentes de alta frecuencia se establecen a 0, hay un efecto de aumentar la eficiencia de compresión sin generar una distorsión visual significativa. Al reflejar esta característica, el bloque actual puede transformarse para descomponer un vídeo residual en componentes de frecuencia bidimensionales. La transformada puede realizarse usando una técnica de transformada tal como transformada discreta del coseno (DCT) o transformada discreta del seno (DST).
La transformada de vídeo bidimensional puede no realizarse para algunos bloques del vídeo residual. No realizar la transformada de vídeo bidimensional puede denominarse omisión de transformada. Cuando se aplica la omisión de transformada, la cuantificación puede aplicarse a coeficientes residuales que no se han transformado.
Después de que el bloque actual se haya transformado usando DCT o DST, el bloque actual transformado puede transformarse de nuevo. En este punto, la transformada basándose en DCT o DST puede definirse como una primera transformada y transformar de nuevo un bloque al cual se aplica la primera transformada puede definirse como una segunda transformada.
La primera transformada puede realizarse usando uno cualquiera de entre una pluralidad de candidatos de núcleo de transformada. Por ejemplo, la primera transformada puede realizarse usando una cualquiera de entre DCT2, DCT8 o DCT7.
Pueden usarse diferentes núcleos de transformada para la dirección horizontal y la dirección vertical. Puede señalizarse información que indica la combinación de un núcleo de transformada de la dirección horizontal y un núcleo de transformada de la dirección vertical a través de un flujo de bits.
Las unidades para realizar la primera transformada y la segunda transformada pueden ser diferentes. Por ejemplo, la primera transformada puede realizarse sobre un bloque de 8 x 8, y la segunda transformada puede realizarse sobre un subbloque de un tamaño de 4 x 4 de entre el bloque de 8 x 8 transformado. En este punto, los coeficientes de transformada de las regiones residuales que no se han realizado, la segunda transformada puede establecerse a 0.
Como alternativa, la primera transformada puede realizarse sobre un bloque de 4 x 4, y la segunda transformada puede realizarse sobre una región de un tamaño de 8 x 8 que incluye el bloque de 4 x 4 transformado.
Puede señalizarse información que indica si se ha realizado, o no, la segunda transformada a través de un flujo de bits.
Como alternativa, puede determinarse si realizar, o no, la segunda transformada basándose en si el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son iguales. Por ejemplo, la segunda transformada puede realizarse solo cuando el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son iguales. Como alternativa, la segunda transformada puede realizarse solo cuando el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son diferentes entre sí.
Como alternativa, la segunda transformada puede permitirse solo cuando la transformada de la dirección horizontal y la transformada de la dirección vertical usan un núcleo de transformada predefinido. Por ejemplo, cuando se usa un núcleo de transformada DCT2 para transformada de la dirección horizontal y transformada de la dirección vertical, puede permitirse la segunda transformada.
Como alternativa, puede determinarse si realizar, o no, la segunda transformada basándose en el número de coeficientes de transformada no nulos del bloque actual. Por ejemplo, puede establecerse no usar la segunda transformada cuando el número de coeficientes de transformada no nulos del bloque actual es menor que o igual a un valor umbral, y puede establecerse usar la segunda transformada cuando el número de coeficientes de transformada no nulos del bloque actual es mayor que el valor umbral. Puede establecerse usar la segunda transformada solo cuando el bloque actual se codifica mediante intra predicción.
El decodificador puede realizar una transformada inversa de la segunda transformada (segunda transformada inversa) y puede realizar una transformada inversa de la primera transformada (primera transformada inversa) sobre un resultado de la segunda transformada inversa. Como resultado de realizar la segunda transformada inversa y la primera transformada inversa, pueden adquirirse señales residuales para el bloque actual.
Cuando el codificador realiza transformada y cuantificación, el decodificador puede adquirir un bloque residual a través de cuantificación inversa y transformada inversa. El decodificador puede adquirir un bloque reconstruido para el bloque actual sumando un bloque de predicción y el bloque residual.
Cuando se adquiere un bloque reconstruido del bloque actual, la pérdida de información que tiene lugar en el proceso de cuantificación y codificación se puede reducir a través de un filtrado en bucle. Un filtro en bucle puede incluir al menos uno de entre un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) y un filtro de bucle adaptativo (ALF).
La aplicación de las realizaciones descritas anteriormente que se centran en un proceso de decodificación o en un proceso de codificación a un proceso de codificación o en un proceso de decodificación se incluye en el alcance de la presente divulgación. Cambiar las realizaciones descritas en un orden predeterminado en un orden diferente del orden descrito también se incluye en el alcance de la presente divulgación.
Aunque las realizaciones anteriores se han descrito basándose en una serie de etapas o diagramas de flujo, esto no limita el orden de series temporales de la presente divulgación, y puede realizarse simultáneamente o en un orden diferente según sea necesario. Además, cada uno de los componentes (por ejemplo, unidades, módulos, etc.) que constituyen el diagrama de bloques en las realizaciones descritas anteriormente puede implementarse como un dispositivo o software de hardware, o una pluralidad de componentes pueden combinarse para implementarse como un único dispositivo o software de hardware. Las realizaciones descritas anteriormente pueden implementarse en forma de órdenes de programa que pueden ejecutarse a través de diversos componentes informáticos y registrarse en un medio de registro legible por ordenador. El medio de registro legible por ordenador puede incluir órdenes de programa, archivos de datos, estructuras de datos y similares, independientemente o en combinación. El medio de registro legible por ordenador incluye, por ejemplo, medios magnéticos tales como un disco duro, un disquete y una cinta magnética, medios de registro ópticos tales como un CD-ROM y un DVD, medios magneto-ópticos tales como un disco óptico flexible y dispositivos de hardware configurados especialmente para almacenar y ejecutar órdenes de programa, tales como una ROM, una RAM, una memoria flash y similares. Los dispositivos de hardware descritos anteriormente pueden configurarse para operar usando uno o más módulos de software para realizar el proceso de la presente divulgación y viceversa.
La presente divulgación puede aplicarse a un dispositivo electrónico que codifica y decodifica un vídeo.

Claims (13)

REIVINDICACIONES
1. Un método de decodificación de vídeo que comprende las etapas de:
aplicar una subdivisión a un bloque de codificación, para obtener una primera unidad de predicción y una segunda unidad de predicción, en donde se determina si aplicar o no una subdivisión al bloque de codificación basándose en un tamaño del bloque de codificación;
derivar una lista de candidatos de fusión para el bloque de codificación;
derivar una primera información de movimiento para la primera unidad de predicción y una segunda información de movimiento para la segunda unidad de predicción usando la lista de candidatos de fusión;
obtener una muestra de predicción en el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento, en donde
la primera información de movimiento para la primera unidad de predicción se deriva de un primer candidato de fusión en la lista de candidatos de fusión, y la segunda información de movimiento para la segunda unidad de predicción se deriva de un segundo candidato de fusión diferente del primer candidato de fusión; y
decodificar una primera información de índice para especificar el primer candidato de fusión y una segunda información de índice para especificar el segundo candidato de fusión de un flujo de bits, en donde cuando un valor de la segunda información de índice es igual o mayor que un valor de la primera información de índice, se obtiene el valor de la segunda información de índice que especifica el segundo candidato de fusión añadiendo 1 al valor de la segunda información de índice.
2. El método de acuerdo con la reivindicación 1, en donde cuando al menos una de entre la anchura y la altura del bloque de codificación es mayor que un valor umbral, no se permite la subdivisión del bloque de codificación.
3. El método de acuerdo con la reivindicación 1, en donde cuando la muestra de predicción se incluye en una región límite entre la primera unidad de predicción y la segunda unidad de predicción, la muestra de predicción se deriva basándose en una operación de suma ponderada de una primera muestra de predicción derivada basándose en la primera información de movimiento y una segunda muestra prevista derivada basándose en la segunda información de movimiento.
4. El método de acuerdo con la reivindicación 3, en donde se determina un primer valor de ponderación aplicado a la primera muestra de predicción basándose en una coordenada del eje x y una coordenada del eje y de la muestra de predicción.
5. El método de acuerdo con la reivindicación 4, en donde se deriva un segundo valor de ponderación aplicado a la segunda muestra de predicción restando el primer valor de ponderación de un valor constante.
6. El método de acuerdo con la reivindicación 1, en donde el número máximo de candidatos de fusión que incluye la lista de candidatos de fusión se determina basándose en si la primera unidad de predicción y la segunda unidad de predicción se obtienen aplicando una subdivisión al bloque de codificación.
7. Un método de codificación de vídeo que comprende las etapas de:
aplicar una subdivisión a un bloque de codificación, para obtener una primera unidad de predicción y una segunda unidad de predicción, en donde se determina si aplicar o no una subdivisión al bloque de codificación basándose en un tamaño del bloque de codificación;
derivar una lista de candidatos de fusión para el bloque de codificación;
derivar una primera información de movimiento para la primera unidad de predicción y una segunda información de movimiento para la segunda unidad de predicción usando la lista de candidatos de fusión;
obtener una muestra de predicción en el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento, en donde
la primera información de movimiento para la primera unidad de predicción se deriva de un primer candidato de fusión en la lista de candidatos de fusión, y la segunda información de movimiento para la segunda unidad de predicción se deriva de un segundo candidato de fusión diferente del primer candidato de fusión;
y
codificar la primera información de índice para especificar el primer candidato de fusión y la segunda información de índice para especificar el segundo candidato de fusión de un flujo de bits, en donde cuando un índice del segundo candidato de fusión es mayor que un índice del primer candidato de fusión, se codifica la segunda información de índice usando un valor obtenido restando 1 del índice del segundo candidato de fusión.
8. El método de acuerdo con la reivindicación 7, en donde cuando al menos una de entre la anchura y la altura del bloque de codificación es mayor que un valor umbral, no se permite la subdivisión del bloque de codificación.
9. El método de acuerdo con la reivindicación 7, en donde cuando la muestra de predicción se incluye en una región límite entre la primera unidad de predicción y la segunda unidad de predicción, la muestra de predicción se deriva basándose en una operación de suma ponderada de una primera muestra de predicción derivada basándose en la primera información de movimiento y una segunda muestra prevista derivada basándose en la segunda información de movimiento.
10. El método de acuerdo con la reivindicación 9, en donde se determina un primer valor de ponderación aplicado a la primera muestra de predicción basándose en una coordenada del eje x y una coordenada del eje y de la muestra de predicción.
11. El método de acuerdo con la reivindicación 10, en donde se deriva un segundo valor de ponderación aplicado a la segunda muestra de predicción restando el primer valor de ponderación de un valor constante.
12. El método de acuerdo con la reivindicación 7, en donde el número máximo de candidatos de fusión que incluye la lista de candidatos de fusión se determina basándose en si el bloque de codificación está subdividido en la primera unidad de predicción y la segunda unidad de predicción.
13. Un aparato de decodificación de vídeo que comprende una parte de inter predicción configurada para aplicar una subdivisión a un bloque de codificación para obtener una primera unidad de predicción y una segunda unidad de predicción,
derivar una lista de candidatos de fusión para el bloque de codificación, derivar una primera información de movimiento para la primera unidad de predicción y una segunda información de movimiento para la segunda unidad de predicción usando la lista de candidatos de fusión,
obtener una muestra de predicción en el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento,
en donde si se aplica o no la subdivisión al bloque de codificación se determina basándose en un tamaño del bloque de codificación, y se deriva la primera información de movimiento para la primera unidad de predicción de un primer candidato de fusión de la lista de candidatos de fusión, y se deriva la segunda información de movimiento para la segunda unidad de predicción de un segundo candidato de fusión diferente del primer candidato de fusión, y decodificar una primera información de índice para especificar un primer candidato de fusión y una segunda información de índice para especificar un segundo candidato de fusión de un flujo de bits, en donde cuando un valor de la segunda información de índice es igual o mayor que un valor de la primera información de índice, se obtiene el valor de la segunda información de índice que especifica el segundo candidato de fusión añadiendo 1 al valor de la segunda información de índice.
ES19883291T 2018-11-08 2019-11-08 Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo Active ES2972076T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20180136306 2018-11-08
KR20180136249 2018-11-08
PCT/KR2019/015200 WO2020096428A1 (ko) 2018-11-08 2019-11-08 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
ES2972076T3 true ES2972076T3 (es) 2024-06-11

Family

ID=70610737

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19883291T Active ES2972076T3 (es) 2018-11-08 2019-11-08 Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo

Country Status (16)

Country Link
US (3) US11405613B2 (es)
EP (2) EP4287619A3 (es)
JP (2) JP7416781B2 (es)
KR (1) KR20200054113A (es)
CN (2) CN113347429B (es)
AU (1) AU2019375731A1 (es)
BR (1) BR112021008654A2 (es)
CA (2) CA3118883C (es)
ES (1) ES2972076T3 (es)
IL (1) IL282874A (es)
MX (1) MX2021005267A (es)
PH (1) PH12021551031A1 (es)
PL (1) PL3869800T3 (es)
SG (1) SG11202104643QA (es)
WO (1) WO2020096428A1 (es)
ZA (1) ZA202103365B (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200016188A (ko) * 2018-08-06 2020-02-14 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020103933A1 (en) * 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Configuration method for default motion candidate
EP3884670B9 (en) * 2018-11-22 2023-07-19 Huawei Technologies Co., Ltd. Method, apparatus and computer program product for inter prediction
US11856194B2 (en) * 2018-12-21 2023-12-26 Hfi Innovation Inc. Method and apparatus of simplified triangle merge mode candidate list derivation
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
CN114731409A (zh) * 2019-09-20 2022-07-08 韩国电子通信研究院 图像编码/解码方法和装置、以及存储比特流的记录介质
EP4055826A4 (en) * 2019-12-30 2023-11-22 FG Innovation Company Limited DEVICE AND METHOD FOR ENCODING VIDEO DATA
US11212523B2 (en) * 2020-01-12 2021-12-28 Mediatek Inc. Video processing methods and apparatuses of merge number signaling in video coding systems
US11706439B2 (en) * 2020-03-26 2023-07-18 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012140821A1 (ja) 2011-04-12 2012-10-18 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置
HRP20231384T1 (hr) * 2011-09-09 2024-02-16 Lg Electronics Inc. Postupak dekodiranja slike, postupak kodiranja slike, postupak za prijenos podataka za informacije o slici i računalno-čitljivi medij za pohranu koji pohranjuje bitstream uključujući kodiranje informacija o slici
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
US9426463B2 (en) * 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
EP3833022B1 (en) 2012-04-12 2022-03-30 JVCKENWOOD Corporation Merge candidate list construction
US11330284B2 (en) * 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
CN108028933A (zh) * 2015-09-10 2018-05-11 三星电子株式会社 视频编码和解码方法及装置
EP3364653A4 (en) * 2015-10-16 2019-07-10 LG Electronics Inc. FILTRATION METHOD AND DEVICE FOR IMPROVING THE PREDICTION IN A BILDCODING SYSTEM
KR20170058838A (ko) * 2015-11-19 2017-05-29 한국전자통신연구원 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
ES2699748B2 (es) * 2016-07-05 2021-05-13 Kt Corp Metodo y aparato para procesar senal de video
US10406803B2 (en) 2016-12-08 2019-09-10 Xerox Corporation Method for providing color and material property options in a three-dimensional object printer
US10715827B2 (en) * 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
CN116170585A (zh) 2017-01-16 2023-05-26 世宗大学校产学协力团 影像编码/解码方法
KR20180084659A (ko) * 2017-01-16 2018-07-25 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
KR20200097811A (ko) * 2018-02-22 2020-08-19 엘지전자 주식회사 영상 코딩 시스템에서 블록 분할 구조에 따른 영상 디코딩 방법 및 장치
KR20190139786A (ko) 2018-06-08 2019-12-18 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN112740694A (zh) * 2018-09-21 2021-04-30 韩国电子通信研究院 用于对图像进行编码/解码的方法和设备以及用于存储比特流的记录介质
WO2020094052A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Side information signaling for inter prediction with geometric partitioning
WO2020094073A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Ordered motion candidate list generation using geometric partitioning mode

Also Published As

Publication number Publication date
PH12021551031A1 (en) 2021-12-06
CN113347429A (zh) 2021-09-03
SG11202104643QA (en) 2021-06-29
CA3118883C (en) 2024-05-28
AU2019375731A1 (en) 2021-06-10
EP4287619A2 (en) 2023-12-06
EP3869800A4 (en) 2021-12-08
EP3869800B1 (en) 2023-12-27
US11825085B2 (en) 2023-11-21
IL282874A (en) 2021-06-30
WO2020096428A1 (ko) 2020-05-14
US20210266539A1 (en) 2021-08-26
CA3118883A1 (en) 2020-05-14
EP4287619A3 (en) 2024-01-31
KR20200054113A (ko) 2020-05-19
CA3235103A1 (en) 2020-05-14
CN113347429B (zh) 2023-06-23
US11889077B2 (en) 2024-01-30
JP7416781B2 (ja) 2024-01-17
US20220303531A1 (en) 2022-09-22
US11405613B2 (en) 2022-08-02
EP3869800A1 (en) 2021-08-25
BR112021008654A2 (pt) 2021-08-10
JP2023179758A (ja) 2023-12-19
PL3869800T3 (pl) 2024-05-13
CN112823514A (zh) 2021-05-18
MX2021005267A (es) 2021-06-18
ZA202103365B (en) 2022-07-27
JP2022506269A (ja) 2022-01-17
US20220303532A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
ES2972076T3 (es) Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo
ES2948265T3 (es) Método de codificación/descodificación de señales de imagen y aparato para el mismo
KR102608847B1 (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
ES2786077B2 (es) Metodo y aparato para procesar una senal de video
ES2972075T3 (es) Procedimiento de codificación/descodificación de señal de imagen y aparato para ello
ES2972074T3 (es) Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo
ES2703607A2 (es) Método y aparato para procesar señales de vídeo
ES2699691A2 (es) Método y aparato para procesar señales de vídeo
ES2955040T3 (es) Método de codificación/descodificación de señales de imagen y dispositivo para el mismo
ES2711474A2 (es) Metodo y aparato para procesar una senal de video
US11838532B2 (en) Video signal encoding and decoding method, and apparatus therefor
CN113507603B (zh) 图像信号编码/解码方法及其设备
KR20200108799A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
RU2799079C2 (ru) Способ и устройство кодирования/декодирования сигналов изображений
RU2808720C2 (ru) Способ и устройство для кодирования/декодирования сигналов изображений