ES2972074T3 - Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo - Google Patents

Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo Download PDF

Info

Publication number
ES2972074T3
ES2972074T3 ES19883103T ES19883103T ES2972074T3 ES 2972074 T3 ES2972074 T3 ES 2972074T3 ES 19883103 T ES19883103 T ES 19883103T ES 19883103 T ES19883103 T ES 19883103T ES 2972074 T3 ES2972074 T3 ES 2972074T3
Authority
ES
Spain
Prior art keywords
current block
candidate
motion
vector
block
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
ES19883103T
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 ES2972074T3 publication Critical patent/ES2972074T3/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/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

Landscapes

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

Abstract

Un método de decodificación de imágenes, según la presente invención, comprende las etapas de: determinar si un método de codificación de vector de desplazamiento de fusión es aplicable a un bloque actual; generar una lista de candidatos de fusión para el bloque actual; especificar un candidato de fusión para el bloque actual basándose en la lista de candidatos de fusión; y derivar un vector de movimiento para el bloque actual basándose en el candidato de fusión. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo
CAMPO TÉCNICO
La presente descripción hace referencia a un método de codificación y descodificación de vídeo, un codificador de vídeo, un descodificador de vídeo, un aparato de codificación de vídeo, un aparato de descodificación de vídeo y un medio de almacenamiento legible por ordenador.
ANTECEDENTES
Debido a que los paneles de visualización se van haciendo cada vez más grandes, se requieren cada vez más servicios de vídeo de una calidad aún más alta. El mayor problema de los servicios de vídeo de alta definición es un aumento significativo en el volumen de datos y, para solucionar este problema, se están llevando a cabo activamente estudios para mejorar la velocidad de compresión de vídeo. Como un ejemplo representativo, el Grupo de Expertos en Imágenes en Movimiento (MPEG) y el Grupo de Expertos en Codificación de Vídeo (VCEG) en el marco de la Unión Internacional de Telecomunicaciones-Telecomunicaciones (UIT-T) han formado el Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) en 2009. El JCT-VC ha propuesto la Codificación de Vídeo de Alta Eficiencia (HEVC), que es una norma de compresión de vídeo que tiene un rendimiento de compresión aproximadamente el doble del rendimiento de compresión de H.264/AVC, y se aprueba como norma el 25 de enero de 2013. Con el rápido avance en los servicios de vídeo de alta definición, el rendimiento de la HEVC revela gradualmente sus limitaciones. Xu Chen et al: "CE4: Enhanced Merge Mode (Test 4.2.15)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting, no. JVET-K0198, 18 de julio de 2018, páginas 1-8 presenta un modo de fusión mejorado basado en VTM-1.0 y BMS-1.0. En primer lugar, los candidatos de fusión espaciales ampliados se añaden a la lista de candidatos de fusión, seguidos de más desplazamientos de VM añadidos al primer candidato de fusión y, a continuación, se generan los candidatos de fusión promedio combinados para sustituir a los candidatos bipredictivos combinados originales. Li (Tencent) G. y otros: "CE4-related: affine merge mode with prediction offsets", 12. JVET Meeting; 20181003-20181012; Macao; (The Joint Video Experts Team of ISO/IEC JTC1/SC29/WG11 and ITU-T SG 16 WP 3), no.JVET-L0320, 7 de octubre de 2018 propone un método de modo de fusión afín con desplazamientos de predicción. US 2011/194609 A1 describe un método de selección de candidatos de vectores de movimiento predichos. US 2013/114717 A1 describe un método de generación de candidatos de fusión adicionales. Yang H. et al: "CE4: Summary report on inter prediction and motion vector coding", 12. JVET Meeting; 20181003 20181012; Macao; (The Joint Video Exploration Team of ISU/IEC JTC1/SC29/WG11 and ITU-T SG.16), no. JVET-L0024, 4 de octubre de 2018 proporciona un informe resumido del Core Experiment 4 sobre la codificación de vectores de interpredicción y movimiento. Oudin S. et al: "Block merging for quadtree-based vídeo coding", Multimedia and Expo (ICME), 2011 IEEE International Conference on, IEEE, 11 de julio de 2011, páginas 1 -6 describe un algoritmo de fusión de bloques simple pero eficiente que tiene como objetivo eliminar esas redundancias mediante la utilización de un solo conjunto de parámetros para toda una región de bloques contiguos compensada por movimiento. Jeong S. y otros: "CE4 Ultimate motion vector expression (Test 4.5.4)", The Joint Video Exploration Team of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16, no. JVET-L0054, 12 de octubre de 2018, páginas 1-8 proporciona el texto propuesto del borrador de trabajo VVC en relación con la expresión del vector de movimiento CE4 Ultimate. Alshin et al: "Descripción de la propuesta de tecnología de codificación de vídeo SDR, HDR y 360° de Samsung, Huawei, GoPro y HiSilicon: escenario de aplicación móvil", 10. JVET Meeting; 20180410-20180420; San Diego; (The Joint Video Exploration Team of IS/IEC JTC1/SC29/WG11 and ITU-T SG.16), no. JVET-J0024, 14 de abril de 2018 tiene como objetivo proporcionar una tecnología de compresión de vídeo que tenga una capacidad de compresión significativamente mayor que el estándar HEVC de última generación para las tres categorías, manteniendo al mismo tiempo una complejidad (principalmente consumo de energía) aceptable para aplicaciones de plataformas móviles.
SUMARIO
La presente descripción se especifica mediante reivindicaciones independientes. Otras formas de realización se especifican en las reivindicaciones dependientes.
Un método de descodificación de vídeo de acuerdo con la presente descripción incluye las etapas de: determinar si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual; generar una lista de candidatos de fusión para el bloque actual; especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y obtener un vector de movimiento para el bloque actual en función del candidato de fusión. En este punto, cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada a partir de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
Un método de la codificación vídeo según la actual descripción incluye las etapas de: determinando si un método de la codificación de la diferencia del movimiento de la fusión está aplicado a un bloque actual; generar una lista de candidatos de fusión para el bloque actual; especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y derivando un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
Un descodificador vídeo según la actual descripción incluye por lo menos un procesador y una memoria que almacenan los programas informáticos que, cuando son ejecutados por el al menos un procesador, hacen el al menos un procesador: determine si un método de codificación por diferencia de movimiento de fusión está aplicado a un bloque actual; genere una lista de candidatos de fusión para el bloque actual; especifique a candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y derive un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando se aplica el método de codificación por diferencia de movimiento de fusión al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
Un codificador vídeo según la actual descripción incluye por lo menos un procesador y una memoria que almacenan los programas informáticos que, cuando son ejecutados por el al menos un procesador, hacen el al menos un procesador: determine si un método de codificación por diferencia de movimiento de fusión está aplicado a un bloque actual; genere una lista de candidatos de fusión para el bloque actual; especifique a candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y derive un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
Un aparato de la descodificación vídeo según la actual descripción incluye una parte de la interpredicción para determinar si un método de codificación por diferencia de movimiento de fusión está aplicado a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, y derivando un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando se aplica el método de codificación por diferencia de movimiento de fusión al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
Un aparato de la codificación vídeo según la actual descripción incluye una parte de la interpredicción para determinar si un método de codificación por diferencia de movimiento de fusión está aplicado a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, y derivando un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
Un medio de almacenamiento legible por ordenador de acuerdo con la presente descripción incluye instrucciones que, cuando son ejecutadas por al menos un procesador, provocan que el al menos un procesador realice el método de descodificación de vídeo o el método de codificación de vídeo.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una forma de realización de la presente descripción.
La figura 2 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una forma de realización de la presente descripción.
La figura 3 es una vista que muestra una unidad básica de árbol de codificación de acuerdo con una forma de realización de la presente descripción.
La figura 4 es una vista que muestra diversos tipos de subdivisión de un bloque de codificación.
La figura 5 es una vista que muestra un patrón de subdivisión de una unidad de árbol de codificación. La figura 6 es una vista que muestra las formas de las unidades básicas de datos.
Las figuras 7 y 8 son vistas que muestran ejemplos de subdivisión de un bloque de codificación en varios subbloques.
La figura 9 es un diagrama de flujo que ilustra un método de interpredicción de acuerdo con una forma de realización de la presente descripción.
La figura 10 es una vista que muestra movimientos no lineales de un objeto.
La figura 11 es un diagrama de flujo que ilustra un método de interpredicción basado en un movimiento afín de acuerdo con una forma de realización de la presente descripción.
La figura 12 es una vista que muestra un ejemplo de vectores de semilla afines de cada modelo de movimiento afín.
La figura 13 es una vista que muestra un ejemplo de vectores afines de subbloques en un modelo de movimiento de 4 parámetros.
La figura 14 es un diagrama de flujo que ilustra un proceso para derivar información de movimiento de un bloque actual usando un modo de fusión.
La figura 15 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
La figura 16 es una vista que muestra las posiciones de las muestras de referencia.
La figura 17 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
La figura 18 es una vista que muestra un ejemplo en el que se cambia la posición de una muestra de referencia.
La figura 19 es una vista que muestra un ejemplo en el que se cambia la posición de una muestra de referencia.
La figura 20 es un diagrama de flujo que ilustra un proceso de actualización de una lista de información de movimiento interregional.
La figura 21 es una vista que muestra una forma de realización de la actualización de una lista de candidatos de fusión interregional.
La figura 22 es una vista que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión interregional previamente almacenado.
La figura 23 es una vista que muestra la posición de un subbloque representativo.
La figura 24 es una vista que muestra un ejemplo en el que se genera una lista de información de movimiento interregional para cada modo de interpredicción.
La figura 25 es una vista que muestra un ejemplo en el que un candidato de fusión interregional incluido en una lista de información de movimiento a largo plazo se añade a una lista de candidatos de fusión.
La figura 26 es una vista que muestra un ejemplo en el que se lleva a cabo una comprobación de redundancia sólo en algunos de los candidatos de fusión.
La figura 27 es una vista que muestra un ejemplo en el que se omite una comprobación de redundancia para un candidato de fusión específico.
La figura 28 es una vista que muestra un vector de desplazamiento según los valores de distance_idx que indica una magnitud de un vector de desplazamiento y direction_idx que indica una dirección del vector de desplazamiento.
La figura 29 es una vista que muestra un vector de desplazamiento según los valores de distance_idx que indica una magnitud de un vector de desplazamiento y direction_idx que indica una dirección del vector de desplazamiento.
La figura 30 es una vista que muestra patrones de partición de un bloque de codificación cuando se aplica una técnica de partición triangular.
La figura 31 es una vista que muestra un ejemplo en el que los vectores de desplazamiento de cada una de las subunidades se establecen de forma diferente.
La figura 32 es una vista que muestra candidatos de vectores de movimiento que puede tomar un candidato de fusión refinado.
La figura 33 es una vista que muestra la configuración de una lista de desplazamiento de refinamiento de fusión.
Las figuras 34 y 35 son vistas que muestran vectores de desplazamiento especificados por candidatos a desplazamiento de fusión.
La figura 36 es una vista que muestra bloques candidatos utilizados para obtener candidatos de predicción de vectores de movimiento.
La figura 37 es una vista mostrando candidatos de vector de movimiento que pueden ser establecidos como un candidato de predicción de vector de movimiento refinado.
La figura 38 es una vista que muestra la configuración de una lista de desplazamiento de refinamiento de vectores de predicción.
DESCRIPCIÓN DETALLADA
En lo sucesivo, una forma de realización de la presente descripción se describirá en detalle con referencia a los dibujos adjuntos.
De acuerdo con la presente descripción, un método de descodificación de vídeo incluye: determinar si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual; generar una lista de candidatos de fusión para el bloque actual; especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y obtener un vector de movimiento para el bloque actual en función del candidato de fusión. En este punto, cuando se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
En una forma de realización, una magnitud del vector de desplazamiento se determina en función de la primera información de índice que especifica uno entre los candidatos de magnitud de movimiento.
En una forma de realización, al menos uno entre un valor máximo y un valor mínimo de los candidatos de magnitud de movimiento se establece de forma diferente según un valor de un indicador que indica valores numéricos de los candidatos de magnitud de movimiento.
En una forma de realización, el indicador se señala a nivel de imagen.
En una forma de realización, al menos uno entre un valor máximo y un valor mínimo de los candidatos de magnitud de movimiento se establece de forma diferente según la precisión del vector de movimiento para el bloque actual. En una forma de realización, la magnitud del vector de desplazamiento se obtiene aplicando una operación de desplazamiento a un valor indicado por el candidato de magnitud de movimiento especificado por la primera información de índice.
En una forma de realización, una dirección del vector de desplazamiento se determina en función de la segunda información de índice que especifica uno entre los candidatos de dirección de vector.
De acuerdo con la presente descripción, un método de codificación de vídeo incluye: determinar si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual; generar una lista de candidatos de fusión para el bloque actual; especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y obtener un vector de movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
En una forma de realización, el método de codificación de vídeo incluye además la codificación de una primera información de índice para especificar una magnitud de movimiento candidata que indica una magnitud del vector de desplazamiento entre varias candidatos de magnitudes de movimiento.
En una forma de realización, el método de codificación de vídeo incluye además la codificación de un indicador que indica los valores numéricos de los candidatos a magnitud de movimiento, en el que al menos uno entre un valor máximo y un valor mínimo de los candidatos a magnitud de movimiento se establece de forma diferente de acuerdo con un valor del indicador.
En una forma de realización, el indicador se codifica a nivel de imagen.
En una forma de realización, al menos uno entre un valor máximo y un valor mínimo de los candidatos de magnitud de movimiento se establece de forma diferente según la precisión del vector de movimiento para el bloque actual.
En una forma de realización, el candidato a magnitud de movimiento tiene un valor obtenido de aplicar una operación de desplazamiento a la magnitud del vector de desplazamiento.
En una forma de realización, el método de codificación de vídeo incluye además la codificación de segunda información de índice para especificar un candidato de dirección vectorial que indica una dirección del vector de desplazamiento entre varios candidatos de dirección vectorial.
Según la actual descripción, un descodificador vídeo incluye por lo menos un procesador y una memoria que almacena los programas informáticos que, cuando son ejecutados por el al menos un procesador, hacen el al menos un procesador: determine si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual; genere una lista de candidatos de fusión para el bloque actual; especifique a candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y derive un vector del movimiento para el bloque actual en función del candidato de fusión. Cuando se aplica el método de codificación por diferencia de movimiento de fusión al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
De acuerdo con la presente descripción, un codificador de vídeo incluye al menos un procesador y una memoria que almacena programas informáticos que, cuando son ejecutados por el al menos un procesador, provocan que el al menos un procesador: determine si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual; genere una lista de candidatos de fusión para el bloque actual; especifique un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y derive un vector de movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
De acuerdo con la presente descripción, un aparato de descodificación de vídeo incluye una parte de interpredicción para determinar si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, y obtener un vector de movimiento para el bloque actual en función del candidato de fusión. Cuando se aplica el método de codificación por diferencia de movimiento de fusión al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada de un flujo de bits que indica uno cualquiera de entre los candidatos de fusión, y cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información de índice.
De acuerdo con la presente descripción, un aparato de codificación de vídeo incluye una parte de interpredicción para determinar si un método de codificación por diferencia de movimiento de fusión se aplica a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, y obtener un vector de movimiento para el bloque actual en función del candidato de fusión. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice.
De acuerdo con la presente descripción, un medio de almacenamiento legible por ordenador incluye instrucciones que, cuando son ejecutadas por al menos un procesador, provocan que el al menos un procesador realice el método de descodificación de vídeo o el método de codificación de vídeo.
La presente descripción puede proporcionar además un método para refinar un vector de movimiento obtenido de un candidato de fusión basado en un vector de desplazamiento en la codificación/descodificación de una señal de vídeo, y un aparato para realizar el método.
La presente descripción puede proporcionar además un método de indicación de un vector de desplazamiento en la codificación/descodificación de una señal de vídeo, y un aparato para realizar el método.
De acuerdo con la presente descripción, la eficiencia de la interpredicción puede mejorarse refinando un vector de movimiento de un candidato de fusión basado en un vector de desplazamiento.
De acuerdo con la presente descripción, la eficiencia de la interpredicción puede mejorarse mediante la determinación adaptativa de una magnitud y una dirección de un vector de desplazamiento.
La codificación y descodificación de un vídeo es realizada por la unidad de bloque. Por ejemplo, puede realizarse un proceso de codificación/descodificación tal como transformada, cuantificación, predicción, filtrado en bucle, reconstrucción o similares sobre un bloque de codificación, un bloque de transformada o un bloque de predicción.
En lo sucesivo en el presente documento, un bloque que va a codificarse/descodificarse se denominará 'bloque actual'. Por ejemplo, el bloque actual puede representar un bloque de codificación, un bloque de transformada o un bloque de predicción de acuerdo con una etapa de proceso de codificación/descodificación actual.
Además, puede entenderse que el término 'unidad' usado en esta especificación indica una unidad básica para realizar un proceso de codificación/descodificación específico, y el término 'bloque' indica una disposición ordenada de muestras de un tamaño predeterminado. A menos que se exponga lo contrario, el 'bloque' y la 'unidad' pueden usarse para tener el mismo significado. Por ejemplo, en una realización descrita a continuación, puede entenderse que un bloque de codificación y una unidad de codificación tienen el mismo significado.
La figura 1 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una forma de realización de la presente descripción.
Haciendo referencia a la figura 1, un aparato de codificación de vídeo 100 puede incluir una parte de subdivisión de imagen 110, una parte de predicción 120 y 125, una parte de transformada 130, una parte de cuantificación 135, una parte de reorganización 160, una parte de codificación por entropía 165, una parte de cuantificación inversa 140, una parte de transformada inversa 145, una parte de filtro 150 y una memoria 155.
Se muestra independientemente que cada uno de los componentes mostrados en figura 1 representa funciones características diferentes entre sí en un aparato de codificación de vídeo, y no significa que cada componente esté formado por la unidad de configuración de hardware separado o por software único. Es decir, cada componente se incluye para enumerarse como un componente por conveniencia de explicación, y al menos dos de los componentes pueden combinarse para formar un único componente, o un componente puede dividirse en varios componentes para realizar una función. Las formas de realización integradas y las formas de realización separadas de los componentes también se incluyen en el ámbito de la presente descripción si no se apartan de la esencia de la presente descripción.
Además, algunos de los componentes no son componentes esenciales que realizan funciones esenciales en la presente descripción, sino que pueden ser componentes opcionales únicamente para mejorar el rendimiento. La presente descripción puede implementarse incluyendo únicamente los componentes esenciales para implementar la esencia de la presente descripción excluyendo los componentes utilizados para mejorar el rendimiento, y una estructura que incluya únicamente los componentes esenciales excluyendo los componentes opcionales utilizados para mejorar el rendimiento también se incluye en el alcance de la presente descripción.
La parte de subdivisión de imagen 110 puede subdividir una imagen de entrada en al menos una unidad de procesamiento. En este punto, la unidad de procesamiento puede ser una unidad de predicción (PU), una unidad de transformada (TU) o una unidad de codificación (CU). La parte de subdivisión de imagen 110 puede subdividir una imagen en una combinación de múltiples unidades de codificación, unidades de predicción y unidades de transformada, y codificar una imagen seleccionando una combinación de una unidad de codificación, una unidad de predicción y una unidad de transformada basándose en un criterio predeterminado (por ejemplo, una función de coste).
Por ejemplo, una imagen puede subdividirse en varias unidades de codificación. Para subdividir las unidades de codificación en una imagen, puede usarse una estructura de árbol recursivo tal como una estructura de árbol cuádruple. Un vídeo o una unidad de codificación subdividida en diferentes unidades de codificación usando la unidad de codificación más grande como raíz puede subdividirse para tener tantos nodos secundarios como el número de unidades de codificación subdivididas. Una unidad de codificación que ya no se subdivide de acuerdo con una restricción predeterminada se vuelve un nodo hoja. Es decir, cuando se asume que solo es posible la subdivisión cuadrada para una unidad de codificación, la unidad de codificación puede subdividirse en hasta cuatro unidades de codificación diferentes.
En lo sucesivo, en una forma de realización de la presente descripción, la unidad de codificación puede utilizarse como un significado de una unidad que realiza la codificación o un significado de una unidad que realiza la descodificación.
La unidad de predicción puede ser una que se subdivide en una forma de al menos un cuadrado, rectángulo o similar del mismo tamaño dentro de una unidad de codificación, o puede ser una cualquiera de las unidades de predicción, de entre las unidades de predicción subdivididas dentro de una unidad de codificación, que se subdivide para tener una forma y/o tamaño diferente de los de otra unidad de predicción.
Si la unidad de codificación no es una unidad de codificación más pequeña cuando se genera una unidad de predicción que realiza una intra predicción basándose en la unidad de codificación, la intra predicción puede realizarse sin subdividir una imagen en varias unidades de predicción N x N.
La parte de predicción 120 y 125 puede incluir una parte de inter predicción 120 que realiza una inter predicción y una parte intra predicción 125 que realiza una intra predicción. Puede determinarse si usar una inter predicción o realizar una intra predicción para una unidad de predicción y determinar información específica (por ejemplo, modo de intra predicción, vector de movimiento, imagen de referencia, etc.) de acuerdo con cada método de predicción. En este punto, una unidad de procesamiento para realizar predicción puede ser diferente de una unidad de procesamiento para determinar un método de predicción y contenido específico. Por ejemplo, pueden determinarse un método de predicción y un modo de predicción en una unidad de predicción, y la predicción puede realizarse sobre una unidad de transformada. En la parte de transformación 130 puede introducirse un coeficiente residual (bloque residual) entre el bloque de predicción reconstruido y el bloque original. Además, la información de modo de predicción, la información de vector de movimiento y similares usados para predicción pueden codificarse mediante la parte de codificación por entropía 165 junto con el coeficiente residual y transferirse a un descodificador. Cuando se usa un modo de codificación específico, un bloque original puede codificarse tal cual está y transmitirse a un descodificador sin generar un bloque de predicción a través de la parte de predicción 120 y 125.
La parte de inter predicción 120 puede predecir una unidad de predicción basándose en información acerca de al menos una imagen de entre imágenes antes o después de la imagen actual, y en algunos casos, puede predecir una unidad de predicción basándose en información acerca de un área parcial que se ha codificado en la imagen actual. La parte de inter predicción 120 puede incluir una parte de interpolación de imagen de referencia, una parte de predicción de movimiento y una parte de compensación de movimiento.
La parte de interpolación de imagen de referencia puede recibir información de imagen de referencia de la memoria 155 y generar información de píxel de un número entero de píxeles o menor a partir de la imagen de referencia. En el caso de un píxel de luminancia, puede utilizarse un filtro de interpolación de 8 tomas basado en DCT con un coeficiente de filtro variable para generar información de píxel de un número entero de píxeles o menor en la unidad de 1/4 de píxel. En el caso de una señal de croma, puede utilizarse un filtro de interpolación de 4 tomas basado en DCT con un coeficiente de filtro variable para generar información de píxeles de un número entero de píxeles o menor en la unidad de 1/8 píxeles.
La parte de predicción de movimiento puede realizar predicción de movimiento basándose en la imagen de referencia interpolada por la parte de interpolación de imagen de referencia. Pueden usarse diversos métodos tales como un algoritmo de puesta en coincidencia de bloques basada en búsqueda completa (FBMA), una búsqueda de tres etapas (TSS) y un algoritmo de nueva búsqueda de tres etapas (NTS) como un método para calcular un vector de movimiento. El vector de movimiento puede tener un valor de vector de movimiento de una unidad de 1/2 o 1/4 de píxel basándose en píxeles interpolados. La parte de predicción de movimiento puede predecir una unidad de predicción actual variando el modo de predicción de movimiento. Pueden usarse diversos métodos tales como un modo de omisión, un modo de fusión, un modo de predicción de vector de movimiento avanzado (AMVP), un modo de copia de intra bloque y similares como el modo de predicción de movimiento.
La parte de intra predicción 125 puede generar una unidad de predicción basándose en la información acerca de píxeles de referencia en las proximidades del bloque actual, que es información de píxeles en la imagen actual. Cuando un bloque en las proximidades de la unidad de predicción actual es un bloque sobre el que se ha realizado una inter predicción y, por lo tanto, el píxel de referencia es un píxel sobre el que se ha realizado una inter predicción, puede usarse el píxel de referencia incluido en el bloque sobre el que se ha realizado una inter predicción en lugar de información de píxeles de referencia de un bloque en las proximidades sobre el que se ha realizado una intra predicción. Es decir, cuando no está disponible un píxel de referencia, puede usarse al menos un píxel de referencia de entre píxeles de referencia disponibles en lugar de información de píxeles de referencia no disponible.
En la intra predicción, el modo de predicción puede tener un modo de predicción angular que usa información de píxeles de referencia de acuerdo con una dirección de predicción, y un modo de predicción no angular que no usa información direccional cuando se realiza una predicción. Un modo para predecir información de luminancia puede ser diferente de un modo para predecir información de croma, y puede usarse información del modo de intra predicción usada para predecir información de luminancia o información de señal de luminancia predicha para predecir la información de croma.
Si el tamaño de la unidad de predicción es igual que el tamaño de la unidad de transformada cuando se realiza una intra predicción, la intra predicción puede realizarse para la unidad de predicción basándose en un píxel en el lado izquierdo, un píxel en el lado superior izquierdo y un píxel en la parte superior de la unidad de predicción. Sin embargo, si el tamaño de la unidad de predicción es diferente del tamaño de la unidad de transformada cuando se realiza la intra predicción, la intra predicción puede realizarse usando un píxel de referencia basándose en la unidad de transformada. Además, la intra predicción usando una subdivisión N x N solo puede usarse para la unidad de codificación más pequeña.
El método de intra predicción puede generar un bloque de predicción después de aplicar un filtro de intra alisado adaptativo (AIS) al píxel de referencia de acuerdo con un modo de predicción. El tipo de filtro de AIS aplicado al píxel de referencia puede variar. Para realizar el método de intra predicción, el modo de intra predicción de la unidad de intra predicción actual puede predecirse a partir del modo de intra predicción de la unidad de intra predicción existente en las proximidades de la unidad de intra predicción actual. Cuando se predice un modo de predicción de la unidad de predicción actual usando la información de modo predicho de la unidad de predicción vecina, si los modos de intra predicción de la unidad de predicción actual son iguales que los de la unidad de predicción en las proximidades, la información que indica que los modos de predicción de la unidad de predicción actual son iguales que los de la unidad de predicción en las proximidades pueden transmitirse usando información de bandera predeterminada, y si los modos de predicción de la unidad de predicción actual y la unidad de predicción en las proximidades son diferentes entre sí, puede codificarse información de modo de predicción del bloque actual realizando una codificación por entropía.
Además, puede generarse un bloque residual que incluye una unidad de predicción que ha realizado una predicción basándose en la unidad de predicción generada por la parte de predicción 120 y 125 y la información de coeficiente residual, que es un valor de diferencia de la unidad de predicción con el bloque original. El bloque residual generado puede introducirse en la parte de transformada 130.
La parte de transformada 130 puede transformar el bloque residual que incluye el bloque original y la información de coeficiente residual de la unidad de predicción generada a través de la parte de predicción 120 y 125 usando un método de transformada tal como transformada discreta del coseno (DCT) o transformada discreta del seno (DST). En el presente caso, el núcleo de transformada DCT incluye al menos una de entre DCT2 y DCT8, y el núcleo de transformada DST incluye DST7. Puede determinarse si aplicar, o no, DCT o DST para transformar el bloque residual basándose en información de modo de intra predicción de una unidad de predicción usada para generar el bloque residual. La transformada sobre el bloque residual puede omitirse. Puede codificarse una bandera que indica si omitir, o no, la transformada sobre el bloque residual. La omisión de transformada puede permitirse para un bloque residual que tiene un tamaño menor que o igual a un umbral, un componente de luma o un componente de croma bajo el formato 4: 4 : 4 formato.
La parte de cuantificación 135 puede cuantificar valores transformados en el dominio de la frecuencia por la parte de transformada 130. Los coeficientes de cuantificación pueden variar de acuerdo con el bloque o la importancia de un vídeo. Puede proporcionarse un valor calculado por la parte de cuantificación 135 a la parte de cuantificación inversa 140 y la parte de reorganización 160.
La parte de reorganización 160 puede reorganizar los valores de coeficiente para los coeficientes residuales cuantificados.
La parte de reorganización 160 puede cambiar los coeficientes de una forma de bloque bidimensional a una forma vectorial unidimensional a través de un método de exploración de coeficientes. Por ejemplo, la parte de reorganización 160 puede explorar coeficientes de CC hasta coeficientes de dominio de alta frecuencia usando un método de exploración en zigzag, y cambiar los coeficientes a una forma vectorial unidimensional. De acuerdo con el tamaño de la unidad de transformada y el modo de intra predicción, puede usarse una exploración vertical para explorar los coeficientes de una forma de bloque bidimensional en la dirección por columnas y una exploración horizontal para explorar los coeficientes de una forma de bloque bidimensional en la dirección por filas en lugar de la exploración en zigzag. Es decir, de acuerdo con el tamaño de la unidad de transformada y el modo de intra predicción, puede determinarse un método de exploración que se usará de entre la exploración en zigzag, la exploración de dirección vertical y la exploración de dirección horizontal.
La parte de codificación por entropía 165 puede realizar una codificación por entropía basándose en valores calculados por la parte de reorganización 160. La codificación por entropía puede usar diversos métodos de codificación tales como Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC) y similares.
La parte de codificación por entropía 165 puede codificar diversa información tal como información de coeficiente residual e información de tipo de bloque de una unidad de codificación, información de modo de predicción, información de unidad de subdivisión, información de unidad de predicción e información de unidad de transmisión, información de vector de movimiento, información de trama de referencia, información de interpolación de bloque e información de filtrado introducida desde la parte de reorganización 160 y las partes de predicción 120 y 125.
La parte de codificación por entropía 165 puede codificar por entropía el valor de coeficiente de una unidad de codificación que se introduce desde la parte de reorganización 160.
La parte de cuantificación inversa 140 y la parte de transformada inversa 145 cuantifican inversamente los valores cuantificados por la parte de cuantificación 135 y transforman inversamente los valores transformados por la parte de transformada 130. El coeficiente residual generado por la parte de cuantificación inversa 140 y la parte de transformada inversa 145 puede combinarse con la unidad de predicción predicha a través de una parte de estimación de movimiento, una parte de compensación de movimiento y una parte intra predicción incluida en la parte de predicción 120 y 125 para generar un bloque reconstruido.
La parte de filtro 150 puede incluir al menos uno de entre un filtro de desbloqueo, una unidad de corrección de desplazamiento y un filtro de bucle adaptativo (ALF).
El filtro de desbloqueo puede eliminar la distorsión de bloque generada por la frontera entre bloques en la imagen reconstruida. Para determinar si realizar, o no, un desbloqueo, puede determinarse si aplicar, o no, el filtro de desbloqueo al bloque actual basándose en los píxeles incluidos en varias columnas o filas incluidas en el bloque. Puede aplicarse un filtro fuerte o un filtro débil de acuerdo con la fuerza de filtrado de desbloqueo necesaria cuando se aplica el filtro de desbloqueo a un bloque. Además, cuando el filtrado de dirección vertical y el filtrado de dirección horizontal se realizan aplicando el filtro de desbloqueo, el filtrado de dirección horizontal y el filtrado de dirección vertical pueden procesarse en paralelo.
La unidad de corrección de desplazamiento puede corregir un desplazamiento del vídeo original en la unidad de píxel para una imagen en la que se ha realizado el desbloqueo. Para realizar la corrección de desplazamiento para una imagen específica, es posible usar un método para dividir píxeles incluidos en el vídeo en un cierto número de áreas, determinar un área para realizar el desplazamiento y aplicar el desplazamiento al área, o un método para aplicar un desplazamiento considerando información de borde de cada píxel.
El filtrado de bucle adaptativo (ALF) se puede llevar a cabo en función de un valor obtenido comparando el vídeo reconstruido y filtrado con el vídeo original. Después de dividir los píxeles incluidos en la imagen en grupos predeterminados, puede determinarse un filtro que va a aplicarse a un grupo correspondiente y el filtrado puede realizarse de forma diferente para cada grupo. Puede transmitirse una señal de luminancia, que es la información relacionada con si aplicar, o no, ALF, para cada unidad de codificación (CU), y el coeficiente de filtro y forma de un filtro ALF que va a aplicarse pueden variar de acuerdo con cada bloque. Además, puede aplicarse un filtro ALF del mismo tipo (tipo fijo) independientemente de la característica de un bloque que va a aplicarse.
La memoria 155 puede almacenar el bloque o imagen reconstruida calculada a través de la parte de filtro 150, y el bloque o imagen reconstruida y almacenada pueden proporcionarse a la parte de predicción 120 y 125 cuando se realiza una inter predicción.
La figura 2 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con una forma de realización de la presente descripción.
Haciendo referencia a la figura 2, un descodificador de vídeo 200 puede incluir una parte de descodificación por entropía 210, una parte de reorganización 215, una parte de cuantificación inversa 220, una parte de transformada inversa 225, una parte de predicción 230 y 235, una parte de filtro 240 y una memoria 245.
Cuando un flujo de bits de vídeo se introduce desde un codificador de vídeo, el flujo de bits de entrada puede descodificarse en un procedimiento opuesto al del codificador de vídeo.
La parte de descodificación por entropía 210 puede realizar una descodificación por entropía en un procedimiento opuesto al de realizar una codificación por entropía en la parte de descodificación por entropía del codificador de vídeo. Por ejemplo, pueden aplicarse diversos métodos correspondientes al método realizado por el codificador de vídeo, tal como Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC) y codificación aritmética binaria adaptativa al contexto (CABAC).
La parte de descodificación por entropía 210 puede descodificar información relacionada con la intra predicción y la inter predicción realizadas por el codificador.
La parte de reorganización 215 puede realizar una reorganización sobre el flujo de bits descodificado por entropía por la parte de descodificación por entropía 210 basándose en el método de reorganización realizado por el codificador. Los coeficientes expresados en una forma vectorial unidimensional pueden reconstruirse y reorganizarse como coeficientes de forma de bloque bidimensional. La parte de reorganización 215 puede recibir información relacionada con la exploración de coeficientes realizada por la parte de codificación y realizar una reconstrucción a través de un método de exploración inversa basándose en el orden de exploración realizado por la parte de codificación correspondiente.
La parte de cuantificación inversa 220 puede realizar una cuantificación inversa basándose en un parámetro de cuantificación proporcionado por el codificador y un valor de coeficiente del bloque reorganizado.
La parte de transformada inversa 225 puede realizar una transformada inversa sobre la transformada, es decir, DCT o DST, realizada por la parte de transformada sobre un resultado de la cuantificación realizada por el codificador de vídeo, es decir, DCT inversa o DST inversa. En el presente caso, el núcleo de transformada DCT puede incluir al menos una de entre DCT2 y DCT8, y el núcleo de transformada DST puede incluir DST7. Como alternativa, cuando la transformada se omite en el codificador de vídeo, incluso la parte de transformada inversa 225 puede no realizar la transformada inversa. La transformada inversa puede realizarse basándose en una unidad de transmisión determinada por el codificador de vídeo. La parte de transformada inversa 225 del descodificador de vídeo puede realizar de forma selectiva una técnica de transformada (por ejemplo, DCT o DST) de acuerdo con varios fragmentos de información tal como un método de predicción, un tamaño de un bloque actual, una dirección de predicción y similares.
La parte de predicción 230 y 235 puede generar un bloque de predicción basándose en información relacionada con la generación de un bloque de predicción proporcionado por el descodificador por entropía 210 e información acerca de un bloque o imagen previamente descodificado proporcionado por la memoria 245.
Como se ha descrito anteriormente, si el tamaño de la unidad de predicción y el tamaño de la unidad de transformada son los mismos cuando la intra predicción se realiza de la misma forma que la operación del codificador de vídeo, la intra predicción se realiza sobre la unidad de predicción basándose en el píxel existente en el lado izquierdo, el píxel en el lado superior izquierdo y el píxel en la parte superior de la unidad de predicción. Sin embargo, si el tamaño de la unidad de predicción y el tamaño de la unidad de transformada son diferentes cuando se realiza una intra predicción, la intra predicción puede realizarse usando un píxel de referencia basándose en una unidad de transformada. Además, la intra predicción usando una subdivisión N x N solo puede usarse para la unidad de codificación más pequeña.
La parte de predicción 230 y 235 puede incluir una parte de determinación de unidad de predicción, una parte de inter predicción y una parte intra predicción. La parte de determinación de la unidad de predicción puede recibir diversa información tal como información de la unidad de predicción introducida por la parte de descodificación de entropía 210, información del modo de predicción del método de predicción intra, información relacionada con la predicción de movimiento de un método de interpredicción, y similares. A continuación, la parte de determinación de la unidad de predicción puede identificar la unidad de predicción a partir de la unidad de codificación actual, y determinar si la unidad de predicción realiza interpredicción o intrapredicción. La parte de inter predicción 230 puede realizar una inter predicción sobre la unidad de predicción actual basándose en información incluida en al menos una imagen de entre imágenes antes o después de la imagen actual que incluye la unidad de predicción actual mediante el uso de información necesaria para inter predicción de la unidad de predicción actual proporcionada por el codificador de vídeo. Como alternativa, la parte de inter predicción 230 puede realizar una inter predicción basándose en información acerca de un área parcial previamente reconstruida en la imagen actual que incluye la unidad de inter predicción actual.
Para realizar una inter predicción, puede determinarse, basándose en la unidad de codificación, si el método de predicción de movimiento de la unidad de predicción incluida en una unidad de codificación correspondiente es un modo de omisión, un modo de fusión, un modo de predicción de vector de movimiento avanzado (modo de AMVP) o un modo de copia de intra bloque.
La parte de intra predicción 235 puede generar un bloque de predicción basándose en la información acerca del píxel en la imagen actual. Cuando la unidad de intra predicción es una unidad de intra predicción que ha realizado una intra predicción, la intra predicción puede realizarse basándose en información de modo de intra predicción de la unidad de intra predicción proporcionada por el codificador de vídeo. La parte de intra predicción 235 puede incluir un filtro de intra alisado adaptativo (AIS), una parte de interpolación de píxel de referencia y un filtro de CC. El filtro de AIS es una parte que realiza el filtrado sobre el píxel de referencia del bloque actual, y puede determinar si aplicar, o no, el filtro de acuerdo con el modo de predicción de la unidad de predicción actual y se aplica el filtro. El filtrado de AIS puede realizarse sobre el píxel de referencia del bloque actual mediante el uso del modo de predicción e información de filtro de AIS de la unidad de predicción proporcionada por el codificador de vídeo. Cuando el modo de predicción del bloque actual es un modo que no realiza el filtrado de AIS, el filtro de AIS puede no aplicarse.
Cuando el modo de predicción de la unidad de predicción es una unidad de intra predicción que realiza una intra predicción basándose en un valor de píxel obtenido mediante la interpolación del píxel de referencia, la parte de interpolación de píxel de referencia puede generar un píxel de referencia de una unidad de píxel que tiene un valor entero o un valor menor que el valor entero mediante la interpolación del píxel de referencia. Cuando el modo de predicción de la unidad de predicción actual es un modo de predicción que genera un bloque de predicción sin interpolar el píxel de referencia, el píxel de referencia puede no interpolarse. El filtro de CC puede generar un bloque de predicción a través del filtrado cuando el modo de predicción del bloque actual es el modo de CC.
El bloque o imagen reconstruida puede proporcionarse a la parte de filtro 240. La parte de filtro 240 puede incluir un filtro de desbloqueo, una unidad de corrección de desplazamiento y un ALF.
El codificador de vídeo puede proporcionar información acerca de si se aplica un filtro de desbloqueo a un bloque o imagen correspondiente e información acerca de si se aplica un filtro fuerte o un filtro débil cuando se aplica un filtro de desbloqueo. El filtro de desbloqueo del descodificador de vídeo puede proporcionarse con información relacionada con el filtro de desbloqueo proporcionado por el codificador de vídeo, y el descodificador de vídeo puede realizar filtrado de desbloqueo sobre un bloque correspondiente.
La unidad de corrección de desplazamiento puede realizar corrección de desplazamiento sobre la imagen reconstruida basándose en el tipo de corrección de desplazamiento y la información de valor de desplazamiento aplicada al vídeo cuando se realiza la codificación.
El ALF puede aplicarse a una unidad de codificación basándose en información acerca de si aplicar, o no, el ALF e información acerca de coeficientes ALF proporcionados por el codificador. La información de ALF puede proporcionarse para incluirse en un conjunto de parámetros específico.
La memoria 245 puede almacenar la imagen o bloque reconstruido y usarlo como una imagen de referencia o un bloque de referencia y puede proporcionar la imagen reconstruida a una unidad de salida.
La figura 3 es una vista que muestra una unidad básica de árbol de codificación de acuerdo con una forma de realización de la presente descripción.
Un bloque de codificación de un tamaño máximo puede definirse como un bloque de árbol de codificación. Una imagen se subdivide en varias unidades de árbol de codificación (CTU). La unidad de árbol de codificación es una unidad de codificación que tiene un tamaño máximo y puede denominarse unidad de codificación grande (LCU). La figura 3 muestra un ejemplo en el que una imagen se subdivide en varias unidades de árbol de codificación.
El tamaño de la unidad de árbol de codificación puede definirse a un nivel de imagen o a un nivel de secuencia. Para este fin, puede señalizarse información que indica el tamaño de la unidad de árbol de codificación a través de un conjunto de parámetros de imagen o un conjunto de parámetros de secuencia.
Por ejemplo, el tamaño de la unidad de árbol de codificación para toda la imagen en una secuencia puede establecerse a 128 x 128. Como alternativa, al nivel de imagen, puede determinarse uno cualquiera de entre 128 x 128 y 256 x 256 como el tamaño de la unidad de árbol de codificación. Por ejemplo, el tamaño de la unidad de árbol de codificación puede establecerse a 128 x 128 en una primera imagen, y el tamaño de la unidad de árbol de codificación puede establecerse a 256 x 256 en una segunda imagen.
Pueden generarse bloques de codificación subdividiendo una unidad de árbol de codificación. El bloque de codificación indica una unidad básica para realizar una codificación/descodificación. Por ejemplo, puede realizarse predicción o transformada para cada bloque de codificación, o puede determinarse un modo de codificación de predicción para cada bloque de codificación. En el presente caso, el modo de codificación de predicción indica un método para generar una imagen de predicción. Por ejemplo, el modo de codificación de predicción puede incluir predicción dentro de una imagen (intra predicción), predicción entre imágenes (inter predicción), referenciación de imagen actual (CPR) o copia de intra bloque (IBC) o predicción combinada. Para el bloque de codificación, puede generarse un bloque de predicción mediante el uso de al menos un modo de codificación de predicción de entre la intra predicción, la inter predicción, la referenciación de imagen actual y la predicción combinada.
Puede señalizarse información que indica el modo de codificación de predicción del bloque actual a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit que indica si el modo de codificación de predicción es un modo intra o un modo inter. Solo cuando el modo de codificación de predicción del bloque actual se determina como el modo inter, puede usarse la referenciación de imagen actual o la predicción combinada.
La referenciación de imagen actual es para establecer la imagen actual como una imagen de referencia y obtener un bloque de predicción del bloque actual de un área que ya se ha codificado/descodificado en la imagen actual. En el presente caso, la imagen actual significa una imagen que incluye el bloque actual. Puede señalizarse información que indica si la referenciación de imagen actual se aplica al bloque actual a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit. Cuando el indicador es verdadero, el modo de codificación de predicción del bloque actual se puede determinar como la referencia a la imagen actual, y cuando el indicador es falso, el modo de predicción del bloque actual se puede determinar como interpredicción.
Como alternativa, puede determinarse el modo de codificación de predicción del bloque actual basándose en un índice de imagen de referencia. Por ejemplo, cuando el índice de la imagen de referencia indica la imagen actual, el modo de codificación de predicción del bloque actual se puede determinar como la referencia a la imagen actual. Cuando el índice de imagen de referencia indica una imagen que no es la imagen actual, el modo de codificación de predicción del bloque actual puede determinarse como inter predicción. Es decir, la referenciación de imagen actual es un método de predicción que usa información acerca de un área en la que se ha completado la codificación/descodificación en la imagen actual, y la inter predicción es un método de predicción que usa información acerca de otra imagen en la que se ha completado la codificación/descodificación.
La predicción combinada representa un modo de codificación en el que se combinan dos o más de entre la intra predicción, la inter predicción y la referenciación de imagen actual. Por ejemplo, cuando se aplica la predicción combinada, se puede generar un primer bloque de predicción en función de una de la intrapredicción la interpredicción y la referencia de la imagen actual, y un segundo bloque de predicción basado en otra. Cuando se generan el primer bloque de predicción y el segundo bloque de predicción, puede generarse un bloque de predicción final a través de una operación promedio o una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. Puede señalizarse información que indica si la predicción combinada se aplica, o no, a través de un flujo de bits. La información puede ser una bandera de 1 bit.
La figura 4 es una vista que muestra diversos tipos de subdivisión de un bloque de codificación.
El bloque de codificación puede subdividirse en varios bloques de codificación basándose en una subdivisión de árbol cuádruple, una subdivisión de árbol binario o una subdivisión de árbol ternario. El bloque de codificación subdividido puede subdividirse de nuevo en varios bloques de codificación basándose en la subdivisión de árbol cuádruple, la subdivisión de árbol binario o la subdivisión de árbol ternario.
La subdivisión de árbol cuádruple se refiere a una técnica de subdivisión que subdivide un bloque actual en cuatro bloques. Como resultado de la partición de árbol cuádruple, el bloque actual puede dividirse en cuatro subdivisiones cuadradas (véase "SPLIT_QT" de la figura 4 (a)).
La subdivisión de árbol binario se refiere a una técnica de subdivisión que subdivide un bloque actual en dos bloques. Subdividir un bloque actual en dos bloques a lo largo de la dirección vertical (es decir, usar una línea vertical que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección vertical, y subdividir un bloque actual en dos bloques a lo largo de la dirección horizontal (es decir, usar una línea horizontal que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección horizontal. Como resultado de la subdivisión de árbol binario, el bloque actual puede subdividirse en dos subdivisiones de forma no cuadrada. 'SPLIT_BT_VER' de la figura 4 (b) muestra un resultado de la subdivisión de árbol binario de dirección vertical y 'SPLIT_BT_HOR' de la figura 4 (c) muestra un resultado de la subdivisión de árbol binario de dirección horizontal.
La subdivisión de árbol ternario se refiere a una técnica de subdivisión que subdivide un bloque actual en tres bloques. Subdividir un bloque actual en tres bloques a lo largo de la dirección vertical (es decir, usar dos líneas verticales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección vertical, y subdividir un bloque actual en tres bloques a lo largo de la dirección horizontal (es decir, usar dos líneas horizontales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección horizontal. Como resultado de la subdivisión de árbol ternario, el bloque actual puede subdividirse en tres subdivisiones de forma no cuadrada. En este punto, la anchura/altura de una subdivisión situada en el centro del bloque actual puede ser dos veces más grande que la anchura/altura de las otras subdivisiones. 'SPLIT_TT_VER' de la figura 4 (d) muestra un resultado de la subdivisión de árbol ternario de dirección vertical y 'SPLIT_TT_HOR' de la figura 4 (e) muestra un resultado de la subdivisión de árbol ternario de dirección horizontal.
El número de veces de subdivisión de una unidad de árbol de codificación puede definirse como una profundidad de subdivisión. La profundidad de subdivisión máxima de una unidad de árbol de codificación puede determinarse a un nivel de secuencia o de imagen. En consecuencia, la profundidad de subdivisión máxima de una unidad de árbol de codificación puede ser diferente para cada secuencia o imagen.
Como alternativa, la profundidad de subdivisión máxima para cada técnica de subdivisión puede determinarse individualmente. Por ejemplo, la profundidad de subdivisión máxima permitida para la subdivisión de árbol cuádruple puede ser diferente de la profundidad de subdivisión máxima permitida para la subdivisión de árbol binario y/o la subdivisión de árbol ternario.
El codificador puede señalizar información que indica al menos uno de entre el tipo de subdivisión y la profundidad de subdivisión del bloque actual a través de un flujo de bits. El descodificador puede determinar el tipo de subdivisión y la profundidad de subdivisión de una unidad de árbol de codificación basándose en la información analizada desde el flujo de bits.
La figura 5 es una vista que muestra un patrón de subdivisión de una unidad de árbol de codificación.
Subdividir un bloque de codificación usando una técnica de subdivisión tal como una subdivisión de árbol cuádruple, una subdivisión de árbol binario y/o subdivisión de árbol ternario puede denominarse subdivisión de árbol múltiple.
Los bloques de codificación generados mediante la aplicación de la subdivisión de árbol múltiple a un bloque de codificación pueden denominarse bloques de codificación inferiores. Cuando la profundidad de subdivisión de un bloque de codificación es k, la profundidad de subdivisión de los bloques de codificación inferiores se establece a k 1.
Por el contrario, para los bloques de codificación que tienen una profundidad de subdivisión de k 1, un bloque de codificación que tiene una profundidad de subdivisión de k puede denominarse bloque de codificación superior.
El tipo de subdivisión del bloque de codificación actual puede determinarse basándose en al menos uno de entre un tipo de subdivisión de un bloque de codificación superior y un tipo de subdivisión de un bloque de codificación vecino. En el presente caso, el bloque de codificación vecino es un bloque de codificación adyacente al bloque de codificación actual y puede incluir al menos uno de entre un bloque vecino superior y un bloque vecino izquierdo del bloque de codificación actual, y un bloque vecino adyacente a la esquina superior izquierda. En el presente caso, el tipo de subdivisión puede incluir al menos uno de entre si una subdivisión de árbol cuádruple, si una subdivisión de árbol binario, una dirección de subdivisión de árbol binario, si una subdivisión de árbol ternario y una dirección de subdivisión de árbol ternario o no.
Para determinar un tipo de subdivisión de un bloque de codificación, puede señalizarse información que indica si puede subdividirse, o no, el bloque de codificación a través de un flujo de bits. La información es un indicador de 1 bit de 'split_cu_flag', y cuando el indicador es true, indica que el bloque de codificación se subdivide mediante una técnica de subdivisión multiárbol.
Cuando split_cu_flag es true, puede señalizarse información que indica si el bloque de codificación se subdivide en árbol cuádruple a través de un flujo de bits. La información es una bandera de 1 bit de split_qt_flag, y cuando la bandera es true, el bloque de codificación puede subdividirse en cuatro bloques.
Por ejemplo, en el ejemplo mostrado en la figura 5, como una unidad de árbol de codificación se subdivide en árbol cuádruple, se generan cuatro bloques de codificación que tienen una profundidad de subdivisión de 1. Además, se muestra que la subdivisión de árbol cuádruple se aplica de nuevo al primer y cuarto bloque de codificación de entre los cuatro bloques de codificación generados como resultado de la subdivisión de árbol cuádruple. Como resultado, pueden generarse cuatro bloques de codificación que tienen una profundidad de subdivisión de 2.
Además, los bloques de codificación que tienen una profundidad de subdivisión de 3 pueden generarse mediante la aplicación de la subdivisión de árbol cuádruple de nuevo a un bloque de codificación que tiene una profundidad de subdivisión de 2.
Cuando no se aplica una subdivisión de árbol cuádruple al bloque de codificación, puede determinarse si se realiza una subdivisión de árbol binario o una subdivisión de árbol ternario sobre el bloque de codificación considerando al menos uno de entre el tamaño del bloque de codificación, si el bloque de codificación se sitúa en la frontera de imagen, la profundidad de subdivisión máxima y el tipo de subdivisión de un bloque vecino. Cuando se determina realizar una subdivisión de árbol binario o una subdivisión de árbol ternario sobre el bloque de codificación, puede señalizarse información que indica la dirección de subdivisión a través de un flujo de bits. La información puede ser una bandera de 1 bit de mtt_split_cu_vertical_flag. Basándose en la bandera, puede determinarse si la dirección de subdivisión es una dirección vertical o una dirección horizontal. Además, puede señalizarse información que indica si se aplica una subdivisión de árbol binario o una subdivisión de árbol ternario al bloque de codificación a través de un flujo de bits. La información puede ser una bandera de 1 bit de mtt_split_cu_binary_flag. Basándose en la bandera, puede determinarse si se aplica una subdivisión de árbol binario o una subdivisión de árbol ternario al bloque de codificación.
Por ejemplo, en el ejemplo mostrado en la figura 5, se muestra que la subdivisión de árbol binario de dirección vertical se aplica a un bloque de codificación que tiene una profundidad de subdivisión de 1, la subdivisión de árbol ternario de dirección vertical se aplica al bloque de codificación del lado izquierdo de entre los bloques de codificación generados como resultado de la subdivisión y la subdivisión de árbol binario de dirección vertical se aplica al bloque de codificación del lado derecho.
Cuando se implementa un aparato para codificar o descodificar un vídeo, existe un problema en que una región mayor que un valor umbral es difícil de procesar debido al rendimiento de hardware. Por ejemplo, existe un problema en que cuando es posible procesar simultáneamente hasta 4.096 muestras basándose en el rendimiento de hardware, las unidades de datos de un tamaño de 64 x 64 deberían tener acceso redundante y procesarse, y los datos no pueden procesarse simultáneamente para las regiones que tienen más de 4.096 muestras. De esta forma, una unidad básica de procesamiento de datos puede definirse como una unidad básica de datos basada en canalización (unidad de datos de procesamiento virtual, VPDU, denominada, en lo sucesivo en el presente documento, unidad básica de datos).
La unidad básica de datos puede clasificarse como un tipo cuadrado, no cuadrado o no rectangular.
La figura 6 es una vista que muestra las formas de las unidades básicas de datos.
Las unidades básicas de datos pueden incluir tantas muestras como o menos que el número máximo de muestras que pueden procesarse simultáneamente. Por ejemplo, como se muestra en el ejemplo de la figura 6 (a), bloques cuadrados que tienen un tamaño de 64 x 64 pueden establecerse como unidades básicas de datos. Como alternativa, los bloques no cuadrados pueden establecerse como unidades básicas de datos. Por ejemplo, como se muestra en el ejemplo de la figura 6 (b) o 6 (c), un bloque que tiene un tamaño de 32 x 128 o un bloque que tiene un tamaño de 64 x 32 puede establecerse como una unidad básica de datos.
Aunque no se muestra, pueden definirse unidades básicas de datos triangulares, en forma de L y poligonales.
Puede señalizarse información para determinar una unidad básica de datos a través de un flujo de bits. La información puede ser para determinar al menos uno de entre el tamaño y la forma de la unidad básica de datos. Basándose en la información, puede determinarse si permitir, o no, una unidad básica de datos no cuadrada o si permitir, o no, una unidad básica de datos no rectangular.
Como alternativa, al menos uno de entre el tamaño y la forma de una unidad básica de datos puede definirse previamente en el codificador y en el descodificador.
Puede determinarse si permitir, o no, un tipo de subdivisión de un bloque de codificación considerando el tamaño de una unidad básica de datos. Por ejemplo, cuando un bloque de codificación generado como resultado de subdividir un bloque de codificación es mayor que la unidad básica de datos puede no permitirse la subdivisión. Como alternativa, cuando un bloque de codificación no cuadrado generado como resultado de subdividir un bloque de codificación es más grande que la unidad básica de datos, la subdivisión puede no permitirse. Por ejemplo, cuando la anchura o la altura de un bloque de codificación es mayor que un valor umbral o cuando el número de muestras incluidas en un bloque de codificación es mayor que un valor umbral, la partición de árbol binario o ternario puede no estar permitida. En consecuencia, puede omitirse la codificación de información relacionada con la subdivisión de árbol binario o de árbol ternario.
Como alternativa, puede establecerse subdividir necesariamente un bloque de codificación más grande que la unidad básica de datos. Como alternativa, puede establecerse realizar necesariamente una subdivisión de árbol binario o una subdivisión de árbol ternario sobre un bloque de codificación más grande que la unidad básica de datos. En consecuencia, para un bloque de codificación mayor que la unidad básica de datos, aunque la bandera split_flag que indica si subdividir, o no, un bloque de codificación no se codifica, el valor de la bandera puede derivarse como 1.
Como otro ejemplo, un bloque de codificación más grande que la unidad básica de datos puede subdividirse en varios subbloques. En el presente caso, el subbloque puede establecerse como una unidad de predicción, que es una unidad básica para predicción, o una unidad de transformada, que es una unidad básica para transformada y/o cuantificación. En este punto, subdividir un bloque de codificación en varias unidades de predicción puede definirse como una subdivisión de unidad de predicción de VPDU y subdividir un bloque de codificación en varias unidades de transformada puede definirse como una subdivisión de unidad de transformada de VPDU.
Al menos uno de entre la subdivisión de unidad de predicción de VPDU y la subdivisión de unidad de transformada de VPDU puede aplicarse a un bloque de codificación. Puede establecerse que el tipo de subdivisión de un bloque de codificación de acuerdo con la aplicación de la subdivisión de unidad de predicción de VPDU sea igual que el tipo de subdivisión de un bloque de codificación de acuerdo con la aplicación de la subdivisión de unidad de transformada de VPDU.
Cuando solo la subdivisión de unidad de predicción de VPDU se aplica a un bloque de codificación, se realiza predicción para cada subbloque, pero puede realizarse transformada y/o cuantificación para un bloque de codificación. En este punto, puede determinarse un modo de predicción tal como un modo de codificación de predicción, un modo de intra predicción o un modo de inter predicción para un bloque de codificación.
Cuando solo se aplica la subdivisión de unidad de transformada de VPDU a un bloque de codificación, se realiza predicción para un subbloque, pero puede realizarse transformada y/o cuantificación para cada subbloque.
Las figuras 7 y 8 son vistas que muestran ejemplos de partición de un bloque de codificación en varios subbloques.
La figura 7 es una vista que muestra un patrón de subdivisión cuando solo se permite una unidad básica de datos cuadrada y la figura 8 es una vista que muestra un patrón de subdivisión cuando se permiten una unidad básica de datos cuadrada y una unidad básica de datos no cuadrada.
Cuando se supone que sólo se permiten unidades básicas de datos cuadradas, en las FIG. 7 (a) y 7 (b), CU0 y CU2 se definen como dos VPDU diferentes, y CU1 se define como cuatro VPDU diferentes. En consecuencia, CU0 y CU2 pueden subdividirse en dos subbloques, y CU1 puede subdividirse en cuatro subbloques.
Cuando se asume que se permiten unidades básicas de datos cuadrados y unidades básicas de datos no cuadrados, en la figura 8 (a) y 8 (b), CU0 y CU2 pueden definirse como una VPDU, mientras que CU1 puede definirse usando dos VPDU diferentes. En consecuencia, CU0 y CU2 no se subdividen en subbloques, mientras CU1 puede subdividirse en dos subbloques.
En este punto, CU1 puede subdividirse en subbloques cuadrados o subbloques no cuadrados. Por ejemplo, CU1 puede subdividirse en dos subbloques cuadrados basándose en una línea horizontal que subdivide la CU1 arriba y abajo. Como alternativa, CU1 puede subdividirse en dos subbloques no cuadrados basándose en una línea vertical que subdivide la CU1 a izquierda y derecha.
Cuando hay varios candidatos de tipo de subdivisión aplicables a un bloque de codificación, puede señalizarse información que indica uno cualquiera de entre los varios candidatos de tipo de subdivisión a través de un flujo de bits. Por ejemplo, la información puede indicar si un bloque de codificación se subdivide en subbloques cuadrados o si un bloque de codificación se subdivide en subbloques no cuadrados.
Como alternativa, puede establecerse que la subdivisión de un bloque de codificación en subbloques cuadrados tenga una prioridad más alta que la de subdividir un bloque de codificación en subbloques no cuadrados. Por ejemplo, la subdivisión de un bloque de codificación en subbloques no cuadrados pueden permitirse cuando no se permite subdividir un bloque de codificación en subbloques cuadrados.
Como alternativa, puede determinarse el tipo de subdivisión de un bloque de codificación basándose en el tipo de subdivisión de un bloque de codificación de nodo primario. Por ejemplo, puede establecerse subdividir un bloque de codificación en subbloques cuadrados cuando el bloque de codificación de nodo primario se subdivide basándose en un árbol ternario. Por otra parte, puede establecerse subdividir un bloque de codificación en subbloques no cuadrados cuando el bloque de codificación de nodo primario se subdivide basándose en un árbol binario o un árbol ternario.
La inter predicción es un modo de codificación de predicción que predice un bloque actual mediante el uso de información de una imagen previa. Por ejemplo, un bloque en la misma posición que el bloque actual en la imagen previa (en lo sucesivo en el presente documento, un bloque ubicado conjuntamente) puede establecerse como el bloque de predicción del bloque actual. En lo sucesivo en el presente documento, un bloque de predicción generado basándose en un bloque en la misma posición que el bloque actual se denominará bloque de predicción ubicado conjuntamente.
Por otra parte, cuando un objeto existente en la imagen previa se ha movido a otra posición en la imagen actual, el bloque actual puede predecirse eficazmente mediante el uso de un movimiento del objeto. Por ejemplo, cuando pueden conocerse la dirección de movimiento y el tamaño de un objeto mediante la comparación de la imagen previa y la imagen actual, puede generarse un bloque de predicción (o una imagen de predicción) del bloque actual considerando información de movimiento del objeto. En lo sucesivo en el presente documento, el bloque de predicción generado usando información de movimiento puede denominarse bloque de predicción de movimiento.
Puede generarse un bloque residual restando el bloque de predicción del bloque actual. En este punto, cuando hay un movimiento de un objeto, la energía del bloque residual puede reducirse mediante el uso del bloque de predicción de movimiento en lugar del bloque de predicción ubicado conjuntamente y, por lo tanto, puede mejorarse el rendimiento de compresión del bloque residual.
Como se ha descrito anteriormente, generar un bloque de predicción mediante el uso de información de movimiento puede denominarse predicción de compensación de movimiento. En la mayoría de inter predicción, puede generarse un bloque de predicción basándose en la predicción de compensación de movimiento.
La información de movimiento puede incluir al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional. El vector de movimiento representa la dirección de movimiento y el tamaño de un objeto. El índice de imagen de referencia especifica una imagen de referencia del bloque actual de entre imágenes de referencia incluidas en una lista de imágenes de referencia. La dirección de predicción indica una cualquiera de entre una predicción L0 unidireccional, una predicción L1 unidireccional y una predicción bidireccional (predicción L0 y predicción L1). De acuerdo con la dirección de predicción del bloque actual, puede usarse al menos una de entre información de movimiento en la dirección L0 e información de movimiento en la dirección L1. El índice de ponderación bidireccional especifica un valor de ponderación aplicado a un bloque de predicción L0 y un valor de ponderación aplicado a un bloque de predicción L1.
La figura 9 es un diagrama de flujo que ilustra un método de interpredicción de acuerdo con una forma de realización de la presente descripción.
Haciendo referencia a la figura 9, el método de inter predicción incluye las etapas de determinar un modo de inter predicción de un bloque actual (S901), adquirir información de movimiento del bloque actual de acuerdo con el modo de inter predicción determinado (S902) y realizar predicción de compensación de movimiento para el bloque actual basándose en la información de movimiento adquirida (S903).
En el presente caso, el modo de inter predicción representa diversas técnicas para determinar información de movimiento del bloque actual, y puede incluir un modo de inter predicción que usa información de movimiento de traslación y un modo de inter predicción que usa información de movimiento afín. Por ejemplo, el modo de interpredicción que utiliza información de movimiento de translación puede incluir un modo de fusión y un modo de predicción de vector de movimiento avanzado, y el modo de interpredicción 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 del movimiento avanzado afín. La información de movimiento del bloque actual puede determinarse basándose en un bloque vecino adyacente al bloque actual o información analizada desde un flujo de bits de acuerdo con el modo de inter predicción.
En lo sucesivo en el presente documento, se describirá con detalle el método de inter predicción que usa información de movimiento afín.
La figura 10 es una vista que muestra movimientos no lineales de un objeto.
Puede generare un movimiento no lineal de un objeto en un vídeo. Por ejemplo, como se muestra en el ejemplo de la figura 10, puede tener lugar un movimiento no lineal de un objeto, tal como un acercamiento, un alejamiento, una rotación, una transformada afín o similares de una cámara. Cuando tiene lugar un movimiento no lineal de un objeto, el movimiento del objeto no puede expresarse eficazmente con un vector de movimiento de traslación. En consecuencia, puede mejorarse la eficiencia de codificación usando un movimiento afín en lugar de un movimiento de traslación en un área en la que tiene lugar un movimiento no lineal de un objeto.
La figura 11 es un diagrama de flujo que ilustra un método de interpredicción basado en un movimiento afín de acuerdo con una forma de realización de la presente descripción.
Puede determinarse si se aplica una técnica de inter predicción basándose en un movimiento afín al bloque actual basándose en la información analizada a partir de un flujo de bits. Específicamente, si la técnica de interpredicción basada en un movimiento afín se aplica al bloque actual se puede determinar en función de al menos uno entre un indicador que indica si el modo de fusión afín se aplica al bloque actual y un indicador que indica si el modo de predicción de vector de movimiento avanzado afín se aplica al bloque actual.
Cuando se aplica la técnica de inter predicción basándose en un movimiento afín al bloque actual, puede determinarse un modelo de movimiento afín del bloque actual (S1101). El modelo de movimiento afín puede determinarse como al menos uno de entre un modelo de movimiento afín de seis parámetros y un modelo de movimiento afín de cuatro parámetros. El modelo de movimiento afín de seis parámetros expresa un movimiento afín usando seis parámetros, y el modelo de movimiento afín de cuatro parámetros expresa un movimiento afín usando cuatro parámetros.
La ecuación 1 expresa un movimiento afín usando seis parámetros. El movimiento afín representa un movimiento no de translación para un área predeterminada determinada por vectores semilla afines.
[Ecuación 1]
v x = ax — ¡)y+ e
Vy=ex+ <fy /
Cuando se expresa un movimiento afín usando seis parámetros, puede expresarse un movimiento complicado. Sin embargo, a medida que aumenta el número de bits requerido para codificar cada uno de los parámetros, puede reducirse la eficiencia de codificación. En consecuencia, el movimiento afín puede expresarse usando cuatro parámetros. La ecuación 2 expresa un movimiento afín usando cuatro parámetros.
[Ecuación 2]
vx = ax—by+ e
vy = bx+ny4 /
Puede codificarse información para determinar un modelo de movimiento afín del bloque actual, y señalizarse la misma a través de un flujo de bits. Por ejemplo, la información puede ser una bandera de 1 bit de 'affine_type_flag'. Cuando el valor de la bandera es 0, puede indicar que se aplica un modelo de movimiento afín de 4 parámetros, y cuando el valor de la bandera es 1, puede indicar que se aplica un modelo de movimiento afín de 6 parámetros. La bandera puede codificarse mediante la unidad de sector, de tesela o de bloque (por ejemplo, mediante la unidad de bloque de codificación o de árbol de codificación). Cuando se señaliza una bandera al nivel de sector, puede aplicarse un modelo de movimiento afín determinado al nivel de sector a todos los bloques que pertenecen al sector.
Como alternativa, puede determinarse un modelo de movimiento afín del bloque actual basándose en un modo de inter predicción afín del bloque actual. Por ejemplo, cuando se aplica el modo de fusión afín, puede determinarse el modelo de movimiento afín del bloque actual como un modelo de movimiento de 4 parámetros. Por otro lado, cuando se aplica el modo de predicción de vector del movimiento avanzado afín, la información para determinar el modelo de movimiento afín del bloque actual puede codificarse y señalarse a través de un flujo de bits. Por ejemplo, cuando el modo de predicción de vector del movimiento avanzado afín se aplica al bloque actual, el modelo de movimiento afín del bloque actual se puede determinar en función del indicador de 1 bit "affine_type_flag".
A continuación, se puede obtener un vector semilla afín del bloque actual (S 1102). Cuando se selecciona un modelo de movimiento afín de 4 parámetros, pueden derivarse vectores de movimiento en dos puntos de control del bloque actual. Por otro lado, cuando se selecciona un modelo de movimiento afín de 6 parámetros, pueden derivarse vectores de movimiento en tres puntos de control del bloque actual. El vector de movimiento en un punto de control puede denominarse vector de semilla afín. El punto de control puede incluir al menos una de entre la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda del bloque actual.
La figura 12 es una vista que muestra un ejemplo de vectores de semilla afines de cada modelo de movimiento afín.
En el modelo de movimiento afín de 4 parámetros, pueden derivarse vectores de semilla afines para dos de entre la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda. Por ejemplo, según se muestra en el ejemplo de la figura 12 (a), cuando se selecciona un modelo de movimiento afín de 4 parámetros, se puede obtener un vector afín utilizando el vector semilla afín sv0 para la esquina superior izquierda del bloque actual (por ejemplo, la muestra superior izquierda (x0, y0)) y el vector semilla afín sv1 para la esquina superior derecha del bloque actual (por ejemplo, la muestra superior derecha (x1, y1)). También es posible usar un vector de semilla afín para la esquina inferior izquierda en lugar del vector de semilla afín para la esquina superior izquierda, o usar un vector de semilla afín para la esquina inferior izquierda en lugar del vector de semilla afín para la esquina superior derecha.
En el modelo de movimiento afín de 6 parámetros, pueden derivarse vectores de semilla afines para la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda. Por ejemplo, según se muestra en el ejemplo de la figura 12 (b), cuando se selecciona un modelo de movimiento afín de 6 parámetros, se puede obtener un vector afín utilizando el vector semilla afín sv0 para la esquina superior izquierda del bloque actual (por ejemplo, muestra superior izquierda (x0, y0)), el vector semilla afín sv1 para la esquina superior derecha del bloque actual (por ejemplo, la muestra superior derecha (x1, y1)), y el vector semilla afín sv2 para la esquina inferior izquierda del bloque actual (por ejemplo, la muestra inferior izquierda (x2, y2)).
En la realización descrita a continuación, en el modelo de movimiento afín de 4 parámetros, los vectores de semilla afines del punto de control superior izquierdo y del punto de control superior derecho se denominarán primer vector de semilla afín y segundo vector de semilla afín, respectivamente. En las realizaciones que usan el primer vector de semilla afín y el segundo vector de semilla afín descritos a continuación, puede sustituirse al menos uno de entre el primer vector de semilla afín y el segundo vector de semilla afín por el vector de semilla afín del punto de control inferior izquierdo (un tercer vector de semilla afín) o el vector de semilla afín del punto de control inferior derecho (un cuarto vector de semilla afín).
Además, en el modelo de movimiento afín de 6 parámetros, los vectores de semilla afines del punto de control superior izquierdo, el punto de control superior derecho y el punto de control inferior izquierdo se denominarán primer vector de semilla afín, segundo vector de semilla afín y tercer vector de semilla afín, respectivamente. En las realizaciones que usan el primer vector de semilla afín, el segundo vector de semilla afín y el tercer vector de semilla afín descritos a continuación, puede sustituirse al menos uno de entre el primer vector de semilla afín, el segundo vector de semilla afín y el tercer vector de semilla afín por el vector de semilla afín del punto de control inferior derecha (un cuarto vector de semilla afín).
Puede derivarse un vector afín para cada subbloque usando los vectores de semilla afines (S1103). En el presente caso, el vector afín representa un vector de movimiento de traslación derivado basándose en los vectores de semilla afines. El vector afín de un subbloque puede denominarse vector de movimiento de subbloque afín o un vector de movimiento de subbloque.
La figura 13 es una vista que muestra un ejemplo de vectores afines de subbloques en un modelo de movimiento de 4 parámetros.
El vector afín del subbloque puede derivarse basándose en la posición del punto de control, la posición del subbloque y el vector de semilla afín. Por ejemplo, la ecuación 3 muestra un ejemplo de derivación de un vector de subbloque afín.
En la ecuación 3, (x, y) denota la posición de un subbloque. En el presente caso, la posición de un subbloque indica la posición de una muestra de referencia incluida en el subbloque. La muestra de referencia puede ser una muestra situada en la esquina superior izquierda del subbloque o una muestra de la que al menos una de entre las coordenadas del eje x y del eje y es un punto central. (x0, y0) indica la posición del segundo punto de control, y (sv0x, sv0y) indica el segundo vector semilla afín. Además, (x1, y1) denota la posición del segundo punto de control, y (sv1x, sv1y) denota 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, x1-x0 puede fijarse en un valor igual a la anchura del bloque actual.
Posteriormente, puede realizarse una predicción de compensación de movimiento para cada subbloque usando el vector afín de cada subbloque (S1104). Como resultado de la realización de predicción de compensación de movimiento, puede generarse un bloque de predicción para cada subbloque. Los bloques de predicción de los subbloques pueden establecerse como los bloques de predicción del bloque actual.
A continuación, se describirá en detalle un método de predicción intermedia que utiliza información de movimiento de translación.
La información de movimiento del bloque actual puede derivarse de información de movimiento de otro bloque. En el presente caso, otro bloque puede ser un bloque codificado/descodificado mediante inter predicción antes del bloque actual. Establecer que la información de movimiento del bloque actual sea igual a la información de movimiento de otro bloque puede definirse como un modo de fusión. Además, establecer el vector de movimiento de otro bloque como el valor de predicción del vector de movimiento del bloque actual puede definirse como un modo de predicción de vector de movimiento avanzado.
La figura 14 es un diagrama de flujo que ilustra un proceso para derivar información de movimiento de un bloque actual usando un modo de fusión.
Se puede obtener un candidato de fusión del bloque actual (S 1401). El candidato de fusión del bloque actual puede derivarse de un bloque codificado/descodificado mediante inter predicción antes del bloque actual.
La figura 15 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
Los bloques candidatos pueden incluir al menos uno de entre bloques vecinos que incluyen una muestra adyacente al bloque actual o bloques no vecinos que incluyen una muestra no adyacente al bloque actual. En lo sucesivo en el presente documento, las muestras para determinar los bloques candidatos se definen como muestras de referencia. Además, una muestra de referencia adyacente al bloque actual se denomina muestra de referencia vecina, y una muestra de referencia no adyacente al bloque actual se denomina muestra de referencia no vecina.
La muestra de referencia vecina puede incluirse en una columna vecina de la columna más a la izquierda del bloque actual o una fila vecina de la fila más superior del bloque actual. Por ejemplo, cuando las coordenadas de la muestra superior izquierda del bloque actual son (0, 0), puede utilizarse como bloque candidato al menos uno entre un bloque que incluya una muestra de referencia en la posición (-1, H-1), un bloque que incluya una muestra de referencia en la posición (W-1, - 1), un bloque que incluya una muestra de referencia en la posición (W, -1), un bloque que incluya una muestra de referencia en la posición (-1, H) y un bloque que incluya una muestra de referencia en la posición (-1, -1). Haciendo referencia al dibujo, pueden usarse bloques vecinos del índice 0 a 4 como bloques candidatos.
La muestra de referencia no vecina representa una muestra de la cual al menos una de entre una distancia del eje x y una distancia del eje y con respecto a una muestra de referencia adyacente al bloque actual tiene un valor predefinido. Por ejemplo, puede usarse al menos uno de entre un bloque que incluye una muestra de referencia de la cual la distancia del eje x con respecto a la muestra de referencia izquierda es un valor predefinido, un bloque que incluye una muestra no vecina de la cual la distancia del eje y con respecto a la muestra de referencia superior es un valor predefinido, y un bloque que incluye una muestra no vecina de la cual la distancia del eje x y la distancia del eje y con respecto a la muestra de referencia superior izquierda son valores predefinidos como un bloque candidato. Los valores predefinidos pueden ser un número natural tal como 4, 8, 12, 16 o similares. Haciendo referencia al dibujo, puede usarse al menos uno de entre los bloques del índice 5 a 26 como un bloque candidato.
Una muestra que no esté situada en la misma línea vertical, horizontal o diagonal que la muestra de referencia vecina se puede establecer como muestra de referencia no vecina.
La figura 16 es una vista que muestra las posiciones de las muestras de referencia.
Según se muestra en el ejemplo de la figura 16, las coordenadas x de las muestras de referencia no vecinas superiores se pueden establecer para que sean diferentes de las coordenadas x de las muestras de referencia vecinas superiores. Por ejemplo, cuando la posición de la muestra de referencia vecina superior es (W-1, -1), la posición de una muestra de referencia no vecina superior separada tanto como N de la muestra de referencia vecina superior en el eje y se puede establecer en ((W/2)-1, -1-N), y la posición de una muestra de referencia no vecina superior separada tanto como 2N de la muestra de referencia vecina superior en el eje y se puede establecer en (0, -1-2N). Es decir, la posición de una muestra de referencia no adyacente se puede determinar en función de la posición de una muestra de referencia adyacente y una distancia desde la muestra de referencia adyacente.
En lo sucesivo, un bloque candidato que incluya una muestra de referencia vecina entre los bloques candidatos se denominará bloque vecino, y un bloque que incluya una muestra de referencia no vecina se denominará bloque no vecino.
Cuando la distancia entre el bloque actual y el bloque candidato es mayor o igual que un valor umbral, el bloque candidato se puede establecer como no disponible como candidato de fusión. El valor umbral se puede determinar en función del tamaño de la unidad de árbol de codificación. Por ejemplo, el valor umbral se puede establecer en la altura (ctu_height) de la unidad de árbol de codificación o en un valor obtenido sumando o restando un desplazamiento a o desde la altura (por ejemplo, ctu_height ± N) de la unidad de árbol de codificación. El desplazamiento N es un valor predefinido en el codificador y el descodificador, y se puede establecer en 4, 8, 16, 32 o ctu_height.
Cuando la diferencia entre la coordenada del eje y del bloque actual y la coordenada del eje y de una muestra incluida en un bloque candidato es mayor que el valor umbral, se puede determinar que el bloque candidato no está disponible como candidato de fusión.
Como alternativa, puede establecerse que un bloque candidato que no pertenece a la misma unidad de árbol de codificación que el bloque actual no esté disponible como candidato de fusión. Por ejemplo, cuando una muestra de referencia se desvía de la frontera superior de una unidad de árbol de codificación a la que pertenece el bloque actual, puede establecerse que un bloque candidato que incluye la muestra de referencia no esté disponible como candidato de fusión.
Cuando el límite superior del bloque actual es adyacente al límite superior de la unidad de árbol de codificación, se determina que varios bloques candidatos no están disponibles como candidatos de fusión y, por lo tanto, la eficacia de codificación/descodificación del bloque actual puede disminuir. Para resolver este problema, los bloques candidatos pueden establecerse de forma que el número de bloques candidatos situados en el lado izquierdo del bloque actual sea mayor que el número de bloques candidatos situados en la parte superior del bloque actual.
La figura 17 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
Según se muestra en el ejemplo de la figura 17, los bloques superiores que pertenecen a las N columnas superiores del bloque actual y los bloques del lado izquierdo que pertenecen a las M columnas del lado izquierdo del bloque actual pueden establecerse como bloques candidatos. En este punto, el número de bloques candidatos del lado izquierdo puede ser mayor que el número de bloques candidatos superiores estableciendo M mayor que N.
Por ejemplo, la diferencia entre la coordenada del eje y de la muestra de referencia en el bloque actual y la coordenada del eje y del bloque superior que puede utilizarse como bloque candidato se puede establecer de modo que no supere N veces la altura del bloque actual. Además, la diferencia entre la coordenada del eje x de la muestra de referencia en el bloque actual y la coordenada del eje x del bloque del lado izquierdo que puede utilizarse como bloque candidato se puede establecer de modo que no supere M veces la anchura del bloque actual.
Por ejemplo, en el ejemplo mostrado en la figura 17, se muestra que los bloques pertenecientes a las dos columnas de bloque superiores del bloque actual y los bloques pertenecientes a las cinco columnas de bloque izquierdas del bloque actual se establecen como bloques candidatos.
Como otro ejemplo, cuando un bloque candidato no pertenece a una unidad de árbol de codificación igual a la del bloque actual, se puede obtener un candidato de fusión utilizando un bloque que pertenezca a la misma unidad de árbol de codificación que el bloque actual o un bloque que incluya una muestra de referencia adyacente al límite de la unidad de árbol de codificación, en lugar del bloque candidato.
La figura 18 es una vista que muestra un ejemplo en el que se cambia la posición de una muestra de referencia.
Cuando una muestra de referencia está incluida en una unidad de árbol de codificación diferente del bloque actual, y la muestra de referencia no es adyacente al límite de la unidad de árbol de codificación, se puede determinar un bloque candidato utilizando una muestra de referencia adyacente al límite de la unidad de árbol de codificación, en lugar de la muestra de referencia.
Por ejemplo, en los ejemplos mostrados en las figuras 18 (a) y 18 (b), cuando el límite superior del bloque actual y el límite superior de la unidad de árbol de codificación están en contacto entre sí, las muestras de referencia en la parte superior del bloque actual pertenecen a una unidad de árbol de codificación diferente del bloque actual. Entre las muestras de referencia pertenecientes a la unidad de árbol de codificación diferente del bloque actual, una muestra de referencia no adyacente al límite superior de la unidad de árbol de codificación puede sustituirse por una muestra adyacente al límite superior de la unidad de árbol de codificación.
Por ejemplo, según se muestra en el ejemplo de la figura 18 (a), la muestra de referencia en la posición 6 se sustituye por la muestra en la posición 6' colocada en el límite superior de la unidad de árbol de codificación, y según se muestra en el ejemplo de la figura 18 (b), la muestra de referencia en la posición 15 se sustituye por la muestra en la posición 15' colocada en el límite superior de la unidad de árbol de codificación En este punto, la coordenada y de la muestra de reemplazo se cambia a una posición adyacente a la unidad de árbol de codificación, y la coordenada x de la muestra de reemplazo se puede establecer para ser igual a la muestra de referencia. Por ejemplo, la muestra en la posición 6' puede tener la misma coordenada x que la muestra en la posición 6, y la muestra en la posición 15' puede tener la misma coordenada x que la muestra en la posición 15.
Como alternativa, un valor obtenido sumando o restando un desplazamiento a o desde la coordenada x de la muestra de referencia se puede establecer como la coordenada x de la muestra de sustitución. Por ejemplo, cuando las coordenadas x de la muestra de referencia vecina situada en la parte superior del bloque actual y la muestra de referencia no vecina son iguales, un valor obtenido sumando o restando un desplazamiento a o desde la coordenada x de la muestra de referencia se puede establecer como la coordenada x de la muestra de sustitución. De este modo se evita que la muestra de sustitución que reemplaza a la muestra de referencia no vecina se coloque en la misma posición que otra muestra de referencia no vecina o muestra de referencia vecina.
La figura 19 es una vista que muestra un ejemplo en el que se cambia la posición de una muestra de referencia.
Al sustituir una muestra de referencia incluida en una unidad de árbol de codificación distinta del bloque actual y que no es adyacente al límite de la unidad de árbol de codificación por una muestra situada en el límite de la unidad de árbol de codificación, se puede establecer como coordenada x de la muestra de sustitución un valor obtenido sumando o restando un desplazamiento hacia y desde la coordenada x de la muestra de referencia.
Por ejemplo, en el ejemplo mostrado en la figura 19, la muestra de referencia en la posición 6 y la muestra de referencia en la posición 15 pueden sustituirse por la muestra en la posición 6' y la muestra en la posición 15' respectivamente, cuyas coordenadas y son las mismas que las de la fila adyacente al límite superior de la unidad de árbol de codificación. En este punto, la coordenada x de la muestra en la posición 6' se puede establecer en un valor obtenido restando W/2 de la coordenada x de la muestra de referencia en la posición 6, y la coordenada x de la muestra en la posición 15' se puede establecer en un valor obtenido restando W-1 de la coordenada x de la muestra de referencia en la posición 15.
A diferencia de los ejemplos mostrados en las figuras 18 y 19, la coordenada y de la fila situada en la parte superior de la fila superior del bloque actual o la coordenada y del límite superior de la unidad de árbol de codificación se puede establecer como la coordenada y de la muestra de sustitución.
Aunque no se muestra, se puede determinar una muestra que sustituya a la muestra de referencia en función del límite del lado izquierdo de la unidad de árbol de codificación. Por ejemplo, cuando la muestra de referencia no está incluida en la misma unidad de árbol de codificación que el bloque actual y no es adyacente al límite izquierdo de la unidad de árbol de codificación, la muestra de referencia puede sustituirse por una muestra adyacente al límite izquierdo de la unidad de árbol de codificación. En este punto, la muestra de sustitución puede tener una coordenada y igual a la de la muestra de referencia, o puede tener una coordenada y obtenida sumando o restando un desplazamiento hacia y desde la coordenada y de la muestra de referencia.
A continuación, un bloque que incluya la muestra de sustitución se puede establecer como bloque candidato, y un candidato de fusión del bloque actual se puede obtener en función del bloque candidato.
Un candidato de fusión también puede derivarse de un bloque temporalmente vecino incluido en una imagen diferente del bloque actual. Por ejemplo, un candidato de fusión puede derivarse de un bloque ubicado conjuntamente incluido en una imagen ubicada conjuntamente.
Puede establecerse que la información de movimiento del candidato de fusión sea igual a la información de movimiento del bloque candidato. Por ejemplo, al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional del bloque candidato puede establecerse como información de movimiento del candidato de fusión.
Puede generarse una lista de candidatos de fusión que incluya candidatos de fusión (S 1402). Los candidatos de fusión pueden dividirse en un candidato de fusión adyacente obtenido de un bloque vecino adyacente al bloque actual y un candidato de fusión no adyacente obtenido de un bloque no vecino.
Los índices de los candidatos de fusión en la lista de candidatos de fusión pueden asignarse en un orden predeterminado. Por ejemplo, un índice asignado a un candidato de fusión adyacente puede tener un valor menor que un índice asignado a un candidato de fusión no adyacente. Como alternativa, un índice se puede asignar a cada uno de los candidatos de fusión en función del índice de cada bloque mostrado en la figura 15 o 17.
Cuando se incluye varios candidatos de fusión en la lista de candidatos de fusión, puede seleccionarse al menos uno de entre los varios candidatos de fusión (S1403). En este punto, la información que indica si la información de movimiento del bloque actual se obtiene de un candidato de fusión adyacente se puede indicar a través de un flujo de bits. La información puede ser una bandera de 1 bit. Por ejemplo, un elemento de sintaxis isAdjancentMergeFlag que indique si la información de movimiento del bloque actual se obtiene de un candidato de fusión adyacente se puede indicar a través de un flujo de bits. Cuando el valor del elemento de sintaxis isAdjancentMergeFlag es 1, la información de movimiento del bloque actual se puede obtener en función del candidato de fusión adyacente. Por otra parte, cuando el valor del elemento de sintaxis isAdj ancentMergeFlag es 0, la información de movimiento del bloque actual se puede obtener en función de un candidato de fusión no adyacente.
La Tabla 1 muestra una tabla sintáctica que incluye el elemento sintáctico isAdjancentMergeFlag.
Tabla 1]
co
La información para especificar cualquiera entre varios candidatos de fusión puede ser señalada a través de un flujo de bits. Por ejemplo, la información que indica un índice de cualquiera de los candidatos de fusión incluidos en la lista de candidatos de fusión se puede indicar a través de un flujo de bits.
Cuando isAdjacentMergeflag es 1, se puede indicar el elemento sintáctico merge_idx especificando uno cualquiera de entre los candidatos de fusión adyacentes. El valor máximo del elemento sintáctico merge_idx se puede establecer en un valor obtenido restando 1 del número de candidatos de fusión adyacentes.
Cuando isAdjacentMergeflag es 0, se puede indicar el elemento sintáctico NA_merge_idx especificando uno cualquiera de los candidatos de fusión no adyacentes. El elemento sintáctico NA_merge_idx representa un valor obtenido restando el número de candidatos de fusión adyacentes del índice del candidato de fusión no adyacente. El descodificador puede seleccionar un candidato de fusión no adyacente sumando el número de candidatos de fusión adyacentes a un índice especificado por NA_merge_idx.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es menor que un valor umbral, el candidato de fusión incluido en la lista de información de movimiento entre regiones puede añadirse a la lista de candidatos de fusión. En el presente caso, el valor umbral puede ser el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión o un valor obtenido restando un desplazamiento del número máximo de candidatos de fusión. El desplazamiento puede ser un número natural tal como 1,2 o similares. La lista de información de movimiento entre regiones puede incluir un candidato de fusión derivado basándose en un bloque codificado/descodificado antes del bloque actual.
La lista de información de movimiento entre regiones incluye un candidato de fusión derivado de un bloque codificado/descodificado basándose en la inter predicción en la imagen actual. Por ejemplo, puede establecerse que la información de movimiento de un candidato de fusión incluido en la lista de información de movimiento entre regiones sea igual a la información de movimiento de un bloque codificado/descodificado basándose en una inter predicción. En el presente caso, la información de movimiento puede incluir al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional.
Para facilitar la explicación, un candidato de fusión incluido en la lista de información de movimiento interregional se denominará candidato de fusión interregional.
El número máximo de candidatos de fusión que puede incluir la lista de información de movimiento interregional puede ser predefinido por un codificador y un descodificador. Por ejemplo, el número máximo de candidatos de fusión que pueden incluirse en la lista de información de movimiento interregional puede ser 1, 2, 3, 4, 5, 6, 7, 8 o más (por ejemplo, 16).
Como alternativa, la información que indica el número máximo de candidatos de fusión en la lista de información de movimiento interregional se puede indicar a través de un flujo de bits. La información se puede indicar a nivel de secuencia, imagen o corte.
Como alternativa, el número máximo de candidatos de fusión de la lista de información de movimiento interregional se puede determinar en función del tamaño de una imagen, el tamaño de una rebanada o el tamaño de una unidad de árbol de codificación.
La lista de información de movimiento interregional puede ser inicializada por la unidad de imagen, rebanada, mosaico, ladrillo, unidad de árbol de codificación, o línea de unidad de árbol de codificación (fila o columna). Por ejemplo, cuando se inicializa una rebanada, también se inicializa la lista de información de movimiento interregional, y la lista de información de movimiento interregional puede no incluir ningún candidato de fusión.
Como alternativa, la información que indica si inicializar o no la lista de información de movimiento interregional se puede indicar a través de un flujo de bits. La información puede ser señalada a nivel de rebanada, baldosa, ladrillo o bloque. Hasta que la información indique que se debe inicializar la lista de información de movimiento interregional, se puede utilizar una lista de información de movimiento interregional previamente configurada.
Como alternativa, la información sobre el candidato inicial a la fusión interregional se puede indicar a través de un conjunto de parámetros de imagen o una cabecera de corte. Aunque el corte esté inicializado, la lista de información de movimiento interregional puede incluir el candidato de fusión interregional inicial. En consecuencia, se puede utilizar un candidato de fusión interregional para un bloque que sea el primer objetivo de codificación/descodificación en el corte.
Los bloques se codifican/descodifican según un orden de codificación/descodificación, y los bloques codificados/descodificados basados en la interpredicción pueden establecerse secuencialmente como candidatos de fusión interregional según un orden de codificación/descodificación.
La figura 20 es un diagrama de flujo que ilustra un proceso de actualización de una lista de información de movimiento interregional.
Cuando se lleva a cabo la interpredicción en el bloque actual (S2001), se puede obtener un candidato de fusión interregional en función del bloque actual (S2002). La información de movimiento del candidato de fusión interregional puede ser igual a la información de movimiento del bloque actual.
Cuando la lista de información de movimiento interregional está vacía (S2003), el candidato de fusión interregional obtenido en función del bloque actual se puede añadir a la lista de información de movimiento interregional (S2004).
Cuando la lista de información de movimiento interregional ya incluye el candidato de fusión interregional (S2003), se puede realizar una comprobación de redundancia en la información de movimiento del bloque actual (o del candidato de fusión interregional obtenido en función del bloque actual) (S2005). La comprobación de redundancia sirve para determinar si la información de movimiento de un candidato de fusión interregional almacenada previamente en la lista de información de movimiento interregional y la información de movimiento del bloque actual son iguales. La comprobación de redundancia se puede llevar a cabo en todos los candidatos de fusión interregional previamente almacenados en la lista de información de movimiento interregional. Como alternativa, la comprobación de redundancia se puede llevar a cabo en los candidatos de fusión interregional que tengan un índice mayor que un valor umbral o menor que un valor umbral entre los candidatos de fusión interregional previamente almacenados en la lista de información de movimiento interregional.
Cuando no se incluye un candidato de fusión interregional que tiene la misma información de movimiento que la información de movimiento del bloque actual, el candidato de fusión interregional obtenido del bloque actual se puede añadir a la lista de información de movimiento interregional (S2008). Si los candidatos de fusión interregional son iguales se puede determinar basándose en si la información de movimiento (por ejemplo, un vector de movimiento y/o un índice de la imagen de referencia) de los candidatos de fusión interregional es la misma.
En este punto, cuando el número máximo de candidatos de fusión interregional ya está almacenado en la lista de información de movimiento interregional (S2006), el candidato de fusión interregional más antiguo se elimina (S2007), y el candidato de fusión interregional obtenido en función del bloque actual se puede añadir a la lista de información de movimiento interregional (S2008).
Cada uno de los candidatos de fusión interregional puede identificarse mediante un índice. Cuando un candidato de fusión interregional obtenido del bloque actual se añade a la lista de información de movimiento interregional, el índice más bajo (por ejemplo, 0) se asigna al candidato de fusión interregional, y los índices de los candidatos de fusión interregional almacenados previamente pueden incrementarse en 1. En este punto, cuando el número máximo de candidatos de fusión interregional ya están almacenados en la lista de información de movimiento interregional, se elimina un candidato de fusión interregional que tiene el índice más grande.
Como alternativa, cuando el candidato de fusión interregional obtenido del bloque actual se añade a la lista de información de movimiento interregional, se puede asignar el índice mayor al candidato de fusión interregional. Por ejemplo, cuando el número de candidatos de fusión interregional previamente almacenados en la lista de información de movimiento interregional es menor que un valor máximo, se puede asignar al candidato de fusión interregional un índice que tenga el mismo valor que el número de candidatos de fusión interregional previamente almacenados. Como alternativa, cuando el número de candidatos de fusión interregional almacenados previamente en la lista de información de movimiento interregional es el mismo que el valor máximo, se puede asignar al candidato de fusión interregional un índice que reste 1 al valor máximo. Además, se elimina un candidato de fusión interregional que tenga el índice más pequeño, y los índices de los restantes candidatos de fusión interregional almacenados previamente pueden reducirse en 1.
La figura 21 es una vista que muestra una forma de realización de la actualización de una lista de candidatos de fusión interregional.
Se supone que a medida que el candidato de fusión interregional obtenido del bloque actual se añade a la lista de candidatos de fusión interregional, se asigna el índice mayor al candidato de fusión interregional. Además, se supone que el número máximo de candidatos de fusión interregional ya está almacenado en la lista de candidatos de fusión interregional.
Cuando el candidato de fusión interregional HmvpCand[n 1] obtenido del bloque actual se añade a la lista de candidatos de fusión interregional HmvpCandList, el candidato de fusión interregional HmvpCand[0] que tiene el índice más pequeño entre los candidatos de fusión interregional previamente almacenados se elimina, y los índices de los restantes candidatos de fusión interregional pueden reducirse en 1. Además, el índice del candidato de fusión interregional HmvpCand[n 1] obtenido del bloque actual se puede establecer en un valor máximo (n en el ejemplo mostrado en la figura 21)
Cuando se almacena previamente un candidato de fusión interregional igual al candidato de fusión interregional obtenido en función del bloque actual (S2005), el candidato de fusión interregional obtenido en función del bloque actual puede no añadirse a la lista de información de movimiento interregional (S2009).
Como alternativa, cuando el candidato de fusión interregional obtenido del bloque actual se añade a la lista de información de movimiento interregional, puede eliminarse un candidato de fusión interregional previamente almacenado que sea el mismo que el candidato de fusión interregional. En este caso, se obtiene un efecto igual al de actualizar de nuevo el índice del candidato de fusión interregional previamente almacenado.
La figura 22 es una vista que muestra un ejemplo en el que se actualiza un índice de un candidato de fusión interregional previamente almacenado.
Cuando el índice de un candidato de fusión interregional previamente almacenado mvCand que es el mismo que el candidato de fusión interregional mvCand obtenido en función del bloque actual es hIdx, el candidato de fusión interregional previamente almacenado se elimina, y los índices de los candidatos de fusión interregional que tienen un índice mayor que hIdx pueden disminuirse en 1. Por ejemplo, en el ejemplo mostrado en la figura 22, se muestra que HmvpCand[2] el mismo que mvCand se borra de la lista de información de movimiento interregional HvmpCandList, y los índices de HmvpCand[3] a HmvpCand[n] se disminuyen en 1.
Además, el candidato de fusión interregional mvCy obtenido en función del bloque actual se puede añadir al final de la lista de información de movimiento interregional.
Como alternativa, el índice asignado al candidato de fusión inter-regional previamente almacenado que es el mismo que el candidato de fusión inter-regional obtenido en función del bloque actual puede ser actualizado. Por ejemplo, el índice del candidato de fusión interregional previamente almacenado puede cambiarse a un valor mínimo o a un valor máximo.
Puede establecerse que no se añada la información de movimiento de los bloques incluidos en un área predeterminada a la lista de información de movimiento interregional. Por ejemplo, un candidato de fusión interregional obtenido de la información de movimiento de un bloque incluido en el área de procesamiento de fusión puede no añadirse a la lista de información de movimiento interregional. Dado que no se ha definido un orden de codificación/descodificación para los bloques incluidos en el área de procesamiento de fusión, no es apropiado utilizar la información de movimiento de cualquiera de los bloques para la interpredicción de otro bloque. En consecuencia, los candidatos de fusión interregional obtenidos de los bloques incluidos en el área de procesamiento de la fusión no podrán añadirse a la lista de información de movimiento interregional.
Cuando la unidad de subbloque realiza la predicción de compensación de movimiento, se puede obtener un candidato de fusión interregional en función de la información de movimiento de un subbloque representativo entre varios subbloques incluidos en el bloque actual. Por ejemplo, cuando se utiliza un candidato de fusión de subbloque para el bloque actual, se puede obtener un candidato de fusión interregional en función de la información de movimiento de un subbloque representativo entre los subbloques.
Los vectores de movimiento de los subbloques se pueden obtener en el siguiente orden. En primer lugar, se selecciona uno de los candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual y se obtiene un vector de desplazamiento inicial (shVector) en función del vector de movimiento del candidato de fusión seleccionado. A continuación, se puede obtener un subbloque desplazado, en el que la posición de la muestra de referencia es (xColSb, yColSb), ya que el vector de desplazamiento inicial se añade a la posición (xSb, ySb) de la muestra de referencia (por ejemplo, la muestra superior izquierda o la muestra en el centro) de cada subbloque en el bloque de codificación. La ecuación 4 muestra una ecuación para obtener el subbloque desplazado.
Ecuación 4]
jíf l] 4 )
Entonces, el vector de movimiento de un bloque colocado correspondiente a la posición central del subbloque que incluye (xColSb, yColSb) se puede establecer como el vector de movimiento del subbloque que incluye (xSb, ySb).
Por subbloque representativo puede entenderse un subbloque que incluya la muestra superior izquierda o la muestra situada en el centro del bloque actual.
La figura 23 es una vista que muestra la posición de un subbloque representativo.
La figura 23 (a) muestra un ejemplo en el que el subbloque colocado en la parte superior izquierda del bloque actual se establece como el subbloque representativo, y la FIG. 23 (b) muestra un ejemplo en el que el subbloque colocado en el centro del bloque actual se establece como el subbloque representativo. Cuando la predicción de compensación de movimiento se lleva a cabo por unidad de subbloque, se puede obtener un candidato de fusión interregional del bloque actual en función del vector de movimiento del subbloque que incluya la muestra superior izquierda del bloque actual o el subbloque que incluya la muestra en el centro del bloque actual.
Se puede determinar si utilizar o no el bloque actual como candidato de fusión interregional, en función del modo de interpredicción del bloque actual. Por ejemplo, un bloque codificado/descodificado basado en un modelo de movimiento afín puede no estar disponible como candidato de fusión interregional. En consecuencia, aunque el bloque actual se codifique/decodifique mediante interpredicción, cuando el modo de interpredicción del bloque actual es el modo de predicción afín, la lista de información de movimiento interregional puede no actualizarse en función del bloque actual.
Como alternativa, el candidato de fusión interregional se puede obtener en función de al menos un vector de subbloque entre los subbloques incluidos en el bloque codificado/descodificado en función del modelo de movimiento afín. Por ejemplo, el candidato de fusión interregional se puede obtener utilizando un subbloque posicionado en la parte superior izquierda, un subbloque posicionado en el centro, o un subbloque posicionado en la parte superior derecha del bloque actual. Como alternativa, un valor medio de los vectores de subbloque de varios subbloques se puede establecer como el vector de movimiento del candidato de fusión interregional.
Como alternativa, el candidato de fusión interregional se puede obtener en función de un valor medio de los vectores semilla afines del bloque codificado/descodificado en función del modelo de movimiento afín. Por ejemplo, una media de al menos uno entre el primer vector semilla afín, el segundo vector semilla afín y el tercer vector semilla afín del bloque actual se puede establecer como el vector de movimiento del candidato de fusión interregional.
Como alternativa, puede configurarse una lista de información de movimiento interregional para cada modo de interpredicción. Por ejemplo, puede definirse al menos una entre una lista de información de movimiento interregional para un bloque codificado/descodificado por copia intra-bloque, una lista de información de movimiento interregional para un bloque codificado/descodificado basado en un modelo de movimiento de translación, y una lista de información de movimiento interregional para un bloque codificado/descodificado basado en un modelo de movimiento afín. De acuerdo con el modo de interpredicción del bloque actual, puede seleccionarse cualquiera entre varias listas de información de movimiento interregional.
La figura 24 es una vista que muestra un ejemplo en el que se genera una lista de información de movimiento interregional para cada modo de interpredicción.
Cuando un bloque se codifica/descodifica en función de un modelo de movimiento no afín, un candidato de fusión interregional mvCand obtenido en función del bloque se puede añadir a una lista interregional de información de movimiento no afín HmvpCandList. Por otro lado, cuando un bloque se codifica/descodifica en función de un modelo de movimiento afín, un candidato de fusión interregional mvAfCand obtenido en función del bloque se puede añadir a una lista de información de movimiento afín interregional HmvpAfCandList.
Los vectores semilla afines de un bloque codificado/descodificado en función del modelo de movimiento afín pueden almacenarse en un candidato de fusión interregional obtenido del bloque. En consecuencia, el candidato de fusión interregional puede utilizarse como candidato de fusión para obtener el vector semilla afín del bloque actual.
Además de la lista de información de movimiento interregional descrita anteriormente, puede definirse una lista adicional de información de movimiento interregional. Además de la lista de información de movimiento interregional descrita anteriormente (denominada en lo sucesivo primera lista de información de movimiento interregional), puede definirse una lista de información de movimiento a largo plazo (denominada en lo sucesivo segunda lista de información de movimiento interregional). Aquí, la lista de información de movimiento a largo plazo incluye candidatos de fusión a largo plazo.
Cuando tanto la primera lista de información de movimiento interregional como la segunda lista de información de movimiento interregional estén vacías, podrán añadirse primero candidatos de fusión interregional a la segunda lista de información de movimiento interregional. Sólo después de que el número de candidatos de fusión interregional disponibles alcance el número máximo en la segunda lista de información de movimiento interregional, podrán añadirse candidatos de fusión interregional a la primera lista de información de movimiento interregional.
Como alternativa, se puede añadir un candidato de fusión interregional tanto a la segunda lista de información de movimiento interregional como a la primera lista de información de movimiento interregional.
En este punto, la segunda lista de información de movimiento interregional, cuya configuración se ha completado, puede no actualizarse más. Como alternativa, cuando la región descodificada es mayor o igual que una proporción predeterminada del segmento, la segunda lista de información de movimiento interregional puede actualizarse. Como alternativa, la segunda lista de información de movimiento interregional puede ser actualizada para cada N líneas de unidad de árbol de codificación.
Por otra parte, la primera lista de información de movimiento interregional puede actualizarse siempre que se genere un bloque codificado/descodificado mediante interpredicción. Sin embargo, se puede establecer que no se utilice el candidato de fusión interregional añadido a la segunda lista de información de movimiento interregional, para actualizar la primera lista de información de movimiento interregional.
La información para seleccionar cualquiera entre la primera lista de información de movimiento interregional y la segunda lista de información de movimiento interregional se puede indicar a través de un flujo de bits. Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión es inferior a un valor umbral, los candidatos de fusión incluidos en la lista de información de movimiento interregional indicada por la información se pueden añadir a la lista de candidatos de fusión.
Como alternativa, se puede seleccionar una lista de información de movimiento interregional basada en el tamaño y la forma del bloque actual, el modo de interpredicción, si la predicción bidireccional está activada, si el refinamiento del vector de movimiento está activado, o si la partición triangular está activada.
Como alternativa, aunque se añada un candidato de fusión interregional incluido en la primera lista de información de movimiento interregional, cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo de fusiones, los candidatos de fusión interregional incluidos en la segunda lista de información de movimiento interregional podrán añadirse a la lista de candidatos de fusión.
La figura 25 es una vista que muestra un ejemplo en el que un candidato de fusión interregional incluido en una lista de información de movimiento a largo plazo se añade a una lista de candidatos de fusión.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo, los candidatos de fusión interregional incluidos en la primera lista de información de movimiento interregional HmvpCyList podrán añadirse a la lista de candidatos de fusión. Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo, aunque los candidatos de fusión interregional incluidos en la primera lista de información de movimiento interregional se añadan a la lista de candidatos de fusión, los candidatos de fusión interregional incluidos en la lista de información de movimiento a largo plazo HmvpLTCandList podrán añadirse a la lista de candidatos de fusión.
La Tabla 2 muestra un proceso de adición de los candidatos de fusión interregional incluidos en la lista de información de movimiento a largo plazo a la lista de candidatos de fusión.
[Tabla 2]
El candidato de fusión interregional puede estar configurado para incluir información adicional, además de la información de movimiento. Por ejemplo, para el candidato de fusión interregional, puede almacenarse adicionalmente información sobre el tamaño, la forma o la partición de un bloque. Cuando se construye la lista de candidatos de fusión del bloque actual, sólo se utilizan entre los candidatos de fusión interregional los que tienen un tamaño, una forma o una información de partición iguales o similares a los del bloque actual, o bien se pueden añadir a la lista de candidatos de fusión en primer lugar los candidatos de fusión interregional que tienen un tamaño, una forma o una información de partición iguales o similares a los del bloque actual.
Como alternativa, se puede generar una lista de información de movimiento interregional para cada información de tamaño, forma o partición de un bloque. Entre las varias listas de información de movimiento interregional, se puede generar una lista de candidatos de fusión del bloque actual utilizando una lista de información de movimiento interregional correspondiente a la información de forma, tamaño o partición del bloque actual.
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual es inferior al valor umbral, los candidatos de fusión interregional incluidos en la lista de información de movimiento interregional se pueden añadir a la lista de candidatos de fusión. El proceso de adición se lleva a cabo en un orden ascendente o descendente en función del índice. Por ejemplo, un candidato de fusión interregional que tenga el índice más alto se puede añadir primero a la lista de candidatos de fusión.
Cuando se desea añadir un candidato de fusión interregional incluido en la lista de información de movimiento interregional a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia entre el candidato de fusión interregional y los candidatos de fusión almacenados previamente en la lista de candidatos de fusión.
Por ejemplo, el Cuadro 3 muestra un proceso en el que se añade un candidato de fusión interregional a la lista de candidatos de fusión.
[Tabla 3]
Para cada candidato en HMVPCandList con índice HMVPIdx = 1.. numCheckedHMVPCand, se repiten los siguientes pasos ordenados hasta que combStop sea igual a true
- sameMotion se establece en false
- Si HMVPCandList[NumHmvp-HMVPIdx] tienen los mismos vectores de movimiento y los mismos índices de referencia con cualquier mergeCandList[i] con I siendo 0.. numOrigMergeCand-1 y HasBeenPruned[i] igual a false, sameMotion se establece en true.
- Si sameMotion es igual a false, mergeCandList[numCurrMergeCand++] se establece en HMVPCandList[NumHmvp-HMVPIdx].
- Si numCurrMergeCand es igual a (MaxNumMergeCand-1), hmvpStop se establece en TRUE
La comprobación de redundancia se puede llevar a cabo sólo en algunos de los candidatos de fusión interregional incluidos en la lista de información de movimiento interregional. Por ejemplo, la comprobación de redundancia se puede llevar a cabo sólo en los candidatos de fusión interregional que tengan un índice mayor que un valor umbral o menor que un valor umbral. Como alternativa, la comprobación de redundancia se puede llevar a cabo sólo en N candidatos de fusión que tengan el índice mayor o N candidatos de fusión que tengan el índice menor.
Como alternativa, la comprobación de redundancia se puede llevar a cabo sólo en algunos de los candidatos de fusión previamente almacenados en la lista de candidatos de fusión. Por ejemplo, la comprobación de redundancia se puede llevar a cabo sólo en un candidato de fusión que tenga un índice mayor que un valor umbral o menor que un valor umbral, o en un candidato de fusión obtenido de un bloque en una posición específica. Aquí, la posición específica puede incluir al menos uno entre un bloque vecino izquierdo, un bloque vecino superior, un bloque vecino superior derecho, y un bloque vecino inferior izquierdo del bloque actual.
La figura 26 es una vista que muestra un ejemplo en el que se lleva a cabo una comprobación de redundancia sólo en algunos de los candidatos de fusión.
Cuando se desea añadir el candidato de fusión interregional HmvpCand[j] a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión interregional con dos candidatos de fusión mergeCandList[NumMerge-2] y mergeCandList[NumMerge-1] que tengan los mayores índices. Aquí, NumMerge puede representar el número de candidatos de fusión espacial y candidatos de fusión temporal que están disponibles.
A diferencia del ejemplo mostrado en el dibujo, cuando se desea añadir un candidato de fusión interregional HmvpCand[j] a la lista de candidatos de fusión, se puede realizar una comprobación de redundancia en el candidato de fusión interregional con hasta dos candidatos de fusión que tengan el índice más pequeño. Por ejemplo, es posible comprobar si mergeCandList[0] y mergeCandList[1] coinciden con HmvpCand[j]. Como alternativa, se puede realizar una comprobación de redundancia sólo en los candidatos de fusión obtenidos en una posición específica. Por ejemplo, la comprobación de redundancia se puede llevar a cabo en al menos uno de los candidatos de fusión obtenidos de un bloque vecino situado a la izquierda del bloque actual y un candidato de fusión obtenido de un bloque vecino situado en la parte superior del bloque actual. Cuando un candidato de fusión obtenido en una posición específica no existe en la lista de candidatos de fusión, se puede añadir un candidato de fusión interregional a la lista de candidatos de fusión sin realizar una comprobación de redundancia.
Cuando se encuentra un candidato de fusión igual al primer candidato de fusión interregional y se lleva a cabo una comprobación de redundancia en el segundo candidato de fusión interregional, puede omitirse la comprobación de redundancia con un candidato de fusión igual al primer candidato de fusión interregional.
La figura 27 es una vista que muestra un ejemplo en el que se omite una comprobación de redundancia para un candidato de fusión específico.
Cuando se desea añadir un candidato de fusión interregional HmvpCand[i] con índice i a la lista de candidatos de fusión, se lleva a cabo una comprobación de redundancia entre el candidato de fusión interregional y los candidatos de fusión almacenados previamente en la lista de candidatos de fusión. En este punto, cuando se encuentra un candidato de fusión mergeCandList[j] igual al candidato de fusión interregional HmvpCand[i], la comprobación de redundancia se puede llevar a cabo entre el candidato de fusión interregional HmvpCand[i-1] con índice i-1 y los candidatos de fusión sin añadir el candidato de fusión interregional HmvpCand[i] a la lista de candidatos de fusión. En este punto, puede omitirse la comprobación de redundancia entre el candidato de fusión interregional HmvpCand[i-1] y el candidato de fusión mergeCandList[j].
Por ejemplo, en el ejemplo mostrado en la figura 27, se determina que HmvpCand[i] y mergeCandList[2] son iguales. En consecuencia, HmvpCand[i] no se añade a la lista de candidatos de fusión, y se puede realizar una comprobación de redundancia en HmvpCand[i-1]. En este punto, puede omitirse la comprobación de redundancia entre HvmpCand[i-1] y mergeCandList[2].
Cuando el número de candidatos de fusión incluidos en la lista de candidatos de fusión del bloque actual es inferior al valor umbral, puede incluirse al menos un candidato de fusión por pares y un candidato de fusión cero, además del candidato de fusión interregional. El candidato de fusión por pares es un candidato de fusión que tiene un valor medio de los vectores de movimiento de dos o más candidatos de fusión como vector de movimiento, y el candidato de fusión cero es un candidato de fusión que tiene un vector de movimiento 0.
Un candidato de fusión se puede añadir a la lista de candidatos de fusión del bloque actual en el siguiente orden.
Candidato a la fusión espacial - Candidato a la fusión temporal - Candidato a la fusión interregional -(Candidato a la fusión interregional afín) - Candidato a la fusión por pares - Candidato a la fusión cero
El candidato de fusión espacial es un candidato de fusión obtenido de al menos un bloque vecino y un bloque no vecino, y el candidato de fusión temporal es un candidato de fusión obtenido de una imagen de referencia anterior. El candidato de fusión afín interregional representa un candidato de fusión interregional obtenido de un bloque codificado/descodificado con un modelo de movimiento afín.
La lista de información de movimiento interregional también puede utilizarse en el modo de predicción avanzada de vectores de movimiento. Por ejemplo, cuando el número de modo de predicción de vectores de movimiento incluidos en una lista de modo de predicción de vectores de movimiento del bloque actual es inferior a un valor umbral, un candidato de fusión interregional incluido en la lista de información de movimiento interregional se puede establecer como candidato de predicción de vector de movimiento para el bloque actual. Específicamente, el vector de movimiento del candidato de fusión interregional se puede establecer como un candidato de predicción de vector de movimiento.
Cuando se selecciona uno de los candidatos de predicción de vectores de movimiento incluidos en la lista de candidatos de predicción de vectores de movimiento del bloque actual, el candidato seleccionado se puede establecer como el predictor del vector de movimiento del bloque actual. A partir de entonces, después de descodificar un coeficiente residual del vector de movimiento del bloque actual, se puede obtener un vector de movimiento del bloque actual sumando el predictor del vector de movimiento y el coeficiente residual del vector de movimiento.
La lista de candidatos a la predicción del vector de movimiento del bloque actual puede configurarse en el siguiente orden.
Candidato a la predicción del vector de movimiento espacial - Candidato a la predicción del vector de movimiento temporal - Candidato a la fusión interregional - (Candidato a la fusión afín interregional) -Candidato a la predicción del vector de movimiento cero
El candidato de predicción de vector de movimiento espacial es un candidato de predicción de vector de movimiento obtenido de al menos uno de los bloques vecinos y no vecinos, y el candidato de predicción de vector de movimiento temporal es un candidato de predicción de vector de movimiento obtenido de una imagen de referencia anterior. El candidato de fusión afín inter-región representa un candidato de predicción de vector de movimiento inter-región obtenido de un bloque codificado/descodificado con el modelo de movimiento afín. El candidato de predicción de vector de movimiento cero representa un candidato que tiene un valor de vector de movimiento de 0.
Cuando se selecciona un candidato de fusión del bloque actual, el vector de movimiento del candidato de fusión seleccionado se establece como vector de movimiento inicial, y la predicción de la compensación de movimiento se puede llevar a cabo para el bloque actual utilizando un vector de movimiento obtenido mediante la adición o sustracción de un vector de desplazamiento al vector de movimiento inicial o a partir de él. La derivación de un nuevo vector de movimiento mediante la adición o sustracción de un vector de desplazamiento a o desde un vector de movimiento de un candidato de fusión puede definirse como un método de codificación por diferencia de movimiento de fusión.
La información que indica si se utiliza o no el método de codificación de desplazamiento de fusión se puede indicar a través de un flujo de bits. La información puede ser el indicador merge_offset_vector_flag de un bit. Por ejemplo, cuando el valor de merge_offset_vector_flag es 1, indica que el método de codificación de diferencia de movimiento merge se aplica al bloque actual. Cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se puede obtener sumando o restando un vector de desplazamiento al vector de movimiento del candidato de fusión o a partir de él. Cuando el valor de merge_offset_vector_flag de 0, indica que el método de codificación por diferencia de movimiento de fusión no se aplica al bloque actual. Cuando no se aplica el método de codificación de diferencia de movimiento por fusión, el vector de movimiento del candidato de fusión se puede establecer como el vector de movimiento del bloque actual.
La bandera puede ser señalada sólo cuando el valor de un indicador de omisión que indica si se aplica un modo de omisión es verdadero o cuando el valor de un indicador de fusión que indica si se aplica un modo de fusión es verdadero. Por ejemplo, cuando el valor de skip_flag que indica si el modo de omisión se aplica al bloque actual es 1 o cuando el valor de merge_flag que indica si el modo merge se aplica al bloque actual es 1, merge_offset_vector_flag puede codificarse y señalizarse.
Cuando se determina que el método de codificación de desplazamiento de fusión se aplica al bloque actual, se puede indicar adicionalmente al menos una entre la información que especifica cualquiera de los candidatos de fusión incluidos en la lista de candidatos de fusión, la información que indica la magnitud del vector de desplazamiento y la información que indica la dirección del vector de desplazamiento.
La información para determinar el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión se puede indicar a través de un flujo de bits. Por ejemplo, el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión se puede establecer en un número entero igual o inferior a 6.
Cuando se determina que el método de codificación de desplazamiento de fusión se aplica al bloque actual, sólo el número máximo de candidatos de fusión establecidos de antemano se puede establecer como el vector de movimiento inicial del bloque actual. Es decir, el número de candidatos de fusión que pueden ser utilizados por el bloque actual puede ser determinado de forma adaptativa en función de si se aplica el método de codificación de desplazamiento de fusión. Por ejemplo, cuando el valor de merge_offset_vector_flag se establece en 0, el número máximo de candidatos de fusión que puede utilizar el bloque actual se puede establecer en M, mientras que cuando el valor de merge_offset_vector_flag se establece en 1, el número máximo de candidatos de fusión que puede utilizar el bloque actual se puede establecer en N. Aquí, M denota el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión, y N denota un número entero igual o menor que M.
Por ejemplo, cuando M es 6 y N es 2, dos candidatos de fusión que tengan el índice más pequeño entre los candidatos de fusión incluidos en la lista de candidatos de fusión pueden establecerse como disponibles para el bloque actual. En consecuencia, un vector de movimiento de un candidato de fusión que tiene un valor de índice de 0 o un vector de movimiento de un candidato de fusión que tiene un valor de índice de 1 se puede establecer como un vector de movimiento inicial del bloque actual. Cuando M y N son iguales (por ejemplo, cuando M y N son 2), todos los candidatos de fusión incluidos en la lista de candidatos de fusión pueden establecerse como disponibles para el bloque actual.
Como alternativa, si un bloque vecino puede ser utilizado como un candidato de fusión se puede determinar basándose en si el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual. Por ejemplo, cuando el valor de merge_offset_vector_flag es 1, al menos uno entre un bloque vecino adyacente a la esquina superior derecha del bloque actual, un bloque vecino adyacente a la esquina superior izquierda, y un bloque vecino adyacente a la esquina inferior izquierda se puede establecer como no disponible como candidato de fusión. En consecuencia, cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento de al menos uno entre un bloque vecino adyacente a la esquina superior derecha del bloque actual, un bloque vecino adyacente a la esquina superior izquierda y un bloque vecino adyacente a la esquina inferior izquierda puede no establecerse como vector de movimiento inicial. Como alternativa, cuando el valor de merge_offset_vector_flag es 1, un bloque temporalmente vecino del bloque actual se puede establecer como no disponible como candidato de fusión.
Cuando se aplica el método de codificación de fusión por diferencia de movimiento al bloque actual, se puede establecer que no se utilice al menos uno de los candidatos de fusión por pares y el candidato de fusión cero. En consecuencia, cuando el valor de merge_offset_vector_flag es 1, es posible que al menos uno de los candidatos de fusión por pares y el candidato de fusión cero no se añada a la lista de candidatos de fusión, aunque el número de candidatos de fusión incluidos en la lista de candidatos de fusión sea inferior al número máximo.
El vector de movimiento del candidato de fusión se puede establecer como vector de movimiento inicial del bloque actual. En este punto, cuando el número de candidatos de fusión que pueden ser utilizados por el bloque actual es plural, la información que especifica cualquiera entre los varios candidatos de fusión puede ser señalada a través de un flujo de bits. Por ejemplo, cuando el número máximo de candidatos de fusión que la lista de candidatos de fusión puede incluir es mayor que 1, la información merge_idx que indica cualquiera entre los varios candidatos de fusión puede ser señalada a través de un flujo de bits. Es decir, en el método de codificación de desplazamiento de fusión, se puede especificar un candidato de fusión mediante la información merge_idx para especificar uno cualquiera de entre los varios candidatos de fusión. El vector de movimiento inicial del bloque actual se puede establecer como el vector de movimiento de un candidato de fusión indicado por merge_idx.
Por otra parte, cuando el número de candidatos de fusión que puede utilizar el bloque actual es 1, puede omitirse la indicación de información para especificar un candidato de fusión. Por ejemplo, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión no es superior a 1, puede omitirse la indicación de la información merge _idx para especificar un candidato de fusión. Es decir, en el método de codificación de desplazamiento de fusión, cuando se incluye un candidato de fusión en la lista de candidatos de fusión, puede omitirse la codificación de la información merge _idx para especificar el candidato de fusión, y el vector de movimiento inicial se puede determinar en función del candidato de fusión incluido en la lista de candidatos de fusión. El vector de movimiento del candidato de fusión se puede establecer como el vector de movimiento inicial del bloque actual.
Como otro ejemplo, después de que se determina un candidato de fusión del bloque actual, se puede determinar si se aplica o no el método de codificación por diferencia de movimiento de fusión al bloque actual. Por ejemplo, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es superior a 1, se puede indicar la información merge_idx para especificar uno cualquiera de entre los candidatos de fusión. Después de seleccionar un candidato de fusión basado en merge_idx, se puede descodificar merge_offset_vector_flag indicando si el método de codificación por diferencia de movimiento de fusión se aplica o no al bloque actual. La Tabla 4 es una vista que muestra una tabla de sintaxis según la forma de realización descrita anteriormente.
Tabla 4
co
Como otro ejemplo, después de que se determine un candidato de fusión del bloque actual, se puede determinar si se aplica o no el método de codificación por diferencia de movimiento de fusión al bloque actual sólo cuando el índice del candidato de fusión determinado es menor que el número máximo de candidatos de fusión que se pueden utilizar cuando se aplica el método de codificación por diferencia de movimiento de fusión. Por ejemplo, sólo cuando el valor de la información de índice merge_idx es menor que N, puede codificarse y señalizarse merge_offset_vector_flag indicando si se aplica o no el método de codificación por diferencia de movimiento de fusión al bloque actual. Cuando el valor de la información de índice merge _idx es igual o mayor que N, puede omitirse la codificación de merge_offset_vector _flag. Cuando se omite la codificación de merge_offset_vector_flag, se puede determinar que el método de codificación de diferencia de movimiento merge no se aplica al bloque actual.
Como alternativa, después de que se determina un candidato de fusión del bloque actual, se puede determinar si se aplica o no el método de codificación por diferencia de movimiento de fusión al bloque actual considerando si el candidato de fusión determinado tiene información de movimiento bidireccional o información de movimiento unidireccional. Por ejemplo, merge_offset_vector_flag indicando si aplicar o no el método de codificación por diferencia de movimiento de fusión al bloque actual puede codificarse y señalizarse sólo cuando el valor de la información de índice merge_idx es menor que N y el candidato de fusión seleccionado por la información de índice tiene información de movimiento bidireccional. Como alternativa, merge_offset_vector_flag que indica si aplicar o no el método de codificación por diferencia de movimiento de fusión al bloque actual puede codificarse y señalizarse sólo cuando el valor de la información de índice merge_idx es menor que N y el candidato de fusión seleccionado por la información de índice tiene información de movimiento unidireccional.
Como alternativa, la aplicación o no del método de codificación de la diferencia de movimiento por fusión se puede determinar en función de al menos uno de los siguientes factores: el tamaño del bloque actual, la forma del bloque actual y si el bloque actual está en contacto con el límite de una unidad de árbol de codificación. Cuando al menos uno entre el tamaño del bloque actual, la forma del bloque actual, y si el bloque actual está en contacto con el límite de una unidad de árbol de codificación no satisface una condición preestablecida, puede omitirse la codificación de merge_offset_vector_flag indicando si aplicar o no el método de codificación por diferencia de movimiento de fusión al bloque actual.
No forma parte de la invención: Cuando se selecciona un candidato de fusión, el vector de movimiento del candidato de fusión se puede establecer como el vector de movimiento inicial del bloque actual. A continuación, se puede determinar un vector de desplazamiento descodificando la información que indica la magnitud del vector de desplazamiento y la información que indica la dirección del vector de desplazamiento. El vector de desplazamiento puede tener un componente de dirección horizontal o un componente de dirección vertical.
La información que indica la magnitud del vector de desplazamiento es información de índice que indica cualquiera entre los candidatos de magnitud de movimiento. La información de índice distance_idx que indica cualquiera entre os candidatos de magnitud de movimiento se puede indicar a través de un flujo de bits. La Tabla 3 muestra la binarización de la información de índice distance_idx y los valores de la variable DistFromMergeMV para determinar la magnitud de un vector de desplazamiento según distance_idx.
La magnitud de un vector de desplazamiento puede obtenerse dividiendo la variable DistFromMergeMV por un valor preestablecido. La ecuación 4 muestra un ejemplo de determinación de la magnitud de un vector de desplazamiento.
[Ecuación 5]
abs offsetMV = DistFnomMergeMV« 2
Según la ecuación 4, un valor obtenido dividiendo la variable DistFromMegeMV por 4 o un valor obtenido desplazando la variable DistFromMergeMV a la izquierda por 2 se puede establecer como la magnitud de un vector de desplazamiento.
No forma parte de la invención: Puede utilizarse un número mayor de candidatos de magnitud de movimiento o un número menor de candidatos de magnitud de movimiento que el ejemplo mostrado en la Tabla 3, o se puede establecer un rango de candidatos de tamaño de desplazamiento de vector de movimiento diferente del ejemplo mostrado en la Tabla 5. Por ejemplo, la magnitud del componente de dirección horizontal o el componente de dirección vertical de un vector de desplazamiento se puede establecer para que no sea mayor que 2 distancias de muestra. La Tabla 4 muestra la binarización de la información de índice distancia idx y los valores de la variable DistFromMergeMV para determinar la magnitud de un vector de desplazamiento según distancia_idx.
'Tabla 6] (no forma parte de la invención)
distancia_idx[x][y] binarización DistFromMergeMV[x0][y0]
Como alternativa, un rango de candidatos de tamaño de desplazamiento de vector de movimiento se establece de forma diferente en función de la precisión del vector de movimiento. Cuando la precisión del vector de movimiento para el bloque actual es un pel fraccionario, los valores de la variable DistFromMergeMV correspondientes a los valores de la información de índice distance_idx se establecen en 1, 2, 4, 8, 16 o similares. En este caso, el pel fraccionario incluye al menos uno de entre 1/16 de pel, octo-pel, cuarto de pel y medio pel. Por otro lado, cuando la precisión del vector de movimiento para el bloque actual es un pel entero, los valores de la variable DistFromMergeMV correspondientes a los valores de la información de índice de distancia idx se establecen en 4, 8, 16, 32, 64 y similares. Es decir, una tabla a la que se hace referencia para determinar la variable DistFromMergeMV se puede establecer de forma diferente según la precisión del vector de movimiento para el bloque actual.
Por ejemplo, cuando la precisión del vector de movimiento del bloque actual o de un candidato de fusión es de un cuarto de pel, la variable DistFromMergeMV indicada por distance_idx se puede obtener utilizando la Tabla 3. Por otro lado, cuando la precisión del vector de movimiento del bloque actual o de un candidato de fusión es un entero-pel, un valor obtenido tomando N veces (por ejemplo, 4 veces) del valor de la variable DistFromMergeMV indicado por distance idx en la Tabla 3 se puede obtener como un valor de la variable DistFromMergeMV
La información para determinar la precisión del vector de movimiento se puede indicar a través de un flujo de bits. Por ejemplo, la información se puede indicar a nivel de secuencia, imagen, corte o bloque. En consecuencia, el rango de candidatos de magnitud de movimiento se puede establecer de forma diferente según la información relacionada con la precisión del vector de movimiento señalada a través de un flujo de bits. Como alternativa, la precisión del vector de movimiento se puede determinar en función del candidato de fusión del bloque actual. Por ejemplo, la precisión del vector de movimiento del bloque actual se puede establecer para que sea la misma que la precisión del vector de movimiento del candidato de fusión.
No forma parte de la invención: Como alternativa, la información para determinar un rango de búsqueda del vector de desplazamiento se puede indicar a través de un flujo de bits. Al menos uno entre el número de candidatos de magnitud de movimiento, un valor numérico mínimo entre los candidatos de magnitud de movimiento, y un valor numérico máximo entre los candidatos de magnitud de movimiento se puede determinar en función del rango de búsqueda. Por ejemplo, el indicador merge_offset_vector_flag para determinar un intervalo de búsqueda del vector de desplazamiento se puede indicar a través de un flujo de bits. La información se puede indicar a través de una cabecera de secuencia, una cabecera de imagen o una cabecera de corte.
Por ejemplo, cuando el valor de merge_offset_extend_range_flag es 0, la magnitud del vector de desplazamiento no puede ser superior a 2. Por consiguiente, el valor numérico máximo de DistFromMergeMV puede ser 8. Por otra parte, cuando el valor de merge desplazamiento extend_range_flag es 1, la magnitud del vector de desplazamiento se puede establecer para que no exceda de 32 distancias de muestra. Por consiguiente, el valor numérico máximo de DistFromMergeMV puede ser 128.
La magnitud del vector de desplazamiento se puede determinar utilizando un indicador que indique si la magnitud del vector de desplazamiento es mayor que un valor umbral. Por ejemplo, el indicador distance_flag que indica si la magnitud del vector de desplazamiento es mayor que un valor umbral se puede indicar a través de un flujo de bits. El valor umbral puede ser 1,2, 4, 8 o 16. Por ejemplo, cuando el indicador de distancia es 1, indica que la magnitud del vector de desplazamiento es mayor que 4. Por otro lado, cuando el indicador de distancia es 0, indica que la magnitud del vector de desplazamiento es 4 o inferior.
Cuando la magnitud del vector de desplazamiento es mayor que un valor umbral, puede obtenerse un valor de diferencia entre la magnitud del vector de desplazamiento y el valor umbral utilizando la información de índice distance_idx. Como alternativa, cuando la magnitud del vector de desplazamiento es menor o igual que el valor umbral, la magnitud del vector de desplazamiento se puede determinar utilizando la información de índice distance_idx. La Tabla 5 es una tabla de sintaxis que muestra un proceso de codificación de distance flag y distance_idx.
Tabla 7]
La ecuación 6 muestra un ejemplo de derivación de la variable DistFromMergeMV para determinar la magnitud de un vector de desplazamiento utilizando distance_flag y distance_idx.
[Ecuación 6T
DistFnomMerigeMV - N - distarte _ flag 1«d¡$tane_idx
En la ecuación 5, el valor del indicador de distancia puede ser 1 o 0. El valor de distance_idx puede ser 1,2, 4, 8, 16, 32, 64, 128 o similar. N denota un coeficiente determinado por un valor umbral. Por ejemplo, cuando el valor umbral es 4, N se puede establecer en 16.
La información que indica la dirección del vector de desplazamiento puede ser información de índice que indica cualquiera entre los candidatos de dirección de vector. Por ejemplo, la información de índice direction_idx que indica uno cualquiera de entre los candidatos de dirección vectorial se puede indicar a través de un flujo de bits. La Tabla 6 muestra la binarización de la información de índice direction_idx y las direcciones de un vector de desplazamiento de acuerdo con direction idx.
En la Tabla 8, sign[0] indica la dirección horizontal, y sign[1 ] indica la dirección vertical. 1 indica que el valor del componente x o del componente y del vector de desplazamiento es más (+), y -1 indica que el valor del componente x o del componente y del vector de desplazamiento es menos (-).
[Ecuación 7]
offselMV [0] =■ abs {offsetMV) ■ sign [0]
offsetMV [1j = aba (offsetMV) * sign [1]
En la ecuación 7, offsetMV[0] denota el componente de dirección vertical del vector desplazamiento, y offsetMV[1] denota el componente de dirección horizontal del vector desplazamiento.
La figura 28 es una vista que muestra un vector de desplazamiento según los valores de distance_idx que indica una magnitud de un vector de desplazamiento y direction_idx que indica una dirección del vector de desplazamiento.
Según se muestra en el ejemplo de la figura 28, una magnitud y una dirección de un vector de desplazamiento pueden determinarse de acuerdo con los valores de distance_idx y direction_idx. La magnitud máxima del vector de desplazamiento se puede establecer para no exceder un valor umbral. Aquí, el valor umbral puede tener un valor predefinido en el codificador y el descodificador. Por ejemplo, el valor umbral puede ser 32 distancias de muestreo. Como alternativa, el valor umbral se puede determinar en función de la magnitud del vector de movimiento inicial. Por ejemplo, el valor umbral para la dirección horizontal se puede establecer en función de la magnitud del componente de dirección horizontal de
Pueden definirse más de cuatro candidatos a dirección vectorial. Las tablas 9 y 10 muestran ejemplos en los que se definen ocho candidatos de dirección vectorial.
[Tabla 9] no[x][y][1]
[Tabla 10 o[x][y][1]
En las Tablas 9 y 10, cuando los valores absolutos de sign[0] y sign[1] son mayores que 0, indica que el vector desplazamiento está en dirección diagonal. Cuando se utiliza la Tabla 9, las magnitudes de los componentes del eje x y del eje y del vector de desplazamiento diagonal se establecen en abs(offsetMV), mientras que cuando se utiliza la Tabla 10, las magnitudes de los componentes del eje x y del eje y del vector de desplazamiento diagonal se establecen en abs(offsetMV/2).
La figura 29 es una vista que muestra un vector de desplazamiento según los valores de distancia _idx que indica una magnitud de un vector de desplazamiento y direction_idx que indica una dirección del vector de desplazamiento.
La figura 29 (a) es una vista que muestra un ejemplo cuando se aplica la Tabla 9, y la figura 29 (b) es una vista que muestra un ejemplo cuando se aplica la Tabla 10.
La información para determinar al menos uno entre el número y los tamaños de los candidatos de dirección vectorial se puede indicar a través de un flujo de bits. Por ejemplo, el indicador merge_offset_direction_range_flag para determinar las direcciones vectoriales candidatas se puede indicar a través de un flujo de bits. El indicador se puede indicar a nivel de secuencia, imagen o corte. Por ejemplo, cuando el valor del indicador es 0, se pueden utilizar los cuatro candidatos de dirección vectorial ejemplificados en la Tabla 8. Por otra parte, cuando el valor del indicador es 1, se pueden utilizar ocho candidatos de dirección vectorial ejemplificados en la Tabla 9 o Tabla 10.
Como alternativa, al menos uno de los números y tamaños de los vectores de dirección candidatos se puede determinar en función de la magnitud del vector de desplazamiento. Por ejemplo, cuando el valor de la variable DistFromMergeMV para determinar la magnitud del vector de desplazamiento es igual o menor que un valor umbral, se pueden utilizar ocho candidatos de dirección vectorial ejemplificados en la Tabla 9 o Tabla 10. Por otro lado, cuando el valor de la variable DistFromMergeMV es mayor que el valor umbral, se pueden utilizar cuatro candidatos de dirección vectorial ejemplificados en la Tabla 8.
Como alternativa, al menos uno entre el número y tamaño de los vectores de dirección candidatos puede ser determinado en función del valor MVx del componente x y el valor MVy del componente y del vector de movimiento inicial. Por ejemplo, cuando la diferencia entre MVx y MVy o el valor absoluto de la diferencia es menor o igual que un valor umbral, se pueden utilizar ocho candidatos de dirección vectorial ejemplificados en la Tabla 9 o la Tabla 10. Por otro lado, cuando la diferencia entre MVx y MVy o el valor absoluto de la diferencia es mayor que el valor umbral, se pueden utilizar cuatro vectores de dirección candidatos ejemplificados en la Tabla 8.
El vector de movimiento del bloque actual puede obtenerse añadiendo un vector de desplazamiento al vector de movimiento inicial. La ecuación 10 muestra un ejemplo de determinación de un vector de movimiento del bloque actual.
[Ecuación 10]
inyL0[0 ] = nwrgeW VliÍEü] -f
iH fA O fl] =J T i& g e M V lQ lé t f fs e tW lV [ l]
ntvLlfO] =fr t ie rg c M V L Í[O]o f f s c t M V L1 [O]
= m crgcM V L] | l j a f f sctNtV L \ \ \ \
En la ecuación 10, mvL0 indica el vector de movimiento L0 del bloque actual y mvL1 indica el vector de movimiento L1 del bloque actual. mergeMVL0 indica el vector de movimiento inicial L0 del bloque actual (es decir, el vector de movimiento L0 de un candidato de fusión) y mergeMVL1 indica el vector de movimiento inicial L1 del bloque actual.
[0] indica el componente de dirección horizontal del vector de movimiento y [1] indica el componente de dirección vertical del vector de movimiento.
Incluso cuando la interpredicción se lleva a cabo en cada una de las subunidades después de que un bloque de codificación se divide en varias subunidades, se puede aplicar el método de codificación de fusión de diferencia de movimiento. Aquí, la forma de realización de la interpredicción por la unidad de subunidad puede incluir al menos una entre una técnica de Predicción de Vector de Movimiento Temporal Avanzada (ATMVP), una técnica de Predicción de Vector de Movimiento Temporal Espacial (STMVP), y una técnica de partición triangular.
Por ejemplo, un vector de movimiento inicial se puede obtener como sigue en el método ATMVP.
En primer lugar, se puede obtener un vector de desplazamiento inicial utilizando un vector de movimiento de un candidato de fusión obtenido de un bloque vecino adyacente a un bloque de codificación. Además, se puede obtener un bloque de desplazamiento de un subbloque incluido en el bloque de codificación utilizando el vector de desplazamiento inicial. La ecuación 11 muestra la posición del bloque de desplazamiento.
[Ecuación 11;
En la ecuación 11, (xColSb, yColSb) denota la posición de la muestra superior izquierda de un bloque de desplazamiento, y (xSb, ySb) denota la posición de la muestra superior izquierda de un subbloque. shVector denota un vector de desplazamiento.
Cuando se determina un bloque de desplazamiento, el vector de movimiento de un bloque colocado en la misma posición que el del bloque de desplazamiento en la imagen colocada se puede establecer como el vector de movimiento del subbloque. Es decir, el vector de movimiento de un bloque colocado que incluye una muestra en la posición de (xColSb, yColSb) en el bloque colocado se puede establecer como el vector de movimiento de un subbloque que incluye una muestra en la posición de (xSb, ySb).
Cuando se aplica la técnica de partición triangular, un bloque de codificación puede dividirse en subunidades triangulares. Por ejemplo, un bloque de codificación puede dividirse en dos subunidades mediante una línea diagonal que conecte las esquinas superior izquierda e inferior derecha del bloque de codificación o una línea diagonal que conecte las esquinas superior derecha e inferior izquierda del bloque de codificación.
La figura 30 es una vista que muestra patrones de partición de un bloque de codificación cuando se aplica una técnica de partición triangular.
La información de movimiento de cada una de las subunidades triangulares puede especificarse mediante un candidato de fusión. A tal fin, podrá señalarse para cada subunidad una información de índice que indique cualquiera de los candidatos de fusión. Por ejemplo, la información de índice merge_1st_idx de una primera subunidad puede especificar el candidato de fusión de la primera subunidad, y la información de índice merge_2nd_idx de una segunda subunidad puede especificar el candidato de fusión de la segunda subunidad.
El vector de movimiento inicial de cada una de las subunidades se puede determinar individualmente. Por ejemplo, cuando se aplica un modelo de movimiento afín a un bloque de codificación, los vectores afines de los subbloques obtenidos de los vectores semilla afines del bloque de codificación pueden establecerse como vectores de movimiento iniciales de los subbloques. El vector de movimiento de cada subbloque se puede obtener sumando o restando un vector de desplazamiento al vector de movimiento inicial o a partir de él.
Cuando el método de codificación de fusión por diferencia de movimiento se aplica a un bloque de codificación dividido en varias subunidades, las varias subunidades puede configurarse para utilizar el mismo vector de desplazamiento. Es decir, el vector de movimiento inicial de cada una de las subunidades puede cambiarse utilizando el mismo vector de desplazamiento.
Como alternativa, un bloque de codificación se divide en varias subunidades, y un vector de desplazamiento de cada subunidad se puede determinar individualmente. En consecuencia, el vector de desplazamiento de al menos una de las subunidades puede ser diferente de los vectores de desplazamiento de otras subunidades.
La figura 31 es una vista que muestra un ejemplo en el que los vectores de desplazamiento de cada una de las subunidades se establecen de forma diferente.
Según se muestra en el ejemplo de la figura 31, la información distance_idx que indica la magnitud del vector de desplazamiento y direction_idx que indica la dirección del vector de desplazamiento pueden codificarse y señalarse para cada subunidad.
Como alternativa, la magnitud del vector de desplazamiento se puede establecer para que sea la misma para todas las subunidades, y la dirección del vector de desplazamiento se puede establecer individualmente para las subunidades. Por ejemplo, se puede establecer para compartir el valor de distance_idx señalado en el nivel de codificación entre las subunidades, y direction_idx puede codificarse y señalarse para cada subunidad.
Como alternativa, la dirección del vector de desplazamiento se puede establecer para que sea la misma para todas las subunidades, y la magnitud del vector de desplazamiento se puede establecer individualmente para las subunidades. Por ejemplo, puede configurarse para compartir el valor de direction_idx señalado en el nivel de codificación entre las subunidades, y distance_idx puede codificarse y señalarse para cada subunidad.
El método de codificación de fusión por diferencia de movimiento puede aplicarse sólo a algunas de varias subunidades generadas al subdividir un bloque de codificación. Por ejemplo, cuando el bloque actual se divide en una primera subunidad y una segunda subunidad, el vector de movimiento de la primera subunidad se puede establecer para que sea el mismo que el vector de movimiento del candidato de fusión, y el vector de movimiento de la segunda subunidad se puede obtener añadiendo un vector de desplazamiento al vector de movimiento del candidato de fusión.
En lugar de señalar información para determinar un vector de desplazamiento, el descodificador puede obtener el vector de desplazamiento. En concreto, el vector de desplazamiento se puede obtener utilizando un valor medio para los gradientes de dirección horizontal y un valor medio para los gradientes de dirección vertical de las muestras de predicción incluidas en el subbloque.
Aquí, el gradiente se puede obtener basándose en una diferencia entre una muestra reconstruida correspondiente a una muestra de predicción en una imagen de referencia y una muestra vecina adyacente a la muestra reconstruida. Por ejemplo, el gradiente de dirección horizontal puede indicar una diferencia entre una muestra reconstruida y una muestra reconstruida vecina en el lado izquierdo y/o derecho, y el gradiente de dirección vertical puede indicar una diferencia entre una muestra reconstruida y una muestra reconstruida vecina en el lado superior y/o inferior.
Entre los candidatos de fusión incluidos en la lista de candidatos de fusión, se puede añadir a la lista de candidatos de fusión un candidato que tenga un vector de movimiento obtenido de la adición o sustracción de un vector de desplazamiento hacia o desde el vector de movimiento de un candidato de fusión de referencia entre los candidatos de fusión incluidos en la lista de candidatos de fusión. Un candidato de fusión que tenga un vector de movimiento obtenido de la adición o sustracción de un vector de desplazamiento hacia o desde el vector de movimiento de un candidato de fusión de referencia puede denominarse candidato de fusión refinado.
La información de movimiento restante, excluyendo el vector de movimiento del candidato de fusión refinado, se puede establecer para que sea la misma que la del candidato de fusión de referencia.
La figura 32 es una vista que muestra candidatos de vectores de movimiento que puede tomar un candidato de fusión refinado.
Cuando el vector de movimiento de un candidato de fusión de referencia es (MvLX[0], MvLX[1]), el vector de movimiento del candidato de fusión de refinado se puede obtener sumando o restando un desplazamiento a o desde al menos uno entre el componente x y el componente y del vector de movimiento del candidato de fusión de referencia. Por ejemplo, el vector de movimiento del candidato de fusión refinado se puede establecer en (MvLX[0]+M, MvLX[1]), (MvLX[0]-M, MvLX[1]), (MvLX[0], MvLX[1]+M) o (MvLX[0], MvLX[1]-M). M indica la magnitud del vector de desplazamiento.
El candidato de fusión de referencia puede ser un candidato de fusión que tenga un valor de índice predefinido en la lista de candidatos de fusión. Por ejemplo, un candidato de fusión que tenga el menor valor de índice (es decir, un candidato de fusión que tenga un valor de índice de 0) o un candidato de fusión que tenga el mayor valor de índice entre los candidatos de fusión incluidos en la lista de candidatos de fusión se puede establecer como candidato de fusión de referencia. Como alternativa, un candidato de fusión interregional que tenga el menor valor de índice o un candidato de fusión interregional que tenga el mayor valor de índice en la lista de información de movimiento interregional se puede establecer como candidato de fusión de referencia.
Como alternativa, un candidato de fusión que tenga el valor de índice más pequeño entre los candidatos de fusión con información de movimiento bidireccional se puede establecer como candidato de fusión de referencia. Es decir, cuando los bloques candidatos se buscan de forma secuencial, un candidato de fusión bidireccional encontrado primero se puede establecer como candidato de fusión de referencia.
Se puede seleccionar un candidato de fusión básico en función del tamaño del bloque actual, la forma del bloque actual o si el bloque actual está en contacto con el límite de una unidad de árbol de codificación. Por ejemplo, cuando el bloque actual tiene forma cuadrada o no cuadrada y la altura es mayor que la anchura, se puede establecer como candidato de fusión de referencia un candidato de fusión con índice 0 o un candidato de fusión obtenido de un bloque vecino situado en la parte superior del bloque actual. Cuando el bloque actual tiene una forma no cuadrada cuya anchura es mayor que la altura, un candidato de fusión con un índice de 1 o un candidato de fusión obtenido de un bloque vecino situado en el lado izquierdo del bloque actual se puede establecer como candidato de fusión de referencia.
Como alternativa, la información que especifica el candidato de fusión de referencia se puede indicar a través de un flujo de bits. La información puede ser información de índice que especifique cualquiera de los candidatos de fusión incluidos en la lista de candidatos de fusión.
La información que indica si se utiliza o no el candidato de fusión refinado se puede indicar a través de un flujo de bits. La información puede ser una bandera de 1 bit. Cuando el valor del indicador es 1, un candidato de fusión refinado generado en función del candidato de fusión de referencia se puede añadir a la lista de candidatos de fusión. Por otra parte, cuando el valor del indicador es 0, la lista de candidatos de fusión puede no incluir el candidato de fusión refinado.
Como alternativa, cuando el número de candidatos de fusión añadidos previamente a la lista de candidatos de fusión es menor que el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión, el candidato de fusión refinado se puede añadir a la lista de candidatos de fusión. Aquí, los candidatos de fusión previamente añadidos pueden incluir al menos uno entre un candidato de fusión espacial, un candidato de fusión temporal, un candidato de fusión interregional y un candidato de fusión por pares. Por ejemplo, cuando el número de al menos uno entre los candidatos de fusión espacial, los candidatos de fusión temporal y los candidatos de fusión interregional incluidos en la lista de candidatos de fusión es menor o igual que un valor umbral, el candidato de fusión refinado se puede añadir a la lista de candidatos de fusión.
Como alternativa, cuando el número de candidatos de fusión añadidos previamente a la lista de candidatos de fusión es mayor o igual que un valor umbral, se puede utilizar el candidato de fusión refinado.
El número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión se puede establecer de forma diferente según se utilice o no el candidato de fusión refinado. Por ejemplo, cuando se establece que no se utilice el candidato de fusión refinado, el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión se puede establecer en N, mientras que cuando se establece que se utilice el candidato de fusión refinado, el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión se puede establecer en N n.
Un candidato de fusión refinado puede tener un índice mayor que el de los candidatos de fusión añadidos previamente a la lista de candidatos de fusión. Por ejemplo, la Tabla 11 muestra un ejemplo de configuración de una lista de candidatos de fusión.
[Tabla 11]
En la Tabla 11, mergeCand[X] denota un candidato de fusión que tiene un índice X. mvLx[0] denota el vector de movimiento del componente x del candidato de fusión de referencia, y mvLx[1] denota el vector de movimiento del componente y del candidato de fusión de referencia. Por ejemplo, cuando el candidato de fusión de referencia es mergeCand[0], mvLx[0] y mvLx[1] pueden indicar el vector de movimiento de mergeCand[0].
La magnitud M del vector de desplazamiento puede estar predefinida en el codificador y el descodificador. Por ejemplo, la magnitud M del vector de desplazamiento se puede establecer en un número entero menor o igual que 4, como 1 o 4.
Como alternativa, la información para determinar un vector de desplazamiento se puede indicar a través de un flujo de bits. La información puede señalizarse a un nivel de secuencia, de imagen, de sector o de bloque. Por ejemplo, el vector de desplazamiento se puede determinar utilizando al menos una de las informaciones distance_idx para determinar la magnitud del vector de desplazamiento y direction_idx para determinar la dirección del vector de desplazamiento descritas anteriormente.
Como se muestra en el ejemplo de la Tabla 11, al menos un candidato de fusión refinado obtenido del candidato de fusión de referencia se puede añadir a la lista de candidatos de fusión. Cuando hay un candidato de fusión que tiene la misma información de movimiento que el candidato de fusión refinado entre los candidatos de fusión añadidos previamente, el candidato de fusión refinado puede no añadirse a la lista de candidatos de fusión. Por ejemplo, cuando un candidato de fusión refinado obtenido del candidato de fusión de referencia mergeCand[0] es el mismo que cualquiera de los candidatos de fusión de mergeCand[1] a mergeCand[5], el candidato de fusión refinado no podrá añadirse a la lista de candidatos de fusión.
Como alternativa, cuando hay un candidato de fusión que tiene la misma información de movimiento que el candidato de fusión refinado, el candidato de fusión refinado puede ser obtenido de nuevo cambiando el vector de desplazamiento o restableciendo un candidato de fusión que tiene la misma información de movimiento que el candidato de fusión refinado como el candidato de fusión refinado. Por ejemplo, cuando la información de movimiento del candidato de fusión refinado mergeCand[6] obtenido en función del candidato de fusión de referencia mergeCand[0] es la misma que la del candidato de fusión mergeCand[2], el vector de movimiento del candidato de fusión refinado mergeCand[6] puede cambiarse a un valor obtenido sumando o restando un vector de desplazamiento al o del vector de movimiento del candidato de fusión [2]. Por ejemplo, el vector de movimiento de mergeCand[6] puede cambiarse de (mergeCand[0]_mxLx[0]+M, mergeCand[0]_mvLx[1]) a (mergeCand[2]_mxLx[0]+M, mergeCand[2]_mvLx[1]). Aquí, mergeCand[X]_mvLx denota un vector de movimiento de un candidato de fusión que tiene un índice de X.
Como otro ejemplo, un vector de desplazamiento se puede determinar utilizando una lista de desplazamiento de refinamiento de fusión que incluya al menos un candidato a desplazamiento de fusión. Cuando un candidato de fusión especificado por la información de índice del bloque actual es un candidato de fusión de referencia, el vector de desplazamiento se puede determinar utilizando la lista de desplazamiento de refinamiento de fusión. Además, el vector de movimiento del bloque actual se puede obtener sumando o restando el vector de desplazamiento al o del vector de movimiento del candidato de fusión. El candidato de fusión de referencia puede ser un candidato de fusión que tenga un valor de índice predefinido en la lista de candidatos de fusión. Por ejemplo, entre los candidatos de fusión incluidos en la lista de candidatos de fusión, un candidato de fusión que tenga el menor valor de índice (es decir, un candidato de fusión que tenga un valor de índice de 0) o un candidato de fusión que tenga el mayor valor de índice se puede establecer como el candidato de fusión de referencia. Como alternativa, un candidato de fusión interregional que tenga el menor valor de índice o un candidato de fusión interregional que tenga el mayor valor de índice en la lista de información de movimiento interregional se puede establecer como el candidato de fusión de referencia.
La figura 33 es una vista que muestra la configuración de una lista de desplazamiento de refinamiento de fusión.
En la figura 33, se asume que el candidato de fusión de referencia es un candidato de fusión que tiene un índice de 6.
Cuando el índice de un candidato de fusión especificado por la información de índice merge_idx que indica alguno de los candidatos de fusión no es 6, el vector de movimiento del candidato de fusión se puede establecer como el vector de movimiento del bloque actual.
Por otra parte, cuando el índice de un candidato de fusión especificado por la información de índice merge_idx es 6, se puede obtener un vector de desplazamiento utilizando la lista de desplazamiento de refinamiento de la fusión. La información de índice MrgOffset_idx que especifica uno cualquiera de entre los candidatos de desplazamiento de fusión incluidos en la lista de desplazamiento de refinamiento de fusión se puede indicar a través de un flujo de bits.
Cuando se especifica un vector de desplazamiento, el vector de movimiento del bloque actual se puede obtener sumando o restando el vector de desplazamiento al vector de movimiento del candidato de fusión de referencia.
La lista de desplazamiento de refinamiento de fusión puede incluir al menos un candidato a desplazamiento de fusión. Por ejemplo, el número de candidatos de desplazamiento de fusión que incluye la lista de desplazamiento de refinamiento de fusión puede ser 4, 8 o 16.
Las figuras 34 y 35 son vistas que muestran vectores de desplazamiento especificados por candidatos a desplazamiento de fusión.
La figura 34 muestra un ejemplo en el que el número de candidatos de desplazamiento de fusión es 8, y la figura 35 muestra un ejemplo en el que el número de candidatos de desplazamiento de fusión es 16.
Según se muestra en el ejemplo de la figura 34 (a), los vectores de desplazamiento indicados por los candidatos de desplazamiento de fusión pueden establecerse para que el valor absoluto del vector de movimiento de la dirección horizontal y/o el valor absoluto del vector de movimiento de la dirección vertical tengan un valor fijo. Como alternativa, según se muestra en la figura 35, los vectores de desplazamiento indicados por los candidatos de desplazamiento de fusión que tienen un índice menor que un valor umbral entre los candidatos de desplazamiento de fusión pueden establecerse de modo que el valor absoluto del vector de movimiento de la dirección horizontal y/o el valor absoluto del vector de movimiento de la dirección vertical puedan tener un primer valor, y los vectores de desplazamiento indicados por los otros candidatos de desplazamiento de fusión pueden establecerse de modo que el valor absoluto del vector de movimiento de la dirección horizontal y/o el valor absoluto del vector de movimiento de la dirección vertical puedan tener un segundo valor.
Como alternativa, según se muestra en la figura 34 (b), los vectores de desplazamiento indicados por los candidatos de desplazamiento de fusión pueden establecerse de modo que la suma del valor absoluto del vector de movimiento de la dirección horizontal y el valor absoluto del vector de movimiento de la dirección vertical puedan tener un valor fijo.
Puede establecerse varios candidatos de fusión de referencia. Por ejemplo, entre los candidatos de fusión incluidos en la lista de candidatos de fusión, dos candidatos de fusión que tengan el índice más pequeño pueden establecerse como candidatos de fusión de referencia. En consecuencia, cuando el índice de un candidato de fusión especificado por la información de índice merge_idx es 0 o 1, se puede obtener un vector de desplazamiento utilizando la lista de desplazamiento de refinamiento de la fusión. Como alternativa, un candidato de fusión que tenga el índice más pequeño entre los candidatos de fusión incluidos en la lista de candidatos de fusión y un candidato de fusión que tenga el índice más grande entre los candidatos de fusión incluidos en la lista de candidatos de fusión interregional pueden establecerse como candidatos de fusión de referencia.
En el modo de predicción avanzada de vectores de movimiento, el vector de movimiento del bloque actual se puede obtener añadiendo un vector de diferencia de movimiento a un vector de predicción de movimiento. El vector de predicción de movimiento del bloque actual se puede determinar basándose en una lista de candidatos a vector de predicción de movimiento que incluya al menos un candidato a vector de predicción de movimiento. Por ejemplo, cualquiera de los candidatos a vector de predicción de movimiento se puede establecer como el vector de predicción de movimiento del bloque actual.
El candidato a predicción del vector de movimiento se puede obtener en función de al menos uno de los bloques vecinos espacialmente del bloque actual y un bloque vecino temporalmente del bloque actual.
La figura 36 es una vista que muestra bloques candidatos utilizados para obtener candidatos de predicción de vectores de movimiento.
El bloque vecino espacial puede incluir bloques vecinos superiores situados en la parte superior del bloque actual y bloques vecinos izquierdos situados en el lado izquierdo del bloque actual. Los bloques vecinos superiores pueden incluir al menos uno entre el bloque B0 que incluye una muestra en la posición de (xCb+CbW, yCb-1), el bloque B1 que incluye una muestra en la posición de (xCb+CbW-1, yCb-1), el bloque B2 que incluye una muestra en la posición de (xCb-1, yCb-1), y el bloque B3 que incluye una muestra en la posición de (xCb, yCb-1). Aquí, (xCb, yCb) denota la posición de la muestra superior izquierda del bloque actual, y CbW denota la anchura del bloque actual. Los bloques vecinos izquierdos pueden incluir al menos uno entre el bloque A0 que incluye una muestra en la posición de (xCb-1, yCb+CbH), el bloque A1 que incluye una muestra en la posición de (xCb-1, yCb+CbH-1), y el bloque A2 que incluye una muestra en la posición de (xCb-1, yCb) Aquí, CbH denota la altura del bloque actual.
El bloque temporalmente vecino puede incluir al menos uno entre el bloque C0 que incluye una muestra en el centro de un bloque que tiene una posición y un tamaño iguales a los del bloque actual en un bloque colocado, y el bloque C1 que incluye una muestra adyacente a la esquina inferior derecha del bloque.
El número máximo de candidatos a predicción de vectores de movimiento que puede incluir la lista de candidatos a predicción de vectores de movimiento puede ser dos. La secuencia de derivación de los candidatos a predicción del vector de movimiento se describe a continuación.
1. Cuando al menos uno de los bloques vecinos izquierdo A0 y A1 está disponible, el vector de movimiento del bloque disponible se establece como candidato de predicción del vector de movimiento.
2. Cuando al menos uno de los bloques vecinos superiores B0, B1 y B2 está disponible, el vector de movimiento del bloque disponible se establece como candidato para la predicción del vector de movimiento.
3. Cuando se dispone de un bloque temporalmente vecino, se establece un vector de movimiento temporal como candidato a predicción de vector de movimiento.
4. Se establece un vector de movimiento cero como candidato a predicción de vector de movimiento.
Como alternativa, cuando el número de candidatos a predicción de vectores de movimiento obtenidos en la secuencia de 1 a 3 es inferior a dos, un vector de movimiento incluido en la lista de información de movimiento interregional se puede establecer como candidato a predicción de vector de movimiento. Cuando la lista de información de movimiento inter-regional está disponible, los modo de predicción de vectores de movimiento se pueden obtener en la secuencia descrita a continuación.
1. Cuando al menos uno entre el bloque vecino izquierdo A0 y el bloque vecino izquierdo A1 está disponible, el vector de movimiento del bloque disponible se establece como candidato de predicción de vector de movimiento.
2. Cuando al menos uno de los bloques vecinos superiores B0, B1 y B2 está disponible, el vector de movimiento del bloque disponible se establece como candidato para la predicción del vector de movimiento.
3. Cuando se dispone de un bloque temporalmente vecino, se establece un vector de movimiento temporal como candidato a predicción de vector de movimiento.
4. Un vector de movimiento incluido en la lista de información de movimiento interregional se establece como candidato a predicción de vector de movimiento.
5. Se establece un vector de movimiento cero como candidato a predicción de vector de movimiento.
Un candidato a predicción de vector de movimiento que tiene un vector de movimiento obtenido de la adición o sustracción de un vector de desplazamiento a o desde un vector de movimiento de un candidato a predicción de vector de movimiento de referencia se puede añadir a la lista de candidatos a predicción de vector de movimiento. El candidato a predicción de vector de movimiento que tiene un vector de movimiento obtenido de la adición o sustracción de un vector de desplazamiento a o desde un vector de movimiento de un candidato a predicción de vector de movimiento de referencia puede denominarse candidato a predicción de vector de movimiento refinado.
La figura 37 es una vista mostrando candidatos de vector de movimiento que pueden ser establecidos como un candidato de predicción de vector de movimiento refinado.
Cuando el vector de movimiento del candidato a predicción del vector de movimiento de referencia es (MvpLX[0], MvpLX[1]), el vector de movimiento del candidato a predicción del vector de movimiento refinado se puede obtener sumando o restando un desplazamiento a al menos uno entre el componente x y el componente y del vector de movimiento del candidato a predicción del vector de movimiento de referencia. Por ejemplo, el vector de movimiento del candidato para la predicción del vector de movimiento refinado se puede establecer como (MvpLX[0]+M, MvpLX[1]), (MvpLX[0]-M, MvpLX[1]), (MvpLX[0], MvpLX[1]+M) o (MvpLX[0], MvpLX[1]-M). M indica la magnitud del vector de desplazamiento.
La magnitud M del vector de desplazamiento puede estar predefinida en el codificador y el descodificador. Por ejemplo, la magnitud M del vector de desplazamiento se puede establecer en un número entero menor o igual que 4, como 1 o 4.
Como alternativa, la información para determinar un vector de desplazamiento se puede indicar a través de un flujo de bits. La información puede señalizarse a un nivel de secuencia, de imagen, de sector o de bloque. Por ejemplo, el vector de desplazamiento se puede determinar utilizando al menos una de las informaciones distance_idx para determinar la magnitud del vector de desplazamiento y direction_idx para determinar la dirección del vector de desplazamiento descritas anteriormente.
El candidato a predicción de vector de movimiento de referencia puede ser un candidato a predicción de vector de movimiento que tenga un valor de índice predefinido en la lista de candidatos a predicción de vector de movimiento. Por ejemplo, entre los modo de predicción de vectores de movimiento incluidos en la lista de modo de predicción de vectores de movimiento, un candidato de predicción de vector de movimiento que tenga un valor de índice de 0 o un candidato de predicción de vector de movimiento que tenga un valor de índice de 1 se puede establecer como el candidato de predicción de vector de movimiento de referencia.
Como otro ejemplo, un vector de desplazamiento se puede determinar utilizando una lista de desplazamiento de refinamiento de fusión que incluya al menos un candidato a desplazamiento de vector de predicción. Cuando un candidato de predicción de vector de movimiento especificado por la información de índice del bloque actual es un candidato de predicción de vector de movimiento de referencia, el vector de desplazamiento se puede determinar utilizando una lista de desplazamiento de refinamiento de vector de predicción. Además, el vector de predicción de movimiento del bloque actual se puede obtener sumando o restando el vector de desplazamiento al vector de movimiento del candidato a vector de predicción de movimiento. El candidato a predicción de vector de movimiento de referencia puede ser un candidato a predicción de vector de movimiento que tenga un valor de índice predefinido en la lista de candidatos a predicción de vector de movimiento. Por ejemplo, entre los modo de predicción de vectores de movimiento incluidos en la lista de modo de predicción de vectores de movimiento, un candidato de predicción de vector de movimiento que tenga el menor valor de índice o un candidato de predicción de vector de movimiento que tenga el mayor valor de índice se puede establecer como el candidato de predicción de vector de movimiento de referencia.
Cuando el vector de desplazamiento se calcula utilizando la lista de refinamiento de desplazamiento de vector de predicción, el número máximo de candidatos de vector de predicción que puede incluir la lista de candidatos de vector de predicción se puede establecer en un valor superior a 2.
La figura 38 es una vista que muestra la configuración de una lista de desplazamiento de refinamiento de vectores de predicción.
En la figura 38, se asume que el candidato a vector de predicción de referencia es un candidato a vector de predicción que tiene un índice de 2.
Cuando el índice de un candidato a vector de predicción especificado por la información de índice AMVPcand_idx que indica alguno de los candidatos a vector de predicción no es 2, el vector de movimiento del candidato a vector de predicción se puede establecer como el vector de predicción de movimiento del bloque actual.
Por otra parte, cuando el índice de un vector de predicción candidato especificado por la información de índice AMVPcy _idx es 2, el vector de desplazamiento se puede obtener utilizando la lista de desplazamiento de refinamiento del vector de predicción. La información de índice AMVPOffset_idx que especifica uno cualquiera de entre los candidatos de vector de predicción incluidos en la lista de vectores de predicción refinados puede ser señalada a través de un flujo de bits.
Cuando se especifica un vector de desplazamiento, el vector de predicción de movimiento del bloque actual se puede obtener sumando o restando el vector de desplazamiento al vector de movimiento del candidato a vector de predicción de referencia o a partir de él.
Incluso cuando el bloque de codificación se codifica en función del modelo de movimiento afín, puede utilizarse una técnica de refinamiento de un vector de movimiento. Por ejemplo, cuando se aplica el modo de predicción de vector del movimiento avanzado afín, los vectores semilla afines del bloque de codificación se pueden obtener añadiendo un vector diferencia de semilla afín a un vector de predicción de semilla afín. Aquí, el vector de predicción de semilla afín se puede obtener en función de un vector semilla afín de un bloque espacialmente vecino o de un bloque temporalmente vecino del bloque de codificación. El vector de diferencia de semilla afín se puede determinar en función de la información señalada desde un flujo de bits. En este punto, el mismo vector de diferencia de semilla afín puede aplicarse a todos los puntos de control. Como alternativa, la información para determinar el vector semilla afín puede ser señalada para cada punto de control.
Cuando se obtiene un vector afín para un subbloque en función de los vectores semilla afines del bloque de codificación, el vector afín se puede establecer como vector de movimiento inicial y, a continuación, puede obtenerse un vector de desplazamiento. El vector de movimiento de cada subbloque puede obtenerse sumando o restando el vector de desplazamiento al vector de movimiento inicial.
En lugar de señalar información para determinar un vector de desplazamiento, el descodificador puede obtener el vector de desplazamiento. En concreto, el vector de desplazamiento se puede obtener utilizando un valor medio para los gradientes de dirección horizontal y un valor medio para los gradientes de dirección vertical de las muestras de predicción incluidas en el subbloque.
La intra predicción es para predecir un bloque actual usando muestras reconstruidas que se han codificado/descodificado en las proximidades del bloque actual. En este punto, pueden usarse muestras reconstruidas antes de aplicar un filtro en bucle para intra predicción del bloque actual.
La técnica de intra predicción incluye intra predicción basada en matriz e intra predicción general considerando la direccionalidad con respecto a las muestras reconstruidas vecinas. Puede señalizarse información que indica la técnica de intra predicción del bloque actual a través de un flujo de bits. La información puede ser una bandera de 1 bit. Como alternativa, la técnica de intra predicción del bloque actual puede determinarse basándose en al menos uno de entre la ubicación, el tamaño y la forma del bloque actual, o basándose en una técnica de intra predicción de un bloque vecino. Por ejemplo, cuando el bloque actual existe a través de una frontera de imagen, puede establecerse no aplicar la intra predicción de intra predicción basada en matriz al bloque actual.
La intra predicción basada en matriz es un método para adquirir un bloque de predicción del bloque actual mediante un codificador y un descodificador basándose en un producto de matriz entre una matriz previamente almacenada y muestras reconstruidas en las proximidades del bloque actual. Puede señalizarse información para especificar una cualquiera de entre varias matrices previamente almacenadas a través de un flujo de bits. El descodificador puede determinar una matriz para intra predicción del bloque actual basándose en la información y el tamaño del bloque actual.
La intra predicción general es un método para adquirir un bloque de predicción para el bloque actual basándose en un modo de intra predicción no angular o un modo de intra predicción angular.
Una imagen residual derivada puede derivarse restando un vídeo de predicción de un vídeo original. En este punto, cuando el vídeo residual se cambia al dominio de la frecuencia, la calidad de vídeo subjetiva del vídeo no se reduce significativamente, aunque se eliminan las componentes de alta frecuencia de entre las componentes de frecuencia. En consecuencia, cuando los valores de las componentes de alta frecuencia se convierten para ser pequeños o los valores de las componentes de alta frecuencia se establecen a 0, hay un efecto de aumentar la eficiencia de compresión sin generar una distorsión visual significativa. Al reflejar esta característica, el bloque actual puede transformarse para descomponer un vídeo residual en componentes de frecuencia bidimensionales. La transformada puede realizarse usando una técnica de transformada tal como transformada discreta del coseno (DCT) o transformada discreta del seno (DST).
Después de que el bloque actual se haya transformado usando DCT o DST, el bloque actual transformado puede transformarse de nuevo. En este punto, la transformada basándose en DCT o DST puede definirse como una primera transformada y transformar de nuevo un bloque al cual se aplica la primera transformada puede definirse como una segunda transformada.
La primera transformada puede realizarse usando uno cualquiera de entre varios candidatos de núcleo de transformada. Por ejemplo, la primera transformada puede realizarse usando una cualquiera de entre DCT2, DCT8 o DCT7.
Pueden usarse diferentes núcleos de transformada para la dirección horizontal y la dirección vertical. Puede señalizarse información que indica la combinación de un núcleo de transformada de la dirección horizontal y un núcleo de transformada de la dirección vertical a través de un flujo de bits.
Las unidades para realizar la primera transformada y la segunda transformada pueden ser diferentes. Por ejemplo, la primera transformada puede realizarse sobre un bloque de 8 x 8, y la segunda transformada puede realizarse sobre un subbloque de un tamaño de 4 x 4 de entre el bloque de 8 x 8 transformado. En este punto, los coeficientes de transformada de las regiones residuales que no se han realizado, la segunda transformada puede establecerse a 0.
Como alternativa, la primera transformada puede realizarse sobre un bloque de 4 x 4, y la segunda transformada puede realizarse sobre una región de un tamaño de 8 x 8 que incluye el bloque de 4 x 4 transformado.
Puede señalizarse información que indica si se ha realizado, o no, la segunda transformada a través de un flujo de bits.
El descodificador puede realizar una transformada inversa de la segunda transformada (una segunda transformada inversa) y puede realizar una transformada inversa de la primera transformada (una primera transformada inversa) sobre un resultado de la transformada inversa. Como resultado de realizar la segunda transformada inversa y la primera transformada 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 un proceso de división de un coeficiente de transformada por un valor constante específico. El valor constante puede derivarse 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 transformada y cuantificación, el descodificador puede adquirir un bloque residual a través de cuantificación inversa y transformada inversa. El descodificador puede adquirir un bloque reconstruido para el bloque actual sumando un bloque de predicción y el bloque residual.
Cuando se adquiere un bloque reconstruido del bloque actual, la pérdida de información que tiene lugar en el proceso de cuantificación y codificación se puede reducir a través de un filtrado en bucle. Un filtro en bucle puede incluir al menos uno de entre un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) y un filtro de bucle adaptativo (ALF).
Cada uno de los componentes (por ejemplo, unidades, módulos, etc.) que constituyen el diagrama de bloques en las formas de realización descritas anteriormente puede implementarse como un dispositivo de hardware o software, o varios componentes pueden combinarse para implementarse como un único dispositivo de hardware o software. Las realizaciones descritas anteriormente pueden implementarse en forma de órdenes de programa que pueden ejecutarse a través de diversos componentes informáticos y registrarse en un medio de registro legible por ordenador. El medio de registro legible por ordenador puede incluir órdenes de programa, archivos de datos, estructuras de datos y similares, independientemente o en combinación. El medio de registro legible por ordenador incluye, por ejemplo, medios magnéticos tales como un disco duro, un disquete y una cinta magnética, medios de registro ópticos tales como un CD-ROM y un DVD, medios magneto-ópticos tales como un disco óptico flexible y dispositivos de hardware configurados especialmente para almacenar y ejecutar órdenes de programa, tales como una ROM, una RAM, una memoria flash y similares. Los dispositivos de hardware descritos anteriormente pueden configurarse para funcionar utilizando uno o más módulos de software para realizar el proceso de la presente descripción, y viceversa.
La presente descripción puede aplicarse a un dispositivo electrónico que codifica y descodifica un vídeo.

