ES2972075T3 - Procedimiento de codificación/descodificación de señal de imagen y aparato para ello - Google Patents

Procedimiento de codificación/descodificación de señal de imagen y aparato para ello Download PDF

Info

Publication number
ES2972075T3
ES2972075T3 ES19883290T ES19883290T ES2972075T3 ES 2972075 T3 ES2972075 T3 ES 2972075T3 ES 19883290 T ES19883290 T ES 19883290T ES 19883290 T ES19883290 T ES 19883290T ES 2972075 T3 ES2972075 T3 ES 2972075T3
Authority
ES
Spain
Prior art keywords
block
triangular
prediction
index
candidate
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
ES19883290T
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 ES2972075T3 publication Critical patent/ES2972075T3/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/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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/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)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

Un método para decodificar una imagen, según la presente invención, comprende las etapas de: determinar si un bloque de codificación está dividido en una primera unidad de predicción y una segunda unidad de predicción; determinar un tipo de partición del bloque de codificación al determinar que el bloque de codificación está dividido; derivar una primera información de movimiento sobre una primera unidad de predicción y una segunda información de movimiento sobre una segunda unidad de predicción dentro del bloque de codificación; y adquirir una muestra de predicción dentro del bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Procedimiento de codificación/descodificación de señal de imagen y aparato para ello
SECTOR TÉCNICO
La presente invención se refiere a un procedimiento de codificación o descodificación de señales de vídeo y un aparato para ello.
ESTADO DE LA TÉCNICA ANTERIOR
Con la tendencia a que los paneles de visualización sean cada vez más grandes, se demandan servicios de vídeo de alta definición. El mayor problema de los servicios de vídeo de alta definición es que la cantidad de datos aumenta significativamente, y para resolver este problema se ha investigado activamente para mejorar la tasa de compresión de vídeo. Como ejemplo representativo, en 2009 se creó el Equipo de colaboración conjunta sobre codificación de vídeo (JCT-VC, Joint Collaborative Team on Video Coding) en el Grupo de expertos en codificación de vídeo (VCEG, Video Coding Experts Group) de la Unión Internacional de Telecomunicaciones-Telecomunicaciones (UIT-T, International Telecommunication Union-Telecommunication) y el Grupo de expertos en imágenes en movimiento (MPEG, Motion Picture Experts Group). JCT-VC propuso el estándar de Codificación de vídeo de alta eficiencia (HEVC, High Efficiency Video Coding), que es un estándar de compresión de vídeo cuyo rendimiento de compresión es aproximadamente dos veces superior al de H.264/AVC, y fue aprobado como estándar el 25 de enero de 2013. Con el rápido desarrollo de los servicios de vídeo de alta definición, el rendimiento de HEVC está revelando gradualmente sus limitaciones. R.-L. LIAO (PANASONIC) ET AL, "CE10.3.1.b: Triangular prediction unit mode", n.° JVET-L0124, (01-11-2018), 12.a REUNIÓN DEL JVET; 03-10-2018 - 12-10-2018; MACAO; (EL EQUIPO MIXTO DE EXPLORACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 e ITU-T SG.16) proporciona resultados de pruebas del modo de unidad de predicción triangular que se describe en CE10. BLÁSER (R<w>TH-AACHEN) MET AL, "Description of SDR and 360° video coding technology proposal by RWTH Aachen University", n.° JVET-J0023, (12-04-2018), 10.a REUNIÓN DEL JVET; 10-04-2018 - 20-04-2018; SAN DIEGO; (EL EQUIPO MIXTO DE EXPLORACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16) describe herramientas de codificación específicas para SDR y herramientas de codificación específicas para vídeo de 360°. TOMA (PANASONIC) T. ET AL, "Description of SDR video coding technology proposal by Panasonic", n.° JVET-J0020, (11-04-2018), 10.a REUNIÓN DEL JVET; 10-04 2018 - 20-04-2018; SAN DIEGO; (EL EQUIPO MIXTO DE EXPLORACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16) es la respuesta de Panasonic a la convocatoria de propuestas sobre codificación de vídeo con capacidad superior a HEVC en la categoría SDR.
SUMARIO
PROBLEMA TÉCNICO
La presente invención se dirige a dar a conocer un procedimiento de partición de un bloque de codificación en una pluralidad de bloques de predicción al codificar o descodificar señales de vídeo y un aparato para realizar el mismo.
La presente invención se dirige a dar a conocer un procedimiento de obtención de información de movimiento para cada uno de una pluralidad de bloques de predicción al codificar o descodificar señales de vídeo y un aparato para realizar el mismo.
La presente invención se dirige a dar a conocer un procedimiento de obtención de un candidato de fusión utilizando una tabla de información de movimiento entre regiones al codificar o descodificar señales de vídeo y un aparato para realizar el procedimiento.
Los problemas técnicos que se pretenden resolver mediante la invención no se limitan a los problemas mencionados anteriormente, y otros problemas técnicos que no se describen en el presente documento deben ser claramente entendidos por los expertos en la materia a partir de la siguiente descripción.
SOLUCIÓN TÉCNICA
Mientras que la invención se define en las reivindicaciones independientes, otros aspectos de la invención se exponen en las reivindicaciones dependientes, los dibujos y la siguiente descripción. Un procedimiento de descodificación o codificación de una señal de vídeo según la presente invención incluye determinar si dividir un bloque de codificación según partición triangular, por la que el bloque de codificación se divide en dos unidades de predicción triangulares según una de las dos diagonales del bloque de codificación, correspondiendo cada diagonal a uno de dos tipos de partición triangular, obteniendo una primera información de movimiento relativa a la primera unidad de predicción triangular del bloque de codificación y una segunda información de movimiento relativa a la segunda unidad de predicción triangular del bloque de codificación, y adquiriendo una muestra de referencia para predecir el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento. En este caso, se puede obtener la primera información de movimiento relativa a la primera unidad de predicción a partir de un primer candidato a la fusión especificado por la primera información de índice señalizada en el flujo de bits, designando el primer índice un candidato de entre una pluralidad de candidatos a la fusión incluidos en una lista de candidatos a la fusión, y se puede obtener la segunda información de movimiento relativa a la segunda unidad de predicción a partir de un segundo candidato a la fusión especificado por la segunda información de índice señalizada en el flujo de bits, designando el segundo índice un candidato de entre la pluralidad de candidatos a la fusión incluidos en la lista de candidatos a la fusión.
Cuando un valor de la segunda información de índice es mayor o igual que un valor de la primera información de índice, el segundo candidato de fusión tiene un índice igual al valor de la segunda información de índice más uno. Cuando un valor de la segunda información de índice es menor que un valor de la primera información de índice, el segundo candidato de fusión tiene un índice igual al valor de la segunda información de índice.
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 puede obtenerse basándose en una operación de suma ponderada de una primera muestra de predicción obtenida basándose en la primera información de movimiento y una segunda muestra de predicción obtenida basándose en la segunda información de movimiento.
Una primera ponderación aplicada a la primera muestra de predicción puede determinarse basándose en una coordenada x y una coordenada y de la muestra de predicción.
Una segunda ponderación aplicada a la segunda muestra de predicción puede obtenerse restando la primera ponderación de un valor constante.
El tamaño de la región límite puede determinarse basándose en, por lo menos, uno del tamaño del bloque de codificación o la forma del bloque de codificación.
EFECTOS VENTAJOSOS
De acuerdo con la presente invención, al dividir un bloque de codificación en una pluralidad de bloques de predicción y obtener información de movimiento para cada uno de los bloques de predicción, es posible mejorar la eficiencia de la predicción inter.
De acuerdo con la presente invención, dando a conocer un procedimiento de obtención de un candidato de fusión utilizando una tabla de información del movimiento entre regiones, es posible mejorar la eficacia de la predicción inter. Los efectos ventajosos de la invención no se limitan a los efectos antes mencionados, y otros efectos ventajosos que no se describen en el presente documento deben ser claramente comprendidos por los expertos en la materia a partir de la siguiente descripción.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama de bloques de un codificador según una realización de la presente invención. La figura 2 es un diagrama de bloques de un descodificador según una realización de la presente invención. La figura 3 es un diagrama que muestra una unidad de árbol de codificación básica según una realización de la presente invención.
La figura 4 es un diagrama que muestra varios tipos de partición de un bloque de codificación.
La figura 5 es un diagrama que muestra un aspecto de partición de una unidad de árbol de codificación. La figura 6 es un diagrama de flujo de un procedimiento de predicción inter según una realización de la presente invención.
La figura 7 es un diagrama que muestra un movimiento no lineal de un objeto.
La figura 8 es un diagrama de flujo de un procedimiento de predicción inter basado en movimiento afín según una realización de la presente invención.
La figura 9 es un diagrama que muestra un vector semilla afín para cada modelo de movimiento afín.
La figura 10 es un diagrama que muestra vectores afines de subbloques bajo un modelo de movimiento de 4 parámetros.
La figura 11 es un diagrama que muestra bloques vecinos que pueden ser usados para obtener un candidato de fusión.
La figura 12 es un diagrama que muestra un ejemplo de obtención de un vector semilla afín del bloque actual basándose en un vector semilla afín de un bloque vecino afín.
La figura 13 es un diagrama que muestra un ejemplo de establecimiento de un vector de movimiento de un subbloque como un vector semilla afín de un bloque vecino afín.
Las figuras 14 a 16 son diagramas que muestran la ubicación de una muestra de referencia.
La figura 17 es un diagrama que muestra un ejemplo en el que se aplica un procedimiento de obtención de vector de fusión afín modificado.
La figura 18 es un diagrama que muestra un ejemplo de obtención de un vector semilla afín de un candidato de fusión afín basándose en vectores de movimiento de subbloques que pertenecen a un bloque vecino. La figura 19 es un diagrama que muestra un ejemplo de obtención de vectores semilla afines de un candidato de fusión afín basándose en vectores de movimiento de subbloques ubicados a la izquierda del bloque actual. La figura 20 es un diagrama que muestra un ejemplo de obtención de vectores semilla afines de un candidato de fusión afín basándose en información de movimiento de un bloque vecino o de un bloque no vecino ubicado a la izquierda del bloque actual.
La figura 21 es un diagrama que muestra la ubicación de un bloque para obtener un vector semilla afín de un candidato de fusión afín.
La figura 22 es un diagrama para describir un ejemplo de combinación de vectores de movimiento de una pluralidad de bloques vecinos para obtener un candidato de fusión combinado.
La figura 23 es un diagrama que muestra un bloque vecino no disponible.
La figura 24 es un diagrama de flujo de un proceso de obtención de información de movimiento del bloque actual en un modo de fusión.
La figura 25 es un diagrama para describir un aspecto de actualización de una tabla de información de movimiento entre regiones.
La figura 26 es un diagrama que muestra un aspecto de actualización de una tabla de candidatos de fusión entre regiones.
La figura 27 es un diagrama que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión entre regiones previamente almacenado.
La figura 28 es un diagrama que muestra la ubicación de un subbloque representativo.
La figura 29 muestra un ejemplo en el que se genera una tabla de información de movimiento entre regiones para cada modo de predicción inter.
La figura 30 es un diagrama que muestra un ejemplo en el que un candidato de fusión entre regiones incluido en una tabla de información de movimiento a largo plazo se añade a una lista de candidatos de fusión. La figura 31 es un diagrama que muestra un ejemplo en el cual se realiza una comprobación de redundancia en solo algunos candidatos de fusión.
La figura 32 es un diagrama que muestra un ejemplo en el cual se omite una comprobación de redundancia en un candidato de fusión especifico.
La figura 33 es un diagrama que muestra un ejemplo de partición de un bloque de codificación en una pluralidad de bloques de predicción utilizando una línea diagonal.
La figura 34 es un diagrama que muestra un ejemplo de partición de un bloque de codificación en dos unidades de predicción.
La figura 35 muestra ejemplos en los que un bloque de codificación se divide en una pluralidad de bloques de predicción de diferentes tamaños.
La figura 36 es un diagrama que muestra bloques vecinos utilizados para obtener un candidato de fusión triangular.
La figura 37 es un diagrama para describir un ejemplo de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Las figuras 38 y 39 son diagramas que muestran un ejemplo de obtenció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 40 es un diagrama de flujo de un procedimiento de predicción intra según una realización de la presente invención.
La figura 41 es un diagrama que muestra modos de predicción intra.
Las figuras 42 y 43 son diagramas que muestran un ejemplo de una matriz unidimensional en la que las muestras de referencia están dispuestas en una línea.
La figura 44 es un diagrama que muestra los ángulos formados entre una línea recta paralela al eje x y los modos de predicción intra direccional.
La figura 45 es un diagrama que muestra un aspecto en el que se adquiere una muestra de predicción cuando el bloque actual no es cuadrado.
La figura 46 es un diagrama que muestra modos de predicción intra de ángulo amplio.
La figura 47 es un diagrama de flujo que muestra un proceso de determinación de la intensidad de bloqueo. La figura 48 muestra candidatos de filtro predefinidos.
DESCRIPCIÓN DETALLADA
En lo sucesivo, se describirán en detalle realizaciones de la presente invención con referencia a los dibujos adjuntos. Una imagen se codifica y descodifica en unidades de bloques. A modo de ejemplo, el procesamiento de codificación y descodificación, tal como la transformación, la cuantificación, la predicción, el filtrado en bucle o la reconstrucción, puede realizarse en un bloque de codificación, un bloque de transformación o un bloque de predicción.
En lo sucesivo, un bloque a ser codificado o descodificado será denominado "el bloque actual". Como ejemplo, el bloque actual puede indicar un bloque de codificación, un bloque de transformación o un bloque de predicción dependiendo de la etapa actual para el procesamiento de codificación o descodificación.
Además, el término "unidad" utilizado en el presente documento puede entenderse como que indica una unidad básica para realizar un proceso específico de codificación y descodificación, y el término "bloque" puede entenderse como que indica una matriz de muestras de un tamaño predeterminado. A menos que se especifique lo contrario, los términos "bloque" y "unidad" pueden utilizarse indistintamente. A modo de ejemplo, en las siguientes realizaciones, un bloque de codificación y una unidad de codificación pueden entenderse con significados equivalentes.
La figura 1 es un diagrama de bloques de un codificador según una realización de la presente invención.
Refiriéndose a la figura 1, un aparato de codificación de vídeo 100 puede incluir un divisor de imagen 110, predictores 120 y 125, un transformador 130, un cuantificador 135, un reordenador 160, un codificador de entropía 165, un cuantificador inverso 140, un transformador inverso 145, un filtro 150 y una memoria 155.
Los elementos de la figura 1 se muestran de forma independiente para representar diferentes funciones características en el aparato de codificación de vídeo, y no se pretende que cada uno de los elementos esté configurado en una unidad de hardware independiente o como una unidad de software. En otras palabras, los elementos están dispuestos de forma independiente para facilitar la descripción. Para realizar funciones, al menos dos elementos pueden combinarse en un elemento, o un elemento puede dividirse en una pluralidad de elementos. En este caso, una realización para la combinación de los elementos y una realización para la partición del elemento se abarcan dentro del alcance de la presente invención sin apartarse de la esencia de la presente invención.
Además, algunos de los elementos pueden no ser elementos esenciales para realizar funciones esenciales en la presente invención y pueden ser simplemente elementos opcionales para mejorar el rendimiento. La presente invención puede implementarse incluyendo únicamente los elementos necesarios para implementar la esencia de la presente invención en lugar de elementos utilizados únicamente para mejorar el rendimiento. Incluso una estructura que incluya sólo elementos esenciales en lugar de elementos opcionales utilizados para mejorar solo el rendimiento se incluye en el alcance de la presente invención.
El divisor de imágenes 110 puede dividir una imagen de entrada en al menos una unidad de procesamiento. En este caso, la unidad de procesamiento puede ser una unidad de predicción (PU), una unidad de transformación (TU) o una unidad de codificación (CU). El divisor de imagen 110 puede dividir una imagen en una pluralidad de combinaciones de unidades de codificación, unidades de predicción y unidades de transformación y puede seleccionar una combinación de unidades de codificación, unidades de predicción y unidades de transformación de acuerdo con un criterio predeterminado (por ejemplo, una función de coste) para codificar la imagen.
Por ejemplo, una imagen puede dividirse en una pluralidad de unidades de codificación. Una estructura de árbol recursiva, tal como una estructura de árbol cuádruple, puede utilizarse para dividir una imagen en unidades de codificación. Una unidad de codificación dividida en otras unidades de codificación utilizando una imagen o la unidad de codificación de máximo tamaño como raíz puede tener un número de nodos hijo correspondiente al número de unidades de codificación divididas. Una unidad de codificación que ya no se divide debido a una limitación predeterminada sirve como nodo hoja. Es decir, cuando se supone que sólo es posible la partición cuadrada para una unidad de codificación, una unidad de codificación puede dividirse hasta en otras cuatro unidades de codificación.
En las siguientes realizaciones de la presente invención, una unidad de codificación puede referirse a una unidad configurada para realizar codificación, o una unidad configurada para realizar descodificación.
Una unidad de codificación puede dividirse en al menos una o más unidades de predicción del mismo tamaño en forma cuadrada o rectangular y puede dividirse en unidades de predicción de tal manera que una de las unidades de predicción sea diferente de otra unidad de predicción en forma y/o tamaño.
Cuando se genera una unidad de predicción sometida a predicción intra basada en una unidad de codificación y la unidad de codificación no es una unidad de codificación mínima, la predicción intra puede realizarse sin dividir la unidad de codificación en una pluralidad de NxN unidades de predicción.
Los predictores 120 y 125 pueden incluir un predictor inter 120 configurado para realizar predicción inter y un predictor intra 125 configurado para realizar predicción intra. Los predictores 120 y 125 pueden determinar si realizar la predicción intra o utilizar la predicción inter en las unidades de predicción y pueden determinar información detallada (por ejemplo, un modo de predicción intra, un vector de movimiento, una imagen de referencia, y similares) correspondiente a cada procedimiento de predicción. En este caso, una unidad de procesamiento en la que se realiza la predicción puede ser diferente de una unidad de procesamiento en la que se determina un procedimiento de predicción y detalles específicos. Por ejemplo, un procedimiento de predicción, un modo de predicción, y similares pueden ser determinados por una unidad de predicción, y la predicción puede ser realizada por una unidad de transformación. Un valor residual (un bloque residual) entre un bloque de predicción generado y un bloque original puede ser introducido en el transformador 130. Además, el codificador de entropía 165 puede codificar la información del vector de movimiento, la información del modo de predicción y similares, que se utilizan para la predicción, además del valor residual, y enviarlos a un descodificador. Cuando se utiliza un modo de codificación particular, el bloque original puede codificarse intacto y transmitirse al descodificador sin generar el bloque de predicción.
El predictor inter 120 puede predecir la unidad de predicción basándose en información sobre al menos una de una imagen anterior o una imagen posterior con respecto a la imagen actual y, en algunos casos, la unidad de predicción puede predecirse basándose en información sobre una región parcial de la imagen actual en la que se ha completado la codificación. El predictor inter 120 puede incluir un interpolador de imagen de referencia, un predictor de movimiento y un compensador de movimiento.
El interpolador de imagen de referencia puede recibir información de imagen de referencia de la memoria 155 y puede generar información sobre píxeles menores o iguales a píxeles enteros de una imagen de referencia. En el caso de píxeles de luminancia, puede utilizarse un filtro de interpolación de 8 tomas basado en DCT con diferentes coeficientes de filtro para generar información sobre píxeles menores o iguales a píxeles enteros en unidades de 1/4 de píxel. En el caso de las señales de crominancia, puede utilizarse un filtro de interpolación de 4 tomas basado en DCT con diferentes coeficientes de filtro para generar información sobre píxeles menores o iguales a píxeles enteros en unidades de 1/8 píxeles.
El predictor de movimiento puede realizar la predicción de movimiento basándose en la imagen de referencia interpolada por el interpolador de imagen de referencia. Como procedimiento para calcular un vector de movimiento, pueden utilizarse diversos procedimientos, tales como un algoritmo de correspondencia de bloques basado en la búsqueda completa (FBMA), un algoritmo de búsqueda en tres pasos (TSS) y un nuevo algoritmo de búsqueda en tres pasos (NTS). El vector de movimiento puede tener un valor de vector de movimiento en unidades de 1/2 o 1/4 píxeles basándose en los píxeles interpolados. La unidad de predicción de movimiento puede predecir la unidad de predicción actual utilizando diferentes procedimientos de predicción de movimiento. Como procedimiento de predicción de movimiento, se pueden utilizar varios procedimientos, tales como un procedimiento de salto, un procedimiento de fusión, un procedimiento de predicción de vector de movimiento avanzado (AMVP) y un procedimiento de copia de bloque intra.
El predictor intra 125 puede generar una unidad de predicción basándose en la información de un píxel de referencia cercano al bloque actual, que es información de píxeles de la imagen actual. Cuando el bloque cercano de la unidad de predicción actual es un bloque sometido a predicción inter y, por lo tanto, el píxel de referencia es un píxel sometido a predicción inter, la información del píxel de referencia del bloque cercano sometido a predicción intra puede utilizarse en lugar del píxel de referencia incluido en el bloque sometido a predicción inter. Es decir, cuando el píxel de referencia no está disponible, se puede utilizar al menos un píxel de referencia disponible en lugar de la información del píxel de referencia no disponible.
Los modos de predicción en la predicción intra pueden incluir un modo de predicción direccional que utiliza información de píxel de referencia dependiendo de una dirección de predicción y un modo no direccional que no utiliza información de direccionalidad al realizar la predicción. Un modo para predecir la información de luminancia y un modo para predecir la información de crominancia pueden ser diferentes, y la información del modo de predicción intra utilizada para predecir la información de luminancia, o la información de la señal de luminancia predicha puede utilizarse para predecir la información de crominancia.
Cuando se realiza la predicción intra y la unidad de predicción es igual en tamaño a la unidad de transformación, la predicción intra puede realizarse en la unidad de predicción basándose en píxeles situados a la izquierda de la unidad de predicción, píxeles situados en la esquina superior izquierda de la unidad de predicción, y píxeles situados en la parte superior de la unidad de predicción. Sin embargo, cuando se realiza la predicción intra y la unidad de predicción es diferente en tamaño de la unidad de transformación, la predicción intra puede realizarse utilizando el píxel de referencia basado en la unidad de transformación. También se puede utilizar la predicción intra utilizando la partición NxN sólo para la unidad de codificación mínima.
En el procedimiento de predicción intra, se puede generar un bloque de predicción después de aplicar un filtro de alisado intra adaptativo (AIS) a un píxel de referencia dependiendo del modo de predicción. El tipo de filtro AIS aplicado al píxel de referencia puede variar. Para llevar a cabo el procedimiento de predicción intra, un modo de predicción intra de la unidad de predicción actual puede predecirse a partir de un modo de predicción intra de una unidad de predicción cercana a la unidad de predicción actual. Cuando el modo de predicción de la unidad de predicción actual se predice utilizando información de modo predicha a partir de la unidad de predicción cercana, la información que indica que la unidad de predicción actual y la unidad de predicción cercana tienen el mismo modo de predicción puede transmitirse utilizando información de bandera predeterminada cuando el modo de predicción intra de la unidad de predicción actual es el mismo que el modo de predicción intra de la unidad de predicción cercana, y la codificación de entropía puede realizarse para codificar la información de modo de predicción del bloque actual cuando el modo de predicción de la unidad de predicción actual es diferente del modo de predicción de la unidad de predicción cercana.
Asimismo, puede generarse un bloque residual que incluya información sobre un valor residual, que es una diferencia entre una unidad de predicción sometida a predicción y un bloque original de la unidad de predicción, basándose en las unidades de predicción generadas por los predictores 120 y 125. El bloque residual generado puede introducirse en el transformador 130.
El transformador 130 puede transformar el bloque residual incluyendo la información sobre el valor residual entre el bloque original y las unidades de predicción generadas por los predictores 120 y 125 utilizando un procedimiento de transformación, tal como la transformada discreta de coseno (DCT) o la transformada discreta de seno (DST). Aquí, un núcleo de transformación DCT incluye al menos uno de DCT2 o DCT8, y un núcleo de transformación DST incluye DST7. La aplicación de DCT o DST para transformar el bloque residual puede determinarse en función de la información del modo de predicción intra de la unidad de predicción utilizada para generar el bloque residual. La transformación del bloque residual puede omitirse. Puede codificarse una bandera que indique si se omite la transformación del bloque residual. La omisión de la transformación puede estar permitida para bloques residuales de un tamaño inferior o igual a un valor umbral, un componente luma o un componente croma en un formato 4:4:4.
El cuantificador 135 puede cuantificar los valores que son transformados en el dominio de la frecuencia por el transformador 130. Los coeficientes de cuantificación pueden variar en función del bloque o de la importancia de una imagen. Los valores calculados por el cuantificador 135 pueden ser proporcionados al cuantificador inverso 140 y al reordenador 160.
El reordenador 160 puede reordenar los valores de los coeficientes en los valores residuales cuantificados.
El reordenador 160 puede cambiar los coeficientes de una forma de bloque bidimensional a una forma de vector unidimensional mediante un procedimiento de escaneo de coeficientes. Por ejemplo, el reordenador 160 puede escanear coeficientes de DC e incluso coeficientes de alta frecuencia utilizando un procedimiento de escaneo en zigzag para cambiar los coeficientes a una forma vectorial unidimensional. Dependiendo del modo de predicción intra y del tamaño de la unidad de transformación, en lugar del escaneo en zigzag puede utilizarse el escaneo vertical en el que los coeficientes bidimensionales de tipo bloque se escanean en una dirección de columna o el escaneo horizontal en el que los coeficientes bidimensionales de tipo bloque se escanean en una dirección de fila. Es decir, el reordenador puede determinar un procedimiento de escaneo a utilizar de entre el escaneo en zigzag, el escaneo vertical y el escaneo horizontal dependiendo del tamaño de la unidad de transformación y del modo de predicción intra.
El codificador de entropía 165 puede realizar la codificación de entropía basándose en los valores calculados por el reordenador 160. La codificación de entropía puede utilizar, por ejemplo, varios procedimientos de codificación, tales como Golomb exponencial, codificación de longitud variable adaptable al contexto (CAVLC) y codificación aritmética binaria adaptable al contexto (CABAC).
El codificador de entropía 165 puede codificar una variedad de información tal como información de coeficiente de valor residual e información de tipo de bloque de la unidad de codificación, información de modo de predicción, información de partición, información de unidad de predicción, 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 del reordenador 160 y los predictores 120 y 125.
El codificador de entropía 165 puede realizar la codificación de entropía en los valores de coeficiente de la entrada de unidad de codificación del reordenador 160.
El cuantificador inverso 140 puede cuantificar inversamente los valores cuantificados por el cuantificador 135, y el transformador inverso 145 puede transformar inversamente los valores transformados por el transformador 130. El valor residual generado por el cuantificador inverso 140 y el transformador inverso 145 se puede combinar con una unidad de predicción predicha a través de un estimador de movimiento, un compensador de movimiento y un predictor intra de los predictores 120 y 125 para generar un bloque reconstruido.
El filtro 150 puede aplicar al menos uno de un filtro de desbloqueo, un corrector de desplazamiento y un filtro de bucle adaptativo.
El filtro de desbloqueo puede eliminar la distorsión de bloque que se ha producido debido a un límite entre bloques de una imagen reconstruida. Para determinar si se debe realizar el desbloqueo, se puede determinar si se debe aplicar el filtro de desbloqueo al bloque actual basándose en los píxeles incluidos en varias filas o columnas del bloque. Cuando se aplica el filtro de desbloqueo al bloque, puede aplicarse un filtro fuerte o un filtro débil dependiendo de la intensidad de filtrado de desbloqueo requerida. Además, cuando se aplica el filtro de desbloqueo, el filtrado vertical y el filtrado horizontal pueden realizarse de forma que el filtrado horizontal y el filtrado vertical se procesen en paralelo.
El corrector de desplazamiento puede corregir un desplazamiento de una imagen original en una imagen sometida a desbloqueo en unidades de píxeles. Un procedimiento de clasificación de píxeles incluidos en una imagen en un cierto número de regiones, la determinación de una región para ser sometida a desplazamiento y la aplicación de un desplazamiento a la región determinada o un procedimiento de aplicación de un desplazamiento en consideración de la información de borde de cada píxel pueden ser utilizados para realizar la corrección de desplazamiento en una imagen particular.
El filtrado de bucle adaptativo (ALF) puede realizarse basándose en los valores obtenidos comparando la imagen reconstruida filtrada y la imagen original. Clasificando los píxeles incluidos en la imagen en grupos predeterminados y determinando el filtro que debe aplicarse a cada uno de los grupos, puede realizarse un filtrado diferencial para cada grupo. La información sobre si aplicar ALF puede transmitirse para cada unidad de codificación (CU), y la forma y los coeficientes de filtro de un filtro ALF a aplicar pueden variar en función del bloque. Asimismo, puede aplicarse el filtro ALF de la misma forma (forma fija) independientemente de la característica de un bloque que vaya a someterse a filtrado.
La memoria 155 puede almacenar un bloque o imagen reconstruidos calculados mediante el filtro 150. El bloque o imagen reconstruidos almacenados pueden proporcionarse a los predictores 120 y 125 cuando se realiza la predicción inter.
La figura 2 es un diagrama de bloques de un descodificador según una realización de la presente invención.
Refiriéndose a la figura 2, un descodificador 200 puede incluir un descodificador de entropía 210, un reordenador 215, un cuantificador inverso 220, un transformador inverso 225, predictores 230 y 235, un filtro 240 y una memoria 245.
Cuando se introduce un flujo de bits de vídeo desde un codificador, el flujo de bits de entrada puede descodificarse mediante un procedimiento inverso al del codificador.
El descodificador de entropía 210 puede realizar la descodificación de entropía en un procedimiento inverso al procedimiento en el que el codificador de entropía del codificador realiza la codificación de entropía. Por ejemplo, pueden aplicarse diversos procedimientos, tales como el Golomb exponencial, codificación de longitud variable adaptable al contexto (CAVLC) y codificación aritmética binaria adaptable al contexto (CABAC) para que se correspondan con el procedimiento realizado por el codificador.
El descodificador de entropía 210 puede descodificar información relacionada con la predicción intra y la predicción inter realizadas por el codificador.
El reordenador 215 puede reordenar el flujo de bits sometido a descodificación de entropía por el descodificador de entropía 210 basándose en el procedimiento de reordenamiento utilizado por el codificador. El reordenador 215 puede reconstruir coeficientes expresados en forma de vector unidimensional en coeficientes bidimensionales de tipo bloque para reordenar los coeficientes bidimensionales de tipo bloque. El reordenador 215 puede recibir información relacionada con el escaneo de coeficientes realizado por el codificador y realizar el reordenamiento mediante un procedimiento de escaneo inverso basándose en el orden de escaneo del codificador.
El cuantificador inverso 220 puede realizar la cuantificación inversa basándose en los valores de coeficiente de bloque reordenados y los parámetros de cuantificación proporcionados por el codificador.
El transformador inverso 225 puede realizar DCT inversa o DST inversa sobre un resultado de la cuantificación realizada por el codificador, en el que la DCT inversa o la DST inversa es la inversa de la transformación que ha sido realizada por la unidad de transformación, es decir, DCT o DST. Aquí, un núcleo de transformación DCT puede incluir al menos uno de DCT2 o DCT8, y un núcleo de transformación DST puede incluir DST7. Alternativamente, cuando se omite la transformación en el codificador, el transformador inverso 225 puede no realizar la transformada inversa. La transformación inversa puede realizarse basándose en una unidad de transmisión determinada por el codificador. En el transformador inverso 225 del descodificador, las técnicas de transformación (por ejemplo, DCT y DST) pueden realizarse selectivamente en función de múltiples elementos de información, tales como un procedimiento de predicción, el tamaño del bloque actual y una dirección de predicción.
Los predictores 230 y 235 pueden generar un bloque de predicción basándose en información relacionada con la generación del bloque de predicción, que es proporcionada por el descodificador de entropía 210, e información sobre un bloque o imagen previamente descodificados, que es proporcionada por la memoria 245.
Como se ha descrito anteriormente, cuando la predicción intra se realiza de la misma manera que la del codificador y la unidad de predicción es igual en tamaño a la unidad de transformación, la predicción intra se puede realizar en la unidad de predicción basándose en píxeles situados a la izquierda de la unidad de predicción, píxeles situados en la esquina superior izquierda de la unidad de predicción, y píxeles situados en la parte superior de la unidad de predicción. Por otro lado, cuando se realiza la predicción intra y la unidad de predicción es diferente en tamaño de la unidad de transformación, la predicción intra puede realizarse utilizando un píxel de referencia basado en la unidad de transformación. También se puede utilizar la predicción intra utilizando la partición NxN sólo para la unidad de codificación mínima.
Los predictores 230 y 235 pueden incluir un determinador de unidad de predicción, un predictor inter y un predictor intra. El determinador de unidad de predicción puede recibir una variedad de información tal como información de unidad de predicción, información de modo de predicción para el procedimiento de predicción intra, e información relacionada con la predicción de movimiento para el procedimiento de predicción inter desde el descodificador de entropía 210, clasificar la unidad de predicción en la unidad de codificación actual, y determinar si la unidad de predicción realiza predicción inter o predicción intra. Utilizando la información necesaria para la predicción inter de la unidad de predicción actual proporcionada por el codificador, el predictor inter 230 puede realizar la predicción inter de la unidad de predicción actual basándose en la información incluida en al menos una de una imagen anterior a la imagen actual que incluya la unidad de predicción actual o una imagen posterior a la imagen actual. Alternativamente, la predicción inter puede realizarse basándose en información sobre algunas regiones reconstruidas previamente en la imagen actual incluyendo la unidad de predicción actual.
El predictor inter 230 puede determinar si el procedimiento de predicción de movimiento para la unidad de predicción incluida en la unidad de codificación correspondiente es un modo de salto, un modo de fusión, un modo AMVP o un modo de copia de bloque intra basándose en la unidad de codificación para realizar la predicción inter.
El predictor intra 235 puede generar un bloque de predicción basándose en la información sobre los píxeles de la imagen actual. Cuando la unidad de predicción es una unidad de predicción sujeta a predicción intra, el predictor intra 235 puede realizar predicción intra basándose en la información del modo de predicción intra de la unidad de predicción proporcionada por el codificador. El predictor intra 235 puede incluir un filtro AIS, un interpolador de píxeles de referencia y un filtro DC. El filtro AIS, que es una parte que realiza el filtrado en el píxel de referencia del bloque actual, puede determinar si aplicar el filtro dependiendo del modo de predicción de la unidad de predicción actual. El filtro AIS puede realizar el filtrado AIS en el píxel de referencia del bloque actual utilizando la información del filtro AIS y el modo de predicción de la unidad de predicción proporcionada por el codificador. Cuando el modo de predicción del bloque actual es un modo en el que no se realiza el filtrado AIS, es posible que no se aplique el filtro AIS.
Cuando el modo de predicción de la unidad de predicción es un modo de predicción en el que la predicción intra se realiza basándose en un valor de píxel obtenido interpolando el píxel de referencia, el interpolador del píxel de referencia puede interpolar el píxel de referencia para generar el píxel de referencia en una unidad de píxel menor o igual que un número entero. Cuando el modo de predicción de la unidad de predicción actual es un modo de predicción en el que el bloque de predicción se genera sin interpolar el píxel de referencia, el píxel de referencia puede no interpolarse. Cuando el modo de predicción del bloque actual es un modo de DC, el filtro de DC puede generar el bloque de predicción mediante filtrado.
El bloque o la imagen reconstruidos pueden proporcionarse al filtro 240. El filtro 240 puede incluir un filtro de desbloqueo, un corrector de desplazamiento y un filtro ALF.
El filtro 240 puede recibir información sobre si el filtro de desbloqueo se aplica a un bloque o imagen correspondiente o información sobre si se aplica un filtro fuerte o un filtro débil cuando el filtro de desbloqueo se aplica desde el codificador. El filtro de desbloqueo del descodificador puede recibir información relacionada con el filtro de desbloqueo, que es proporcionada por el codificador, y el descodificador puede realizar el filtrado de desbloqueo en un bloque correspondiente.
El corrector de desplazamiento puede realizar la corrección de desplazamiento en la imagen reconstruida basándose en el tipo de corrección de desplazamiento, la información del valor de desplazamiento y similares que se aplican a la imagen durante la codificación.
El ALF puede aplicarse a la unidad de codificación basándose en la información sobre si debe aplicarse el ALF, la información sobre el coeficiente ALF, etc., proporcionada por el codificador. La información del ALF puede proporcionarse mediante su inclusión en un conjunto de parámetros particular.
La memoria 245 puede almacenar la imagen o el bloque reconstruidos de modo que la imagen o el bloque puedan utilizarse como imagen o bloque de referencia, y también puede proporcionar la imagen reconstruida a una unidad de salida.
La figura 3 es un diagrama que muestra una unidad de árbol de codificación básica según una realización de la presente invención.
Una unidad de codificación del mayor tamaño puede definirse como un bloque de árbol de codificación. Una imagen se divide en una pluralidad de unidades de árbol de codificación (CTU). Una unidad de árbol de codificación, que es una unidad de codificación del máximo tamaño, puede denominarse unidad de codificación de máximo tamaño (LCU). La figura 3 muestra un ejemplo en el que una imagen se divide en una pluralidad de unidades de árbol de codificación.
El tamaño de la unidad de árbol de codificación puede definirse a nivel de imagen o a 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 de una secuencia puede fijarse en 128x128. Alternativamente, uno de 128x128 o 256x256 puede ser determinado como el tamaño de la unidad de árbol de codificación a nivel de imagen. Por ejemplo, el tamaño de una unidad de árbol de codificación en una primera imagen puede establecerse en 128x128, y el tamaño de una unidad de árbol de codificación en una segunda imagen puede establecerse en 256x256.
La unidad de árbol de codificación puede dividirse para generar un bloque de codificación. Un bloque de codificación indica una unidad básica para el procesamiento de codificación o descodificación. Por ejemplo, puede realizarse una predicción o transformación para cada bloque de codificación, o puede determinarse un modo de codificación predictiva para cada bloque de codificación. Aquí, el modo de codificación predictiva indica un procedimiento para generar una imagen de predicción. Como ejemplo, el modo de codificación predictiva puede incluir predicción intra, predicción inter, referenciación de imagen actual (CPR) (o copia de bloque intra (IBC)) o predicción combinada. Un bloque de predicción para un bloque de codificación puede ser generado usando al menos un modo de codificación predictiva de entre predicción intra, predicción inter, referenciación de imagen actual o predicción combinada para el bloque de codificación.
La información que indica el modo de codificación predictiva del bloque actual puede señalizarse en un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit que indica si el modo de codificación predictiva es un modo intra o un modo inter. La referenciación de la imagen actual o la predicción combinada pueden estar disponibles sólo cuando se determina que el modo de codificación predictiva del bloque actual es el modo inter.
La referenciación de la imagen actual consiste en establecer la imagen actual como imagen de referencia y adquirir el bloque de predicción del bloque actual de una región de la imagen actual en la que se ha completado la codificación o descodificación. Aquí, la imagen actual se refiere a una imagen que incluye el bloque actual. La información que indica que la referenciación de la imagen actual se aplica al bloque actual puede señalizarse en un flujo de bits. Como ejemplo, la información puede ser una bandera de 1 bit. Puede determinarse que el modo de codificación predictiva del bloque actual es referenciación de la imagen actual cuando la bandera es verdadera, y puede determinarse que el modo de predicción del bloque actual es predicción inter cuando la bandera es falsa.
Alternativamente, el modo de codificación predictiva del bloque actual puede determinarse basándose en un índice de imagen de referencia. Como ejemplo, cuando el índice de imagen de referencia indica la imagen actual, puede determinarse que el modo de codificación predictiva del bloque actual es la referenciación de la imagen actual. Cuando el índice de imagen de referencia indica una imagen distinta de la actual, puede determinarse que el modo de codificación predictiva del bloque actual es predicción inter. Es decir, la referenciación de la imagen actual es un procedimiento de predicción que utiliza información de una región de la imagen actual en la que se ha completado la codificación o descodificación, y la predicción inter es un procedimiento de predicción que utiliza información de otra imagen en la que se ha completado la codificación o descodificación.
La predicción combinada indica un modo de codificación obtenido mediante la combinación de dos o más de predicción intra, predicción inter y referenciación de la imagen actual. Por ejemplo, cuando se aplica la predicción combinada, puede generarse un primer bloque de predicción basándose en una de predicción intra, predicción inter o referenciación de la imagen actual, y puede generarse un segundo bloque de predicción basándose en otra opción. Cuando se generan el primer bloque de predicción y el segundo bloque de predicción, puede generarse un bloque de predicción final mediante una operación de promediado o una operación de suma ponderada entre el primer bloque de predicción y el segundo bloque de predicción. La información que indica si se aplica la predicción combinada puede señalizarse en un flujo de bits. La información puede ser una bandera de 1 bit.
La figura 4 es un diagrama que muestra varios tipos de partición de un bloque de codificación.
Un bloque de codificación puede dividirse en una pluralidad de bloques de codificación basándose en partición en árbol cuádruple, partición en árbol binario o partición en árbol ternario. Un bloque de codificación obtenido a través de la partición puede volver a dividirse en una pluralidad de bloques de codificación basándose en la partición en árbol cuádruple, la partición en árbol binario o la partición en árbol ternario.
La partición en árbol cuádruple indica una técnica de partición para dividir el bloque actual en cuatro bloques. Como resultado de la partición en árbol cuádruple, el bloque actual puede dividirse en cuatro particiones cuadradas (véase "SPLIT_QT" de la figura 4A).
La partición en árbol binario indica una técnica de partición para dividir el bloque actual en dos bloques, dividir el bloque actual en dos bloques en dirección vertical (es decir, usando una línea vertical que cruza el bloque actual) puede denominarse partición vertical en árbol binario, y dividir el bloque actual en dos bloques en dirección horizontal (es decir, usando una línea horizontal que cruza el bloque actual) puede denominarse partición horizontal en árbol binario. Como resultado de la partición en árbol binario, el bloque actual puede ser dividido en dos particiones no cuadradas. En la figura 4B, "SPLIT BTVER" representa el resultado de la partición vertical en árbol binario. En la figura 4C, "SPLIT BT HOR" representa un resultado de la partición horizontal en árbol binario.
La partición en árbol ternario indica una técnica de partición para dividir el bloque actual en tres bloques, dividir el bloque actual en tres bloques en dirección vertical (es decir, usando dos líneas verticales que cruzan el bloque actual) puede denominarse partición vertical en árbol ternario, y dividir el bloque actual en tres bloques en dirección horizontal (es decir, usando dos líneas horizontales que cruzan el bloque actual) puede denominarse partición horizontal en árbol ternario. Como resultado de la partición en árbol ternario, el bloque actual puede dividirse en tres particiones no cuadradas. En este caso, la anchura o la altura de la partición situada en el centro del bloque actual puede ser el doble de la de las otras particiones. En la figura 4D, "'SPLIT_TT_VER'" representa un resultado de la partición vertical en árbol ternario. En la figura 4E, "SPLIT_TT HOR" representa un resultado de la partición horizontal en árbol ternario.
El número de veces que una unidad de árbol de codificación es dividida puede ser definido como una profundidad de partición (profundidad de partición). La profundidad máxima de partición de la unidad de árbol de codificación puede determinarse a nivel de secuencia o a nivel de imagen. Así, la profundidad máxima de partición de la unidad de árbol de codificación puede variar en función de la secuencia o la imagen.
Alternativamente, la profundidad máxima de partición puede determinarse individualmente para cada técnica de partición. Como ejemplo, la profundidad máxima de partición permitida para la partición en árbol cuádruple puede ser diferente de la profundidad máxima de partición permitida para la partición en árbol binario y/o la partición en árbol ternario.
El codificador puede señalizar información que indique al menos uno de los tipos de partición o la profundidad de partición del bloque actual en un flujo de bits. El decodificador puede determinar el tipo de partición y la profundidad de partición de la unidad de árbol de codificación basándose en la información analizada del flujo de bits.
La figura 5 es un diagrama que ilustra un aspecto de partición de una unidad de árbol de codificación.
La partición de un bloque de codificación utilizando una técnica de partición tal como partición en árbol cuádruple, partición en árbol binario y/o partición en árbol ternario puede denominarse partición multiárbol (partición multiárbol).
Los bloques de codificación generados aplicando la partición multiárbol al bloque de codificación pueden denominarse bloques de codificación inferiores. Cuando la profundidad de partición del bloque de codificación es k, la profundidad de partición de los bloques de codificación inferiores se establece enk+1.
Por el contrario, con respecto a los bloques de codificación con una profundidad de partición dek+1, un bloque de codificación con una profundidad de partición dekpuede denominarse bloque de codificación superior.
El tipo de partición del bloque de codificación actual puede determinarse basándose en al menos uno de los tipos de partición del bloque de codificación superior o del tipo de partición de un bloque de codificación vecino. Aquí, el bloque de codificación vecino es adyacente al bloque de codificación actual y puede incluir al menos uno de un bloque vecino situado encima del bloque de codificación actual, un bloque vecino situado a la izquierda del bloque de codificación actual, o un bloque vecino adyacente a la esquina superior izquierda del bloque de codificación actual. Aquí, el tipo de partición puede incluir al menos uno de la presencia de partición en árbol cuádruple, la presencia de partición en árbol binario, la dirección de partición en árbol binario, la presencia de partición en árbol ternario o la dirección de partición en árbol ternario.
Para determinar el tipo de partición del bloque de codificación, puede señalizarse en un flujo de bits información que indique si el bloque de codificación está dividido. La información es una bandera de 1 bit "split_cu_flag", y si la bandera es verdadera indica que el bloque de codificación está dividido mediante una técnica de partición multiárbol.
Cuando split cu_flag es verdadera, puede señalizarse en un flujo de bits información que indique si el bloque de codificación está dividido mediante partición en cuádruple árbol. La información es una bandera de 1 bit "split_qt _flag", y cuando la bandera es verdadera, el bloque de codificación puede dividirse en cuatro bloques.
Por ejemplo, se muestra en la figura 5 que cuatro bloques de codificación con una profundidad de partición de uno son generados porque la unidad de árbol de codificación es dividida a través de partición en árbol cuádruple. También se muestra que la partición en árbol cuádruple se vuelve a aplicar al primer bloque de codificación y al cuarto bloque de codificación de entre los cuatro bloques de codificación generados al realizar la partición en árbol cuádruple. Como resultado, se pueden generar cuatro bloques de codificación con una profundidad de partición de dos.
Además, al volver a aplicar la partición en árbol cuádruple a un bloque de codificación con una profundidad de partición de dos, se puede generar un bloque de codificación con una profundidad de partición de tres.
Cuando no se aplica la partición en árbol cuádruple a un bloque de codificación, se puede determinar si se realiza la partición en árbol binario o la partición en árbol ternario en el bloque de codificación teniendo en cuenta al menos uno del tamaño del bloque de codificación, si el bloque de codificación está situado en un borde de la imagen, la profundidad máxima de partición o el aspecto de partición de un bloque vecino. Cuando se determina que la partición en árbol binario o la partición en árbol ternario se realiza en el bloque de codificación, la información que indica una dirección de partición puede ser señalizada en un flujo de bits. La información puede ser una bandera de 1 bit mtt_split_cu_vertical_flag. Basándose en la bandera, se puede determinar si la dirección de partición es vertical u horizontal. Además, la información que indica cuál de las particiones en árbol binario y particiones en árbol ternario se aplica al bloque de codificación puede señalizarse en un flujo de bits. La información puede ser una bandera de 1 bit mtt_split_cu_binary_flag. Basándose en la bandera, se puede determinar si se aplica la partición en árbol binario o la partición en árbol ternario al bloque de codificación.
Por ejemplo, se muestra en la figura 5 que la partición vertical en árbol binario se aplica a un bloque de codificación con una profundidad de partición de uno, la partición vertical en árbol ternario se aplica a un bloque de codificación izquierdo de entre los bloques de codificación generados como resultado de la partición vertical en árbol binario, y la partición vertical en árbol binario se aplica a un bloque de codificación derecho.
La predicción inter es un modo de codificación predictiva en el que el bloque actual se predice utilizando información de la imagen precedente. Como ejemplo, un bloque incluido en la imagen precedente y situado en la misma ubicación que el bloque actual (en lo sucesivo denominado bloque coubicado) puede establecerse como bloque de predicción del bloque actual. Un bloque de predicción generado a partir de un bloque situado en la misma ubicación que el bloque actual se denominará bloque de predicción coubicado.
Mientras tanto, cuando un objeto presente en la imagen precedente se mueve a una ubicación diferente en la imagen actual, el bloque actual puede predecirse eficazmente utilizando el movimiento del objeto. Por ejemplo, cuando la dirección de movimiento y el tamaño del objeto se pueden encontrar comparando la imagen precedente con la imagen actual, se puede generar un bloque de predicción (o una imagen de predicción) del bloque actual teniendo en cuenta la información de movimiento del objeto. En lo sucesivo, el bloque de predicción generado utilizando la información de movimiento se denominará bloque de predicción de movimiento.
Puede generarse un bloque residual restando el bloque de predicción del bloque actual. En este momento, cuando el movimiento del objeto está presente, es posible reducir la energía del bloque residual y, en consecuencia, es posible mejorar el rendimiento de compresión del bloque residual utilizando el bloque de predicción de movimiento en lugar del bloque de predicción coubicado.
Como se ha descrito anteriormente, la generación de un bloque de predicción utilizando información de movimiento puede denominarse predicción de compensación de movimiento. En la mayoría de las predicciones inter, se puede generar un bloque de predicción basado en la predicción de compensación de movimiento.
La información de movimiento puede incluir al menos uno de un vector de movimiento, un índice de imagen de referencia, una dirección de predicción o un índice de ponderación bidireccional. El vector de movimiento indica la dirección de movimiento y el tamaño del 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 de predicción unidireccional L0, predicción unidireccional L 1 o predicción bidireccional (predicción L0 y predicción L1). Dependiendo de la dirección de predicción del bloque actual, puede utilizarse al menos una de la información de movimiento en dirección L0 o la información de movimiento en dirección L1. El índice de ponderación bidireccional especifica una ponderación aplicada a un bloque de predicción L0 y una ponderación aplicada a un bloque de predicción L1.
La figura 6 es un diagrama de flujo de un procedimiento de predicción inter según una realización de la presente invención.
Refiriéndose a la figura 6, el procedimiento de predicción inter incluye determinar un modo de predicción inter del bloque actual (S601), adquirir información de movimiento del bloque actual de acuerdo con el modo de predicción inter determinado (S602), y realizar predicción de compensación de movimiento en el bloque actual basándose en la información de movimiento adquirida (S603).
Aquí, el modo de predicción inter, que representa varias técnicas para determinar la información de movimiento del bloque actual puede incluir un modo de predicción inter usando información de movimiento de traslación y un modo de predicción inter usando información de movimiento afín. Por ejemplo, el modo de predicción inter que utiliza 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 predicción inter que utiliza 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 a partir de la información analizada del flujo de bits o de los bloques vecinos al bloque actual de acuerdo con el modo de predicción inter.
El procedimiento de predicción inter que utiliza información de movimiento afín se describirá en detalle más adelante.
La figura 7 es un diagrama que muestra un movimiento no lineal de un objeto.
El movimiento de un objeto en una imagen puede ocurrir no linealmente. Por ejemplo, como en el ejemplo mostrado en figura 7, puede ocurrir el movimiento no lineal de un objeto, tal como acercamiento, alejamiento, rotación, y transformación afín. Cuando ocurre el movimiento no lineal del objeto, el vector de movimiento de traslación no puede representar eficazmente el movimiento del objeto. En consecuencia, es posible mejorar la eficacia de la codificación utilizando el movimiento afín en una parte en la que se ha producido el movimiento no lineal del objeto en lugar del movimiento de traslación.
La figura 8 es un diagrama de flujo de un procedimiento de predicción inter basado en movimiento afín según una realización de la presente invención.
Se puede determinar si se aplica una técnica de predicción inter basada en el movimiento afín al bloque actual basándose en la información analizada del flujo de bits. En detalle, si la técnica de predicción inter basada en movimiento afín se aplica al bloque actual puede determinarse basándose en al menos una de una bandera que indica si el modo de fusión afín se aplica al bloque actual o una bandera que indica si el modo de predicción de vector de movimiento afín se aplica al bloque actual.
Cuando la técnica de predicción inter basada en movimiento afín se aplica al bloque actual, puede determinarse un modelo de movimiento afín del bloque actual (S801). Al menos uno de un modelo de movimiento afín de 6 parámetros o un modelo de movimiento afín de 4 parámetros puede determinarse como el modelo de movimiento afín. El modelo de movimiento afín de 6 parámetros expresa un modelo afín usando seis parámetros, y el modelo de movimiento afín de 4 parámetros expresa un modelo afín usando cuatro parámetros.
La Ecuación 1 expresa un movimiento afín usando seis parámetros. Un movimiento afín representa un movimiento de traslación para una región dada determinada por vectores semilla afines.
[Ecuación 1]
vx= a x -b y+ e
v v=ex+ dy J
Cuando un movimiento afín se expresa utilizando seis parámetros, se puede expresar un movimiento complejo, pero el número de bits necesarios para codificar los parámetros puede aumentar, reduciendo así la eficacia de la codificación. Por consiguiente, un movimiento afín puede expresarse utilizando 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+J
La información para determinar el modelo de movimiento afín del modelo actual puede codificarse y señalizarse en un flujo de bits. Como ejemplo, la información puede ser una bandera de 1 bit "affine_type_flag". Un valor de la bandera de 0 puede indicar que se aplica el modelo de movimiento afín de 4 parámetros, y un valor de bandera de 1 puede indicar que se aplica el modelo de movimiento afín de 6 parámetros. La bandera puede codificarse en unidades de segmentos, mosaicos o bloques (por ejemplo, bloques de codificación o unidades de árbol de codificación). Cuando la bandera es señalizada a nivel de segmento, el modelo de movimiento afín determinado a nivel de segmento puede ser aplicado a todos los bloques pertenecientes al segmento.
Alternativamente, el modelo de movimiento afín del bloque actual puede determinarse basándose en el modo de predicción inter afín del bloque actual. Por ejemplo, cuando se aplica el modo de fusión afín, puede determinarse que el modelo de movimiento afín del bloque actual es 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, la información para determinar el modelo de movimiento afín del bloque actual puede codificarse y señalizarse en un flujo de bits. Como ejemplo, cuando se aplica el modo de predicción de vector de movimiento afín al bloque actual, el modelo de movimiento afín del bloque actual puede determinarse basándose en una bandera de 1 bit '"affine_type_flag",
A continuación, se puede obtener un vector semilla afín del bloque actual (S802). Cuando se selecciona el modelo de movimiento afín de 4 parámetros, se pueden obtener vectores de movimiento en dos puntos de control del bloque actual. Por otro lado, cuando se selecciona el modelo de movimiento afín de 6 parámetros, se pueden obtener vectores de movimiento en tres puntos de control del bloque actual. Un vector de movimiento en un punto de control puede ser denominado un vector semilla afín. El punto de control puede incluir al menos una de la esquina superior-izquierda, la esquina superior-derecha o la esquina inferior-izquierda del bloque actual.
La figura 9 es un diagrama que muestra un vector semilla afín para cada modelo de movimiento afín.
En el modelo de movimiento afín de 4 parámetros, se pueden obtener los vectores semilla afines para dos de la esquina superior-izquierda, la esquina superior-derecha o la esquina inferior-izquierda. Por ejemplo, como en el ejemplo mostrado en la figura 9A, cuando se selecciona el modelo de movimiento afín de 4 parámetros, se puede obtener un vector afín usando un vector semilla afín sv<0>para la esquina superior-izquierda del bloque actual (por ejemplo, una muestra superior-izquierda (x<0>, yü)) y un vector semilla afín sv<1>para la esquina superior-derecha del bloque actual (por ejemplo, una muestra superior derecha (x<1>, yó). El vector semilla afín para la esquina inferiorizquierda puede utilizarse en lugar del vector semilla afín para la esquina superior-izquierda, o el vector semilla afín para la esquina inferior-izquierda puede utilizarse en lugar del vector semilla afín para la esquina superior-derecha.
En el modelo de movimiento afín de 6 parámetros, se pueden obtener vectores semilla afines para la esquina superiorizquierda, la esquina superior-derecha y la esquina inferior-izquierda. Por ejemplo, como en el ejemplo mostrado en la figura 9B, cuando se selecciona el modelo de movimiento afín de 6 parámetros, se puede obtener un vector afín usando el vector semilla afín sv<0>para la esquina superior-izquierda del bloque actual (por ejemplo, una muestra superior-izquierda (x<0>, y<0>)), el vector semilla afín sv<1>para la esquina superior-derecha del bloque actual (por ejemplo, una muestra superior-derecha (x<1>, yi)), y un vector semilla afín sv<2>para la esquina superior-izquierda del bloque actual (por ejemplo, una muestra superior-izquierda (X<2>, y<2>)).
En la siguiente realización, bajo el modelo de movimiento afín de 4 parámetros, los vectores semilla afines para el punto de control superior-izquierdo y el punto de control superior-derecho se denominarán primer vector semilla afín y segundo vector semilla afín, respectivamente. En las siguientes realizaciones en las que se utilizan el primer vector semilla afín y el segundo vector semilla afín, al menos uno del primer vector semilla afín y el segundo vector semilla afín puede sustituirse por un vector semilla afín (un tercer vector semilla afín) para un punto de control inferior-izquierdo o un vector semilla afín (un cuarto vector semilla afín) para un punto de control inferior-derecho.
Además, bajo el modelo de movimiento afín de 6 parámetros, los vectores semilla afines del punto de control superiorizquierdo, del punto de control superior-derecho y del punto de control inferior-izquierdo se denominarán primer vector semilla afín, segundo vector semilla afín y tercer vector semilla afín, respectivamente. En las siguientes realizaciones en las que se utilizan el primer vector semilla afín, el segundo vector semilla afín y el tercer vector semilla afín, al menos uno del primer vector semilla afín, el segundo vector semilla afín y el tercer vector semilla afín puede sustituirse por un vector semilla afín (un cuarto vector semilla afín) para un punto de control inferior-derecho.
Se puede obtener un vector afín para cada subbloque utilizando los vectores semilla afines (S803). Aquí, el vector afín indica un vector de movimiento de traslación obtenido basado en los vectores semilla afines. El vector afín del subbloque puede denominarse un vector de movimiento de subbloque afín o un vector de movimiento de subbloque.
La figura 10 es un diagrama que muestra vectores afines de subbloques bajo un modelo de movimiento de 4 parámetros.
El vector afín del subbloque se puede obtener basándose en la ubicación de un punto de control, la ubicación de un subbloque y un vector semilla afín. Como ejemplo, la Ecuación 3 muestra un ejemplo de obtención de un vector afín de subbloque.
En la Ecuación 3, (x, y) representa la ubicación del subbloque. Aquí, la ubicación del subbloque indica la ubicación de una muestra de referencia incluida en el subbloque. Una muestra de referencia puede ser una muestra ubicada en la esquina superior-izquierda del subbloque o una muestra en la que al menos una de una coordenada x o una coordenada y está situada en el centro. (x<0>, yü) representa la ubicación del primer punto de control, y (svüx, svüy) representa el primer vector semilla afín. Asimismo, (xi, yi) representa la ubicación del segundo punto de control, y (svix, sviy) representa el segundo vector 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 con el mismo valor que la anchura del bloque actual.
Posteriormente, se puede realizar la predicción de compensación de movimiento para cada subbloque utilizando el vector afín del subbloque correspondiente (S804). Como resultado de realizar la predicción de compensación de movimiento, se puede generar un bloque de predicción para cada subbloque. Los bloques de predicción de los subbloques pueden establecerse como el bloque de predicción del bloque actual.
El vector semilla afín del bloque actual se puede obtener basándose en el vector semilla afín del bloque vecino al bloque actual. Cuando el modo de predicción inter del bloque actual es el modo de fusión afín, el vector semilla afín de un candidato de fusión incluido en una lista de candidatos de fusión puede determinarse como el vector semilla afín del bloque actual. Además, cuando el modo de predicción inter del bloque actual es el modo de fusión afín, la información de movimiento que incluye al menos uno de un índice de imagen de referencia, una bandera de predicción de dirección específica o una ponderación bidireccional del bloque actual también se puede establecer para ser el mismo que el candidato de fusión.
El candidato de fusión se puede obtener basándose en el bloque vecino del bloque actual. El bloque vecino puede incluir al menos uno de un bloque vecino espacial que es espacialmente adyacente al bloque actual y un bloque vecino temporal que está incluido en una imagen diferente de la imagen actual.
La figura 11 es un diagrama que muestra bloques vecinos que pueden ser usados para obtener un candidato de fusión.
El bloque vecino del bloque actual puede incluir al menos uno de un bloque vecino (A) adyacente a la izquierda del bloque actual, un bloque vecino (B) adyacente a la parte superior del bloque actual, un bloque vecino (C) adyacente a la esquina superior-derecha del bloque actual, un bloque vecino (D) adyacente a la esquina inferior-izquierda del bloque actual o un bloque vecino (E) adyacente a la esquina superior-izquierda del bloque actual. Cuando una muestra superior-izquierda del bloque actual tiene coordenadas (xc, y<0>), el bloque vecino izquierdo A incluye una muestra situada en (X0-1, y0+H-1), y el bloque vecino superior B incluye una muestra situada en (X0+W-1, y0-1). Aquí, W y H representan la anchura y la altura del bloque actual, respectivamente. El bloque vecino superior-derecho C incluye una muestra situada en (X<0>+W, y0-1), y el bloque vecino inferior-izquierdo D incluye una muestra situada en (X<0>-<1>, y<0>+H). El bloque vecino superior-izquierdo E incluye una muestra situada en (x0-1, y0-1).
Cuando el bloque vecino se codifica en el modo de predicción inter afín, el vector semilla afín del candidato de fusión se puede obtener basándose en el vector semilla afín del bloque vecino correspondiente. En lo sucesivo, el bloque vecino codificado en el modo de predicción inter afín se denominará bloque vecino afín, y el candidato de fusión obtenido del bloque vecino afín se denominará candidato de fusión afín.
Los bloques vecinos pueden descubrirse en un orden de escaneo predefinido para generar un candidato de fusión afín para el bloque actual. El orden de escaneo puede predefinirse en un codificador y un descodificador. Por ejemplo, los bloques vecinos pueden descubrirse en el orden A, B, C, D y E. Además, los candidatos de fusión afín pueden obtenerse secuencialmente de los bloques vecinos afines descubiertos. Alternativamente, el orden de escaneo puede determinarse de forma adaptativa basándose en al menos uno del tamaño, forma o modelo de movimiento afín del bloque actual. Es decir, los órdenes de escaneo para bloques que difieren en al menos uno del tamaño, forma o modelo de movimiento afín pueden ser diferentes entre sí.
Alternativamente, los bloques situados encima del bloque actual pueden descubrirse secuencialmente para obtener un candidato de fusión afín de un bloque vecino afín que se descubre primero, y los bloques ubicados a la izquierda del bloque actual pueden descubrirse secuencialmente para obtener un candidato de fusión afín de un bloque vecino afín que se encuentra primero. Aquí, los bloques vecinos ubicados encima del bloque actual pueden incluir al menos uno del bloque vecino E, el bloque vecino B o el bloque vecino C, y los bloques ubicados a la izquierda del bloque actual pueden incluir al menos uno del bloque A o el bloque D. En este caso, el bloque vecino E puede clasificarse como un bloque ubicado a la izquierda del bloque actual.
Aunque no se muestra, un candidato de fusión afín se puede obtener de un bloque temporalmente vecino del bloque actual. Aquí, el bloque temporalmente vecino puede incluir un bloque colocado en la misma ubicación en una imagen coubicada que el bloque actual o un bloque adyacente al bloque. En detalle, cuando el bloque temporalmente vecino del bloque actual se codifica en el modo de predicción inter afín, el candidato de fusión afín se puede obtener basándose en el vector semilla afín del candidato de fusión afín temporal.
Se puede generar una lista de candidatos de fusión que incluye candidatos de fusión afines, y el vector semilla afín de uno de los candidatos de fusión incluidos en la lista de candidatos de fusión se puede determinar como el vector semilla afín del bloque actual. Para ello, la información de índice para identificar uno de los candidatos de fusión puede codificarse y transmitirse en un flujo de bits.
Como otro ejemplo, mientras se descubren bloques vecinos en el orden de escaneo, el vector semilla afín del bloque actual se puede obtener del vector semilla afín de un bloque vecino afín que se encuentra primero.
El vector semilla afín del bloque actual se puede obtener utilizando el vector semilla afín del bloque vecino en el modo de fusión afín.
Cuando el modo de predicción inter del bloque actual es el modo de predicción de vector de movimiento afín, el vector semilla afín de un candidato de predicción de vector de movimiento incluido en un candidato de predicción de vector de movimiento puede determinarse como un valor de predicción de vector semilla afín del bloque actual. Al añadir un valor de diferencia de vector semilla afín al valor de predicción de vector semilla afín, se puede obtener el vector semilla afín del bloque actual.
Se puede obtener un candidato de predicción de vector semilla afín basándose en un bloque vecino del bloque actual. En detalle, los bloques vecinos ubicados encima del bloque actual se descubren en un orden de escaneo predeterminado, y se puede obtener un primer candidato de predicción de vector semilla afín a partir de un bloque vecino afín que se encuentre primero. Además, los bloques vecinos ubicados a la izquierda del bloque actual se descubren en un orden de escaneo predeterminado, y se puede obtener un segundo candidato de predicción de vector semilla afín a partir de un bloque vecino afín que se encuentre primero.
La información para determinar el valor de diferencia del vector semilla afín puede codificarse y transmitirse en un flujo de bits. La información puede incluir información de tamaño que indique el tamaño del valor de diferencia del vector semilla afín e información de signo que indique el signo del valor de diferencia del vector semilla afín. El valor de diferencia del vector semilla afín para cada punto de control puede establecerse en el mismo valor. Alternativamente, el valor de diferencia del vector semilla afín puede establecerse de forma diferente dependiendo del punto de control.
Como se ha descrito anteriormente, el vector semilla afín del candidato de fusión afín o del candidato de predicción del vector semilla afín se obtiene del vector semilla afín del bloque vecino afín, y el vector semilla afín del bloque actual se puede obtener utilizando el vector semilla afín obtenido del candidato de fusión afín o del candidato de predicción del vector semilla afín. Alternativamente, después de que se descubran bloques vecinos afines en un orden de escaneo predeterminado, se puede obtener el vector semilla afín del bloque actual a partir del vector semilla afín de un bloque vecino afín que se encuentre primero.
A continuación se describirá en detalle un procedimiento para obtener el vector semilla afín del bloque actual, el candidato de fusión afín o el candidato de predicción del vector semilla afín a partir del vector semilla afín del bloque vecino afín. En las siguientes realizaciones, obtener el vector semilla afín del bloque actual también puede entenderse como obtener el vector semilla afín del candidato de fusión afín u obtener el vector semilla afín del candidato de predicción del vector semilla afín.
La figura 12 es un diagrama que muestra un ejemplo de obtención del vector semilla afín del bloque actual basándose en el vector semilla afín de un bloque vecino afín.
Cuando un primer vector semilla afín nv<0>para un punto de control superior-izquierdo y un segundo vector semilla afín nv<1>para un punto de control superior-derecho se almacenan para el bloque vecino afín, se puede obtener un tercer vector semilla afín nv<2>para un punto de control inferior-izquierdo del bloque vecino afín basándose en el primer vector semilla afín y el segundo vector semilla afín. La Ecuación 4 muestra un ejemplo de obtención del tercer vector de semilla afín.
[Ecuación 4]
En la Ecuación 4, (nv<0>x, nv<0>y) representa el primer vector semilla afín nv<0>, (nv<1>x, nv<1>y) representa el segundo vector semilla afín nvi, y (nv<2>x, nv<2>y) representa el tercer vector semilla afín nv<2>. Además, (xn<0>, xn<0>) representa la ubicación del primer punto de control, (xn<1>, xn<1>) representa la ubicación del segundo punto de control y (xn<2>, xn<2>) representa la ubicación del tercer punto de control.
Posteriormente, se puede obtener el vector semilla afín del bloque actual utilizando el primer vector semilla afín, el segundo vector semilla afín y el tercer vector semilla afín. La Ecuación 5 muestra un ejemplo de obtención del primer vector semilla afín v<0>del bloque actual, y la Ecuación 6 muestra un ejemplo de obtención del segundo vector semilla afín vi del bloque actual.
[Ecuación 5]
En la Ecuación 5 y la Ecuación 6, (v<0>x, v<0>y) representa el primer vector semilla afín sv<0>del bloque actual, y (v<1>x, v<1>y) representa el segundo vector semilla afín sv<1>del bloque actual. Asimismo, (x<0>, y<0>) representa la ubicación del primer punto de control, y (x<1>, yó representa la ubicación del segundo punto de control. Como ejemplo, el primer punto de control indica la esquina superior-izquierda del bloque actual, y el segundo punto de control indica la esquina superiorderecha del bloque actual.
En el ejemplo descrito anteriormente, se ha descrito que los vectores semilla afines del bloque actual se obtienen utilizando tres vectores semilla afines para un bloque vecino afín. Como otro ejemplo, los vectores semilla afines del bloque actual pueden obtenerse utilizando sólo dos de los vectores semilla afines del bloque vecino afín.
Alternativamente, los vectores semilla afines del bloque actual pueden obtenerse utilizando el cuarto vector semilla afín para la esquina inferior-derecha en lugar del primer vector semilla afín para la esquina superior-izquierda, el segundo vector semilla afín para la esquina superior-derecha, o el tercer vector semilla afín para la esquina inferiorizquierda con respecto al bloque vecino afín.
En particular, cuando el borde superior del bloque actual es contiguo al borde superior de la unidad de árbol de codificación y se pretende utilizar un vector semilla afín para un punto de control superior (por ejemplo, la esquina superior-izquierda o la esquina superior-derecha) de un bloque vecino afín adyacente a la parte superior del bloque actual (en lo sucesivo denominado bloque vecino afín superior), este vector semilla afín debe almacenarse previamente en una memoria. En consecuencia, puede surgir un problema en el que aumenta el número de memorias intermedias de línea. Por lo tanto, cuando el borde superior del bloque actual es contiguo al borde superior de la unidad de árbol de codificación, puede establecerse que se utilice un vector semilla afín para un punto de control inferior (por ejemplo, la esquina inferior-izquierda o la esquina inferior-derecha) en lugar del vector semilla afín para el punto de control superior para el bloque vecino afín superior. Como ejemplo, los vectores semilla afines del bloque actual se pueden obtener usando el tercer vector semilla afín para la esquina inferior-izquierda y el cuarto vector semilla afín para la esquina inferior-derecha con respecto al bloque vecino afín superior. En este caso, los vectores semilla afines para las esquinas inferiores se pueden obtener copiando los vectores semilla afines para las esquinas superiores o a partir de los vectores semilla afines para las esquinas superiores. Por ejemplo, el cuarto vector semilla afín para la esquina inferior-derecha se puede utilizar mediante la conversión o sustitución del primer vector semilla afín, el segundo vector semilla afín o el tercer vector semilla afín.
La Ecuación 7 y la Ecuación 8 muestran ejemplos de obtención del primer vector semilla afín y del segundo vector semilla afín del bloque actual utilizando el tercer vector semilla afín para el punto de control inferior-izquierdo del vector afín vecino y el cuarto vector semilla afín para el punto de control inferior-derecho del vector afín vecino.
En las Ecuaciones 7 y 8, (xn<2>, yn<2>) representa las coordenadas del punto de control inferior-izquierdo del bloque vecino afín, y (xn3, yn3) representa las coordenadas del punto de control inferior-derecho del bloque vecino afín. (x<0>, y<0>) representa las coordenadas del punto de control superior-izquierdo del bloque actual, y (x<1>, y<1>) representa las coordenadas del punto de control superior-derecho del bloque actual. (nv<2>x, nv<2>y) representa el vector semilla afín para el punto de control inferior-izquierdo (es decir, el tercer vector semilla afín) del bloque vecino afín, y (nv<3>x, nv<3>y) representa el vector semilla afín para el punto de control inferior-derecho (es decir, el cuarto vector semilla afín) del bloque vecino afín. (v<0>x, v<0>y) representa el vector semilla afín para el punto de control superior-izquierdo (es decir, el primer vector semilla afín) del bloque actual, y (v<1>x, v<1>y) representa el vector semilla afín para el punto de control superior-derecho (es decir, el segundo vector semilla afín) del bloque actual.
Una operación de división incluida en la Ecuación 7 y la Ecuación 8 puede cambiarse por una operación de desplazamiento de bits. La operación de desplazamiento de bits puede realizarse basándose en un valor obtenido por la anchura (es decir, xn3-xn2) entre el punto de control inferior-izquierdo y el punto de control inferior-derecho.
Como en el ejemplo anterior, los vectores semilla afines del bloque actual se pueden obtener a partir de los vectores semilla afines del bloque vecino afín en el que se ha completado la codificación o descodificación. Para ello, los vectores semilla afines del bloque vecino afín en el que se ha completado la codificación o descodificación deben almacenarse en una memoria. Sin embargo, dado que los vectores semilla afines del bloque vecino afín se almacenan en la memoria además de los vectores de movimiento de traslación (es decir, vectores afines) de los subbloques incluidos en el bloque vecino afín, existe un problema en el que aumenta el uso de memoria. Para resolver este problema, el vector semilla afín del bloque actual se puede obtener utilizando un vector de movimiento de un subbloque adyacente a un punto de control del bloque vecino afín en lugar del vector semilla afín del bloque vecino afín. Es decir, el vector de movimiento del subbloque adyacente al punto de control del bloque vecino afín puede establecerse como el vector semilla afín del bloque vecino afín. Aquí, el subbloque puede ser un bloque con un tamaño o forma predefinidos en un codificador y un descodificador y puede ser un bloque con un tamaño o forma básicos en los que se almacena un vector de movimiento. Como ejemplo, el subbloque puede ser un bloque cuadrado de 4x4. Alternativamente, un vector de movimiento para una ubicación de muestra específica puede establecerse como el vector semilla afín del bloque vecino afín.
La figura 13 es un diagrama que muestra un ejemplo de establecimiento de un vector de movimiento de un subbloque como un vector semilla afín de un bloque vecino afín.
Un vector de movimiento de un subbloque adyacente a un punto de control puede establecerse como un vector semilla afín del punto de control correspondiente. Como ejemplo, como en un ejemplo mostrado en la figura 13, un vector de movimiento (nv4x, nv4y) de un subbloque adyacente a la esquina inferior-izquierda (un subbloque inferior-izquierdo) del bloque vecino afín se puede establecer como un vector semilla afín (nv<2>x, nv<2>x) para un punto de control inferiorizquierdo, y un vector de movimiento (nv5x, nv5y) de un subbloque adyacente a la esquina inferior-derecha (un subbloque inferior-derecho) se puede establecer como vector semilla afín (nv3x, nv3y) para un punto de control en la esquina inferior-derecha. Aquí, el subbloque inferior-izquierdo puede referirse a un subbloque que incluye una muestra adyacente a un punto de control inferior-izquierdo (xn<2>, yn<2>) en el bloque vecino afín (por ejemplo, una muestra ubicada en (Xn<2>, yn<2>-<1>)), y el subbloque inferior-derecho puede referirse a un bloque que incluye una muestra adyacente a un punto de control inferior-derecho (xn3, yn3) en el bloque vecino afín (por ejemplo, una muestra ubicada en (Xn3-1, yn3-1)). Cuando los vectores semilla afines del bloque actual se obtienen basándose en la Ecuación 7 y la Ecuación 8, el tercer vector semilla afín del bloque vecino afín puede sustituirse por el vector de movimiento del subbloque inferiorizquierdo, y el cuarto vector semilla afín puede sustituirse por el vector de movimiento del subbloque inferior-derecho.
En la siguiente realización, un subbloque utilizado como vector semilla afín del bloque vecino afín se denominará subbloque afín.
Según una realización de la presente invención, el subbloque afín se puede determinar basándose en una muestra ubicada en una ubicación específica. Como ejemplo, un subbloque que incluye una muestra ubicada en una ubicación específica puede establecerse como el subbloque afín. En lo sucesivo, la muestra ubicada en la ubicación específica se denominará muestra de referencia. Además, una muestra de referencia usada para determinar un subbloque afín para el punto de control inferior-izquierdo se denominará una muestra de referencia inferior-izquierda, y una muestra de referencia usada para determinar un subbloque afín para el punto de control inferior-derecho se denominará una muestra de referencia inferior-derecha.
La muestra de referencia inferior-izquierda y la muestra de referencia inferior-derecha pueden seleccionarse de entre las muestras incluidas en el bloque vecino afín. Como ejemplo, al menos una de una muestra superior-izquierda, una muestra inferior-izquierda, una muestra superior-derecha o una muestra inferior-izquierda del subbloque inferiorizquierdo se establece como la muestra de referencia inferior-izquierda, y al menos una de una muestra superiorizquierda, una muestra inferior-izquierda, una muestra superior-derecha o una muestra inferior-izquierda del subbloque inferior-derecho se establece como la muestra de referencia inferior-derecha. En consecuencia, los vectores de movimiento del subbloque inferior-izquierdo que incluye la muestra de referencia inferior-izquierda y del subbloque inferior-derecho que incluye la muestra de referencia inferior-derecha pueden establecerse como el vector semilla afín para el punto de control inferior-izquierdo y el vector semilla afín para el punto inferior-derecho, respectivamente.
Como otro ejemplo, al menos una de la muestra de referencia inferior-izquierda o la muestra de referencia inferiorderecha puede establecerse como una muestra ubicada fuera del bloque vecino afín. Esto se describirá en detalle a continuación, con referencia a las figuras 14 a 16.
Las figuras 14 a 16 son diagramas que muestran la ubicación de una muestra de referencia.
Como en el ejemplo mostrado en la figura 14A, para el punto de control inferior-izquierdo, una muestra superiorizquierda del subbloque inferior-izquierdo puede ser establecida como la muestra de referencia (xn4, yn4). Así, el subbloque inferior-izquierdo que incluye la muestra de referencia (xn<4>, yn<4>) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra ubicada a la derecha de una muestra superior-derecha del subbloque inferior-derecho puede establecerse como muestra de referencia (xn5, yn5). Así, el subbloque adyacente a la derecha del subbloque inferior-derecho que incluye la muestra de referencia (xn<5>, yn<5>) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Alternativamente, como en el ejemplo mostrado en la figura 14B, para el punto de control inferior-izquierdo, una muestra ubicada a la izquierda de una muestra superior-izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4). Así, el subbloque adyacente a la izquierda del subbloque inferior-izquierdo que incluye la muestra de referencia (xn<4>, yn<4>) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra superior-derecha del subbloque inferior-derecho puede establecerse como la muestra de referencia (xn5, yn5). Así, el subbloque inferior-derecho que incluye la muestra de referencia (xn5, yn5) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Alternativamente, como en el ejemplo mostrado en la figura 15A, para el punto de control inferior-izquierdo, una muestra inferior-izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4). Así, el subbloque inferior-izquierdo que incluye la muestra de referencia (xn<4>, yn<4>) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra ubicada a la derecha de una muestra inferior-derecha del subbloque inferior-derecho puede establecerse como la muestra de referencia (xn5, yn5). Así, el subbloque adyacente a la derecha del subbloque inferior-derecho que incluye la muestra de referencia (xn5, yn5) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Alternativamente, como en el ejemplo mostrado en la figura 15B, para el punto de control inferior-izquierdo, una muestra ubicada a la izquierda de una muestra inferior-izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4). Así, el subbloque adyacente a la izquierda del subbloque inferior-izquierdo que incluye la muestra de referencia (xn<4>, yn<4>) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra inferior-derecha del subbloque inferior-derecho puede establecerse como la muestra de referencia (xn5, yns). Así, el subbloque inferior-derecho que incluye la muestra de referencia (xn5, yn5) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Alternativamente, como en el ejemplo mostrado en la figura 16A, para el punto de control inferior-izquierdo, una muestra ubicada entre la muestra superior-izquierda y la muestra inferior-izquierda del subbloque inferior-izquierdo (por ejemplo, una muestra central izquierda) puede establecerse como la muestra de referencia (xn4, yn4). Así, el subbloque inferior-izquierdo que incluye la muestra de referencia (xn<4>, yn<4>) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra ubicada a la derecha de una muestra ubicada entre la muestra superior-derecha y la muestra inferior-derecha del subbloque inferior-derecho (por ejemplo, una muestra central derecha) puede establecerse como la muestra de referencia (xn5, yns). Así, el subbloque adyacente a la derecha del subbloque inferior-derecho que incluye la muestra de referencia (xn<5>, yn<5>) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Alternativamente, como en el ejemplo mostrado en la figura 16B, para el punto de control inferior-izquierdo, una muestra ubicada a la izquierda de la muestra ubicada entre la muestra superior-izquierda y la muestra inferior-izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4). Así, el subbloque adyacente a la izquierda del subbloque inferior-izquierdo que incluye la muestra de referencia (xn4, yn4) puede establecerse como el subbloque afín para el punto de control inferior-izquierdo.
Para el punto de control inferior-derecho, una muestra ubicada entre la muestra superior-derecha y la muestra inferiorderecha del subbloque inferior-derecho puede establecerse como muestra de referencia (xn<5>, yn<5>). Así, el subbloque inferior-derecho que incluye la muestra de referencia (xn<5>, yn<5>) puede establecerse como el subbloque afín para el punto de control inferior-derecho.
Cuando los vectores semilla afines del bloque actual se obtienen basándose en la Ecuación 7 y la Ecuación 8, el tercer vector semilla afín del bloque vecino afín puede sustituirse por el vector de movimiento del subbloque afín para el punto de control inferior-izquierdo, y el cuarto vector semilla afín puede sustituirse por el vector de movimiento del subbloque afín para el punto de control inferior-derecho. Además, la ubicación del punto de control inferior-izquierdo puede sustituirse por la ubicación de la muestra de referencia inferior-izquierda, y la ubicación del punto de control inferior-derecho puede sustituirse por la ubicación de la muestra de referencia inferior-derecha.
A diferencia de los descritos anteriormente con referencia a las figuras 14 a 16, un subbloque que incluye una muestra adyacente a la muestra de referencia puede establecerse como el subbloque afín. En detalle, una muestra ubicada fuera del subbloque vecino afín puede establecerse como la muestra de referencia, y un subbloque incluido en el bloque vecino afín puede establecerse como el subbloque afín. Por ejemplo, en el ejemplo mostrado en la figura 14A, una muestra ubicada a la derecha de la muestra superior-derecha del subbloque inferior-derecho puede establecerse como la muestra de referencia (xn5, yn5), y el subbloque inferior-derecho puede establecerse como el subbloque afín para la esquina inferior-derecha. Alternativamente, en el ejemplo mostrado en la figura 14B, una muestra ubicada a la izquierda de la muestra superior-izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4), y el subbloque inferior-izquierdo puede establecerse como el subbloque afín para la esquina inferior-izquierda.
Las realizaciones descritas anteriormente pueden aplicarse también a las figuras 15 y 16. Es decir, en el ejemplo mostrado en las figuras 15A o 16A, una muestra ubicada a la derecha de la muestra inferior-derecha o la muestra central derecha del subbloque inferior-derecho puede establecerse como la muestra de referencia (xn5, yns), y el subbloque inferior-derecho puede establecerse como el subbloque afín para la esquina inferior-derecha. Alternativamente, en el ejemplo mostrado en la figura 15B o 16B, una muestra ubicada a la izquierda de la muestra inferior-izquierda o la muestra central izquierda del subbloque inferior-izquierdo puede establecerse como la muestra de referencia (xn4, yn4), y el subbloque inferior-izquierdo puede establecerse como el subbloque afín para la esquina inferior-izquierda.
Como en el ejemplo anterior, el vector semilla afín del bloque vecino afín puede obtenerse utilizando el vector de movimiento del subbloque afín. Para ello, en el caso de un bloque en el que se haya completado la codificación o descodificación, se puede almacenar un vector de movimiento en unidades de subbloques.
Como otro ejemplo, después de que un número mínimo de vectores semilla afines son almacenados para el bloque vecino afín, se puede obtener el vector de movimiento del subbloque afín usando los vectores semilla afines almacenados.
La Ecuación 9 y la Ecuación 10 muestran un ejemplo de obtención del vector de movimiento del subbloque afín utilizando los vectores semilla afines del bloque vecino afín.
[ Ecuación 9]
_ ( n v ix- n v0x) ( n v ly- n v0y)
En la Ecuación 9 y la Ecuación 10, (nv4*, nv4y) representa el vector de movimiento del subbloque afín para el punto de control inferior-izquierdo, y (nv<5>x, nv<5>y) representa el vector de movimiento del subbloque afín para el punto de control inferior-derecho. Dado que el vector de movimiento del subbloque afín y el vector semilla afín del punto de control se establecen para ser iguales entre sí, (nv4*, nv4y) puede sustituirse por el vector semilla afín (nv<2>x, nv<2>y) para el punto de control inferior-izquierdo, y (nv5x, nv5y) puede sustituirse por el vector semilla afín (nv3x, nv3y) para el punto de control inferior-derecho.
(xn4, yn4) representa la ubicación de la muestra de referencia con respecto al subbloque inferior-izquierdo. Como alternativa, puede utilizarse, en cambio, la ubicación central del subbloque inferior-izquierdo o la ubicación del punto de control inferior-izquierdo. (xn<5>, yn<5>) representa la ubicación de la muestra de referencia con respecto al subbloque inferior-izquierdo. Como alternativa, puede utilizarse, en cambio, la ubicación central del subbloque inferior-derecho o la posición del punto de control inferior-derecho.
La Ecuación 9 y la Ecuación 10 pueden aplicarse a un caso en el que el bloque actual no es contiguo al borde de la unidad de árbol de codificación. Cuando el bloque actual es contiguo al borde superior de la unidad de árbol de codificación, el vector de movimiento de traslación del subbloque afín determinado basándose en la muestra de referencia inferior-izquierda puede establecerse como el tercer vector semilla afín, y el vector de movimiento de traslación del subbloque afín determinado basándose en la muestra de referencia inferior-derecha puede establecerse como el cuarto vector semilla afín en lugar de utilizar la Ecuación 9 y la Ecuación 10.
En la Ecuación 7 y la Ecuación 8, (xn3-xn2) representa la anchura entre el punto de control inferior-izquierdo y el punto de control inferior-derecho. Tal como se ha descrito anteriormente, xn3 puede sustituirse por la ubicación xn5 de la muestra de referencia inferior-derecha, y xn<2>puede sustituirse por la ubicación xn4 de la muestra de referencia inferiorizquierda. En lo sucesivo, (xn<3>-xn<2>) o un valor (por ejemplo, (xn<5>-xn<4>)) adquirido mediante la sustitución de la ubicación de la Ecuación anterior por la ubicación de las muestras de referencia se definirá como una variable W semilla, y la variable se denominará anchura del subvector semilla.
Dependiendo de la ubicación de las muestras de referencia, la anchura del subvector semilla puede no ser una potencia de 2 (por ejemplo, 2n). Por ejemplo, cuando la muestra inferior-izquierda del subbloque inferior-izquierdo se establece como la muestra de referencia inferior-izquierda y la muestra inferior-derecha del subbloque inferior-derecho se establece como la muestra de referencia inferior-derecha, la anchura del subvector semilla no es múltiplo de 2. Cuando la anchura del subvector semilla no es una potencia de 2, la anchura del subvector semilla puede transformarse en una potencia de 2. La transformación puede incluir sumar o restar un desplazamiento a la anchura del subvector semilla o el uso de la ubicación de una muestra adyacente a la muestra de referencia en lugar de la ubicación de la muestra de referencia. Por ejemplo, la anchura del subvector semilla transformado puede obtenerse sumando uno a la anchura entre la muestra de referencia inferior-izquierda y la muestra de referencia inferior-derecha. Alternativamente, la anchura entre la muestra de referencia inferior-izquierda y una muestra de referencia vecina adyacente a la derecha de la muestra de referencia inferior-derecha puede establecerse como la anchura del subvector semilla transformado. A continuación, el vector semilla afín del bloque actual puede obtenerse aplicando la anchura del subvector semilla transformado a la Ecuación 7 y la Ecuación 8.
Una operación de división incluida en la Ecuación 7 y la Ecuación 8 puede cambiarse por una operación de desplazamiento de bits. La operación de desplazamiento de bits puede realizarse basándose en un valor obtenido de la anchura del subvector semilla transformado (es decir, un valor expresado como una potencia de 2).
Cuando la muestra de referencia utilizada para determinar el subbloque afín no pertenece al bloque vecino afín, el vector semilla afín del bloque vecino afín puede obtenerse basándose en una muestra adyacente a la muestra de referencia de entre las muestras incluidas en el bloque vecino afín. Específicamente, un vector de movimiento de traslación de un subbloque que incluye la muestra adyacente a la muestra de referencia (en lo sucesivo denominada muestra de referencia vecina) en el bloque vecino afín puede establecerse como el vector semilla afín del bloque vecino afín. Como se ha descrito anteriormente, un procedimiento de obtención del vector semilla afín utilizando la muestra de referencia vecina puede definirse como un procedimiento de obtención del vector de fusión afín modificado.
La figura 17 es un diagrama que muestra un ejemplo en el que se aplica un procedimiento de obtención de vector de fusión afín modificado.
Cuando la muestra de referencia inferior-derecha (xn5, yn5) del bloque vecino afín E no pertenece a un bloque vecino afín, el vector semilla afín puede obtenerse basándose en una muestra (xn5-1, yn5) adyacente a la izquierda de la muestra de referencia inferior-derecha de entre las muestras incluidas en el bloque vecino afín. Específicamente, el vector de movimiento de traslación del subbloque que incluye la muestra de referencia vecina (xn5-1, yn5) puede establecerse como el vector semilla afín del punto de control inferior-derecho.
En el ejemplo mostrado en la figura 17, se muestra que una muestra adyacente a la derecha de la muestra superiorderecha del subbloque inferior-derecho es la muestra de referencia inferior-derecha. El vector semilla afín puede obtenerse basándose en la muestra adyacente a la izquierda de la muestra de referencia vecina incluso cuando una muestra adyacente a la derecha de la muestra inferior-derecha del subbloque inferior-derecho o una muestra adyacente a la derecha de la muestra central derecha del subbloque inferior-derecho se establece como la muestra de referencia inferior-derecha.
Además, el vector semilla afín puede obtenerse basándose en una muestra adyacente a la derecha de la muestra de referencia inferior-izquierda de acuerdo con la realización anterior, incluso cuando la muestra de referencia inferiorizquierda no pertenece al bloque vecino afín.
Al establecer de forma diferente la ubicación de la muestra de referencia y el subbloque para obtener el vector semilla afín, la anchura del subvector semilla puede establecerse para que sea una potencia de 2.
Alternativamente, se pueden obtener vectores semilla afines basándose en la anchura de un bloque vecino mientras se usan los vectores de movimiento del subbloque inferior-izquierdo y del subbloque inferior-derecho.
La figura 18 es un diagrama que muestra un ejemplo de obtención de un vector semilla afín de un candidato de fusión afín basándose en vectores de movimiento de subbloques que pertenecen a un bloque vecino.
Cuando el borde superior del bloque actual es contiguo al borde de la unidad de árbol de codificación, el vector semilla afín del candidato de fusión afín puede obtenerse basándose en los vectores de movimiento del subbloque inferiorizquierdo y del subbloque inferior-derecho del bloque vecino superior ubicado encima del bloque actual. Cuando se supone que la ubicación de la muestra superior-izquierda del bloque vecino superior es (xNb, yNb) y la anchura y altura del bloque vecino superior son NbW y NbH, respectivamente, el subbloque inferior-izquierdo puede incluir una muestra ubicada en (xNb, yNb+yNbH-1), y el subbloque inferior-derecho puede incluir una muestra ubicada en (xNb+NbW-1, yNb+NbH-1).
Los bloques semilla afines del candidato de fusión afín pueden obtenerse basándose en la anchura del bloque vecino y una diferencia de coordenadas entre el bloque actual y el bloque vecino. A modo de ejemplo, los vectores semilla afines del candidato de fusión afín pueden obtenerse basándose en las Ecuaciones 11 a 13 siguientes.
[ Ecuación 11]
[ Ecuación 12]
v ,
v lj,
[ Ecuación 13]
En las Ecuaciones 11 a 13, (v<0>x, v<0>y) representa el primer vector semilla afín, (v<1>x, v<1>y) representa el segundo vector semilla afín y (v<2>x, v<2>y) representa el tercer vector semilla afín. V<lbx>representa el vector de movimiento de la componente horizontal del subbloque inferior-izquierdo, y VLBy representa el vector de movimiento de la componente vertical del subbloque inferior-izquierdo. V<rbx>representa el vector de movimiento de la componente horizontal del subbloque inferior-derecho, y VRBy representa el vector de movimiento de la componente vertical del subbloque inferiorderecho. NbW representa la anchura del bloque vecino, y xCbW y xCbH representan la anchura y la altura del bloque actual, respectivamente. xCb representa la coordenada x de la muestra superior-izquierda del bloque actual, y xNb representa la coordenada x de la muestra superior-izquierda del bloque vecino.
Se puede generar un candidato de fusión afín para combinar un vector de movimiento de un segundo bloque vecino con vectores semilla afines obtenidos a partir de un primer bloque vecino. Por ejemplo, en el ejemplo mostrado en la figura 18, el tercer vector semilla afín del candidato de fusión afín puede obtenerse basándose en un vector de movimiento de un subbloque ubicado a la izquierda del bloque actual en lugar de basándose en vectores de movimiento del subbloque inferior-izquierdo y del subbloque inferior-derecho.
La figura 19 es un diagrama que muestra un ejemplo de obtención de vectores semilla afines de un candidato de fusión afín basándose en vectores de movimiento de subbloques ubicados a la izquierda del bloque actual.
Los vectores semilla afines del candidato de fusión afín se pueden obtener basándose en los vectores de movimiento del subbloque inferior-izquierdo y el subbloque inferior-derecho del bloque vecino superior ubicado sobre el bloque actual. En detalle, el primer vector semilla afín y el segundo vector semilla afín del candidato de fusión afín pueden obtenerse basándose en los vectores de movimiento del subbloque inferior-izquierdo y del subbloque inferior-derecho. A modo de ejemplo, el primer vector semilla afín y el segundo vector semilla afín del candidato de fusión afín pueden obtenerse basándose en las Ecuaciones 11 y 12.
El tercer vector semilla afín del candidato de fusión afín puede obtenerse basándose en el vector de movimiento de un bloque vecino adyacente a la izquierda del bloque actual. Como ejemplo, un vector de movimiento de un bloque vecino adyacente a la izquierda del bloque actual o un bloque vecino adyacente a la esquina inferior-izquierda del bloque actual puede establecerse como el tercer vector semilla afín. El bloque vecino adyacente a la izquierda del bloque actual puede incluir una muestra ubicada en (xCb-1, yCb+CbH-1), y el bloque vecino adyacente a la esquina inferior-izquierda del bloque actual puede incluir una muestra ubicada en (xCb-1, yCb+CbH). La Ecuación 14 y la Ecuación 15 muestran un ejemplo de establecimiento del vector de movimiento del bloque vecino ubicado a la izquierda del bloque actual como el tercer vector semilla afín.
[ Ecuación 14]
^ 2 *^ le ftx
^'2y ^ le fty
[ Ecuación 15]
En la Ecuación 14, VLeftx representa el vector de movimiento horizontal del bloque vecino adyacente a la izquierda del bloque actual, y VLefty representa el vector de movimiento vertical del bloque vecino adyacente a la izquierda del bloque actual. En la Ecuación 15, Vlbx representa el vector de movimiento horizontal del bloque vecino adyacente a la esquina inferior-izquierda del bloque actual, y VLBy representa el vector de movimiento vertical del bloque vecino adyacente a la esquina inferior-izquierda del bloque actual.
El tercer vector semilla afín puede obtenerse utilizando el vector de movimiento del bloque vecino adyacente a la esquina inferior-izquierda del bloque actual sólo cuando el vector de movimiento del bloque vecino adyacente a la izquierda del bloque actual no está disponible.
El procedimiento de obtención del tercer vector semilla afín del candidato de fusión afín puede establecerse de forma diferente dependiendo de si el vector de movimiento del bloque vecino ubicado a la izquierda del bloque actual está disponible. Como ejemplo, cuando el vector de movimiento del bloque vecino ubicado a la izquierda del bloque actual (por ejemplo, el subbloque adyacente a la izquierda del bloque actual o el subbloque adyacente a la esquina inferiorizquierda del bloque actual) está disponible, se puede obtener el tercer vector semilla afín utilizando la Ecuación 14 o la Ecuación 15. Por otra parte, cuando el vector de movimiento del bloque vecino ubicado a la izquierda del bloque actual no está disponible, se puede obtener el tercer vector semilla afín utilizando la Ecuación 13.
El tercer vector semilla afín puede obtenerse basándose en el vector de movimiento de un bloque no vecino que tenga una muestra de referencia no adyacente al bloque actual. Para obtener el tercer vector semilla afín, puede determinarse si se utiliza el vector de movimiento de un bloque vecino con una muestra de referencia adyacente al bloque actual o el vector de movimiento de un bloque no vecino con una muestra de referencia no adyacente al bloque actual en función de la ubicación del bloque vecino superior utilizado para obtener el candidato de fusión afín.
La figura 20 es un diagrama que muestra un ejemplo de obtención de vectores semilla afines de un candidato de fusión afín basándose en información de movimiento de un bloque vecino o de un bloque no vecino ubicado a la izquierda del bloque actual.
Al comparar la ubicación de la muestra superior-izquierda del bloque actual con la ubicación de la muestra superiorizquierda del bloque vecino superior utilizado para obtener el candidato de fusión afín, se puede determinar la ubicación del bloque para obtener el tercer vector semilla afín. Por ejemplo, como en el ejemplo mostrado en la figura 20A, cuando la coordenada x (xNb) de la muestra superior-izquierda del bloque vecino superior es menor que la coordenada x (xCb) de la muestra superior-izquierda del bloque actual, se puede obtener el tercer vector semilla afín basándose en el vector de movimiento del bloque no vecino que no es adyacente a la izquierda del bloque actual. En detalle, se puede obtener el tercer vector semilla afín basándose en el vector de movimiento de un bloque no vecino inferiorizquierdo que incluye una muestra ubicada en (xNb, yCb+CbH) o un bloque no vecino izquierdo que incluye una muestra ubicada en (xNb, yCb+CbH-1), donde las muestras tienen la misma coordenada x que la muestra superiorizquierda del bloque vecino superior. Las Ecuación 16 y la Ecuación 17 muestran un ejemplo de obtención del tercer vector semilla afín basándose en el vector de movimiento del bloque no vecino.
[ Ecuación 16]
V 2 x ~ í Lefflx
V 2y * L e flly
[ Ecuación 17]
v 2 x ~ V lB 2 x
V2 y ~ l LB2y
En la Ecuación 16, Vi_eft<2>x representa el vector de movimiento horizontal del bloque izquierdo no vecino y Vi_eft<2>y representa el vector de movimiento vertical del bloque izquierdo no vecino. En la Ecuación 17, Vlb<2>x representa el vector de movimiento horizontal del bloque inferior-izquierdo no vecino y VLB<2>yrepresenta el vector de movimiento vertical del bloque inferior-izquierdo no vecino.
El tercer vector semilla afín puede obtenerse utilizando el vector de movimiento del bloque inferior-izquierdo no vecino sólo cuando el vector de movimiento del bloque izquierdo no vecino no está disponible.
Como en el ejemplo de la figura 20B, cuando la coordenada x (xNb) de la muestra superior-izquierda del bloque vecino superior es mayor o igual que la coordenada x (xCb) de la muestra superior-izquierda del bloque actual, el tercer vector semilla afín puede obtenerse basándose en el vector de movimiento del bloque vecino que es adyacente a la esquina inferior-izquierda o a la izquierda del bloque actual. En detalle, el tercer vector semilla afín se puede obtener basándose en el vector de movimiento de un bloque vecino izquierdo que incluye una muestra (xCb, yCb+CbH-1) adyacente a la izquierda del bloque actual o un bloque vecino inferior-izquierdo que incluye una muestra ubicada en (xCb, yCb+CbH) adyacente a la esquina inferior-izquierda del bloque actual.
La ubicación de la muestra de referencia del bloque vecino izquierdo o del bloque no vecino izquierdo puede establecerse de forma diferente a las mostradas en las figuras 18 a 20. Como ejemplo, un bloque que incluye una muestra (xCb-1, yCb+subH-1) adyacente al bloque actual puede establecerse como el bloque vecino izquierdo, y un bloque que incluye una muestra (xNb, yCb+subH-1) no adyacente al bloque actual puede establecerse como el bloque no vecino izquierdo. Aquí, subH representa una altura mínima de un bloque en el que se almacena la información de movimiento y puede ser un número natural tal como 2, 4 u 8.
La figura 21 es un diagrama que muestra la ubicación de un bloque para obtener un vector semilla afín de un candidato de fusión afín.
Por ejemplo, como en el ejemplo mostrado en la figura 21A, cuando la coordenada x (xNb) de la muestra superiorizquierda del bloque vecino superior es menor que la coordenada x (xCb) de la muestra superior-izquierda del bloque actual, se puede obtener el tercer vector semilla afín basándose en el vector de movimiento del bloque no vecino que no es adyacente a la izquierda del bloque actual. En detalle, el tercer vector semilla afín se puede obtener basándose en el vector de movimiento del bloque izquierdo no vecino que incluye la muestra (xNb, yCb+subH-1) que tiene la misma coordenada x que la muestra superior-izquierda del bloque vecino superior y que está separado una distancia predeterminada (por ejemplo, subH) de la muestra inferior-izquierda del bloque vecino superior. La Ecuación 18 muestra un ejemplo de obtención del tercer vector semilla afín basándose en el vector de movimiento del bloque no vecino.
[ Ecuación 18]
v 2 x ~ V LefiT2x
V 2fLeftT ly
En la Ecuación 18, VLeftT<2>x representa el vector de movimiento horizontal del bloque izquierdo no vecino que incluye la muestra separada una distancia predeterminada desde la muestra inferior-izquierda del bloque vecino superior. VLeftT<2>y representa el vector de movimiento vertical del bloque izquierdo no vecino que incluye la muestra separada una distancia predeterminada desde la muestra inferior-izquierda del bloque vecino superior.
Alternativamente, como en el ejemplo mostrado en figura 21B, cuando la coordenada x (xNb) de la muestra superiorizquierda del bloque vecino superior es mayor o igual que la coordenada x (xCb) de la muestra superior-izquierda del bloque actual, el tercer vector semilla afín puede obtenerse basándose en el vector de movimiento del bloque izquierdo vecino que es adyacente a la izquierda del bloque actual y que incluye una muestra (xCb-1, yCb+subH-1) horizontalmente separada una distancia predeterminada (por ejemplo, subH-1) de la muestra superior-izquierda del bloque actual. La Ecuación 19 muestra un ejemplo de obtención del tercer vector semilla afín basándose en el vector de movimiento del bloque vecino.
[ Ecuación 19]
v2x V le ffT x
V 2 y= V le f iT y
En la Ecuación 19, VLeftTx representa el vector de movimiento horizontal del bloque vecino izquierdo que es adyacente a la izquierda del bloque actual y que incluye la muestra separada verticalmente una distancia predeterminada desde la muestra superior-izquierda del bloque actual. VLeftTy representa el vector de movimiento vertical del bloque vecino izquierdo que es adyacente a la izquierda del bloque actual y que incluye la muestra separada verticalmente una distancia predeterminada de la muestra superior-izquierda del bloque actual.
Alternativamente, la muestra de referencia se puede colocar en una ubicación diferente de las mostradas en las figuras 18 al 21. Como ejemplo, la muestra (xCb-1, yCb) que es adyacente a la izquierda del bloque actual y que tiene la misma coordenada y que la muestra superior-izquierda del bloque actual o la muestra (xNb, yCb) que no es adyacente a la izquierda del bloque actual y que tiene la misma coordenada y que la muestra superior-izquierda del bloque actual puede establecerse como la muestra de referencia.
Como en el ejemplo descrito, el primer vector semilla afín y el segundo vector semilla afín del candidato de fusión afín pueden obtenerse a partir del bloque vecino ubicado encima del bloque actual, y el tercer vector semilla afín del candidato de fusión afín puede obtenerse a partir del bloque vecino ubicado a la izquierda del bloque actual. El primer vector semilla afín y el tercer vector semilla afín del candidato de fusión afín pueden obtenerse a partir del bloque vecino ubicado a la izquierda del bloque actual, y el segundo vector semilla afín del candidato de fusión afín puede obtenerse a partir del bloque vecino ubicado por encima del bloque actual.
En los ejemplos mostrados en las Ecuaciones 11 a 13, el vector semilla afín del candidato de fusión afín puede obtenerse basándose en un valor de diferencia entre el vector de movimiento Vlb del subbloque inferior-izquierdo del bloque vecino superior y el vector de movimiento V<rb>del subbloque inferior-derecho del bloque vecino superior. En este caso, el vector semilla afín del candidato de fusión afín puede obtenerse utilizando el vector de movimiento de otro bloque en lugar del vector de movimiento del subbloque inferior-izquierdo o del subbloque inferior-derecho. Como ejemplo, cuando el vector de movimiento V<lb>del subbloque inferior-izquierdo del bloque vecino superior tiene el mismo valor que el vector de movimiento VRB del subbloque inferior-derecho del bloque vecino superior, VRB puede sustituirse por el vector de movimiento de un bloque que incluye una muestra ubicada a la derecha o debajo del subbloque inferior-derecho. Como ejemplo, el vector de movimiento del candidato de fusión afín puede obtenerse utilizando el vector de movimiento de un bloque que incluye una muestra ubicada en (xNb+NbW, yNb+NbH-1) en lugar de utilizar el vector de movimiento Vrb del subbloque inferior-derecho.
Alternativamente, cuando el vector de movimiento V<lb>del subbloque inferior-izquierdo del bloque vecino superior tiene el mismo valor que el vector de movimiento V<rb>del subbloque inferior-derecho del bloque vecino superior, V<lb>puede sustituirse por el vector de movimiento de un bloque que incluye una muestra ubicada a la izquierda o debajo del subbloque inferior-izquierdo. Como ejemplo, el vector de movimiento del candidato de fusión afín puede obtenerse utilizando el vector de movimiento de un bloque que incluye una muestra ubicada en (xNb, yNb+NbH-1+desplazamiento) en lugar de utilizar el vector de movimiento V<lb>del subbloque inferior-izquierdo. Aquí, el desplazamiento puede ser un número entero mayor o igual a 1.
Alternativamente, V<rb>puede sustituirse por el vector de movimiento de un bloque que incluye una muestra ubicada a la izquierda o debajo del subbloque inferior-izquierdo, o Vlb puede sustituirse por el vector de movimiento de un bloque que incluye una muestra ubicada a la derecha o debajo del subbloque inferior-derecho.
Un candidato de fusión puede obtenerse combinando los vectores de movimiento de una pluralidad de vectores vecinos adyacentes al bloque actual. El candidato de fusión generado combinando los vectores de movimiento de la pluralidad de vectores vecinos puede denominarse candidato de fusión combinado. Cuando se obtiene el candidato de fusión combinado, el vector semilla afín para el punto de control puede obtenerse a partir de un bloque vecino adyacente a los alrededores del punto de control.
La figura 22 es un diagrama para describir un ejemplo de combinación de vectores de movimiento de una pluralidad de bloques vecinos para obtener un candidato de fusión combinado.
La pluralidad de bloques vecinos puede incluir bloques superiores vecinos ubicados encima del bloque actual y bloques izquierdos vecinos ubicados a la izquierda del bloque actual. Los bloques vecinos superiores pueden incluir al menos uno de un bloque B0, que incluye una muestra ubicada en (xCb+CbW, yCb-1), un bloque B1, que incluye una muestra ubicada en (xCb+CbW-1, yCb-1), o un bloque B3, que incluye una muestra ubicada en (xCb, yCb-1). Aquí, (xCb, yCb) representa la ubicación de la muestra superior-izquierda del bloque actual, y CbW representa la anchura del bloque actual. Los bloques izquierdos vecinos pueden incluir al menos uno de un bloque A0 que incluye una muestra ubicada en (xCb-1, yCb+CbH), un bloque A1 que incluye una muestra ubicada en (xCb-1, yCb+CbH-1), o un bloque A2 que incluye una muestra ubicada en (xCb-1, yCb). Aquí, CbH representa la altura del bloque actual.
Además, la pluralidad de bloques vecinos puede incluir bloques vecinos temporales del bloque actual.
Se puede obtener un candidato de fusión combinado combinando los elementos de información de movimiento de dos o más de la pluralidad de bloques vecinos. El candidato de fusión combinado puede obtenerse combinando los elementos de información de movimiento de dos o tres bloques vecinos. En detalle, un candidato de fusión combinado puede obtenerse combinando al menos dos o más de la información de movimiento de un bloque vecino adyacente al primer punto de control, la información de movimiento de un bloque vecino adyacente al segundo punto de control, o la información de movimiento de un bloque vecino adyacente al tercer punto de control.
Como ejemplo, un candidato de fusión combinado puede obtenerse combinando los vectores de movimiento de al menos dos o más de un bloque vecino A2, B2, o B3 adyacente a un punto de control superior-izquierdo CP0, un bloque vecino B1 o B0 adyacente a un punto de control superior-derecho CP1, o un bloque vecino temporal T para un punto de control inferior-izquierdo CP2.
En este caso, el vector de movimiento de un bloque vecino disponible que se encuentra primero cuando los bloques vecinos adyacentes al punto de control se escanean en un orden de escaneo predefinido puede establecerse como el vector semilla afín para el punto de control. Como ejemplo, un primer vector semilla afín del candidato de fusión combinado para CP0 puede establecerse para ser el vector de movimiento de un bloque vecino disponible que se encuentra primero cuando los bloques vecinos se descubren en el orden de B2, B3 y<a>2. Un segundo vector semilla afín del candidato de fusión combinado para CP1 puede establecerse para ser el vector de movimiento de un bloque vecino disponible que se encuentra primero cuando los bloques vecinos se descubren en el orden de B1 y B0. Un tercer vector semilla afín del candidato de fusión combinado para CP2 puede establecerse para ser el vector de movimiento de un bloque vecino disponible que se encuentra primero cuando los bloques vecinos se descubren en el orden de A1 y A0.
Cuando se obtiene el candidato de fusión combinado, un bloque vecino codificado con el modelo de movimiento afín o un bloque vecino obtenido como el candidato de fusión afín puede establecerse como no disponible.
La figura 23 es un diagrama que muestra un bloque vecino no disponible.
Cuando el candidato de fusión afín se obtiene a partir de un bloque vecino B1 ubicado encima del bloque actual, puede determinarse que el bloque vecino B1 no está disponible para obtener el candidato de fusión combinado. Por lo tanto, cuando se obtiene el vector semilla afín del candidato de fusión combinado para CP1, puede no usarse el vector de movimiento de B1.
Alternativamente, cuando el bloque vecino es codificado en el modelo de movimiento afín, se puede obtener el candidato de fusión combinado basándose en el vector afín del subbloque que incluye la muestra de referencia. Como ejemplo, cuando un bloque vecino que incluye una muestra ubicada en B1 se codifica en el modelo de movimiento afín, se puede obtener el candidato de fusión combinado utilizando el vector afín del subbloque del bloque vecino que incluye la muestra ubicada en B1.
Alternativamente, el orden de escaneo puede determinarse teniendo en cuenta si el bloque vecino está codificado con el modelo de movimiento afín o si el bloque vecino se obtiene como el candidato de fusión afín. Como ejemplo, se puede establecer que el bloque vecino codificado con el modelo de movimiento afín o el bloque vecino codificado con el candidato de fusión afín se escanee en último lugar. Como ejemplo, cuando el bloque vecino ubicado en B1 se codifica con el modelo de movimiento afín, el segundo vector semilla afín del candidato de fusión combinado para CP2 puede obtenerse descubriendo los bloques vecinos en el orden de B0 y B1.
Cuando los bloques vecinos tienen índices de imagen de referencia diferentes, los vectores de movimiento pueden escalarse con respecto a una imagen de referencia con el mayor índice o a una imagen de referencia con el menor índice. El escalado puede realizarse basándose en un valor de diferencia de recuento de orden de imagen (POC) entre la imagen de referencia y la imagen actual.
Alternativamente, la combinación de los bloques vecinos puede realizarse utilizando sólo bloques vecinos que tengan el mismo índice de imagen de referencia de entre los bloques vecinos. Como ejemplo, cuando al menos uno de los bloques vecinos tiene un índice de imagen de referencia diferente, la combinación puede establecerse como no disponible como candidato de fusión combinado. Además, la disponibilidad de la combinación puede determinarse independientemente de si los bloques vecinos tienen la misma información de movimiento o vector de movimiento. Como ejemplo, el candidato de fusión combinado puede obtenerse combinando los bloques vecinos que tienen el mismo índice de imagen de referencia, incluso cuando los bloques vecinos tienen el mismo vector de movimiento (por ejemplo, un vector semilla afín CP0 y un vector semilla afín CP1). Alternativamente, el orden de escaneo de los bloques vecinos puede determinarse teniendo en cuenta los índices de imagen de referencia de los bloques vecinos.
Alternativamente, la combinación puede realizarse utilizando sólo bloques vecinos que tienen la misma dirección de predicción de entre los bloques vecinos.
El candidato de fusión puede generarse en un orden de combinación predeterminado. Como ejemplo, el orden de combinación puede ser el siguiente.
1. {vector semilla afín CP0, vector semilla afín CP1, vector semilla afín CP2}
2. {vector semilla afín CP0, vector semilla afín CP1, vector semilla afín CP3}
3. {vector semilla afín CP0, vector semilla afín CP2, vector semilla afín CP3}
4. {vector semilla afín CP1, vector semilla afín CP2, vector semilla afín CP3}
5. {vector semilla afín CP0, vector semilla afín CP1}
6. {vector semilla afín CP0, vector semilla afín CP2}
Aunque se muestran seis ejemplos de combinación, también es posible utilizar menos o más ejemplos de combinación.
Un candidato de fusión combinado generado mediante la combinación de tres vectores semilla afines puede denominarse candidato de fusión combinado de 6 parámetros, y un candidato de fusión combinado generado mediante la combinación de dos vectores semilla afines puede denominarse candidato de fusión combinado de 4 parámetros.
El orden de combinación puede estar predefinido en un codificador y un descodificador. Alternativamente, el orden de combinación puede determinarse basándose en al menos uno del tamaño, la forma, la forma de partición o el modelo de movimiento afín del bloque actual, la ubicación del bloque actual en la unidad de árbol de codificación o el POC de la imagen de referencia. Como ejemplo, cuando se aplica un modelo de movimiento afín de 4 parámetros al bloque actual, puede establecerse que los ejemplos de combinación para el candidato de fusión combinado de 4 parámetros tengan mayor prioridad que los ejemplos de combinación para el candidato de fusión combinado de 6 parámetros.
Si bien el candidato de fusión combinado se genera en el orden de combinación, sólo un candidato de fusión generado combinando bloques vecinos que tienen la misma imagen de referencia puede determinarse como disponible. Alternativamente, cuando al menos uno de los bloques vecinos tiene una imagen de referencia diferente, los vectores de movimiento pueden escalarse con respecto a una imagen de referencia con el mayor índice o una imagen de referencia con el menor índice para obtener el candidato de fusión. El escalado puede realizarse basándose en una diferencia de POC entre la imagen de referencia y la imagen actual. Alternativamente, cuando dos de los bloques vecinos tienen la misma imagen de referencia y el otro bloque vecino tiene una imagen de referencia diferente, el vector de movimiento del bloque vecino que tiene la imagen de referencia diferente puede escalarse con respecto a la imagen de referencia aplicada en común a los dos bloques vecinos para obtener el candidato de fusión combinado.
El número de candidatos de fusión combinados añadidos a la lista de candidatos de fusión puede determinarse basándose en al menos uno del número máximo de candidatos de fusión o el número de candidatos de fusión incluidos previamente en la lista de candidatos de fusión. Alternativamente, dependiendo del modelo de movimiento afín del bloque actual, sólo podrán añadirse candidatos de fusión combinados de 6 parámetros a la lista de candidatos de fusión, o sólo pueden añadirse candidatos de fusión combinados de 4 parámetros a la lista de candidatos de fusión combinados.
Como ejemplo, cuando el número de candidatos de fusión combinados a añadir a la lista de candidatos de fusión es uno y el modelo de movimiento de 6 parámetros se aplica al bloque actual, se puede añadir un candidato de fusión combinado de 6 parámetros a la lista de candidatos de fusión en un orden de combinación preestablecido. En detalle, cuando todos del vector semilla afín CP0, el vector semilla afín CP1 y el vector semilla afín CP2 están disponibles, se puede añadir el candidato de fusión combinado {vector semilla afín CP0, vector semilla afín CP1 y vector semilla afín CP2} a la lista de candidatos de fusión. Alternativamente, cuando el vector semilla afín CP2 no está disponible y el vector semilla afín CP3 está disponible, se puede añadir el candidato de fusión combinado {vector semilla afín CP0, vector semilla afín CP1 y vector semilla afín CP3} a la lista de candidatos de fusión.
Alternativamente, cuando el número de candidatos de fusión combinados a añadir a la lista de candidatos de fusión es uno y se aplica el modelo de movimiento de 6 parámetros al bloque actual, se puede añadir un candidato de fusión combinado de 4 parámetros a la lista de candidatos de fusión en un orden de combinación preestablecido.
Como otro ejemplo, el número de candidatos de fusión combinados a añadir a la lista de candidatos de fusión puede establecerse de forma diferente dependiendo del modelo de movimiento afín del bloque actual. Como ejemplo, cuando el modelo de movimiento de 6 parámetros se aplica al bloque actual, se puede añadir un candidato de fusión combinado a la lista de candidatos de fusión. Por otro lado, cuando se aplica el modelo de movimiento de 4 parámetros al bloque actual, se pueden añadir dos candidatos de fusión combinados a la lista de candidatos de fusión.
Un candidato de fusión combinado a añadir a la lista de candidatos de fusión puede ser seleccionado dependiendo del número de candidatos de fusión afines disponibles. Como ejemplo, cuando el número de candidatos de fusión afines disponibles es de dos o más, sólo se pueden añadir a la lista de candidatos de fusión candidatos de fusión combinados de 4 parámetros. Por otro lado, cuando el número de candidatos de fusión afín disponibles es uno o menos, se pueden añadir a la lista de candidatos de fusión sólo los candidatos de fusión combinada de 6 parámetros. Alternativamente, cuando el número de candidatos de fusión afín disponibles es uno o menos, se pueden añadir a la lista de candidatos de fusión N candidatos de fusión combinados de 6 parámetros y M candidatos de fusión combinados de 4 parámetros. En este caso, N y M son números naturales, y M puede obtenerse basándose en el número máximo de candidatos de fusión menos N. Alternativamente, cuando el número de candidatos de fusión afines disponibles sea uno o menos, sólo se pueden añadir a la lista de candidatos de fusión candidatos de fusión combinados de 4 parámetros.
Alternativamente, el orden de combinación puede determinarse en función de la disponibilidad de los vectores semilla afines. A modo de ejemplo, los candidatos de fusión combinados se pueden añadir a la lista de candidatos de fusión teniendo en cuenta la disponibilidad de los vectores semilla afines en el siguiente orden.
1.Caso en el que están disponibles el vector semilla afín CP0, el vector semilla afín CP1 y el vector semilla afín CP2
{vector semilla afín CP0, vector semilla afín CP1, vector semilla afín CP2}
2. Caso en el que están disponibles el vector semilla afín CP0, el vector semilla afín CP1 y el vector semilla afín CP3
{vector semilla afín CP0, vector semilla afín CP1, vector semilla afín CP3}
3. Caso en el que están disponibles el vector semilla afín CP0, el vector semilla afín CP2 y el vector semilla afín CP3
{vector semilla afín CP0, vector semilla afín CP2, vector semilla afín CP3}
4. Caso en el que están disponibles el vector semilla afín CP0, el vector semilla afín CP2 y el vector semilla afín CP3
{vector semilla afín CP1, vector semilla afín CP2, vector semilla afín CP3}
5. Caso en el que están disponibles el vector semilla afín CP0 y el vector semilla afín CP1
{vector semilla afín CP0, vector semilla afín CP1}
6. Caso en el que están disponibles el vector semilla afín CP0 y el vector semilla afín CP2
{vector semilla afín CP0, vector semilla afín CP2}
Cuando el número de candidatos de fusión combinados a añadir a la lista de candidatos de fusión sea uno, puede añadirse a la lista de candidatos de fusión un candidato de fusión combinado que corresponda a una condición que cumpla la primera de entre las condiciones primera a sexta. Cuando no se cumple ninguna de las condiciones primera a sexta, no se puede añadir ningún candidato de fusión combinado a la lista de candidatos de fusión.
Como otro ejemplo, el número máximo de candidatos de fusión combinados a añadir a la lista de candidatos de fusión puede determinarse en función del número de candidatos de fusión afines disponibles.
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, se puede añadir un candidato de fusión cero, que tiene un vector de movimiento de 0, a la lista de candidatos de fusión. De este modo, el candidato de fusión puede obtenerse en el modo de fusión afín en el siguiente orden.
1. Obtención del candidato de fusión afín
2. Candidato de fusión combinado
3. Candidato de fusión cero
A continuación, se describirá en detalle el procedimiento de predicción inter que utiliza información de movimiento de traslación.
La información de movimiento del bloque actual puede obtenerse de la información de movimiento de un bloque distinto del bloque actual. En este caso, el otro bloque puede ser un bloque codificado o descodificado mediante predicción inter antes que el bloque actual. Establecer la información de movimiento del bloque actual para que sea la misma que la información de movimiento del otro bloque puede definirse como un modo de fusión. Además, establecer el vector de movimiento del otro bloque como un valor de predicción del vector de movimiento del bloque actual puede definirse como un modo de predicción del vector de movimiento.
La figura 24 es un diagrama de flujo de un proceso de obtención de información de movimiento del bloque actual en un modo de fusión.
Puede obtenerse un candidato de fusión del bloque actual (S2401). El candidato de fusión del bloque actual puede obtenerse de un bloque codificado o descodificado mediante predicción inter antes que el bloque actual.
Los bloques candidatos utilizados para obtener el bloque de fusión pueden incluir bloques vecinos que incluyen una muestra adyacente al bloque actual. Como ejemplo, cuando las coordenadas de la muestra superior-izquierda del bloque actual son (0, 0), puede utilizarse como bloque candidato al menos uno de un bloque que incluye una muestra de referencia ubicada en (-1, H-1), un bloque que incluye una muestra de referencia ubicada en (W-1, -1), un bloque que incluye una muestra de referencia ubicada en (W, -1), un bloque que incluye una muestra de referencia ubicada en (-1, H) o un bloque que incluye una muestra de referencia ubicada en (-1, -1).
Alternativamente, un bloque candidato que no pertenezca a la misma unidad de árbol de codificación que el bloque actual puede establecerse para no estar disponible como candidato de fusión. Como ejemplo, cuando la muestra de referencia se desvía del borde superior de la unidad de árbol de codificación a la que pertenece el bloque actual, el bloque candidato que incluye la muestra de referencia puede establecerse para que no esté disponible como candidato de fusión.
Se puede obtener un candidato de fusión de un bloque temporal vecino incluido en una imagen diferente a la del bloque actual. Como ejemplo, se puede obtener un candidato de fusión de un bloque coubicado incluido en una imagen coubicada. Una imagen de referencia incluida en la lista de imágenes de referencia puede establecerse como imagen coubicada. La información de índice para identificar la imagen coubicada de entre las imágenes de referencia puede señalizarse en un flujo de bits. Alternativamente, una imagen de referencia que tiene un índice predefinido de entre las imágenes de referencia puede determinarse como la imagen coubicada.
La información de movimiento del candidata de fusión puede establecerse para ser la misma que la información de movimiento del bloque candidato. Como ejemplo, al menos uno del vector de movimiento, el índice de la imagen de referencia, la dirección de predicción o el índice de ponderación bidireccional del bloque candidato puede establecerse como la información de movimiento del candidato de fusión.
Puede generarse una lista de candidatos de fusión que incluye candidatos de fusión (S2402).
Pueden asignarse índices a los candidatos de fusión de la lista de candidatos de fusión en un orden predeterminado. Como ejemplo, los índices pueden asignarse secuencialmente a un candidato de fusión obtenido a partir del bloque vecino izquierdo, a un candidato de fusión obtenido a partir del bloque vecino superior, a un candidato de fusión obtenido a partir del bloque vecino superior-derecho, a un candidato de fusión obtenido a partir del bloque vecino inferior-izquierdo, a un candidato de fusión obtenido a partir del bloque vecino superior-izquierdo y a un candidato de fusión obtenido de un bloque vecino temporal.
Cuando se incluye una pluralidad de candidatos de fusión en el candidato de fusión, puede seleccionarse al menos uno de la pluralidad de candidatos de fusión (S2403). En detalle, la información para especificar uno de la pluralidad de candidatos de fusión puede ser señalizada en un flujo de bits. Como ejemplo, la información merge_idx, que indica un índice de uno de los candidatos de fusión incluidos en la lista de candidatos de fusión, puede señalizarse en un flujo de bits.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es inferior a un valor umbral, se puede añadir a la lista de candidatos de fusión un candidato de fusión incluido en una tabla de información de movimiento entre regiones. Aquí, el valor umbral puede ser el número máximo de candidatos de fusión que el candidato de fusión puede incluir 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 o 2. La tabla de información de movimiento entre regiones puede incluir un candidato de fusión obtenido basándose en un bloque que se codifica o descodifica antes que el bloque actual.
La tabla de información de movimiento entre regiones incluye un candidato de fusión obtenido a partir de un bloque que se codifica o descodifica basándose en la predicción inter en la imagen actual. Como ejemplo, la información de movimiento de candidato de fusión incluido en la tabla de información de movimiento entre regiones puede establecerse para que sea la misma que la información de movimiento del bloque codificado o descodificado basándose en la predicción inter. En este caso, la información de movimiento puede incluir al menos uno de un vector de movimiento, un índice de imagen de referencia, una dirección de predicción o un índice de ponderación bidireccional.
Para facilitar la descripción, el candidato de fusión incluido en la tabla de información de movimiento entre regiones se denominará candidato de fusión entre regiones.
El número máximo de candidatos de fusión que pueden incluirse en la tabla de información de movimiento entre regiones puede predefinirse en un codificador y un descodificador. Como ejemplo, el número máximo de candidatos de fusión que pueden incluirse en la tabla de información de movimiento entre regiones puede ser 1, 2, 3, 4, 5, 6, 7, 8, o más (por ejemplo, 16).
Alternativamente, la información que indica el número máximo de candidatos de fusión de la tabla de información de movimiento entre regiones puede ser señalizada en un flujo de bits. La información puede señalizarse a nivel de secuencia, imagen o segmento.
Alternativamente, el número máximo de candidatos de fusión de la tabla de información de movimiento entre regiones puede determinarse en función del tamaño de la imagen, el tamaño del segmento o el tamaño de la unidad de árbol de codificación.
La tabla de información de movimiento entre regiones puede ser inicializada en unidades de imágenes, segmentos, ladrillos, unidades de árbol de codificación o líneas de unidades de árbol de codificación (filas y columnas). Como ejemplo, cuando se inicializa un segmento, la tabla de información de movimiento entre regiones también se inicializa y puede no incluir ningún candidato de fusión.
Alternativamente, la información que indica si inicializar la tabla de información de movimiento entre regiones puede ser señalizada en un flujo de bits. La información puede señalizarse a nivel de segmento, mosaico, ladrillo o bloque. Se puede utilizar una tabla de información de movimiento entre regiones preconfigurada hasta que la información indique la inicialización de la tabla de información de movimiento entre regiones.
Alternativamente, la información relativa a un candidato inicial de fusión entre regiones puede señalizarse a través de un conjunto de parámetros de imagen o de una cabecera de segmento. Aunque se inicialice un segmento, la tabla de información de movimiento entre regiones puede incluir el candidato de fusión entre regiones inicial. En consecuencia, el candidato de fusión entre regiones puede utilizarse para un bloque que se va a codificar o descodificar primero en el segmento.
Los bloques pueden codificarse o descodificarse en un orden de codificación o descodificación, y los bloques codificados o descodificados basándose en la predicción inter pueden establecerse secuencialmente como candidatos de fusión entre regiones en el orden de codificación o descodificación.
La figura 25 es un diagrama para describir un aspecto de actualización de una tabla de información de movimiento entre regiones.
Cuando se realiza la predicción inter en el bloque actual (S2501), se puede obtener un candidato de fusión entre regiones basándose en el bloque actual (S2502). La información de movimiento del candidato de fusión entre regiones puede ser la misma que la información de movimiento del bloque actual.
Cuando la tabla de información de movimiento entre regiones está vacía (S2503), el candidato de fusión entre regiones obtenido basándose en el bloque actual puede añadirse a la tabla de información de movimiento entre regiones (S2504).
Cuando la tabla de información de movimiento entre regiones ya incluye un candidato de fusión entre regiones (S2503), se puede realizar una comprobación de redundancia de la información de movimiento del bloque actual (o de un candidato de fusión entre regiones obtenido basándose en la información de movimiento) (S2505). La comprobación de redundancia consiste en determinar si la información de movimiento del bloque actual es la misma que la información de movimiento del candidato de fusión entre regiones previamente almacenado en la tabla de información de movimiento entre regiones. La comprobación de redundancia puede realizarse en todos los candidatos de fusión entre regiones previamente almacenados en la tabla de información de movimiento entre regiones. Alternativamente, la comprobación de redundancia puede realizarse en los candidatos de fusión entre regiones que tienen índices mayores o iguales a un valor umbral o índices menores o iguales a un valor umbral de entre los candidatos de fusión entre regiones almacenados previamente en la tabla de información de movimiento entre regiones.
Cuando no se incluye ningún candidato de fusión de predicción inter que tenga la misma información de movimiento que el bloque actual, se puede añadir el candidato de fusión entre regiones obtenido basándose en el bloque actual a la tabla de información de movimiento entre regiones (S2508). Si los candidatos de fusión de predicción inter son idénticos se puede determinar basándose en si los candidatos de fusión de predicción inter tienen la misma información de movimiento (por ejemplo, vector de movimiento y/o índice de imagen de referencia).
En este caso, cuando se ha previamente almacenado un número máximo de candidatos de fusión entre regiones en la tabla de información de movimiento entre regiones (S2506), se elimina el candidato de fusión entre regiones más antiguo (S2507), y el candidato de fusión entre regiones obtenido basándose en el bloque actual puede añadirse a la tabla de información de movimiento entre regiones (S2508).
Los candidatos de fusión entre regiones pueden identificarse por sus índices. Cuando el candidato de fusión entre regiones obtenido a partir del bloque actual se añade a la tabla de información de movimiento entre regiones, el índice más bajo (por ejemplo, 0) se asigna al candidato de fusión entre regiones, y los índices de los candidatos de fusión entre regiones previamente almacenados pueden incrementarse en uno. En este caso, cuando un número máximo de candidatos de fusión de predicción inter son previamente almacenados en la tabla de información de movimiento entre regiones, se elimina el candidato de fusión entre regiones con el índice más grande.
Alternativamente, cuando el candidato de fusión entre regiones obtenido a partir del bloque actual se añade a la tabla de información de movimiento entre regiones, se puede asignar el índice mayor al candidato de fusión entre regiones. Como ejemplo, cuando el número de candidatos de fusión de predicción inter previamente almacenados en la tabla de información de movimiento entre regiones es menor que el valor máximo, se puede asignar al candidato de fusión entre regiones un índice que tenga el mismo valor que el número de candidatos de fusión de predicción inter almacenados previamente. Alternativamente, cuando el número de candidatos de fusión de predicción inter almacenados previamente en la tabla de información de movimiento entre regiones es igual al valor máximo, un índice que tiene el valor máximo menos 1 puede ser asignado al candidato de fusión entre regiones. Además, se elimina el candidato de fusión entre regiones con el menor índice y los índices de los otros candidatos de fusión entre regiones previamente almacenados se disminuyen en 1.
La figura 26 es un diagrama que muestra un aspecto de actualización de una tabla de candidatos de fusión entre regiones.
Dado que el candidato de fusión entre regiones obtenido a partir del bloque actual se añade a la tabla de candidatos de fusión entre regiones, se supone que el mayor índice se asigna al candidato de fusión entre regiones. Además, se supone que se almacena un número máximo de candidatos de fusión entre regiones en la tabla de candidatos de fusión entre regiones.
Cuando un candidato de fusión entre regiones HmvpCand[n+1], que se obtiene a partir del bloque actual, se añade a una tabla de candidatos de fusión entre regiones HmvpCandList, se puede eliminar un candidato de fusión entre regiones HmvpCand[0], que tiene el menor índice de entre los candidatos de fusión entre regiones almacenados previamente, y los índices de los otros candidatos de fusión entre regiones se pueden disminuir en 1. Además, el índice del candidato de fusión entre regiones HmvpCand[n+1], que se obtiene a partir del bloque actual, puede establecerse como el valor máximo (n en el ejemplo mostrado en la figura 26).
Cuando un candidato de fusión entre regiones idéntico al candidato de fusión entre regiones obtenido basándose en el bloque actual es almacenado previamente (S2505), el candidato de fusión entre regiones obtenido basándose en el bloque actual puede no ser añadido a la tabla de información de movimiento entre regiones (S2509).
Alternativamente, si bien el candidato de fusión entre regiones obtenido basándose en el bloque actual se añade a la tabla de información de movimiento entre regiones, se puede eliminar un candidato de fusión entre regiones almacenado previamente idéntico al candidato de fusión entre regiones. Esto tiene el mismo efecto que la actualización de los índices de los candidatos de fusión entre regiones almacenados previamente.
La figura 27 es un diagrama que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión entre regiones previamente almacenado.
Cuando el índice del candidato de fusión de predicción inter almacenado previamente idéntico al candidato de fusión entre regiones mvCand, que se obtiene basándose en el bloque actual, es hIdx, se puede eliminar el candidato de fusión de predicción inter almacenado previamente, y los índices de los candidatos de fusión de predicción inter mayores que hIdx pueden ser disminuidos en 1. Como ejemplo, se muestra en figura 27 que HmvpCand[2], que es idéntico a mvCand, es eliminado de la tabla de información de movimiento entre regiones HvmpCandList, y que los índices HmvpCand[3] a HmvpCand[n] se disminuyen en 1.
Además, el candidato de fusión entre regiones mvCand, que se obtiene basándose en el bloque actual, puede añadirse al final de la tabla de información de movimiento entre regiones.
Alternativamente, se puede actualizar el índice asignado al candidato de fusión entre regiones almacenado previamente idéntico al candidato de fusión entre regiones obtenido basándose en el bloque actual. Por ejemplo, el índice del candidato de fusión entre regiones almacenado previamente puede cambiarse al valor mínimo o al valor máximo.
Puede establecerse que la información de movimiento de los bloques incluidos en una región predeterminada no se añada a la tabla de información de movimiento entre regiones. Como ejemplo, un candidato de fusión entre regiones obtenido basándose en la información de movimiento de un bloque incluido en una región de procesamiento de fusión puede no añadirse a la tabla de información de movimiento entre regiones. Dado que no se ha definido un orden de codificación o descodificación para los bloques incluidos en la región de procesamiento de fusión, no es apropiado utilizar la información de movimiento de uno de los bloques para realizar una predicción inter en los otros bloques. En consecuencia, los candidatos de fusión entre regiones obtenidos basándose en los bloques incluidos en la región de procesamiento de fusión no pueden añadirse a la tabla de información de movimiento entre regiones.
Cuando la predicción de compensación de movimiento se realiza en unidades de subbloques, un candidato de fusión entre regiones puede obtenerse basándose en la información de movimiento de un subbloque representativo de entre la pluralidad de subbloques incluidos en el bloque actual. Como ejemplo, cuando se utiliza un candidato de fusión de subbloque para el bloque actual, se puede obtener un candidato de fusión entre regiones basándose en la información de movimiento de un subbloque representativo de entre los subbloques.
Los vectores de movimiento de los subbloques pueden obtenerse en el siguiente orden. En primer lugar, se puede seleccionar un candidato de fusión de entre los candidatos de fusión incluidos en una lista de candidatos de fusión del bloque actual, y se puede obtener un vector de desplazamiento inicial sh Vector basándose en el vector de movimiento del candidato de fusión seleccionado. Entonces, un subbloque de desplazamiento que tiene una muestra de referencia ubicada en (xColSb, yColSb) puede obtenerse añadiendo el vector de desplazamiento inicial a la ubicación (xSb, ySb) de la muestra de referencia (por ejemplo, la muestra superior-izquierda o la muestra central) de cada subbloque en el bloque de codificación. La Ecuación 20 a continuación indica una Ecuación para obtener el subbloque de desplazamiento.
[ Ecuación 20]
(x C o lS b ,y C olSb )—(x S b + sh V ector [ O ] » 4 ,yS b sh V ector [ ! ] » 4 )
A continuación, el vector de movimiento del bloque coubicado correspondiente a la posición central del subbloque que incluye (xColSb, yColSb) puede establecerse como el vector de movimiento del subbloque que incluye (xSb, ySb).
El subbloque representativo puede referirse a un subbloque que incluye la muestra superior-izquierda o la muestra central del bloque actual.
La figura 28 es un diagrama que muestra la ubicación de un subbloque representativo.
La figura 28A muestra un ejemplo en el que un subbloque ubicado a la izquierda y encima del bloque actual se establece como subbloque representativo, y la figura 28B muestra un ejemplo en el que un subbloque ubicado en el centro del bloque actual se establece como subbloque representativo. Cuando la predicción de compensación de movimiento se realiza en unidades de subbloques, el candidato de fusión entre regiones del bloque actual puede obtenerse basándose en el vector de movimiento de un subbloque que incluye la muestra superior-izquierda del bloque actual o un subbloque que incluye la muestra central del bloque actual.
El uso del bloque actual como candidato de fusión entre regiones también puede determinarse basándose en el modo de predicción inter del bloque actual. Como ejemplo, un bloque codificado o descodificado basándose en el modelo de movimiento afín puede establecerse como no disponible como candidato de fusión entre regiones. En consecuencia, aunque el bloque actual se codifique o descodifique mediante predicción inter, la tabla de información de movimiento de predicción inter puede no actualizarse basándose en el bloque actual cuando el modo de predicción inter del bloque actual es el modo de predicción afín.
Alternativamente, el candidato de fusión entre regiones puede obtenerse basándose en el vector subbloque de al menos un subbloque incluido en el bloque que se codifica o descodifica basándose en el modelo de movimiento afín. Como ejemplo, el candidato de fusión entre regiones puede obtenerse utilizando un subbloque ubicado en la esquina superior-izquierda del bloque actual, un subbloque ubicado en el centro del bloque actual o un subbloque ubicado en la esquina superior-derecha del bloque actual. Alternativamente, la media de los vectores de los subbloques de la pluralidad de subbloques puede establecerse como el vector de movimiento del candidato de fusión entre regiones.
Alternativamente, el candidato de fusión entre regiones puede obtenerse basándose en la media de los vectores semilla afines del bloque que se codifica o descodifica basándose en el modelo de movimiento afín. Como ejemplo, se puede establecer como vector de movimiento del candidato de fusión entre regiones la media de al menos uno del primer vector semilla afín, el segundo vector semilla afín o el tercer vector semilla afín del bloque actual.
Alternativamente, la tabla de información de movimiento entre regiones puede ser configurada para cada modo de predicción inter. Como ejemplo, se puede definir al menos una de una tabla de información de movimiento entre regiones para un bloque codificado o descodificado con una copia de bloque intra, una tabla de información de movimiento entre regiones para un bloque codificado o descodificado basándose en el modelo de movimiento de traslación, o una tabla de información de movimiento entre regiones para un bloque codificado o descodificado basándose en el modelo de movimiento afín. Una de la pluralidad de tablas de información de movimiento entre regiones puede ser seleccionada de acuerdo con el modo de predicción inter del bloque actual.
La figura 29 muestra un ejemplo en el que se genera una tabla de información de movimiento entre regiones para cada modo de predicción inter.
Cuando un bloque se codifica o descodifica basándose en un modelo de movimiento no afín, puede añadirse a una tabla de información de movimiento no afín entre regiones HmvpCandList un candidato de fusión entre regiones mvCand, que se ha obtenido basándose en el bloque. Por otra parte, cuando un bloque se codifica o descodifica basándose en un modelo de movimiento afín, un candidato de fusión entre regiones mvAfCand, que se obtiene basándose en el bloque, puede añadirse a una tabla de información de movimiento afín entre regiones HmvpAfCandList.
Los vectores semilla afines del bloque pueden almacenarse en un candidato de fusión entre regiones obtenido del bloque que se codifica o descodifica basándose en el modelo de movimiento afín. En consecuencia, el candidato de fusión entre regiones puede utilizarse como candidato de fusión para obtener el vector semilla afín del bloque actual.
Además de la tabla de información de movimiento entre regiones descrita anteriormente, puede definirse una tabla de información de movimiento entre regiones adicional. Además de la tabla de información de movimiento entre regiones descrita anteriormente (denominada en lo sucesivo primera tabla de información de movimiento entre regiones), se puede definir una tabla de información de movimiento a largo plazo (denominada en lo sucesivo segunda tabla de información de movimiento entre regiones). Aquí, la tabla de información de movimiento a largo plazo incluye candidatos de fusión a largo plazo.
Cuando tanto la primera tabla de información de movimiento entre regiones como la segunda tabla de información de movimiento entre regiones estén vacías, los candidatos de fusión entre regiones podrán añadirse preferentemente a la segunda tabla de información de movimiento entre regiones. Hasta que el número de candidatos de fusión entre regiones permitido para la segunda tabla de información de movimiento entre regiones alcance el número máximo, los candidatos de fusión entre regiones no podrán añadirse a la primera tabla de información de movimiento entre regiones.
Alternativamente, se puede añadir un candidato de fusión de predicción inter tanto a la primera tabla de información de movimiento entre regiones como a la segunda tabla de información de movimiento entre regiones.
En este caso, la segunda tabla de información de movimiento entre regiones en la que se ha completado la configuración ya no puede realizar una actualización. Alternativamente, cuando una región descodificada es mayor o igual que una proporción predeterminada de un segmento, la segunda tabla de información de movimiento entre regiones puede ser actualizada. Alternativamente, la segunda tabla de información de movimiento entre regiones puede ser actualizada cada N líneas de unidad de árbol de codificación.
Por otra parte, la primera tabla de información de movimiento entre regiones puede actualizarse siempre que se genere un bloque codificado o descodificado mediante predicción inter. Sin embargo, puede establecerse que los candidatos de fusión entre regiones añadidos a la segunda tabla de información de movimiento entre regiones no se utilicen para actualizar la primera tabla de información de movimiento entre regiones.
La información para seleccionar una de la primera tabla de información de movimiento entre regiones o la segunda tabla de información de movimiento entre regiones puede señalizarse en un flujo de bits. Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es inferior a un valor umbral, los candidatos de fusión incluidos en la tabla de información de movimiento entre regiones indicados por la información pueden añadirse a la lista de candidatos de fusión.
Alternativamente, una tabla de información de movimiento entre regiones puede ser seleccionada basándose en el tamaño, la forma o el modo de predicción inter del bloque actual, la presencia de predicción bidireccional, la presencia de refinamiento del vector de movimiento o la presencia de partición triangular.
Alternativamente, 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 de fusión aunque los candidatos de fusión entre regiones incluidos en la primera tabla de información de movimiento entre regiones se añadan a la lista de candidatos de fusión, los candidatos de fusión entre regiones incluidos en la segunda tabla de información de movimiento entre regiones pueden añadirse a la lista de candidatos de fusión.
La figura 30 es un diagrama que muestra un ejemplo en el que un candidato de fusión entre regiones incluido en una tabla 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 entre regiones incluidos en la primera tabla de información de movimiento entre regiones HmvpCandList pueden 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 entre regiones incluidos en la primera tabla de información de movimiento entre regiones se añadan a la lista de candidatos de fusión, los candidatos de fusión entre regiones incluidos en la tabla de información de movimiento a largo plazo HmvpLTCandList podrán añadirse a la lista de candidatos de fusión.
La Tabla 1 muestra un proceso de adición de los candidatos de fusión entre regiones incluidos en la tabla de información de movimiento a largo plazo a la lista de candidatos de fusión.
[Tabla 1]
Puede establecerse que el candidato de fusión entre regiones incluya información adicional además de la información de movimiento. Como ejemplo, el tamaño, la forma o la información de partición de un bloque pueden almacenarse adicionalmente para el candidato de fusión entre regiones. Cuando se configura la lista de candidatos de fusión del bloque actual, sólo se pueden utilizar los candidatos de fusión de predicción inter que tengan el mismo tamaño, forma o información de partición, o similar, que el bloque actual de entre los candidatos de fusión de predicción inter, o los candidatos de fusión de predicción inter que tengan el mismo tamaño, forma o información de partición, o similar, que el bloque actual se pueden añadir preferentemente a la lista de candidatos de fusión.
Alternativamente, la tabla de información de movimiento entre regiones puede ser generada para cada tamaño, forma, o elemento de información de partición del bloque. La lista de candidatos de fusión del bloque actual puede generarse utilizando una tabla de información de movimiento entre regiones que coincida con la forma, tamaño o información de partición del bloque actual de entre una pluralidad de tablas de información de movimiento entre regiones.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual es inferior a un valor umbral, el candidato de fusión entre regiones incluido en la tabla de información de movimiento entre regiones puede añadirse a la lista de candidatos de fusión. El proceso de adición puede ser en orden ascendente o descendente basado en índices. Como ejemplo, un candidato de fusión entre regiones con el índice más alto puede añadirse preferentemente a la lista de candidatos de fusión.
Cuando el candidato de fusión entre regiones incluido en la tabla de información de movimiento entre regiones se añade a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión entre regiones con respecto a los candidatos de fusión almacenados previamente en la lista de candidatos de fusión.
A modo de ejemplo, la Tabla 2 muestra un proceso de adición de un candidato de fusión entre regiones a la lista de candidatos de fusión.
[Tabla 2]
La comprobación de redundancia puede realizarse sólo en algunos de los candidatos de fusión entre regiones incluidos en la tabla de información de movimiento entre regiones. Como ejemplo, la comprobación de redundancia puede realizarse sólo en los candidatos de fusión entre regiones que tengan índices mayores o iguales al valor umbral o índices menores o iguales al valor umbral. Alternativamente, la comprobación de redundancia puede realizarse sólo en N candidatos de fusión que tengan los mayores índices o que tengan los menores índices.
Alternativamente, la comprobación de redundancia puede realizarse sólo en algunos de los candidatos de fusión almacenados previamente en la lista de candidatos de fusión. Como ejemplo, la comprobación de redundancia puede realizarse sólo en un candidato de fusión con un índice mayor o igual al valor umbral o un índice menor o igual al valor umbral o un candidato de fusión obtenido a partir de un bloque en una ubicación específica. Aquí, la ubicación específica puede incluir al menos uno del bloque vecino izquierdo, el bloque vecino superior, el bloque vecino superiorderecho o el bloque vecino inferior-izquierdo del bloque actual.
La figura 31 es un diagrama que muestra un ejemplo en el cual se realiza una comprobación de redundancia en solo algunos candidatos de fusión.
Cuando se va a añadir un candidato de fusión entre regiones HmvpCand[j] a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión entre regiones con respecto a dos candidatos de fusión mergeCandList[NumMerge-2] y mergeCandList[NumMerge-1], que tienen los índices mayores. Aquí, NumMerge puede representar el número de candidatos de fusión espacial y candidatos de fusión temporal disponibles.
A diferencia del ejemplo mostrado, cuando el candidato de fusión entre regiones HmvpCand[j] debe añadirse a la lista de candidatos de fusión, la comprobación de redundancia puede realizarse en el candidato de fusión entre regiones con respecto a al menos dos candidatos de fusión que tengan los menores índices. Como ejemplo, puede comprobarse si mergeCandList[0] y mergeCandList[1] son idénticos a HmvpCand[j]. Alternativamente, la comprobación de redundancia puede realizarse sólo en un candidato de fusión obtenido en una ubicación específica. Como ejemplo, la comprobación de redundancia puede realizarse en al menos uno de un candidato de fusión obtenido a partir de un bloque cercano ubicado a la izquierda del bloque actual o un candidato de fusión obtenido a partir de un bloque cercano ubicado encima del bloque actual. Cuando ningún candidato de fusión obtenido en una ubicación específica está presente en la lista de candidatos de fusión, los candidatos de fusión entre regiones pueden añadirse a la lista de candidatos de fusión sin una comprobación de redundancia.
Cuando se encuentra un candidato de fusión idéntico al primer candidato de fusión entre regiones, la comprobación de redundancia en el candidato de fusión idéntico al primer candidato de fusión entre regiones puede omitirse mientras se realiza la comprobación de redundancia en el segundo candidato de fusión entre regiones.
La figura 32 es un diagrama que muestra un ejemplo en el cual se omite una comprobación de redundancia en un candidato de fusión especifico.
Cuando se va a añadir a la lista de candidatos de fusión un candidato de fusión entre regiones HmvpCand[i] con un índice de i, se puede realizar una comprobación de redundancia entre el candidato de fusión entre regiones y los candidatos de fusión almacenados previamente en la lista de candidatos de fusión. En este caso, cuando se encuentra un candidato de fusión mergeCandList[j] idéntico al candidato de fusión entre regiones HmvpCand[i], el candidato de fusión entre regiones HmvpCand[i] puede no añadirse a la lista de candidatos de fusión, y puede realizarse una comprobación de redundancia entre un candidato de fusión entre regiones HmvpCand[i-1], que tiene un índice de i-1, y los candidatos de fusión. En este caso, puede omitirse la comprobación de redundancia entre el candidato de fusión entre regiones HmvpCand[i-1] y el candidato de fusión mergeCandList[j].
Como ejemplo, en el ejemplo mostrado en figura 32, se determina que HmvpCand[i] y mergeCandList[2] son idénticos entre sí. En consecuencia, HmvpCand[i] puede no ser añadido a la lista de candidatos de fusión, y se puede realizar una comprobación de redundancia en HmvpCand[i-1]. En este caso, puede omitirse una 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 a un valor umbral, puede incluirse, además, al menos uno de un candidato de fusión por pares o un candidato de fusión cero además del candidato de fusión entre regiones. El candidato de fusión por pares se refiere a un candidato de fusión con un vector de movimiento igual a la media de los vectores de movimiento de dos o más candidatos de fusión, y un candidato de fusión cero se refiere a un candidato de fusión con un vector de movimiento de 0.
Un candidato de fusión puede añadirse a la lista de candidatos de fusión del bloque actual en el siguiente orden.
Candidato de fusión espacial - Candidato de fusión temporal - Candidato de fusión entre regiones - (Candidato de fusión afín entre regiones) - Candidato de fusión por pares - Candidato de fusión cero.
El candidato de fusión espacial se refiere a un candidato de fusión obtenido a partir de al menos uno de un bloque vecino o un bloque no vecino, y el candidato de fusión temporal se refiere a un candidato de fusión obtenido a partir de una imagen de referencia anterior. El candidato de fusión afín entre regiones se refiere a un candidato de fusión entre regiones obtenido a partir de un bloque codificado o descodificado por un modelo de movimiento afín.
La tabla de información de movimiento entre regiones puede utilizarse incluso en el modo de predicción de vector de movimiento. Como ejemplo, cuando el número de candidatos de predicción de vector de movimiento incluidos en la lista de candidatos de predicción de vector de movimiento del bloque actual es menor que un valor umbral, el candidato de fusión entre regiones incluido en la tabla de información de movimiento entre regiones puede establecerse como el candidato de predicción de vector de movimiento para el bloque actual. En detalle, el vector de movimiento del candidato de fusión entre regiones puede establecerse como el candidato de predicción del vector de movimiento.
Cuando se selecciona uno de los candidatos de predicción de vector de movimiento incluidos en la lista de candidatos de predicción de vector de movimiento del bloque actual, el candidato seleccionado puede establecerse como predictor de vector de movimiento del bloque actual. Posteriormente, el vector de movimiento del bloque actual puede adquirirse descodificando un valor residual del vector de movimiento del bloque actual y sumando, a continuación, el predictor del vector de movimiento y el valor residual del vector de movimiento.
La lista de candidatos de predicción del vector de movimiento del bloque actual puede configurarse en el siguiente orden.
Candidato de predicción de vector de movimiento espacial - Candidato de predicción de vector de movimiento temporal - Candidato de fusión entre regiones de descodificación inter - (Candidato de fusión afín entre regiones de descodificación inter) - Candidato de predicción de vector de movimiento cero
El candidato de predicción de vector de movimiento espacial se refiere a un candidato de predicción de vector de movimiento obtenido a partir de al menos uno de un bloque vecino o un bloque no vecino, y el candidato de predicción de vector de movimiento temporal se refiere a un candidato de predicción de vector de movimiento obtenido a partir de una imagen de referencia precedente. El candidato de fusión afín entre regiones se refiere a un candidato de predicción de vector de movimiento entre regiones obtenido a partir de un bloque codificado o descodificado por un modelo de movimiento afín. El candidato de predicción de vector de movimiento cero representa un candidato con un vector de movimiento de 0.
Un bloque de codificación puede dividirse en una pluralidad de unidades de predicción, y las unidades de predicción pueden someterse a predicción. Aquí, la unidad de predicción indica una unidad básica para realizar la predicción.
Un bloque de codificación puede dividirse utilizando al menos una de una línea vertical, una línea horizontal, una línea oblicua o una línea diagonal. La información para determinar al menos uno del número, ángulos o ubicaciones de las líneas que dividen el bloque de codificación puede señalizarse en un flujo de bits. Como ejemplo, la información que indica uno de una pluralidad de candidatos de tipo de partición del bloque de codificación puede señalizarse en un flujo de bits, o la información que especifica uno de una pluralidad de candidatos de línea que dividen el bloque de codificación puede señalizarse en un flujo de bits. Alternativamente, la información para determinar el número o tipos de candidatos de línea que dividen el bloque de codificación puede ser señalizada en un flujo de bits. Como ejemplo, utilizando una bandera de 1 -bit se puede determinar si se utiliza una línea oblicua que tiene un ángulo mayor que la línea diagonal y/o una línea oblicua que tiene un ángulo menor que la línea diagonal como una línea candidata.
Alternativamente, al menos uno del número, ángulos o ubicaciones de las líneas que realizan la partición del bloque de codificación puede determinarse adaptativamente basándose en al menos uno de un modo de predicción inter del bloque de codificación, un modo de predicción inter, la ubicación de un candidato de fusión disponible o un aspecto de partición de un bloque vecino.
Cuando un bloque de codificación se divide en una pluralidad de unidades de predicción, se puede realizar predicción intra o predicción inter en las unidades de predicción.
La figura 33 es un diagrama que muestra un ejemplo de partición de un bloque de codificación en una pluralidad de unidades de predicción utilizando una línea diagonal.
Como en los ejemplos mostrados en las figuras 33A y 33B, un bloque de codificación puede ser dividido en dos unidades de predicción triangulares usando una línea diagonal.
Las figuras 33A y 33B muestran que un bloque de codificación es dividido en dos unidades de predicción usando una línea diagonal que conecta dos vértices del bloque de codificación. Sin embargo, un bloque de codificación puede dividirse en dos unidades de predicción usando una línea oblicua que tenga al menos un extremo que no pase a través de un vértice del bloque de codificación.
La figura 34 es un diagrama que muestra un ejemplo de partición de un bloque de codificación en dos unidades de predicción.
Como en los ejemplos mostrados en las figuras 34A y 34B, un bloque de codificación puede dividirse en dos unidades de predicción usando una línea oblicua con ambos extremos contiguos al borde superior y al borde inferior del bloque de codificación.
Alternativamente, como en los ejemplos mostrados en las figuras 34C y 34D, un bloque de codificación puede ser dividido en dos unidades de predicción usando una línea oblicua con ambos extremos contiguos al borde izquierdo y al borde derecho del bloque de codificación.
Alternativamente, un bloque de codificación puede dividirse en dos bloques de predicción de diferentes tamaños. Como ejemplo, estableciendo que una línea oblicua que realiza la partición del bloque de codificación sea contigua a dos bordes que forman un vértice, el bloque de codificación puede dividirse en dos unidades de predicción de diferentes tamaños.
La figura 35 muestra ejemplos en los que un bloque de codificación se divide en una pluralidad de bloques de predicción de diferentes tamaños.
Como en los ejemplos mostrados en las figuras 35A y 35B, estableciendo una línea diagonal que conecta una porción superior-izquierda y una porción inferior-derecha del bloque de codificación para pasar a través del borde izquierdo, borde derecho, borde superior o borde inferior del bloque de codificación 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 dividirse en dos unidades de predicción de diferentes tamaños.
Alternativamente, como en los ejemplos mostrados en las figuras 35C y 35D, estableciendo una línea diagonal que conecta una porción superior-derecha y una porción inferior-izquierda del bloque de codificación para que pase a través del borde izquierdo, borde derecho, borde superior o borde inferior del bloque de codificación 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 dividirse en dos unidades de predicción de diferentes tamaños.
Cada una de las unidades de predicción generadas por la partición del bloque de codificación se denomina "unidad de predicción N-ésima". A modo de ejemplo, en los ejemplos mostrados en las figuras 33 a 35, 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 puede referirse a una unidad de predicción que incluye una muestra ubicada en una porción inferior-izquierda del bloque de codificación o una muestra ubicada en una porción superior-izquierda del bloque de codificación, y la segunda unidad de predicción puede referirse a una unidad de predicción que incluye una muestra ubicada en una porción superior-derecha del bloque de codificación o una muestra ubicada en una porción inferiorderecha del bloque de codificación.
A la inversa, una unidad de predicción que incluye una muestra ubicada en una porción superior-derecha del bloque de codificación o una muestra ubicada en una porción inferior-derecha del bloque de codificación puede definirse como la primera unidad de predicción, y una unidad de predicción que incluye una muestra ubicada en una porción inferiorizquierda del bloque de codificación o una muestra ubicada en una porción superior-izquierda del bloque de codificación puede definirse como la segunda unidad de predicción.
Las siguientes realizaciones se describirán, centrándose en un ejemplo de partición utilizando una línea diagonal. En particular, la partición de un bloque de codificación en dos unidades de predicción utilizando una línea diagonal, de acuerdo con la invención reivindicada, se denomina partición diagonal o partición triangular, y una unidad de predicción generada basándose en la partición diagonal se denomina unidad de predicción triangular. Sin embargo, se apreciará que las siguientes realizaciones pueden aplicarse incluso a un ejemplo de partición utilizando una línea oblicua que tiene un ángulo diferente al de una línea vertical, una línea horizontal o una línea diagonal.
Se puede determinar si aplicar la partición diagonal al bloque de codificación basándose en al menos uno de un tipo de segmento, 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 predictiva del bloque de codificación o el aspecto de partición del nodo padre.
Como ejemplo, se puede determinar si aplicar la partición diagonal al bloque de codificación basándose en si el segmento actual es de tipo B. La partición diagonal puede permitirse sólo cuando el segmento actual es de tipo B.
Alternativamente, se puede determinar si aplicar la partición diagonal al 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 de dos o más. La partición diagonal puede permitirse sólo 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.
Alternativamente, cuando al menos una de la anchura o la altura es mayor que 64 en la implementación de hardware, de forma desventajosa, se accede de forma redundante a una unidad de procesamiento de datos que tiene un tamaño de 64x64. En consecuencia, cuando al menos una de la anchura o la altura del bloque de codificación es mayor que un valor umbral, puede que no se permita dividir el bloque de codificación en una pluralidad de bloques de predicción. A modo de ejemplo, cuando al menos una de la altura o la anchura del bloque de codificación es superior a 64, puede que no utilizarse la partición diagonal.
Alternativamente, se puede determinar si aplicar la partición diagonal al bloque de codificación basándose en al menos uno de si el número de muestras incluidas en el bloque de codificación es menor o igual que un primer valor umbral o si el número de muestras incluidas en el bloque de codificación es mayor o igual que un segundo valor umbral. A modo de ejemplo, cuando el número de muestras incluidas en el bloque de codificación es menor o igual que el primer valor umbral o cuando el número de muestras incluidas en el bloque de codificación es mayor o igual que el segundo valor umbral, puede establecerse que no se aplique la partición diagonal al bloque de codificación. Alternativamente, se puede determinar si aplicar la partición diagonal al bloque de codificación basándose en si una relación anchura-altura del bloque de codificación es menor que el primer valor umbral o si una relación anchura-altura del bloque de codificación es mayor que el segundo valor umbral. Aquí, una relación anchura-altura whRatio del bloque de codificación puede determinarse como una relación entre una anchura CbW y una altura CbH del bloque de codificación tal como se muestra en la Ecuación 21 a continuación.
[ Ecuación 21]
w h R a t io = C b W/C b H
El segundo valor umbral puede ser un número inverso del primer valor umbral. Como ejemplo, cuando el primer valor umbral es k, el segundo valor umbral puede ser1/k.
La partición diagonal puede aplicarse al bloque de codificación sólo cuando la relación anchura-altura del bloque de codificación se encuentra entre el primer valor umbral y el segundo valor umbral.
Alternativamente, la partición triangular puede utilizarse sólo cuando la relación anchura-altura del bloque de codificación es menor que el primer valor umbral o mayor que el segundo valor umbral. Como ejemplo, cuando el primer valor umbral es 16, la partición diagonal puede no estar permitida para un bloque de codificación con un tamaño de 64x4 o 4x64.
Alternativamente, se puede determinar si se permite la partición diagonal basándose en el aspecto de partición del nodo padre. Como ejemplo, cuando un bloque de codificación, que es un nodo padre, se divide basándose en la partición en árbol cuádruple, se puede aplicar la partición diagonal a un bloque de codificación que es un nodo hoja. Por otra parte, cuando un bloque de codificación, que es un nodo padre, se divide basándose en la partición en árbol binario o partición en árbol ternario, se puede establecer que no se permite la partición diagonal para un bloque de codificación que es un nodo hoja.
Alternativamente, se puede determinar si permitir la partición diagonal basándose en el modo de codificación predictiva del bloque de codificación. Como ejemplo, la partición diagonal puede permitirse sólo cuando el bloque de codificación se codifica mediante predicción intra, cuando el bloque de codificación se codifica mediante predicción inter, o cuando el bloque de codificación se codifica en un modo predefinido de predicción inter. Aquí, el modo de predicción inter definido puede indicar al menos uno de un modo de fusión, un modo de predicción de vector de movimiento, un modo de fusión afín o un modo de predicción de vector de movimiento afín.
Alternativamente, se puede determinar si permitir la partición diagonal basándose en el tamaño de una región de procesamiento paralelo. Como ejemplo, cuando el tamaño del bloque de codificación es mayor que el tamaño de la región de procesamiento en paralelo, puede no utilizarse la partición diagonal.
Se puede determinar si aplicar la partición diagonal al bloque de codificación teniendo en cuenta dos o más de las condiciones mencionadas anteriormente.
Además, la información que indica si se permite la partición diagonal puede señalizarse en un flujo de bits. La información puede señalizarse a nivel de secuencia, imagen, segmento o bloque. La información indica que se permite la partición diagonal, y la partición diagonal puede aplicarse al bloque de codificación sólo cuando se cumple al menos una de las condiciones enumeradas anteriormente.
Cuando se determina aplicar la partición diagonal al bloque de codificación, puede señalizarse en un flujo de bits la información que indica el número o las ubicaciones de las líneas que realizarán la partición del bloque de codificación.
Cuando el bloque de codificación se divide mediante una línea diagonal, la información que indica la dirección de la línea diagonal que realiza la partición del bloque de codificación se señaliza en un flujo de bits. En un flujo de bits se señaliza una bandera triangle_partition type flag, que indica la dirección de la línea diagonal. La bandera indica si el bloque de codificación está dividido por una línea diagonal que conecta una porción superior-izquierda y una porción inferior-derecha o por una línea diagonal que conecta una porción superior-derecha y una porción inferior-izquierda, realizando la partición del bloque de codificación por la línea diagonal que conecta la porción superior-izquierda y la porción inferior-derecha se denomina tipo de partición izquierda-triangular, y la partición del bloque de codificación por la línea diagonal que conecta la porción superior-derecha y la porción inferior-izquierda se denomina tipo de partición derecha-triangular. Como ejemplo, la bandera que tiene un valor de 0 puede indicar que el tipo de partición del bloque de codificación es del tipo de partición izquierda-triangular, y la bandera que tiene un valor de 1 puede indicar que el tipo de partición del bloque de codificación es del tipo de partición derecha-triangular.
La información que indica el tipo de partición del bloque de codificación puede señalizarse a nivel de bloque de codificación. En consecuencia, el tipo de partición puede determinarse para cada bloque de codificación al que se aplique la partición diagonal.
Como otro ejemplo, se puede señalizar la información que indica un tipo de partición para una secuencia, imagen, segmento, mosaico o unidad de árbol de codificación. En este caso, el tipo de partición de los bloques de codificación a los que se aplica la partición diagonal puede establecerse de forma idéntica en la secuencia, imagen, segmento, mosaico o unidad de árbol de codificación.
Alternativamente, la información para determinar el tipo de partición de la primera unidad de codificación a la que se va a aplicar la partición diagonal en la unidad de árbol de codificación puede codificarse y señalizarse, y puede establecerse que las unidades de codificación segunda y posteriores a las que se va a aplicar la partición diagonal utilicen el mismo tipo de partición que la primera unidad de codificación.
Como otro ejemplo, el tipo de partición del bloque de codificación puede determinarse basándose en el tipo de partición de un bloque vecino. Aquí, el bloque vecino puede incluir al menos uno de un bloque vecino adyacente a la esquina superior-izquierda del bloque de codificación, un bloque vecino adyacente a la esquina superior-derecha del bloque de codificación, un bloque vecino adyacente a la esquina inferior-izquierda del bloque de codificación, un bloque vecino ubicado encima del bloque de codificación o un bloque vecino ubicado a la izquierda del bloque de codificación. Como ejemplo, el tipo de partición del bloque actual puede ser el mismo que el tipo de partición del bloque vecino. Alternativamente, el tipo de partición del bloque actual puede determinarse basándose en si el tipo de partición izquierda-triangular se aplica al bloque vecino superior-izquierdo o si el tipo de partición derecha-triangular se aplica al bloque vecino superior-derecho o al bloque vecino inferior-izquierdo.
Para realizar la compensación de la predicción de movimiento para una primera unidad de predicción triangular y una segunda unidad de predicción triangular, puede obtenerse la 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 caso, la información de movimiento de la primera unidad de predicción triangular y de la segunda unidad de predicción triangular puede obtenerse a partir de los candidatos de fusión incluidos en la lista de candidatos de fusión. Para distinguir una lista general de candidatos de fusión de una lista de candidatos de fusión utilizada para obtener la información de movimiento de las unidades de predicción triangulares, una lista de candidatos de fusión para obtener 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 denomina candidato de fusión triangular. Sin embargo, también es posible utilizar el procedimiento de obtención de candidatos de fusión y el procedimiento de configuración de la lista de candidatos de fusión descritos anteriormente para un procedimiento de configuración de candidatos de fusión triangulares y una lista de candidatos de fusión triangulares.
La 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 puede señalizarse en un flujo. La información puede indicar una diferencia entre el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir y el número máximo de candidatos de fusión triangular que la lista de candidatos de fusión triangular puede incluir.
Los candidatos de fusión triangular pueden obtenerse a partir de bloques vecinos espaciales y de bloques vecinos temporales del bloque de codificación.
La figura 36 es un diagrama que muestra bloques vecinos utilizados para obtener un candidato de fusión triangular.
El candidato de fusión triangular puede obtenerse utilizando al menos uno de un bloque vecino ubicado encima del bloque de codificación, un bloque vecino ubicado a la izquierda del bloque de codificación o un bloque coubicado incluido en una imagen diferente de la del bloque de codificación. El bloque vecino superior puede incluir al menos uno de un bloque que incluye una muestra (xCb+CbW-1, yCb-1) ubicada encima del bloque de codificación, un bloque que incluye una muestra (xCb+CbW, yCb-1) ubicada encima del bloque de codificación, y un bloque que incluye una muestra (xCb-1, yCb-1) ubicada encima del bloque de codificación. El bloque vecino izquierdo puede incluir al menos uno de un bloque que incluye una muestra (xCb-1, yCb+CbH-1) ubicada a la izquierda del bloque de codificación o un bloque que incluye una muestra (xCb-1, yCb+CbH) ubicada a la izquierda del bloque de codificación. El bloque coubicado puede determinarse por uno de los bloques que incluye una muestra (xCb+CbW, yCb+CbH) adyacente a la esquina superior-derecha del bloque de codificación en una imagen coubicada o un bloque que incluye una muestra (xCb/2, yCb/2) ubicada en el centro del bloque de codificación en la imagen coubicada.
Los bloques vecinos pueden descubrirse en un orden predefinido, y los candidatos de fusión triangular pueden formar la lista de candidatos de fusión triangular en el orden predefinido. Como ejemplo, los candidatos de fusión triangular pueden descubrirse en el orden B1, A1, B0, A0, C0, B2 y C1 para formar la lista de candidatos de fusión triangular.
La información de movimiento de las unidades de predicción triangulares puede obtenerse 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.
La información para especificar al menos uno de los candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular puede señalizarse en un flujo de bits con el fin de obtener la información de movimiento de la unidad de fusión triangular. Como ejemplo, la información de índice merge_triangle_idx, que sirve para especificar al menos uno de los candidatos de fusión triangular, puede señalizarse en un flujo de bits.
La información de índice puede especificar una combinación del candidato de fusión de la primera unidad de predicción triangular y el candidato de fusión de la segunda unidad de predicción triangular. A modo de ejemplo, la Tabla 3 representa combinaciones de candidatos de fusión correspondientes a la información de índice merge_triangle_idx.
[Tabla 3]
La información de índice merge_triangle_idx que tiene un valor de 1 representa que la información de movimiento de la primera unidad de predicción triangular se obtiene a partir de un candidato de fusión con un índice de 1 y que la información de movimiento de la segunda unidad de predicción triangular se obtiene de un candidato de fusión con un índice de 0. A través de la información de índice merge_triangle_idx, se puede determinar un candidato de fusión triangular para obtener la información de movimiento de la primera unidad de predicción triangular y un candidato de fusión triangular para obtener la información de movimiento de la segunda unidad de predicción triangular.
El tipo de partición del bloque de codificación al que se aplica la partición diagonal puede determinarse mediante la información de índice. Es decir, la información de índice puede 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 partición del bloque de codificación. Cuando el tipo de partición del bloque de codificación se determina mediante la información de índice, la información triangle_partition_type_flag, que indica la dirección de la línea diagonal que realiza la partición del bloque de codificación, puede no codificarse. La tabla 4 representa el tipo de partición del bloque de codificación en la información de índice merge_triangle_idx.
[Tabla 4]
Una variable T riangleDir de 0 representa que el tipo de partición izquierda-triangular se aplica al bloque de codificación, y la variable T riangleDir de 1 representa que el tipo de partición derecha-triangular se aplica al bloque de codificación. En combinación con la Tabla 3 y la Tabla 4, la información de índice merge_triangle_idx puede establecerse para especificar la 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 partición del bloque de codificación.
Como otro ejemplo, puede señalizarse sólo la información de índice para una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular, y se puede determinar un índice de un candidato de fusión triangular para la otra de la primera unidad de predicción triangular y la segunda unidad de predicción triangular basándose en la información de índice. Como ejemplo, el candidato de fusión triangular de la primera unidad de predicción triangular puede determinarse basándose en la información de índice merge_triangle_idx, que indica un índice de uno de los candidatos de fusión triangular. Asimismo, el candidato de fusión triangular de la segunda unidad de predicción triangular puede especificarse basándose en merge_triangle_idx. Como ejemplo, el candidato de fusión triangular de la segunda unidad de predicción triangular puede obtenerse sumando a, o restando un desplazamiento de la información de índice merge_triangle_idx. El desplazamiento puede ser un número entero tal como 1 o 2. Como ejemplo, un candidato de fusión triangular con un índice igual a merge_traingle_idx más 1 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 con el mayor valor de índice de entre los candidatos de fusión triangular, la información de movimiento de la segunda unidad de predicción triangular puede obtenerse a partir de un candidato de fusión triangular con un índice de 0 o un candidato de fusión triangular con un índice igual a merge_triangle_idx menos 1.
Alternativamente, la información de movimiento de la segunda unidad de predicción triangular puede obtenerse a partir de un candidato de fusión triangular que tenga la misma imagen de referencia que el candidato de fusión triangular de la primera unidad de predicción triangular especificado por la información de índice. En este caso, el candidato de fusión triangular que tiene la misma imagen de referencia que el candidato de fusión triangular de la primera unidad de predicción triangular puede indicar un candidato de fusión triangular en el que al menos una de la imagen de referencia L0 o la imagen de referencia L1 es la misma que la 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 la misma imagen de referencia que el candidato de fusión triangular de la primera unidad de predicción triangular, uno de la pluralidad de candidatos de fusión triangular puede seleccionarse basándose en al menos uno de si el candidato de fusión incluye información de movimiento bidireccional o un valor de diferencia entre la información de índice y el índice del candidato de fusión.
Como otro ejemplo, puede señalizarse la información de índice a cada una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular. De acuerdo con la invención reivindicada, la primera información de índice 1st_merge_idx, que es para determinar el candidato de fusión triangular de la primera unidad de predicción triangular, y la segunda información de índice 2nd_merge_idx, que es para determinar el candidato de fusión triangular de la segunda unidad de predicción triangular, se señalizan en un flujo de bits. La información de movimiento de la primera unidad de predicción triangular se obtiene a partir 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 se obtiene a partir 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 indica un índice de uno de 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 se determina como el candidato de fusión triangular indicado por la primera información de índice 1 st_merge_idx.
De acuerdo con la invención reivindicada, el candidato de fusión triangular indicado por la primera información de índice 1st_merge_idx no puede utilizarse como el 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 indica un índice de uno de los candidatos de fusión triangular restantes distinto del candidato de fusión triangular indicado por la primera información de índice. Cuando el valor de la segunda información de índice 2nd_merge_idx es menor que el valor de la primera información de índice 1st_merge_idx, se determina que el candidato de fusión triangular de la segunda unidad de predicción triangular es un candidato de fusión triangular que tiene información de índice indicada por la segunda información de índice 2nd_merge_idx. Por otra parte, cuando el valor de la segunda información de índice 2nd_merge_idx es mayor o igual que el valor de la primera información de índice 1st_merge_idx, se determina que el candidato de fusión triangular de la segunda unidad de predicción triangular es un candidato de fusión triangular con un índice que tiene un valor obtenido sumando uno al valor de la segunda información de índice 2nd_merge_idx.
En un ejemplo alternativo no cubierto por la invención reivindicada, se puede determinar si señalizar la segunda información de índice en función del número de candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular. Como ejemplo, cuando el número máximo de candidatos de fusión triangular que la lista de candidatos de fusión triangular puede incluir no excede de dos, la señalización de la segunda información de índice puede omitirse. Cuando se omite la señalización de la segunda información de índice, el segundo candidato de fusión triangular puede obtenerse añadiendo a, o restando un desplazamiento de la primera información de índice. Como ejemplo, cuando el número máximo de candidatos de fusión triangular que la lista de candidatos de fusión triangular puede incluir es dos y la primera información de índice indica un índice de 0, el segundo candidato de fusión triangular puede obtenerse añadiendo uno a la primera información de índice. Alternativamente, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular es dos y la primera información de índice indica uno, el segundo candidato de fusión triangular puede obtenerse restando uno a la primera información de índice.
En un ejemplo alternativo no cubierto por la invención reivindicada, cuando se omite la señalización de la segunda información de índice, la segunda información de índice puede establecerse como un valor por defecto. En este caso, el valor por defecto puede ser igual a cero. El segundo candidato de fusión triangular puede obtenerse comparando la primera información de índice y la segunda información de índice. Como ejemplo, un candidato de fusión con un índice de 0 puede establecerse como el segundo candidato de fusión triangular cuando la segunda información de índice es menor que la primera información de índice, y un candidato de fusión con un índice de 1 puede establecerse como el segundo candidato de fusión triangular cuando la segunda información de índice es mayor o igual que la primera información de índice.
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 la 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, sólo una de la información de movimiento L0 o la información de movimiento L1 puede establecerse como la información de movimiento de la unidad de predicción triangular. La selección de la información de movimiento L0 o la información de movimiento L1 puede determinarse basándose en el índice del candidato de fusión triangular o de la información de movimiento de las demás unidades de predicción triangulares.
Como 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 en cero, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como la información de movimiento L1 de la unidad de predicción triangular. Por otra parte, 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 en cero, y la información de movimiento L0 del candidato de fusión triangular puede establecerse en cero. A la inversa, la información de movimiento L0 del candidato de fusión triangular puede establecerse como la información de movimiento L0 de la unidad de predicción triangular cuando el índice del candidato de fusión triangular es un número par, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como la información de movimiento L1 de la unidad de predicción triangular cuando el índice del candidato de fusión triangular es un número impar. Alternativamente, la información de movimiento L0 del candidato de fusión triangular puede establecerse como la información de movimiento L0 de la primera unidad de predicción triangular cuando el candidato de fusión triangular para la primera unidad de predicción triangular es un número par, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como la información de movimiento L1 de la segunda unidad de predicción triangular cuando el candidato de fusión triangular para la segunda unidad de predicción triangular es un número impar.
Alternativamente, 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 en cero, y la información de movimiento L 1 del candidato de fusión triangular puede establecerse como la información L1 de la segunda unidad de predicción triangular. Por otra parte, 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 en cero, y la información de movimiento L0 del candidato de fusión triangular puede establecerse como la información de movimiento L0 de la segunda unidad de predicción triangular.
Se puede establecer que una lista de candidatos de fusión triangular para obtener la información de movimiento de la primera unidad de predicción triangular sea diferente de una lista de candidatos de fusión triangular para obtener la información de movimiento de la segunda unidad de predicción triangular.
A modo de ejemplo, cuando se especifica un candidato de fusión triangular para obtener la información de movimiento de la primera unidad de predicción triangular de la lista de candidatos de fusión triangular 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 obtenerse utilizando una lista de fusión triangular que incluye los candidatos de fusión triangular restantes distintos del candidato de fusión triangular indicado por la información de índice. En detalle, la información de movimiento de la segunda unidad de predicción triangular puede obtenerse de uno de los candidatos de fusión triangular restantes.
En consecuencia, el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular de la primera unidad de predicción triangular puede ser diferente del número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular de la segunda unidad de predicción triangular. Como 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 distintos del candidato de fusión triangular indicado por la información de índice de la primera unidad de predicción triangular.
Como otro ejemplo, si bien los candidatos de fusión de las unidades de predicción triangulares se obtienen basándose en bloques vecinos adyacentes al bloque de codificación, la disponibilidad de los bloques vecinos puede determinarse teniendo en cuenta las formas o ubicaciones de las unidades de predicción triangulares.
La figura 37 es un diagrama para describir un ejemplo de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Un bloque vecino que no es 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 que no es adyacente a la segunda unidad de predicción triangular puede establecerse como no disponible para la segunda unidad triangular. unidad de predicción.
Por ejemplo, como en el ejemplo mostrado en figura 37A, cuando el tipo de partición izquierda-triangular se aplica al 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 a los bloques de codificación están disponibles para la primera unidad de predicción triangular y 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 obtenidos de los bloques A1, A0 y A2 pero puede no incluir candidatos de fusión triangular obtenidos de los bloques B0 y B1.
Como en el ejemplo mostrado en la figura 37B, cuando el tipo de partición izquierda-triangular se aplica al 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 y 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 obtenidos de los bloques B0 y B1, pero puede no incluir candidatos de fusión triangular obtenidos de los bloques A1, A0 y A2.
Por lo tanto, el número o intervalo de candidatos de fusión triangular que la unidad de predicción triangular puede utilizar puede determinarse basándose en al menos una de la ubicación de la unidad de predicción triangular o el tipo de partición del bloque de codificación.
Como otro ejemplo, un modo de fusión puede aplicarse sólo a una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Además, la información de movimiento de la otra de la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede establecerse para que sea la misma que la información de movimiento de la unidad de predicción triangular a la que se aplica el modo de fusión o puede obtenerse refinando la información de movimiento de la unidad de predicción triangular a la que se aplica el modo de fusión.
Como ejemplo, el índice de imagen de referencia y el vector de movimiento de la primera unidad de predicción triangular pueden obtenerse basándose en el candidato de fusión triangular, y el vector de movimiento de la segunda unidad de predicción triangular puede obtenerse refinando el vector de movimiento de la primera unidad de predicción triangular. Como ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede obtenerse añadiendo o restando un vector de movimiento refinado {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 información para determinar un vector de movimiento refinado que indique una 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 puede señalizarse en un flujo de bits. La información puede incluir al menos una de la información que indica el tamaño del vector de movimiento refinado o la información que indica el signo del vector de movimiento refinado.
Alternativamente, el signo del vector de movimiento refinado puede obtenerse basándose en al menos uno del tipo de partición aplicado al bloque de codificación, la ubicación de la unidad de predicción triangular o el índice de la unidad de predicción triangular.
Como otro ejemplo, el vector de movimiento y el índice de imagen de referencia de una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular pueden ser señalizados. El vector de movimiento de la otra de la primera unidad de predicción triangular y de la segunda unidad de predicción triangular puede obtenerse refinando el vector de movimiento señalizado.
Como ejemplo, el índice de imagen de referencia y el vector de movimiento de la primera unidad de predicción triangular pueden determinarse basándose en la información señalizada en el flujo de bits. Además, el vector de movimiento de la segunda unidad de predicción triangular puede obtenerse refinando el vector de movimiento de la primera unidad de predicción triangular. Como ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede obtenerse sumando o restando el vector de movimiento refinado {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.
La predicción de compensación de movimiento puede realizarse en el bloque de codificación basándose en la información de movimiento de la primera unidad de predicción triangular y en la información de movimiento de la segunda unidad de predicción triangular. En este caso, puede producirse un deterioro de la calidad de la imagen en un límite entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Como ejemplo, la continuidad de la calidad de la imagen puede deteriorarse cerca de un borde presente 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 la imagen en el límite, se puede obtener una muestra de predicción mediante predicción ponderada o un filtro de suavizado.
Una muestra de predicción en un bloque de codificación al que se aplica partición diagonal puede obtenerse basándose en una operación de suma ponderada de una primera muestra de predicción adquirida basándose en la información de movimiento de la primera unidad de predicción triangular y una segunda muestra de predicción adquirida basándose en la información de movimiento de la segunda unidad de predicción triangular. Alternativamente, una muestra de predicción de la primera unidad de predicción triangular puede derivarse a partir del 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 puede obtenerse a partir del segundo bloque de predicción determinado basándose en la información de movimiento de la segunda unidad de predicción triangular. En este caso, una muestra de predicción ubicada en una región límite entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede obtenerse 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. A modo de ejemplo, la Ecuación 22 siguiente representa un ejemplo de obtención de las muestras de predicción de la primera unidad de predicción triangular y la segunda unidad de predicción triangular.
[ Ecuación 22]
P ( x , y) =w1* P1( x , y )( 1 -w1)* P 2 ( x , y )
En la Ecuación 22, P1 representa la primera muestra de predicción y P2 representa la segunda muestra de predicción. w1 representa una ponderación aplicada a la primera muestra de predicción y (1-w1) representa una ponderación aplicada a la segunda muestra de predicción. Como en el ejemplo mostrado en la Ecuación 22, la ponderación aplicada a la segunda muestra de predicción puede obtenerse restando la ponderación aplicada a la primera muestra de predicción de un valor constante.
Cuando se aplica el tipo de partición izquierda-triangular al bloque de codificación, la región de límite puede incluir muestras de predicción que tengan la misma coordenada x y la misma coordenada y. Por otra parte, cuando se aplica el tipo de partición derecha-triangular al bloque de codificación, la región límite puede incluir muestras de predicción que tengan cada una una coordenada x y una coordenada y cuya suma sea mayor o igual que un primer valor umbral y menor o igual que un segundo valor umbral.
El tamaño de la región límite puede determinarse basándose en al menos uno del tamaño del bloque de codificación, la forma del bloque de codificación, la información de movimiento de las unidades de predicción triangulares, el valor de diferencia del vector de movimiento de las unidades de predicción triangulares, el POC de la imagen de referencia, o 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 38 y 39 son diagramas que muestran un ejemplo de obtenció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 38 muestra un caso en el que el tipo de partición izquierda-triangular se aplica al bloque de codificación, y la figura 39 muestra un caso en el que el tipo de partición derecha-triangular se aplica al bloque de codificación. Además, las figuras 38A y 39A son diagramas que muestran un aspecto de predicción para una componente luma, y las figuras 38B y 39B son diagramas que muestran un aspecto de predicción para una componente croma.
En los dibujos mostrados, un número escrito en una muestra de predicción ubicada cerca del límite entre la primera unidad de predicción y la segunda unidad de predicción indica una ponderación aplicada a la primera muestra de predicción. Como ejemplo, cuando el número escrito en la muestra de predicción es N, la muestra de predicción puede obtenerse aplicando una ponderación de N/8 a la primera muestra de predicción y aplicando una ponderación de 1-(N/8) a la segunda muestra de predicción.
En una región no límite, la primera muestra de predicción o la segunda muestra de predicción pueden determinarse como la muestra de predicción. Haciendo referencia al ejemplo de la figura 38, en una región que pertenece a una primera unidad de predicción triangular entre regiones donde la diferencia absoluta entre una coordenada x y una coordenada y es mayor que un valor umbral, la primera muestra de predicción obtenida basándose en la información de movimiento de la primera unidad de predicción triangular se puede definir como la muestra de predicción. Por otro lado, en una región que pertenece a la segunda unidad de predicción triangular entre regiones donde la diferencia entre una coordenada x y una coordenada y es mayor que un valor umbral, la segunda muestra de predicción obtenida basándose en la información de movimiento de la segunda unidad de predicción triangular puede determinarse como la muestra de predicción.
Haciendo referencia al ejemplo de la figura 39, en una región donde la suma de una coordenada x y una coordenada y es menor que un primer valor umbral, la primera muestra de predicción obtenida basándose en la información de movimiento de la primera unidad de predicción triangular puede definirse como la muestra de predicción. Por otra parte, en una región donde la suma de una coordinada x y una coordinada y es mayor que un segundo valor umbral, la segunda muestra de predicción obtenida basándose en la información de movimiento de la segunda unidad de predicción triangular puede definirse como la muestra de predicción.
Un valor umbral para determinar la región no límite puede determinarse basándose en al menos uno del tamaño del bloque de codificación, la forma del bloque de codificación o una componente de color. A modo de ejemplo, cuando un valor umbral para una componente luma puede establecerse en N, un valor umbral para una componente croma puede establecerse en N/2.
Las muestras de predicción incluidas en la región límite pueden obtenerse 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 caso, la ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción puede determinarse basándose en al menos uno de la ubicación de la muestra de predicción, el tamaño del bloque de codificación, la forma del bloque de codificación o una componente de color.
Como ejemplo, como en el ejemplo mostrado en la figura 38A, las muestras de predicción ubicadas en la misma coordenada x y la misma coordenada y pueden obtenerse aplicando la misma ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción en las que la diferencia absoluta entre una coordenada x y una coordenada y es uno se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y a la segunda muestra de predicción de (3:1) o (1: 3). Además, las muestras de predicción en las que la diferencia absoluta entre una coordenada x y una coordenada y es dos se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y a la segunda muestra de predicción de (7: 1) o (1:7).
Alternativamente, como en el ejemplo mostrado en la figura 38B, las muestras de predicción ubicadas en la misma coordenada x y la misma coordenada y se pueden obtener aplicando la misma ponderación a la primera muestra de predicción y a la segunda muestra de predicción, y las muestras de predicción en las que la diferencia absoluta entre la coordenada x y la coordenada y es uno se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y a la segunda muestra de predicción de (7:1) o (1:7).
Como ejemplo, como en el ejemplo mostrado en la figura 39A, las muestras de predicción en las cuales la suma de una coordenada x y una coordenada y es uno menos que la anchura o altura del bloque de codificación pueden ser obtenidas aplicando la misma ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción en las que la suma de una coordenada x y una coordenada y es igual o dos menos que la anchura o altura del bloque de codificación se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y a la segunda muestra de predicción de (3: 1) o (1:3). Las muestras de predicción en las que la suma de una coordenada x y una coordenada y es uno mayor o tres menor que la anchura o altura del bloque de codificación se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y la segunda muestra de predicción a (7: 1) o (1:7).
Alternativamente, como en el ejemplo mostrado en la figura 39B, las muestras de predicción en las cuales la suma de una coordenada x y una coordenada y es uno menos que la anchura o altura del bloque de codificación se pueden obtener aplicando la misma ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción en las que la suma de una coordenada x y una coordenada y es igual o dos menos que la anchura o altura del bloque de codificación se pueden obtener estableciendo una relación entre las ponderaciones aplicadas a la primera muestra de predicción y la segunda muestra de predicción a (7:1) o (1:7).
Como otro ejemplo, la ponderación puede determinarse teniendo en cuenta la ubicación de la muestra de predicción o la forma del bloque de codificación. Las Ecuaciones 23 a 25 muestran ejemplos de obtención de una ponderación cuando se aplica el tipo de partición izquierda-triangular al bloque de codificación. La Ecuación 23 muestra un ejemplo de obtención de una ponderación aplicada a la primera muestra de predicción cuando el bloque de codificación es cuadrado.
[ Ecuación 23]
w \ = (x -y+<4 ) /8>
En la Ecuación 23, x e y representan la ubicación de la muestra de predicción. Cuando el bloque de codificación no es cuadrado, la ponderación aplicada a la primera muestra de predicción se puede obtener usando la Ecuación 24 o la Ecuación 25 a continuación. La Ecuación 24 representa un caso en el que la anchura del bloque de codificación es mayor que la altura, y la Ecuación 25 representa un caso en el que la anchura del bloque de codificación es menor que la altura.
[ Ecuación 24]
w1 = ( (.x ¡ w h R a tio ) -y 4 y &
[<Ecuación 25]>
w1= (x -(y<*>whRatio)+4)/S
Cuando se aplica el tipo de partición derecha-triangular al bloque de codificación, la ponderación aplicada a la primera muestra de predicción se puede determinar usando las Ecuaciones 26 a 28. La Ecuación 26 muestra un ejemplo de obtención de una ponderación aplicada a la primera muestra de predicción cuando el bloque de codificación es cuadrado.
[ Ecuación 26]
w \ = ( C b W- 1- x - y )i 4 )/8
En la Ecuación 26, CbW representa la anchura del bloque de codificación. Cuando el bloque de codificación no es cuadrado, la ponderación aplicada a la primera muestra de predicción puede obtenerse utilizando la Ecuación 27 o la Ecuación 28 siguientes. La Ecuación 27 representa un caso en el que la anchura del bloque de codificación es mayor que la altura, y la Ecuación 28 representa un caso en el que la anchura del bloque de codificación es menor que la altura.
[ Ecuación 27]
w1= ( C b H- 1 - ( .v / u1h R a í i aJ - y )+4 )/ 8
[ Ecuación 28]
w<1>- ( C b W<- 1>-x -(y*whRa tio)+A)/<8>
En la Ecuación 27, CbH representa la altura del bloque de codificación.
Como en el ejemplo mostrado, de entre las muestras de predicción en la región límite, una muestra de predicción incluida en la primera unidad de predicción triangular se puede obtener asignando una ponderación mayor a la primera muestra de predicción que a la segunda muestra de predicción, y una muestra de predicción incluida en la segunda unidad de predicción triangular se puede obtener asignando una ponderación mayor a la segunda muestra de predicción que a la primera muestra de predicción.
Cuando se aplica la partición diagonal al bloque de codificación, se puede realizar un ajuste tal que el modo de predicción combinada, que es una combinación del modo de predicción intra y el modo de fusión, no se aplique al bloque de codificación.
La predicción intra consiste en predecir el bloque actual utilizando una muestra reconstruida en la que se ha completado la codificación o descodificación y que está cerca del bloque actual. En este caso, se puede utilizar una muestra reconstruida antes de aplicar un filtro en bucle para la predicción intra del bloque actual.
Una técnica de predicción intra incluye la predicción intra basada en matrices y la predicción intra normal considerando la direccionalidad con respecto a una muestra reconstruida cercana. La información que indica la técnica de predicción intra del bloque actual puede señalizarse en un flujo de bits. La información puede ser una bandera de 1 bit. Alternativamente, la técnica de predicción intra del bloque actual puede determinarse basándose en al menos uno de la ubicación, el tamaño o la forma del bloque actual o la técnica de predicción intra de un bloque vecino. Como ejemplo, cuando un bloque actual está presente a través de un límite de imagen, puede establecerse que la predicción intra basada en matrices no se aplique al bloque actual.
La predicción intra basada en matrices puede ser un procedimiento de adquisición de un bloque de predicción del bloque actual basándose en un producto matricial entre una matriz almacenada previamente en un codificador y un descodificador y muestras reconstruidas cercanas al bloque actual. La información para especificar una de una pluralidad de matrices almacenadas previamente puede señalizarse en un flujo de bits. El descodificador puede determinar una matriz para la predicción intra del bloque actual basándose en la información y el tamaño del bloque actual.
La predicción intra normal es un procedimiento de adquisición de un bloque de predicción para el bloque actual basándose en un modo de predicción intra no direccional o un modo de predicción intra direccional. Un proceso de realización de predicción intra basado en la predicción intra normal se describirá en detalle a continuación con referencia a los dibujos.
La figura 40 es un diagrama de flujo de un procedimiento de predicción intra según una realización de la presente invención.
Puede determinarse una línea de muestra de referencia del bloque actual (S4001). La línea de muestra de referencia se refiere a un conjunto de muestras de referencia incluidas en una k-ésima línea alejada de la parte superior y/o la izquierda del bloque actual. Las muestras de referencia pueden obtenerse de muestras reconstruidas en las que se ha completado la codificación o descodificación y que están cerca del bloque actual.
La información de índice para identificar la línea de muestra de referencia del bloque actual de entre una pluralidad de líneas de muestra de referencia puede señalizarse en un flujo de bits. Como ejemplo, la información de índice intra_luma_ref_idx, que sirve para especificar la línea de muestra de referencia del bloque actual, puede señalizarse en un flujo de bits. La información de índice puede señalizarse en unidades de bloques de codificación.
La pluralidad de líneas de muestra de referencia puede incluir al menos una de la primera línea, la segunda línea, la tercera línea o la cuarta línea desde la parte superior y/o la izquierda del bloque actual. De entre la pluralidad de líneas de muestra de referencia, una línea de muestra de referencia formada por una fila adyacente a la parte superior del bloque actual y una columna adyacente a la izquierda del bloque actual puede denominarse línea de muestra de referencia adyacente, y las demás líneas de muestra de referencia pueden denominarse líneas de muestra de referencia no adyacentes.
Solo puede seleccionarse parte de la pluralidad de líneas de muestra de referencia como la línea de muestra de referencia del bloque actual. Como ejemplo, de entre la pluralidad de líneas de muestra de referencia, las líneas de muestra de referencia restantes distintas de una tercera línea de muestra de referencia no adyacente pueden establecerse como líneas de muestra de referencia candidatas. La Tabla 5 representa los índices asignados a las líneas de muestra de referencia candidatas.
[Tabla 5]
Es posible establecer un número mayor de líneas de muestra de referencia candidatas o un número menor de líneas de muestra de referencia candidatas del que el descrito anteriormente. Además, el número o las ubicaciones de las líneas de muestra de referencia no adyacentes que se establecen como líneas de muestra de referencia candidatas no se limitan al ejemplo descrito anteriormente. Como ejemplo, una primera línea de muestra de referencia no adyacente y una tercera línea de muestra de referencia no adyacente pueden establecerse como las líneas de muestra de referencia candidatas, y una segunda línea de muestra de referencia no adyacente y la tercera línea de muestra de referencia no adyacente pueden establecerse como las líneas de muestra de referencia candidatas. Alternativamente, todas de la primera línea de muestra de referencia no adyacente, la segunda línea de muestra de referencia no adyacente y la tercera línea de muestra de referencia no adyacente pueden establecerse como líneas de muestra de referencia candidatas.
El número o los tipos de líneas de muestra de referencia candidatas pueden determinarse basándose en al menos uno del tamaño, la forma o la ubicación del bloque actual, la presencia de partición en subbloques o el modo de predicción intra del bloque actual.
La línea de muestra de referencia del bloque actual puede determinarse basándose en al menos uno de la ubicación, el tamaño o la forma del bloque actual o el modo de codificación predictiva de un bloque vecino. Como ejemplo, cuando el bloque actual es contiguo a un borde de una imagen, mosaico, segmento o unidad de árbol de codificación, puede determinarse una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual.
Alternativamente, cuando el bloque actual no es cuadrado, se puede determinar una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual. Alternativamente, cuando una relación anchuraaltura del bloque actual es mayor o igual que un valor umbral o es menor o igual que un valor umbral, puede determinarse una línea de muestra de referencia adyacente como línea de muestra de referencia del bloque actual.
La línea de muestras de referencia puede incluir muestras de referencia superiores ubicadas encima del bloque actual y muestras de referencia izquierdas ubicadas a la izquierda del bloque actual. Las muestras de referencia superiores y las muestras de referencia izquierdas pueden obtenerse a partir de muestras reconstruidas cercanas al bloque actual. Las muestras reconstruidas pueden estar en un estado anterior a la aplicación de un filtro en bucle.
A continuación, puede determinarse el modo de predicción intra del bloque actual (S4002). Al menos uno de los modos de predicción intra no direccional o de predicción intra direccional puede ser determinado como el modo de predicción intra del bloque actual. El modo de predicción intra no direccional incluye Plano y DC, y la predicción intra direccional incluye 33 o 65 modos desde una dirección diagonal inferior-izquierda a una dirección diagonal superior-derecha.
La figura 41 es un diagrama que muestra modos de predicción intra.
La figura 41A muestra 35 modos de predicción intra, y la figura 41B muestra 67 modos de predicción intra.
Puede definirse un número mayor de modos de predicción intra o un número menor de modos de predicción intra que los mostrados en la figura 41.
Se puede establecer un modo más probable (MPM) basándose en el modo de predicción intra de un bloque vecino al bloque actual. Aquí, el bloque vecino puede incluir un bloque vecino izquierdo adyacente a la izquierda del bloque actual y un bloque vecino superior adyacente a la parte superior del bloque actual.
El número de MPM incluidos en una lista de MPM puede estar preestablecido en un codificador y un descodificador. Como ejemplo, el número de MPM puede ser tres, cuatro, cinco o seis. Alternativamente, la información que indica el número de MPM puede ser señalizada en un flujo de bits. Alternativamente, el número de MPM puede determinarse basándose en al menos uno del modo de codificación predictiva del bloque vecino o el tamaño, la forma o el índice de línea de muestra de referencia del bloque actual. Como ejemplo, pueden utilizarse N MPM cuando se determina una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual, y M MPM cuando se determina una línea de muestra de referencia no adyacente como la línea de muestra de referencia del bloque actual. M es un número natural menor que N. Como ejemplo, N puede ser seis y M puede ser cinco, cuatro o tres. En consecuencia, uno de los seis modos de predicción intra candidatos se determina como el modo de predicción intra del bloque actual cuando el índice de la línea de muestra de referencia del bloque actual es cero y una bandera de MPM es verdadera, y uno de los cinco modos de predicción intra candidatos se determina como el modo de predicción intra del bloque actual cuando el índice de la línea de muestra de referencia del bloque actual es mayor que cero y una bandera de MPM es verdadera.
Alternativamente, se puede utilizar un número fijo (por ejemplo, cinco o seis) de candidatos de MPM independientemente del índice de la línea de muestra de referencia del bloque actual.
Se crea una lista de MPM que incluye una pluralidad de MPM, y la información que indica si un MPM idéntico al modo de predicción intra del bloque actual está incluido en la lista de MPM puede ser señalizada en un flujo de bits. La información es una bandera de 1 bit, y la bandera puede denominarse bandera de MPM. Cuando la bandera de MPM indica que un MPM idéntico al bloque actual está incluido en la lista de MPM, la información de índice para identificar uno de los MPM puede ser señalizada en un flujo de bits. Como ejemplo, la información de índice intra_luma_ref_idx, que sirve para especificar uno de una pluralidad de MPM, puede señalizarse en un flujo de bits. El MPM especificado por la información de índice puede establecerse como el modo de predicción intra del bloque actual. Cuando la bandera de MPM indica que un MPM idéntico al bloque actual no está incluido en la lista de MPM, la información de modo residual que indica uno de los modos de predicción intra restantes distintos de los MPM puede ser señalizada en un flujo de bits. La información de modo residual indica un valor de índice correspondiente al modo de predicción intra del bloque actual cuando los índices se reasignan a los modos de predicción intra restantes distintos de los MPM. El descodificador puede ordenar los MPM en orden ascendente y comparar los MPM con la información de modo residual para determinar el modo de predicción intra del bloque actual. Como ejemplo, cuando la información de modo residual es menor o igual que un MPM, el modo de predicción intra del bloque actual puede obtenerse añadiendo uno a la información de modo residual.
Al obtener el modo predicción intra del bloque actual, puede omitirse la comparación entre la información de modo residual y algunos de los MPM. Como ejemplo, de entre los MPM, los MPM que son modos de predicción intra no direccional pueden excluirse de la comparación. Cuando los modos de predicción intra no direccional se establecen como los MPM, es evidente que la información de modo residual indica un modo de predicción intra direccional. Por lo tanto, el modo de predicción intra del bloque actual puede obtenerse a través de la comparación entre la información de modo residual y los MPM restantes distintos de los modos de predicción intra no direccional. En lugar de excluir los modos de predicción intra no direccional de la comparación, el número de modos de predicción intra no direccional puede ser añadido a la información de modo residual, y así el valor resultante puede ser comparado con los MPM restantes.
En lugar de establecer un MPM como modo por defecto, se puede señalizar en un flujo de bits información que indique si el modo de predicción intra del bloque actual es el modo por defecto. La información puede ser un bandera de 1 bit, y la bandera puede denominarse bandera de modo por defecto. La bandera de modo por defecto puede señalizarse sólo cuando la bandera de MPM indica que un MPM idéntico al bloque actual está incluido en la lista de MPM. Como se ha descrito anteriormente, el modo por defecto puede incluir al menos uno de los modos Plano, DC, Vertical u Horizontal. Como ejemplo, cuando se establece Plano como modo por defecto, la bandera de modo por defecto puede indicar si el modo de predicción intra del bloque actual es Plano. Cuando la bandera de modo por defecto indica que el modo de predicción intra del bloque actual no es el modo por defecto, uno de los MPM indicados por la información de índice puede establecerse como el modo de predicción intra del bloque actual.
Cuando se utiliza la bandera de modo por defecto, se puede establecer que el modo de predicción intra idéntico al modo por defecto no se establezca como MPM. Como ejemplo, cuando la bandera de modo por defecto indica si el modo de predicción intra del bloque actual es Plano, el modo de predicción intra del bloque actual puede obtenerse utilizando cinco MPM excluyendo un MPM correspondiente a Plano.
Cuando una pluralidad de modos de predicción intra se establecen como modos por defecto, la información de índice que indica uno de los modos por defecto puede ser señalizada adicionalmente. El modo de predicción intra del bloque actual puede establecerse como el modo por defecto indicado por la información de índice.
Cuando el índice de la línea de muestra de referencia del bloque actual no es cero, se puede establecer que no se utilice el modo por defecto. Como ejemplo, cuando la línea de muestreo de referencia no adyacente se determina como la línea de muestra de referencia del bloque actual, se puede establecer que no se utilice el modo de predicción intra no direccional, tal como el modo DC o el modo Plano. En consecuencia, cuando el índice de la línea de muestra de referencia no es cero, la bandera de modo por defecto puede no ser señalizada, y el valor de la bandera de modo por defecto puede establecerse en un valor predefinido (es decir, falso).
Cuando se determina el modo de predicción intra del bloque actual, las muestras de predicción para el bloque actual pueden adquirirse basándose en el modo de predicción intra determinado (S4003).
Cuando se selecciona el modo DC, las muestras de predicción del bloque actual pueden generarse basándose en la media de las muestras de referencia. En concreto, los valores de todas las muestras del bloque de predicción pueden generarse basándose en la media de las muestras de referencia. La media puede obtenerse utilizando al menos una de las muestras de referencia superiores ubicadas encima del bloque actual y las muestras de referencia izquierdas ubicadas a la izquierda del bloque actual.
El número o intervalo de muestras de referencia utilizadas para obtener la media puede variar dependiendo de la forma del bloque actual. Como ejemplo, cuando el bloque actual es un bloque no cuadrado en el que la anchura es mayor que la altura, la media puede calcularse utilizando sólo las muestras de referencia superiores. Por otro lado, cuando el bloque actual es un bloque no cuadrado en el que la anchura es menor que la altura, la media puede calcularse utilizando sólo las muestras de referencia izquierdas. Es decir, cuando la anchura y la altura del bloque actual son diferentes entre sí, la media puede calcularse utilizando sólo las muestras de referencia adyacentes a una más larga entre la anchura y la altura. Alternativamente, calcular la media utilizando las muestras de referencia superiores o calcular la media utilizando las muestras de referencia izquierdas puede determinarse basándose en la relación anchura-altura del bloque actual.
Cuando se selecciona el modo Plano, la muestra de predicción puede adquirirse utilizando una muestra de predicción horizontal y una muestra de predicción vertical. Aquí, la muestra de predicción horizontal se adquiere basándose en una muestra de referencia izquierda y una muestra de referencia derecha ubicadas en la misma línea horizontal que la muestra de predicción, y la muestra de predicción vertical se adquiere basándose en una muestra de referencia superior y una muestra de referencia inferior ubicadas en la misma línea vertical que la muestra de predicción. Aquí, la muestra de referencia derecha puede generarse copiando una muestra de referencia adyacente a la esquina superior-derecha del bloque actual, y la muestra de referencia inferior puede generarse copiando una muestra de referencia adyacente a la esquina inferior-izquierda del bloque actual. La muestra de predicción horizontal puede adquirirse basándose en una operación de suma ponderada de la muestra de referencia izquierda y la muestra de referencia derecha, y la muestra de predicción vertical puede adquirirse basándose en una operación de suma ponderada de la muestra de referencia superior y la muestra de referencia inferior. En este caso, puede determinarse una ponderación asignada a cada muestra de referencia en función de la ubicación de la muestra de predicción. La muestra de predicción puede adquirirse basándose en una operación de promediado o una operación de suma ponderada de la muestra de predicción horizontal y la muestra de predicción vertical. Cuando se realiza la operación de suma ponderada, las ponderaciones asignadas a la muestra de predicción horizontal y a la muestra de predicción vertical pueden determinarse basándose en la ubicación de la muestra de predicción.
Cuando se selecciona un modo de predicción direccional, se puede determinar un parámetro que indica la dirección de predicción (o el ángulo de predicción) del modo de predicción direccional seleccionado. La tabla 6 siguiente representa el parámetro de dirección intra intraPredAng para cada modo de predicción intra.
[Tabla 6]
La Tabla 6 representa un parámetro de dirección intra para cada modo de predicción intra con un índice entre 2 y 34 cuando se definen 35 modos de predicción intra. Cuando se definen más de 33 modos de predicción intra direccional, la Tabla 6 puede subdividirse para establecer parámetros de dirección intra para cada modo de predicción intra direccional.
Después de disponer las muestras de referencia superiores y las muestras de referencia izquierdas del bloque actual en una línea, la muestra de predicción puede adquirirse basándose en el valor del parámetro de dirección intra. En este caso, cuando el valor del parámetro de dirección intra es negativo, las muestras de referencia izquierdas y las muestras de referencia superiores pueden disponerse en una línea.
Las figuras 42 y 43 son diagramas que muestran un ejemplo de una matriz unidimensional en la que las muestras de referencia están dispuestas en una línea.
La figura 42 muestra un ejemplo de una matriz unidimensional vertical en la que las muestras de referencia están dispuestas verticalmente, y la figura 43 muestra un ejemplo de una matriz unidimensional horizontal en la que las muestras de referencia están dispuestas horizontalmente. Las realizaciones de las figuras 42 y 43 se describirán suponiendo que se definen 35 modos de predicción intra.
Puede aplicarse una matriz horizontal unidimensional en la que las muestras de referencia superiores se giren en sentido antihorario cuando un índice de modo de predicción intra esté entre 11 y 18, y puede aplicarse una matriz vertical unidimensional en la que las muestras de referencia izquierdas se giren en sentido horario cuando un índice de modo de predicción intra esté entre 19 y 25. Cuando las muestras de referencia están dispuestas en una línea, se puede considerar un ángulo de modo de predicción intra.
Puede determinarse un parámetro de determinación de la muestra de referencia basándose en el parámetro de dirección intra. El parámetro de determinación de la muestra de referencia puede incluir un índice de muestra de referencia para especificar una muestra de referencia y un parámetro de ponderación para determinar una ponderación que se aplicará a una muestra de referencia.
El índice de muestra de referencia i Idx y el parámetro de ponderación ifact pueden adquirirse mediante las Ecuaciones 30 y 31 siguientes.
[ Ecuación 30]
iIdx=(y+l}*Parig/32
[ Ecuación 31]
En las Ecuaciones 30 y 31, Pang representa un parámetro de dirección intra. Una muestra de referencia especificada por el índice de muestra de referencia iIdx corresponde a un pel entero.
Para obtener la muestra de predicción, puede especificarse al menos una muestra de referencia. En detalle, la ubicación de la muestra de referencia que se utilizará para obtener la muestra de predicción puede especificarse teniendo en cuenta la pendiente del modo de predicción. Como ejemplo, la muestra de referencia que se utilizará para obtener la muestra de predicción puede especificarse utilizando el índice de muestra de referencia iIdx.
En este caso, cuando la pendiente del modo de predicción intra no puede expresarse con una muestra de referencia, la muestra de predicción puede generarse interpolando una pluralidad de muestras de referencia. Como ejemplo, cuando la pendiente del modo de predicción intra es un valor entre la pendiente entre la muestra de predicción y una primera muestra de referencia y la pendiente entre la muestra de predicción y una segunda muestra de referencia, la muestra de predicción puede adquirirse interpolando la primera muestra de referencia y la segunda muestra de referencia. Es decir, una línea angular conforme al ángulo de infrapredicción no pasa por la muestra de referencia ubicada en el pel entero, la muestra de predicción puede adquirirse interpolando muestras de referencia adyacentes a la izquierda, la derecha, la parte superior o la parte inferior de una ubicación por la que pasa la línea angular.
La Ecuación 32 a continuación muestra un ejemplo de adquisición de una muestra de predicción basándose en muestras de referencia.
[ Ecuación 32]
P (x ,y )—((3 2 - i facl)/32)*Ref_ \D (x+ iIdx+ 1 )+ (W 32) *Ref_\D (x+iIdx+ 2)
En la Ecuación 32, P representa una muestra de predicción y ReC_1 D representa una de las muestras de referencia dispuestas en una dimensión. En este caso, la ubicación de la muestra de referencia puede determinarse mediante el índice de muestra de referencia iIdx y la ubicación (x, y) de la muestra de predicción.
Cuando la pendiente del modo predicción intra puede expresarse con una muestra de referencia, el parámetro de ponderación ifact puede fijarse en cero. En consecuencia, la Ecuación 32 puede simplificarse en la Ecuación 33 siguiente.
[ Ecuación 33]
P ( x zy } = R e f ^ \ - D < ix i I d x1 )
La predicción intra puede realizarse en el bloque actual basándose en una pluralidad de modos de predicción intra. Como ejemplo, se puede obtener un modo de predicción intra para cada muestra de predicción, y se puede obtener una muestra de predicción basándose en el modo de predicción intra asignado a la muestra de predicción correspondiente.
Alternativamente, puede obtenerse un modo de predicción intra para cada región, y la predicción intra puede realizarse en la región correspondiente basándose en el modo de predicción intra asignado a la región correspondiente. Aquí, la región puede incluir al menos una muestra. Al menos uno del tamaño o la forma de la región puede determinarse de forma adaptativa basándose en al menos uno del tamaño, la forma o el modo de predicción intra del bloque actual. Alternativamente, al menos uno del tamaño o la forma de la región puede predefinirse en un codificador y un descodificador independientemente del tamaño o la forma del bloque actual.
Alternativamente, la predicción intra se puede realizar varias veces, y se puede obtener una muestra de predicción final basándose en una operación de promedio o una operación de suma ponderada de una pluralidad de muestras de predicción adquiridas realizando la predicción intra varias veces. Como ejemplo, se puede adquirir una primera muestra de predicción realizando una predicción intra basándose en un primer modo de predicción intra, y se puede adquirir una segunda muestra de predicción realizando una predicción intra basándose en un segundo modo de predicción intra. Posteriormente, la muestra de predicción final puede adquirirse basándose en la operación de promediado o la operación de suma ponderada entre la primera muestra de predicción y la segunda muestra de predicción. En este caso, las ponderaciones asignadas a la primera muestra de predicción y a la segunda muestra de predicción pueden determinarse teniendo en cuenta al menos uno de si el primer modo de predicción intra es un modo de predicción no direccional o un modo de predicción direccional, si el segundo modo de predicción intra es un modo de predicción no direccional o un modo de predicción direccional, o el modo de predicción intra de un bloque vecino.
La pluralidad de modos de predicción intra puede ser una combinación de un modo de predicción intra no direccional y un modo de predicción intra direccional, una combinación de modos de predicción intra direccional, o una combinación de modos de predicción intra no direccional.
La figura 44 es un diagrama que muestra los ángulos formados entre una línea recta paralela al eje x y los modos de predicción intra direccional.
En el ejemplo mostrado en la figura 44, los modos de predicción direccional pueden variar desde una dirección diagonal inferior-izquierda hasta una dirección diagonal superior-derecha. Cuando la siguiente descripción supone un ángulo formado entre el eje x y el modo de predicción direccional, los modos de predicción direccional pueden variar entre 45 grados (en la dirección diagonal inferior-izquierda) y -135 grados (en la dirección diagonal superior-derecha).
Cuando el bloque actual no es cuadrado, se puede obtener una muestra de predicción usando una muestra de referencia alejada de la muestra de predicción de entre las muestras de referencia ubicadas en la línea angular que se ajusta al ángulo de predicción intra en lugar de una muestra de referencia cercana a la muestra de predicción dependiendo en el modo de predicción intra del bloque actual.
La figura 45 es un diagrama que muestra un aspecto en el que se adquiere una muestra de predicción cuando el bloque actual no es cuadrado.
Como ejemplo, como en el ejemplo mostrado en la figura 45A, se supone que el bloque actual tiene una forma no cuadrada en la que la anchura es mayor que la altura y que el modo de predicción intra del bloque actual es un modo de predicción intra direccional que tiene un ángulo entre 0 grados y 45 grados. En este caso, al obtener la muestra de predicción A cerca de la columna derecha del bloque actual, se puede utilizar la muestra de referencia izquierda L alejada de la muestra de predicción de entre las muestras de referencia ubicadas en la línea angular que se ajusta al ángulo en lugar de utilizar la muestra de referencia superior T cercana a la muestra de predicción.
Como otro ejemplo, como en el ejemplo mostrado en la figura 45B, se supone que el bloque actual tiene una forma no cuadrada en la que la altura es mayor que la anchura y que el modo de predicción intra del bloque actual es un modo de predicción intra direccional que tiene un ángulo entre -90 grados y -135 grados. En este caso, al obtener la muestra de predicción A cerca de la fila inferior del bloque actual, se puede utilizar la muestra de referencia superior T alejada de la muestra de predicción de entre las muestras de referencia ubicadas en la línea angular conforme al ángulo en lugar de la muestra de referencia izquierda L cerca de la muestra de predicción.
Para resolver este problema, cuando el bloque actual no es cuadrado, el modo de predicción intra del bloque actual puede sustituirse por el modo de predicción intra en la dirección opuesta. Así, los modos de predicción direccional que tienen un ángulo mayor o menor que los modos de predicción direccional mostrados en la figura 41 pueden ser utilizados para bloques no cuadrados. Dicho modo de predicción intra direccional puede definirse como un modo de predicción intra de ángulo amplio. El modo de predicción intra de ángulo amplio representa un modo de predicción intra direccional que no se encuentra dentro del intervalo entre 45 grados y -135 grados.
La figura 46 es un diagrama que muestra modos de predicción intra de ángulo amplio.
En el ejemplo mostrado en la figura 46, los modos de predicción intra con un índice entre -1 y -14 y los modos de predicción intra con un índice entre 67 y 80 indican modos de predicción intra de ángulo amplio.
En la figura 46, se ilustran 14 modos de predicción intra de ángulo amplio que tienen un ángulo mayor de 45 grados (-1 a -14) y 14 modos de predicción intra de ángulo amplio que tienen un ángulo menor de - 135 grados (67 a 80), pero puede definirse un número mayor o menor de modos de predicción intra de ángulo amplio.
Cuando se utiliza un modo de predicción intra de ángulo amplio, la longitud de las muestras de referencia superiores puede establecerse en 2W+1, y la longitud de las muestras de referencia izquierdas puede establecerse en 2H+1.
Cuando se utiliza un modo de predicción intra de ángulo amplio, la muestra A mostrada en la figura 45A puede ser predicha utilizando la muestra de referencia T, y la muestra A mostrada en la figura 45B puede ser predicha utilizando la muestra de referencia L.
Se puede utilizar un total de 67+N modos de predicción intra añadiendo N modos de predicción intra de ángulo amplio a los modos de predicción intra existentes. A modo de ejemplo, la Tabla 7 muestra los parámetros de dirección intra de los modos de predicción intra cuando se definen 20 modos de predicción intra de ángulo amplio.
[Tabla 7]
Cuando el bloque actual no es cuadrado y el modo de predicción intra del bloque actual adquirido en S4002 se encuentra dentro del intervalo de transformación, el modo de predicción intra del bloque actual puede transformarse en el modo de predicción intra de ángulo amplio. El intervalo de transformación puede determinarse basándose en al menos uno del tamaño, la forma o la relación del bloque actual. Aquí, la relación puede indicar una relación entre la anchura y la altura del bloque actual.
Cuando el bloque actual tiene una forma no cuadrada en la que la anchura es mayor que la altura, el intervalo de transformación se puede establecer en un intervalo desde el índice del modo de predicción intra de la dirección diagonal superior-derecha (por ejemplo, 66) hasta el índice del modo de predicción intra de la dirección diagonal superior-derecha menos N. Aquí, N puede determinarse basándose en la relación del bloque actual. Cuando el modo de predicción intra del bloque actual se encuentra dentro del intervalo de transformación, el modo de predicción intra puede transformarse en el modo de predicción intra de ángulo amplio. La transformación puede consistir en restar un valor predefinido del modo de predicción intra, y el valor predefinido puede ser el número total (por ejemplo, 67) de modos de predicción intra excepto los modos de predicción intra de ángulo amplio.
De acuerdo con la realización anterior, los modos de predicción intra n.° 66 a n.° 53 pueden transformarse en modos de predicción intra de ángulo amplio n.° -1 a n.° -14, respectivamente.
Cuando el bloque actual tiene una forma no cuadrada en la que la altura es mayor que la anchura, el intervalo de transformación puede establecerse en un intervalo desde el índice de modo de predicción intra de la dirección diagonal inferior-izquierda (por ejemplo, 2) hasta el índice de modo de predicción intra de la dirección diagonal inferior-izquierda más M. Aquí, M puede determinarse basándose en la relación del bloque actual. Cuando el modo de predicción intra del bloque actual se encuentra dentro del intervalo de transformación, el modo de predicción intra puede transformarse en el modo de predicción intra de ángulo amplio. La transformación puede consistir en añadir un valor predefinido al modo de predicción intra, y el valor predefinido puede ser el número total (por ejemplo, 65) de modos de predicción intra direccional excluyendo los modos de predicción intra de ángulo amplio.
De acuerdo con la realización anterior, los modos de predicción intra n.° 2 a n.° 15 pueden transformarse en modos de predicción intra de ángulo amplio n.° 67 a n.° 80, respectivamente.
Los modos de predicción intra que se encuentran dentro del intervalo de transformación se denominarán modos de predicción intra de ángulo amplio alternativos.
El intervalo de transformación puede determinarse basándose en la relación del bloque actual. A modo de ejemplo, la Tabla 8 y la Tabla 9 representan un intervalo de transformación cuando se definen 35 modos de predicción intra excepto los modos de predicción intra de ángulo amplio y un intervalo de transformación cuando se definen 67 modos de predicción intra.
[Tabla 8]
[Tabla 9]
En los ejemplos mostrados en la Tabla 8 y la Tabla 9, el número de modos de predicción intra de ángulo amplio alternativos que se encuentran dentro del intervalo de transformación puede diferir dependiendo de la relación del bloque actual.
El intervalo de transformación que se muestra en la Tabla 10 siguiente puede establecerse subdividiendo la relación del bloque actual.
[Tabla 10]
Cuando se determina una línea de muestra de referencia no adyacente como la línea de muestra de referencia del bloque actual o cuando se utiliza un procedimiento de codificación intrapredictiva multilínea para seleccionar una de una pluralidad de líneas de muestra de referencia, se puede establecer que no se utilice un modo de predicción intra de ángulo amplio. Es decir, incluso cuando el bloque actual no es cuadrado y el modo de predicción intra del bloque actual se encuentra dentro del intervalo de transformación, el modo de predicción intra del bloque actual puede no transformarse en el modo de predicción intra de ángulo amplio.
Alternativamente, cuando el modo de predicción intra del bloque actual se determina como el modo de predicción intra de ángulo amplio, se puede establecer que las líneas de muestra de referencia no adyacentes no estén disponibles como la línea de muestra de referencia del bloque actual, o se puede establecer que no se utilice el procedimiento de codificación intrapredictiva multilínea para seleccionar una de la pluralidad de líneas de muestra de referencia. Cuando no se utiliza el procedimiento de codificación de predicción intra multilínea, se puede determinar una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual.
Cuando no se utiliza el modo de predicción intra de ángulo amplio, refW y refH pueden establecerse en la suma de nTbW y nTbH. En consecuencia, excepto para las muestras de referencia superior-izquierda, una muestra de referencia no adyacente con una distancia de i desde el bloque actual puede incluir (nTbW nTbH offsetX[i]) muestras de referencia superior y (nTbW nTbH offsetY[i]) muestras de referencia izquierda. Es decir, una muestra de referencia no adyacente con una distancia de i desde el bloque actual puede incluir (2nTbW 2nTbH offsetX[i] offsetY[i] 1) muestras de referencia. Por ejemplo, cuando el valor de whRatio es mayor que 1, se puede establecer que el valor de offsetX es mayor que el valor de offsetY. Como ejemplo, el valor de offsetX se puede establecer en 1 y el valor de offsetY se puede establecer en 0. Por otro lado, cuando el valor de whRatio es menor que 1, se puede establecer que el valor de offsetY es mayor que el valor de offsetX. Como ejemplo, el valor de offsetX se puede establecer en 0 y el valor de offsetY se puede establecer en 1.
Como los modos de predicción intra de ángulo amplio se utilizan además de los modos de predicción intra existentes, los recursos requeridos para codificar los modos de predicción intra de ángulo amplio pueden incrementarse y, por lo tanto, la eficacia de la codificación puede reducirse. En consecuencia, mediante la codificación de modos de predicción intra alternativos para los modos de predicción intra de ángulo amplio, en lugar de codificar los modos de predicción intra de ángulo amplio tal como son, es posible mejorar la eficacia de la codificación.
Como ejemplo, cuando el bloque actual se codifica en el modo de predicción intra de ángulo amplio n.° 67, el modo de predicción intra de ángulo amplio n.° 2, que es un modo de predicción intra de ángulo amplio alternativo para el n.° 67, puede codificarse en el modo de predicción intra del bloque actual. Además, cuando el bloque actual se codifica en el modo de predicción intra de ángulo amplio n.° -1, el modo de predicción intra de ángulo amplio n.° 66, que es un modo de predicción intra de ángulo amplio alternativo para el n.° -1, puede codificarse en el modo de predicción intra del bloque actual.
El descodificador puede descodificar el modo de predicción intra del bloque actual y puede determinar si el modo de predicción intra descodificado se encuentra dentro del intervalo de transformación. Cuando el modo de predicción intra descodificado es un modo de predicción intra de ángulo amplio alternativo, el modo de predicción intra puede transformarse en el modo de predicción intra de ángulo amplio.
Alternativamente, cuando el bloque actual se codifica en el modo de predicción intra de ángulo amplio, el modo de predicción intra de ángulo amplio puede codificarse tal cual.
La codificación del modo de predicción intra puede realizarse basándose en la lista de MPM descrita anteriormente. En detalle, cuando un bloque vecino se codifica en el modo de predicción intra de ángulo amplio, puede establecerse un MPM basándose en un modo de predicción intra de ángulo amplio alternativo correspondiente al modo de predicción intra de ángulo amplio.
Puede obtenerse una imagen residual restando una imagen de predicción de una imagen original. En este caso, cuando la imagen residual se cambia al dominio de la frecuencia, la calidad subjetiva de la imagen no disminuye significativamente aunque se eliminen las componentes de alta frecuencia de las componentes de frecuencia. En consecuencia, cuando los valores de las componentes de alta frecuencia se cambian a valores pequeños o cuando los valores de las componentes de alta frecuencia se establecen en 0, es posible aumentar la eficacia de compresión sin causar una distorsión visual significativa. Teniendo en cuenta las características anteriores, el bloque actual puede transformarse para descomponer la imagen residual en componentes de frecuencia bidimensionales. La transformación puede realizarse utilizando una técnica de transformación tal como transformación discreta del coseno (DCT) o transformación discreta del seno (DST).
La DCT utiliza la transformación de coseno para descomponer (o transformar) la imagen residual en componentes de frecuencia bidimensionales, y la DST utiliza la transformación de seno para descomponer (o transformar) la imagen residual en componentes de frecuencia bidimensionales. Como resultado de la transformación de la imagen residual, las componentes de frecuencia pueden expresarse con un patrón base. Como ejemplo, cuando se realiza la DCT en un bloque NxN, pueden adquirirse N2 componentes del patrón básico. El tamaño de cada una de las componentes del patrón básico incluidas en el bloque NxN puede adquirirse mediante la transformación. Según la técnica de transformación utilizada, el tamaño de la componente del patrón básico puede denominarse coeficiente DCT o coeficiente DST.
La técnica de transformación DCT se utiliza principalmente para transformar una imagen en la que se distribuyen muchas componentes de baja frecuencia distintas de cero. La técnica de transformación DST se utiliza principalmente para una imagen en la que se distribuyen muchas componentes de alta frecuencia.
La imagen residual puede transformarse utilizando una técnica de transformación distinta de la DCT o la DST.
La transformación de la imagen residual en componentes de frecuencia bidimensionales se denominará transformación bidimensional. Además, el tamaño de las componentes del patrón básico adquiridas a través del resultado de la transformación se denominará coeficiente de transformación. Como ejemplo, el coeficiente de transformación puede denominarse un coeficiente DCT o a un coeficiente DST. Cuando se aplican tanto la primera transformación como la segunda transformación que se describen a continuación, el coeficiente de transformación puede referirse al tamaño de una componente del patrón básico generada como resultado de la segunda transformación.
La técnica de transformación puede determinarse en unidades de bloques. La técnica de transformación puede determinarse basándose en al menos uno del modo de codificación predictiva del bloque actual o el tamaño del bloque actual. Como ejemplo, cuando el bloque actual se codifica en el modo de predicción intra y el tamaño del bloque actual es inferior a NxN, la transformación puede realizarse utilizando la técnica de transformación DST. Por otra parte, cuando no se cumple la condición anterior, la transformación puede realizarse utilizando la técnica de transformación DCT.
La transformación bidimensional puede no realizarse en algunos bloques de la imagen residual. La no realización de la transformación bidimensional puede denominarse salto de transformación. Cuando se aplica el salto de transformación, puede aplicarse la cuantificación a los valores residuales en los que no se realiza la transformación.
Después de transformar el bloque actual mediante DCT o DST, el bloque actual transformado puede volver a transformarse. En este caso, la transformación basada en DCT o DST puede definirse como la primera transformación, y la retransformación de un bloque sometido a la primera transformación puede definirse como la segunda transformación.
La primera transformación puede realizarse utilizando uno de una pluralidad de candidatos de núcleo de transformación. Como ejemplo, la primera transformación puede realizarse utilizando uno de DCT2, DCT8 o DCT7.
Se pueden utilizar diferentes núcleos de transformación en la dirección horizontal y en la dirección vertical. La información que indica una combinación del núcleo de transformación vertical y el núcleo de transformación horizontal puede señalizarse en un flujo de bits.
La primera transformación y la segunda transformación pueden realizarse en unidades diferentes. Como ejemplo, la primera transformación puede realizarse en un bloque de 8x8, y la segunda transformación en un subbloque de 4x4 del bloque transformado de 8x8. En este caso, el coeficiente de transformación de las regiones residuales en las que no se realiza la segunda transformación puede fijarse en 0.
Alternativamente, la primera transformación puede realizarse en un bloque 4x4, y la segunda transformación puede realizarse en la región de un bloque 8x8 que incluye el bloque 4x4 transformado.
La información que indica si se va a realizar la segunda transformación puede señalizarse en un flujo de bits.
El descodificador puede realizar una transformación inversa de la segunda transformación (una segunda transformación inversa) y puede realizar una transformación inversa de la primera transformación (una primera transformación inversa) sobre un resultado de la segunda transformación inversa. Como resultado de realizar la segunda transformación inversa y la primera transformación inversa, pueden adquirirse señales residuales para el bloque actual.
La cuantificación es para reducir la energía de un bloque, y el proceso de cuantificación incluye dividir un coeficiente de transformación por un valor constante específico. El valor constante puede obtenerse mediante un parámetro de cuantificación, y el parámetro de cuantificación puede definirse como un valor entre 1 y 63.
Cuando el codificador realiza una transformación y una cuantificación, el descodificador puede adquirir un bloque residual mediante una cuantificación inversa y una transformación inversa. El descodificador puede adquirir un bloque reconstruido para el bloque actual sumando el bloque de predicción y el bloque residual.
Cuando se adquiere el bloque reconstruido del bloque actual, la pérdida de información que se produce durante la cuantificación y la codificación puede reducirse mediante el filtrado en bucle. Un filtro en bucle puede incluir al menos uno de un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestras (SAO) o un filtro de bucle adaptativo (ALF). Un bloque reconstruido antes de que se aplique un filtro en bucle se denominará primer bloque reconstruido, y un bloque reconstruido después de que se aplique un filtro en bucle se denominará segundo bloque reconstruido.
El segundo bloque reconstruido puede adquirirse aplicando al menos uno del filtro de desbloqueo, SAO o ALF al primer bloque reconstruido. En este caso, el SAO o el ALF pueden aplicarse después de aplicar el filtro de desbloqueo.
El filtro de desbloqueo sirve para aliviar el deterioro de la calidad de imagen (artefacto de bloqueo) que se produce en el borde de un bloque cuando se realiza una cuantificación en unidades de bloques. Para aplicar el filtro de desbloqueo, puede determinarse la intensidad de bloqueo (BS) entre el primer bloque reconstruido y un bloque reconstruido vecino.
La figura 47 es un diagrama de flujo que muestra un proceso de determinación de la intensidad de bloqueo.
En el ejemplo mostrado en la figura 47, P representa el primer bloque reconstruido, y Q representa el bloque reconstruido vecino. Aquí, el bloque reconstruido vecino puede ser un bloque vecino a la izquierda o a la parte superior del bloque actual.
En el ejemplo mostrado en la figura 47, se muestra que la intensidad de bloqueo se determina teniendo en cuenta los modos de codificación predictiva de P y Q, si se incluyen coeficientes de transformación distintos de cero, si la predicción inter se realiza utilizando la misma imagen de referencia o si un valor de diferencia entre vectores de movimiento es mayor o igual que un valor umbral.
Se puede determinar si aplicar el filtro de desbloqueo basándose en la intensidad del bloqueo. Como ejemplo, el filtrado puede no realizarse cuando la intensidad de bloqueo es 0.
El SAO sirve para aliviar un artefacto de anillo que se produce cuando se realiza una cuantificación en el dominio de la frecuencia. La SAO puede realizarse sumando o restando un desplazamiento determinado teniendo en cuenta un patrón de la primera imagen reconstruida. Un procedimiento para determinar el desplazamiento incluye un desplazamiento de borde (EO) o un desplazamiento de banda (BO). El EO indica un procedimiento de determinación de un desplazamiento de la muestra actual según un patrón de píxeles cercanos. El BO indica un procedimiento de aplicación de un desplazamiento común a un conjunto de píxeles con valores de brillo similares en una región. En detalle, el brillo de los píxeles se divide en 32 secciones iguales, y los píxeles con valores de brillo similares pueden establecerse como un conjunto. Como ejemplo, cuatro bandas adyacentes de entre 32 bandas pueden establecerse como un grupo, y el mismo valor de desplazamiento puede aplicarse a las muestras pertenecientes a las cuatro bandas.
El ALF es un procedimiento para generar la segunda imagen reconstruida aplicando un filtro de tamaño o forma predefinidos a la primera imagen reconstruida o a una imagen reconstruida a la que se aplica el filtro de desbloqueo. La Ecuación 34 representa un ejemplo de aplicación del ALF.
Uno de los filtros candidatos predefinidos puede seleccionarse en unidades de imágenes, unidades de árbol de codificación, bloques de codificación, bloques de predicción o bloques de transformación. Los candidatos de filtro pueden ser diferentes en tamaño o forma.
La figura 48 muestra candidatos de filtro predefinidos.
En el ejemplo mostrado en la figura 48, se puede seleccionar al menos una de una forma de diamante de 5x5, una forma de diamante de 7x7 o una forma de diamante de 9x9.
Sólo la forma de diamante 5x5 puede utilizarse para una componente de croma.
La aplicación de las realizaciones que se han descrito centrándose en un proceso de descodificación o en un proceso de codificación al proceso de descodificación o al proceso de codificación entra dentro del alcance de la presente invención. También es posible el cambio de un orden predeterminado, en el que se han descrito las realizaciones, a un orden diferente del descrito anteriormente.
Aunque las realizaciones anteriores se han descrito basándose en una serie de pasos o flujos, los pasos o flujos no limitan el orden de la serie temporal de la invención y pueden realizarse simultáneamente o en diferentes órdenes, según sea necesario. Asimismo, cada uno de las componentes (por ejemplo, unidades, módulos, etc.) que constituyen el diagrama de bloques en las realizaciones descritas anteriormente puede implementarse mediante un dispositivo de hardware o software, y una pluralidad de componentes puede combinarse e implementarse mediante un único dispositivo de hardware o software. Las realizaciones anteriores pueden implementarse en forma de instrucciones de programa que pueden ejecutarse a través de diversos elementos informáticos y grabarse en un medio de grabación legible por ordenador. El medio de grabación legible por ordenador puede incluir una instrucción de programa, un archivo de datos, una estructura de datos y similares, solos o combinados. Ejemplos del medio de grabación legible por ordenador incluyen medios magnéticos tales como un disco duro, un disquete y una cinta magnética, medios ópticos tales como una memoria de sólo lectura de disco compacto (CD-ROM) y un disco versátil digital (DVD), medios magneto-ópticos tales como un disco flóptico, y dispositivos de hardware tales como una ROM, una memoria de acceso aleatorio (RAM) y una memoria flash, que están especialmente diseñados para almacenar y ejecutar instrucciones de programa. El dispositivo de hardware puede configurarse para funcionar como uno o más módulos de software a fin de realizar operaciones de la presente invención, y viceversa.
APLICABILIDAD INDUSTRIAL
La presente invención puede aplicarse a un dispositivo electrónico para codificar o descodificar vídeos.

Claims (9)

REIVINDICACIONES
1. Procedimiento de descodificación de vídeo para descodificar un flujo de bits de vídeo, en el que el vídeo a descodificar comprende una pluralidad de imágenes que se dividen en una pluralidad de bloques de codificación, comprendiendo el procedimiento:
determinar si se divide un bloque de codificación actual de acuerdo con la partición triangular, por la que el bloque de codificación se divide en dos unidades de predicción triangulares de acuerdo con una de las dos diagonales del bloque de codificación, correspondiendo cada diagonal a uno de dos tipos de partición triangular;
obtener una primera información de movimiento relativa a la primera unidad de predicción triangular del bloque de codificación y una segunda información de movimiento relativa a la segunda unidad de predicción triangular del bloque de codificación; y
adquirir una muestra de referencia para predecir el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento,
en el que la primera información de movimiento relativa a la primera unidad de predicción triangular se obtiene a partir de un primer candidato de fusión triangular especificado por la primera información de índice señalizada en el flujo de bits, designando el primer índice un candidato de entre una pluralidad de candidatos de fusión triangulares incluidos en una lista de candidatos de fusión,
la segunda información de movimiento relativa a la segunda unidad de predicción triangular se obtiene a partir de un segundo candidato de fusión triangular especificado por una segunda información de índice señalizada en el flujo de bits, designando el segundo índice un candidato de entre la pluralidad de candidatos de fusión triangular incluidos en la lista de candidatos de fusión, estando el procedimientocaracterizado por que:
cuando un valor de la segunda información de índice es mayor o igual que un valor de la primera información de índice, el segundo candidato de fusión triangular tiene un índice igual al valor de la segunda información de índice más uno, y
cuando un valor de la segunda información de índice es menor que un valor de la primera información de índice, el segundo candidato de fusión triangular tiene un índice igual al valor de la segunda información de índice.
2. Procedimiento de descodificación de vídeo de la reivindicación 1, en el que una muestra de referencia para predecir una muestra incluida en una región límite entre la primera unidad de predicción y la segunda unidad de predicción se obtiene basándose en una operación de suma ponderada de una primera muestra de predicción obtenida basándose en la primera información de movimiento y una segunda muestra de predicción obtenida basándose en la segunda información de movimiento.
3. Procedimiento de descodificación de vídeo de la reivindicación 2, en el que una segunda ponderación aplicada a la segunda muestra de predicción se obtiene restando una primera ponderación del valor 1.
4. Procedimiento de codificación de vídeo, en el que el vídeo a codificar comprende una pluralidad de imágenes que se dividen en una pluralidad de bloques de codificación, comprendiendo el procedimiento:
determinar si se divide un bloque de codificación actual de acuerdo con la partición triangular, por la que el bloque de codificación se divide en dos unidades de predicción triangulares de acuerdo con una de las dos diagonales del bloque de codificación, correspondiendo cada diagonal a uno de dos tipos de partición triangular;
obtener una primera información de movimiento relativa a la primera unidad de predicción triangular del bloque de codificación y una segunda información de movimiento relativa a la segunda unidad de predicción triangular del bloque de codificación; y
adquirir una muestra de referencia para predecir el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento,
en el que la primera información de movimiento relativa a la primera unidad de predicción triangular se obtiene a partir de un primer candidato de fusión triangular especificado por la primera información de índice señalizada en el flujo de bits, designando el primer índice un candidato de entre una pluralidad de candidatos de fusión triangulares incluidos en una lista de candidatos de fusión,
la segunda información de movimiento relativa a la segunda unidad de predicción triangular se obtiene a partir de un segundo candidato de fusión triangular especificado por la segunda información de índice señalizada en el flujo de bits, designando el segundo índice un candidato de entre la pluralidad de candidatos de fusión triangular incluidos en la lista de candidatos de fusión,
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 se codifican respectivamente, estando el procedimientocaracterizado por que:
cuando un índice del segundo candidato de fusión es mayor que un índice del primer candidato de fusión, la segunda información de índice se codifica con un valor obtenido restando uno del índice del segundo candidato de fusión, y cuando un índice del segundo candidato de fusión es menor que un índice del primer candidato de fusión, la segunda información de índice se codifica con un valor del índice del segundo candidato de fusión.
5. Aparato de descodificación de vídeo para descodificar un flujo de bits de vídeo, en el que el vídeo a descodificar comprende una pluralidad de imágenes que se dividen en una pluralidad de bloques de codificación, que comprende: una unidad de predicción inter configurada para determinar si dividir un bloque de codificación actual de acuerdo con la partición triangular, por la que el bloque de codificación se divide en dos unidades de predicción triangular de acuerdo con una de las dos diagonales del bloque de codificación, correspondiendo cada diagonal a uno de dos tipos de partición triangular, obtener una primera información de movimiento relativa a la primera unidad de predicción triangular del bloque de codificación y una segunda información de movimiento relativa a la segunda unidad de predicción triangular del bloque de codificación, y adquirir una muestra de referencia para predecir el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento, en el que la primera información de movimiento relativa a la primera unidad de predicción triangular se obtiene a partir de un primer candidato de fusión triangular especificado por la primera información de índice señalizada en el flujo de bits, designando el primer índice un candidato de entre una pluralidad de candidatos de fusión triangulares incluidos en una lista de candidatos de fusión, y la segunda información de movimiento relativa a la segunda unidad de predicción triangular se obtiene a partir de un segundo candidato de fusión triangular especificado por la segunda información de índice señalizada en el flujo de bits, designando el segundo índice un candidato de entre la pluralidad de candidatos de fusión triangular incluidos en la lista de candidatos de fusión, estando el aparatocaracterizado por que:
cuando un valor de la segunda información de índice es mayor o igual que un valor de la primera información de índice, el segundo candidato de fusión triangular tiene un índice igual al valor de la segunda información de índice más uno, y
cuando un valor de la segunda información de índice es menor que un valor de la primera información de índice, el segundo candidato de fusión triangular tiene un índice igual al valor de la segunda información de índice.
6. Codificador de vídeo, en el que el vídeo a codificar comprende una pluralidad de imágenes que se dividen en una pluralidad de bloques de codificación, que comprende:
una memoria con instrucciones almacenadas;
un procesador para ejecutar las instrucciones para:
determinar si se divide un bloque de codificación actual de acuerdo con la partición triangular, por la que el bloque de codificación se divide en dos unidades de predicción triangulares de acuerdo con una de las dos diagonales del bloque de codificación, correspondiendo cada diagonal a uno de dos tipos de partición triangular;
obtener una primera información de movimiento relativa a la primera unidad de predicción triangular del bloque de codificación y una segunda información de movimiento relativa a la segunda unidad de predicción triangular del bloque de codificación; y
adquirir una muestra de referencia para predecir el bloque de codificación basándose en la primera información de movimiento y la segunda información de movimiento,
en el que la primera información de movimiento relativa a la primera unidad de predicción triangular se obtiene a partir de un primer candidato de fusión triangular especificado por la primera información de índice señalizada en el flujo de bits, designando el primer índice un candidato de entre una pluralidad de candidatos de fusión triangulares incluidos en una lista de candidatos de fusión,
la segunda información de movimiento relativa a la segunda unidad de predicción triangular se obtiene a partir de un segundo candidato de fusión triangular especificado por la segunda información de índice señalizada en el flujo de bits, designando el segundo índice un candidato de entre la pluralidad de candidatos de fusión triangular incluidos en la lista de candidatos de fusión,
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 se codifican respectivamente, estando el procedimientocaracterizado por que:
cuando un índice del segundo candidato de fusión es mayor que un índice del primer candidato de fusión, la segunda información de índice se codifica con un valor obtenido restando uno del índice del segundo candidato de fusión, y cuando un índice del segundo candidato de fusión es menor que un índice del primer candidato de fusión, la segunda información de índice se codifica con un valor del índice del segundo candidato de fusión.
7. Procedimiento de codificación de vídeo de la reivindicación 4, en el que cuando la muestra de predicción se incluye en una región límite entre el subbloque de tipo de partición izquierda-triangular y el subbloque de tipo de partición derecha-triangular, la muestra de predicción se obtiene basándose en una operación de suma ponderada de una primera muestra de predicción obtenida basándose en la primera información de movimiento y una segunda muestra de predicción obtenida basándose en la segunda información de movimiento.
8. Procedimiento de codificación de vídeo de la reivindicación 7, en el que una segunda ponderación aplicada a la segunda muestra de predicción se obtiene restando una primera ponderación del valor 1.
9. Procedimiento de codificación de vídeo de la reivindicación 7, en el que un tamaño de la región límite se determina basándose en al menos uno del tamaño de un bloque de codificación o una forma del bloque de codificación.
ES19883290T 2018-11-08 2019-11-07 Procedimiento de codificación/descodificación de señal de imagen y aparato para ello Active ES2972075T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20180136255 2018-11-08
KR20180148890 2018-11-27
KR20180149064 2018-11-27
PCT/KR2019/015096 WO2020096388A1 (ko) 2018-11-08 2019-11-07 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

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

Family

ID=70611034

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19883290T Active ES2972075T3 (es) 2018-11-08 2019-11-07 Procedimiento de codificación/descodificación de señal de imagen y aparato para ello

Country Status (20)

Country Link
US (3) US11470312B2 (es)
EP (2) EP4274233A3 (es)
JP (2) JP7430721B2 (es)
KR (1) KR20200054104A (es)
CN (4) CN116248869A (es)
AU (1) AU2019375315B2 (es)
BR (1) BR112021008298A2 (es)
CA (2) CA3118269C (es)
CL (1) CL2021001128A1 (es)
DK (1) DK3876539T3 (es)
ES (1) ES2972075T3 (es)
FI (1) FI3876539T3 (es)
IL (2) IL282761B2 (es)
MX (1) MX2021005504A (es)
PH (1) PH12021550966A1 (es)
PL (1) PL3876539T3 (es)
PT (1) PT3876539T (es)
SG (1) SG11202104433RA (es)
WO (1) WO2020096388A1 (es)
ZA (1) ZA202103439B (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10742975B2 (en) * 2017-05-09 2020-08-11 Futurewei Technologies, Inc. Intra-prediction with multiple reference lines
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
BR112021010706A2 (pt) * 2018-12-07 2021-11-30 Samsung Electronics Co Ltd Método de decodificação de vídeo, método de codificação de vídeo, e dispositivo de decodificação de vídeo
US11496765B2 (en) * 2018-12-21 2022-11-08 Samsung Electronics Co., Ltd. Method and apparatus for decoding video, and method and apparatus for encoding video
KR20200083337A (ko) * 2018-12-28 2020-07-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
US10742972B1 (en) * 2019-03-08 2020-08-11 Tencent America LLC Merge list construction in triangular prediction
WO2020184979A1 (ko) 2019-03-11 2020-09-17 주식회사 엑스리스 영상 신호 부호화/복호화 방법 및 이를 위한 장치
WO2022177380A1 (ko) * 2021-02-18 2022-08-25 현대자동차주식회사 인터 예측 기반의 비디오 부호화 및 복호화
JP2023156061A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023156064A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023156062A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2698999B1 (en) 2011-04-12 2017-01-04 Sun Patent Trust Motion-video encoding method, motion-video encoding apparatus, motion-video decoding method, motion-video decoding apparatus, and motion-video encoding/decoding apparatus
CN107835419B (zh) * 2011-10-18 2021-05-14 株式会社Kt 视频信号解码方法
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
DK3833022T3 (da) 2012-04-12 2022-04-19 Jvckenwood Corp Fusionskandidatlistekonstruktion
BR112017010468B1 (pt) 2014-11-18 2024-01-02 Hfi Innovation Inc Método de decodificação de vídeo para blocos codificados no modo de interpredição e método de codificação de vídeo para blocos codificados no modo de interpredição
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
WO2017086738A1 (ko) * 2015-11-19 2017-05-26 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
KR20170058838A (ko) * 2015-11-19 2017-05-29 한국전자통신연구원 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
US20180352221A1 (en) 2015-11-24 2018-12-06 Samsung Electronics Co., Ltd. Image encoding method and device, and image decoding method and device
EP3459244A4 (en) * 2016-01-12 2020-03-04 Telefonaktiebolaget LM Ericsson (publ) VIDEO CODING WITH HYBRID INTRAPREDICTION
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
WO2018034373A1 (ko) * 2016-08-19 2018-02-22 엘지전자(주) 영상 처리 방법 및 이를 위한 장치
US10715827B2 (en) * 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
KR20180084659A (ko) * 2017-01-16 2018-07-25 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
CN116962676A (zh) * 2017-01-16 2023-10-27 世宗大学校产学协力团 影像解码/编码方法以及传送比特流的方法
CN116193109A (zh) 2017-01-16 2023-05-30 世宗大学校产学协力团 影像编码/解码方法
EP3758374A4 (en) * 2018-02-22 2021-09-01 LG Electronics Inc. IMAGE DECODING METHOD AND DEVICE ACCORDING TO A BLOCK DIVISION STRUCTURE IN AN IMAGE ENCODING SYSTEM
CN115695785B (zh) * 2018-10-27 2023-06-06 华为技术有限公司 图像预测方法及装置
KR20210087450A (ko) * 2018-11-06 2021-07-12 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 기하학적 파티션을 이용한 인터 예측을 위한 사이드 정보 시그널링
EP4221205A1 (en) 2018-11-22 2023-08-02 Huawei Technologies Co., Ltd. An encoder and corresponding method for inter prediction
US10778977B2 (en) 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US10893298B2 (en) 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
WO2020096388A1 (ko) 2020-05-14
US11470312B2 (en) 2022-10-11
AU2019375315B2 (en) 2024-06-06
MX2021005504A (es) 2021-06-18
US20220337832A1 (en) 2022-10-20
IL282761B1 (en) 2023-12-01
CN116248869A (zh) 2023-06-09
EP4274233A2 (en) 2023-11-08
CN112970260A (zh) 2021-06-15
IL282761A (en) 2021-06-30
US20210337196A1 (en) 2021-10-28
KR20200054104A (ko) 2020-05-19
CN113395519B (zh) 2023-04-07
EP3876539B1 (en) 2023-12-27
PH12021550966A1 (en) 2021-12-06
AU2019375315A1 (en) 2021-06-03
US20220337833A1 (en) 2022-10-20
JP2022509024A (ja) 2022-01-20
US11882282B2 (en) 2024-01-23
EP3876539A4 (en) 2021-12-29
IL307153A (en) 2023-11-01
CN113395519A (zh) 2021-09-14
DK3876539T3 (da) 2024-02-12
EP4274233A3 (en) 2023-11-22
FI3876539T3 (fi) 2024-02-09
CN116248870A (zh) 2023-06-09
IL307153B1 (en) 2024-06-01
CA3118269A1 (en) 2020-05-14
CA3118269C (en) 2023-10-03
ZA202103439B (en) 2022-07-27
SG11202104433RA (en) 2021-05-28
EP3876539A1 (en) 2021-09-08
PT3876539T (pt) 2024-02-06
JP2024045337A (ja) 2024-04-02
PL3876539T3 (pl) 2024-04-15
CL2021001128A1 (es) 2021-11-19
IL282761B2 (en) 2024-04-01
BR112021008298A2 (pt) 2021-08-03
CA3207984A1 (en) 2020-05-14
JP7430721B2 (ja) 2024-02-13

Similar Documents

Publication Publication Date Title
ES2972075T3 (es) Procedimiento de codificación/descodificación de señal de imagen y aparato para ello
ES2948265T3 (es) Método de codificación/descodificación de señales de imagen y aparato para el mismo
JP7203145B2 (ja) 映像コーディングシステムにおけるイントラ予測による映像のデコーディング方法及び装置
ES2972076T3 (es) Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo
JP2022078048A (ja) 画像復号方法及び画像符号化方法
KR20210133193A (ko) 영상 부호화 또는 복호화하기 위한 장치 및 방법
CN111034196A (zh) 用于对视频进行编码/解码的方法和设备以及存储比特流的记录介质
ES2711474A2 (es) Metodo y aparato para procesar una senal de video
KR102668281B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102619997B1 (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
IL281625B2 (en) A method for encoding/decoding image signals and a device therefor
CN113574878A (zh) 用于对视频信号进行编码/解码的方法及其设备
CN116074505A (zh) 视频信号编码/解码方法以及用于所述方法的设备
WO2023131137A1 (en) Decoder-side chroma intra prediction mode gradient-based derivation
WO2020175914A1 (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
KR20190110042A (ko) 비디오 신호 처리 방법 및 장치
RU2817331C2 (ru) Способ и устройство для кодирования/декодирования сигнала изображения
RU2805056C2 (ru) Способ и устройство для кодирования/декодирования сигнала изображения
KR20190110043A (ko) 비디오 신호 처리 방법 및 장치