Claims (5)

REIVINDICACIONES
1. Un método de descodificación de vídeo que comprende las etapas de:
determinar si se aplica un método de codificación por diferencia de movimiento de fusión a un bloque actual; generar una lista de candidatos de fusión para el bloque actual;
especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; y obtener un vector de movimiento para el bloque actual en función del candidato de fusión, en el que
cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión,
cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada a partir de un flujo de bits que indica uno entre los candidatos de fusión, y
cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información del índice, en el que la magnitud del vector de desplazamiento se obtiene aplicando una operación de desplazamiento por un valor preestablecido al valor indicado por el valor de magnitud de movimiento especificado por la primera información de índice,
en la que la dirección del vector de desplazamiento se determina basándose en una segunda información de índice que especifica uno de los valores de dirección del vector,
en el que el rango de valores de tamaño de desplazamiento del vector de movimiento se establece de forma diferente en función de la precisión del vector de movimiento, y
en el que cuando la precisión del vector de movimiento para el bloque actual es un pel fraccionario, los valores de la primera información de índice se establecen en 1,2, 4, 8 o 16, y
cuando la precisión del vector de movimiento para el bloque actual es un entero-pel, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 4, 8, 16, 32 o 64.
2. Un método de codificación de vídeo que comprende las etapas de:
determinar si se aplica un método de codificación por diferencia de movimiento de fusión a un bloque actual; generar una lista de candidatos de fusión para el bloque actual;
especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión; obtener un vector de movimiento para el bloque actual en función del candidato de fusión; y
codificación de un indicador que indica los valores numéricos de los candidatos a magnitud de movimiento, , en la que cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión,
cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información del índice,
en el que la magnitud del vector de desplazamiento se obtiene aplicando una operación de desplazamiento por un valor preestablecido al valor indicado por el valor de magnitud de movimiento especificado por la primera información de índice,
en la que la dirección del vector de desplazamiento se determina basándose en una segunda información de índice que especifica uno de los valores de dirección del vector,
en el que el rango de valores de tamaño de desplazamiento del vector de movimiento se establece de forma diferente en función de la precisión del vector de movimiento, y
en el que, cuando la precisión del vector de movimiento para el bloque actual es un pel fraccionario, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 1,2, 4, 8 o 16, y
cuando la precisión del vector de movimiento para el bloque actual es un entero-pel, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 4, 8, 16, 32 o 64.
3. Aparato de descodificación de vídeo que comprende una parte de interpredicción (230) para determinar si se aplica un método de codificación de fusión por diferencia de movimiento a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, y obtener un vector de movimiento para el bloque actual en función del candidato de fusión, en el que
cuando el método de codificación de la diferencia de movimiento por fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, el candidato de fusión del bloque actual se selecciona en función de la información de índice descodificada a partir de un flujo de bits que indica uno entre los candidatos de fusión, y
cuando el número máximo es 1, el candidato de fusión se determina sin descodificar la información del índice, en el que la magnitud del vector de desplazamiento se obtiene aplicando una operación de desplazamiento por un valor preestablecido al valor indicado por el valor de magnitud de movimiento especificado la primera información de índice,
en la que la dirección del vector de desplazamiento se determina basándose en una segunda información de índice que especifica uno de los valores de dirección del vector,
en el que el rango de valores de tamaño de desplazamiento del vector de movimiento se establece de forma diferente en función de la precisión del vector de movimiento, y
en el que, cuando la precisión del vector de movimiento para el bloque actual es un pel fraccionario, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 1, 2, 4, 8 o 16, y
cuando la precisión del vector de movimiento para el bloque actual es un entero-pel, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 4, 8, 16, 32 o 64.
4. Aparato de codificación de vídeo que comprende una parte de interpredicción (120) para determinar si se aplica un método de codificación de fusión por diferencia de movimiento a un bloque actual, generar una lista de candidatos de fusión para el bloque actual, especificar un candidato de fusión para el bloque actual en función de la lista de candidatos de fusión, obtener un vector de movimiento para el bloque actual en función del candidato de fusión, y codificando un indicador que indica los valores numéricos de los candidatos a la magnitud de movimiento, en el que cuando el método de codificación por diferencia de movimiento de fusión se aplica al bloque actual, el vector de movimiento del bloque actual se obtiene añadiendo un vector de desplazamiento a un vector de movimiento del candidato de fusión, cuando el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión es plural, se codifica la información de índice que indica el candidato de fusión del bloque actual entre los candidatos de fusión, y cuando el número máximo es 1, se omite la codificación de la información de índice, en el que la magnitud del vector de desplazamiento se obtiene aplicando una operación de desplazamiento por un valor preestablecido al valor indicado por el valor de magnitud de movimiento especificado por la primera información de índice,
en la que la dirección del vector de desplazamiento se determina basándose en una segunda información de índice que especifica uno de los valores de dirección del vector,
en el que el rango de valores de tamaño de desplazamiento del vector de movimiento se establece de forma diferente en función de la precisión del vector de movimiento, y
en el que, cuando la precisión del vector de movimiento para el bloque actual es un pel fraccionario, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 1, 2, 4, 8 o 16, y
cuando la precisión del vector de movimiento para el bloque actual es un entero-pel, los valores de la magnitud de movimiento variable correspondientes a los valores respectivos de la primera información de índice se establecen en 4, 8, 16, 32 o 64.
5. Un medio de almacenamiento legible por ordenador que comprende instrucciones que, cuando son ejecutadas por al menos un procesador, provocan que el al menos un procesador realice el método de cualquiera de las reivindicaciones 1 a 2.
ES19883103T 2018-11-08 2019-11-08 Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo Active ES2972074T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20180136262 2018-11-08
KR20180167979 2018-12-21
PCT/KR2019/015198 WO2020096426A1 (ko) 2018-11-08 2019-11-08 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

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

Family

ID=70611562

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19883103T Active ES2972074T3 (es) 2018-11-08 2019-11-08 Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo

Country Status (18)

Country Link
US (1) US20210235075A1 (es)
EP (2) EP4287622A3 (es)
JP (5) JP7460616B2 (es)
KR (6) KR102907584B1 (es)
CN (6) CN116074505B (es)
AU (5) AU2019376595B2 (es)
BR (1) BR112021008720A2 (es)
CA (3) CA3199533C (es)
CL (1) CL2021001126A1 (es)
ES (1) ES2972074T3 (es)
IL (5) IL315819A (es)
MX (5) MX2021004886A (es)
MY (1) MY209696A (es)
PH (1) PH12021550912A1 (es)
PL (1) PL3860123T3 (es)
SG (1) SG11202104531TA (es)
WO (1) WO2020096426A1 (es)
ZA (1) ZA202103282B (es)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113302921A (zh) 2018-11-08 2021-08-24 Oppo广东移动通信有限公司 视频信号编码/解码方法以及用于所述方法的设备
WO2020098808A1 (en) 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction of merge with motion vector difference candidates
EP3868107A4 (en) * 2018-12-21 2021-12-15 Beijing Bytedance Network Technology Co. Ltd. MOTION VECTOR ACCURACY IN INTERACTING WITH MOTION VECTOR DIFFERENCE MODE
KR102737934B1 (ko) 2019-09-19 2024-12-04 두인 비전 컴퍼니 리미티드 비디오 코딩에서 레퍼런스 샘플 위치 유도
CN118890491A (zh) 2019-10-05 2024-11-01 北京字节跳动网络技术有限公司 基于级别的视频编解码工具的信令通知
EP4042678A4 (en) 2019-10-12 2023-01-18 Beijing Bytedance Network Technology Co., Ltd. USE AND REPORTING OF REFINEMENT VIDEO CODING TOOLS
CN117376557A (zh) 2019-10-13 2024-01-09 北京字节跳动网络技术有限公司 参考图片重采样与视频编解码工具之间的相互作用
CN115152230B (zh) 2019-12-27 2026-01-02 抖音视界有限公司 视频图片标头中的条带类型的信令
CN115278256B (zh) * 2020-03-16 2023-09-08 北京达佳互联信息技术有限公司 对视频数据进行解码的方法、装置和介质
MX2023015089A (es) 2021-06-14 2024-01-18 Beijing Dajia Internet Information Tech Co Ltd Metodos y dispositivos para modo de particion geometrica con refinamiento del vector de movimiento.
JP2025055374A (ja) * 2023-09-27 2025-04-08 シャープ株式会社 動画像復号装置および動画像符号化装置
WO2025117596A1 (en) * 2023-11-30 2025-06-05 Google Llc Adaptive motion vector candidates list
US20250286992A1 (en) * 2024-03-06 2025-09-11 Tencent America LLC Merge candidate construction

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011095260A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
CN107959852A (zh) * 2011-11-08 2018-04-24 株式会社Kt 对视频信号进行解码的方法
US8964845B2 (en) * 2011-12-28 2015-02-24 Microsoft Corporation Merge mode for motion information prediction
JP2013223049A (ja) * 2012-04-13 2013-10-28 Sharp Corp 画像復号装置、および画像符号化装置
US20130294513A1 (en) * 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
EP2878125A4 (en) * 2012-07-27 2016-10-12 Hfi Innovation Inc CONSTRAINED DISPARITY VECTOR DERIVATION METHOD IN 3D VIDEO CODING
WO2014163458A1 (ko) * 2013-04-05 2014-10-09 삼성전자주식회사 인터 레이어 복호화 및 부호화 방법 및 장치를 위한 인터 예측 후보 결정 방법
KR102034938B1 (ko) * 2014-09-01 2019-10-21 에이치에프아이 이노베이션 인크. 스크린 콘텐츠 및 비디오 코딩을 위한 인트라 픽처 블록 카피의 방법
CN107079165B (zh) * 2014-11-05 2020-06-19 联发科技(新加坡)私人有限公司 使用预测残差的视频编码方法及装置
US11509930B2 (en) * 2016-07-12 2022-11-22 Electronics And Telecommunications Research Institute Image encoding/decoding method and recording medium therefor
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
KR20180043151A (ko) * 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화를 위한 장치 및 방법
WO2018173432A1 (ja) * 2017-03-21 2018-09-27 シャープ株式会社 予測画像生成装置、動画像復号装置、および動画像符号化装置
KR102450863B1 (ko) * 2017-03-22 2022-10-05 에스케이텔레콤 주식회사 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
US10701391B2 (en) * 2017-03-23 2020-06-30 Qualcomm Incorporated Motion vector difference (MVD) prediction
CN109218733B (zh) * 2017-06-30 2022-03-29 华为技术有限公司 一种确定预测运动矢量预测的方法以及相关设备
WO2019190224A1 (ko) * 2018-03-30 2019-10-03 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019208372A1 (ja) * 2018-04-25 2019-10-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
SG11202100230PA (en) 2018-07-18 2021-02-25 Panasonic Ip Corp America Encoder, decoder, encoding method, and decoding method

Also Published As

Publication number Publication date
CN116208765B (zh) 2025-07-29
CN113382234A (zh) 2021-09-10
EP4287622A3 (en) 2024-02-21
KR102907584B1 (ko) 2026-01-05
AU2024278447A1 (en) 2025-01-09
CL2021001126A1 (es) 2021-10-01
AU2024278452B2 (en) 2026-01-29
JP7658000B2 (ja) 2025-04-07
EP3860123A4 (en) 2021-11-03
AU2024278449A1 (en) 2025-01-09
MY209696A (en) 2025-07-30
CN113382234B (zh) 2023-03-10
PH12021550912A1 (en) 2021-11-29
MX2024015089A (es) 2025-01-09
CN116074505A (zh) 2023-05-05
JP7657999B2 (ja) 2025-04-07
JP2024069563A (ja) 2024-05-21
IL315824A (en) 2024-11-01
IL315820A (en) 2024-11-01
CA3199533C (en) 2025-09-09
JP7661564B2 (ja) 2025-04-14
BR112021008720A2 (pt) 2021-08-03
KR20260005861A (ko) 2026-01-12
JP2022509743A (ja) 2022-01-24
JP2025098255A (ja) 2025-07-01
JP7804811B2 (ja) 2026-01-22
MX2021004886A (es) 2021-06-15
IL282664A (en) 2021-06-30
AU2024278447B2 (en) 2026-01-22
CA3117479A1 (en) 2020-05-14
CA3117479C (en) 2023-06-13
IL315819A (en) 2024-11-01
IL282664B2 (en) 2025-02-01
KR20200054111A (ko) 2020-05-19
IL315822A (en) 2024-11-01
MX2024015087A (es) 2025-01-09
KR20260012176A (ko) 2026-01-26
AU2019376595B2 (en) 2024-10-10
CN116074505B (zh) 2026-02-27
CN120692397A (zh) 2025-09-23
CN116074506B (zh) 2025-08-01
EP3860123B1 (en) 2023-12-27
ZA202103282B (en) 2022-08-31
AU2024278446B2 (en) 2026-01-29
CA3199533A1 (en) 2020-05-14
KR20260012177A (ko) 2026-01-26
KR20260011653A (ko) 2026-01-23
AU2024278446A1 (en) 2025-01-09
KR20260011113A (ko) 2026-01-22
US20210235075A1 (en) 2021-07-29
MX2024015088A (es) 2025-01-09
PL3860123T3 (pl) 2024-05-13
CN116074506A (zh) 2023-05-05
CN116208765A (zh) 2023-06-02
JP7460616B2 (ja) 2024-04-04
WO2020096426A1 (ko) 2020-05-14
AU2019376595A1 (en) 2021-05-20
SG11202104531TA (en) 2021-05-28
MX2024015086A (es) 2025-01-09
EP3860123A1 (en) 2021-08-04
JP2024069564A (ja) 2024-05-21
CN113039788A (zh) 2021-06-25
CA3275440A1 (en) 2025-10-31
EP4287622A2 (en) 2023-12-06
AU2024278449B2 (en) 2026-01-22
AU2024278452A1 (en) 2025-01-09
IL282664B1 (en) 2024-10-01
JP2024069562A (ja) 2024-05-21

Similar Documents

Publication Publication Date Title
ES2972074T3 (es) Método de codificación/descodificación de señal de imagen, y dispositivo para el mismo
ES2948265T3 (es) Método de codificación/descodificación de señales de imagen y aparato para el mismo
ES2972076T3 (es) Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo
ES2986850T3 (es) Método de codificación/decodificación de señales de imagen y dispositivo para el mismo
ES2955040T3 (es) Método de codificación/descodificación de señales de imagen y dispositivo para el mismo
RU2824092C1 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2809324C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2802731C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2809582C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2810054C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
AU2026201848A1 (en) Video signal encoding and decoding method, and apparatus therefor
CN121792729A (zh) 视频信号编码/解码方法以及用于所述方法的设备
CN121792728A (zh) 视频信号编码/解码方法以及用于所述方法的设备
CN121792730A (zh) 视频信号编码/解码方法以及用于所述方法的设备
BR122025013117A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo
BR122025013114A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo
BR122025013116A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo
BR122024024714A2 (pt) Método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e aparelho de codificação de vídeo
BR122025013112A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo
BR122024024710A2 (pt) Método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e aparelho de codificação de vídeo
BR122024024712A2 (pt) Método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e aparelho de codificação de vídeo
BR122024024709A2 (pt) Método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e aparelho de codificação de vídeo
BR122025007930A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo
BR122025007924A2 (pt) Método de decodificação de vídeo e método de codificação de vídeo