ES2948265T3 - Método de codificación/descodificación de señales de imagen y aparato para el mismo - Google Patents
Método de codificación/descodificación de señales de imagen y aparato para el mismo Download PDFInfo
- Publication number
- ES2948265T3 ES2948265T3 ES19882020T ES19882020T ES2948265T3 ES 2948265 T3 ES2948265 T3 ES 2948265T3 ES 19882020 T ES19882020 T ES 19882020T ES 19882020 T ES19882020 T ES 19882020T ES 2948265 T3 ES2948265 T3 ES 2948265T3
- Authority
- ES
- Spain
- Prior art keywords
- prediction
- block
- current block
- mode
- candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000004927 fusion Effects 0.000 claims description 290
- 230000033001 locomotion Effects 0.000 claims description 262
- 239000013074 reference sample Substances 0.000 claims description 179
- 238000004590 computer program Methods 0.000 claims 2
- 239000000523 sample Substances 0.000 description 183
- 239000013598 vector Substances 0.000 description 89
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 37
- 238000013139 quantization Methods 0.000 description 24
- 238000001914 filtration Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 230000002457 bidirectional effect Effects 0.000 description 14
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 13
- 230000008521 reorganization Effects 0.000 description 11
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000002156 mixing Methods 0.000 description 6
- 238000007670 refining Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 230000006866 deterioration Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- YKCSYIYQRSVLAK-UHFFFAOYSA-N 3,5-dimethyl-2-phenylmorpholine Chemical compound CC1NC(C)COC1C1=CC=CC=C1 YKCSYIYQRSVLAK-UHFFFAOYSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101100332287 Dictyostelium discoideum dst2 gene Proteins 0.000 description 1
- 101100264226 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) XRN1 gene Proteins 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 101150052795 cbh-1 gene Proteins 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/112—Selection of coding mode or of prediction mode according to a given display mode, e.g. for interlaced or progressive display mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection 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/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/184—Methods 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 bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un método de decodificación de imágenes según la presente invención puede comprender las etapas de: determinar si se aplica un modo de predicción combinado a un bloque actual; cuando el modo de predicción combinado se aplica al bloque actual, obtener el primer y segundo bloque de predicción con respecto al bloque actual; y, sobre la base de un cálculo de una suma ponderada del primer y segundo bloques de predicción, obtener un tercer bloque de predicción con respecto al bloque actual. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método de codificación/descodificación de señales de imagen y aparato para el mismo
Campo de la invención
La presente invención se refiere a un método de codificación y descodificación de señales de vídeo y a un aparato para el mismo.
Antecedentes de la técnica relacionada
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. M. S. Chiang y col.: "CF10.11: Multi-hypothesis prediction for improving AMVP mode, skip or merge mode, and intra mode", 124 MPEG Meeting; 08-10-2018 - 12-10-2018; Macao, Grupo de Expertos en Imágenes en Movimiento o ISO/IEC JTC1/SC29/WG11), n.° m44106, 3 de octubre 2018, divulga la predicción de múltiples hipótesis para mejorar los modos de predicción existentes en inter imágenes, incluyendo la uni predicción del modo de predicción de vector de movimiento avanzado (AMVP), el modo de omisión y fusión y el modo intra. El documento US 2018/0288410 A1 divulga un método y aparato de codificación de vídeo, y un método y aparato de descodificación de vídeo para realizar una predicción de combinación obteniendo un peso para una inter predicción y una inter predicción teniendo en cuenta al menos uno de la distancia entre una imagen de referencia y una imagen actual, el tamaño de un bloque actual y características de la predicción inter y las intra predicciones. El documento WO2017/105097 A1 divulga un método de descodificación de vídeo y un aparato de descodificación de vídeo que usan una lista de candidatos de fusión.
SUMARIO DE LA INVENCIÓN
La invención se define en el juego de reivindicaciones adjuntas.
Un objeto de la presente invención es proporcionar un método de predicción combinada que combina una pluralidad de métodos de predicción en la codificación/descodificación de una señal de vídeo y un aparato para realizar el método.
Un objeto de la presente invención es proporcionar un método para subdividir un bloque de codificación en una pluralidad de unidades de predicción en la codificación/descodificación de una señal de vídeo y un aparato para realizar el método.
Los problemas técnicos que van a lograrse en la presente invención no se limitan a los problemas técnicos mencionados anteriormente, y otros problemas no mencionados pueden ser entendidos claramente a partir de la siguiente descripción por los expertos en la materia.
Un método para descodificar/codificar una señal de vídeo de acuerdo con la presente invención incluye las etapas de: determinar si aplicar, o no, un modo de predicción combinada a un bloque actual; obtener un primer bloque de predicción y un segundo bloque de predicción para el bloque actual cuando se aplica el modo de predicción combinada al bloque actual; y obtener un tercer bloque de predicción para el bloque actual basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. En este punto, el primer bloque de predicción puede obtenerse basándose en información de movimiento de un candidato de fusión del bloque actual, y el segundo bloque de predicción puede obtenerse basándose en un modo de intra predicción del bloque actual.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, puede establecerse no permitir aplicar una subdivisión triangular al bloque actual cuando se aplica el modo de predicción combinada al bloque actual.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, el modo de intra predicción del bloque actual puede establecerse a un modo plano.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, el segundo bloque de predicción puede obtenerse basándose en una línea de muestra de referencia incluida en una línea de muestra de referencia adyacente.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, en la ejecución de la operación de suma ponderada, pueden determinarse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en modos de codificación de predicción de bloques vecinos adyacentes al bloque actual.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, cuando al menos una de entre la anchura y la altura del bloque actual es mayor que un valor umbral, el modo de predicción combinada puede no aplicarse al bloque actual.
En el método de codificación y descodificación de señales de vídeo de acuerdo con la presente invención, puede establecerse que el modo de predicción combinada sea aplicable al bloque actual cuando una bandera que indica que un modo de fusión se aplica al bloque actual es verdadera.
Las características resumidas brevemente anteriormente con respecto a la presente invención son simplemente aspectos ilustrativos de la descripción detallada de la presente invención que se describirán a continuación, y no limitan el alcance de la presente invención.
De acuerdo con la presente invención, la eficiencia de inter predicción puede mejorarse proporcionando un método de predicción combinada que combina una pluralidad de métodos de predicción.
De acuerdo con la presente invención, la eficiencia de inter predicción puede mejorarse proponiendo un método para subdividir un bloque de codificación en una pluralidad de bloques de predicción y derivar información de movimiento de cada uno de los bloques de predicción.
Los efectos que pueden obtenerse a partir de la presente invención no se limitan a los efectos mencionados anteriormente, y otros efectos no mencionados pueden ser entendidos claramente a partir de la siguiente descripción por los expertos en la materia.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama de bloques que muestra un codificador de vídeo de acuerdo con un aspecto de la presente invención.
La figura 2 es un diagrama de bloques que muestra un descodificador de vídeo de acuerdo con un aspecto de la presente invención.
La figura 3 es una vista que muestra una unidad de árbol de codificación básica de acuerdo con un aspecto de la presente invenció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 la forma de una unidad básica de datos.
Las figuras 7 y 8 son vistas que muestran ejemplos de subdivisión de un bloque de codificación en una pluralidad de subbloques.
La figura 9 es un diagrama de flujo que ilustra un método de inter predicción de acuerdo con un aspecto de la presente invención.
La figura 10 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 11 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
La figura 12 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en una pluralidad de unidades de predicción usando una línea diagonal.
La figura 13 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en dos unidades de predicción.
La figura 14 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en una pluralidad de bloques de predicción de diferente tamaño.
La figura 15 es una vista que muestra un ejemplo de aplicación de subdivisión diagonal a una unidad de transformada.
La figura 16 es una vista que muestra bloques vecinos usados para derivar un candidato de fusión triangular. La figura 17 es una vista para describir ejemplos de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Las figuras 18 y 19 son vistas que muestran ejemplos de derivación de una muestra de predicción basándose en una operación de suma ponderada de una primera muestra de predicción y una segunda muestra de predicción.
La figura 20 es un diagrama de flujo que ilustra un método de intra predicción de acuerdo con un aspecto de la presente invención.
La figura 21 es una vista que muestra modos de intra predicción.
Las figuras 22 y 23 son vistas que muestran un ejemplo de una disposición ordenada unidimensional que dispone muestras de referencia en una línea.
La figura 24 es una vista que muestra un ejemplo de ángulos formados entre modos de intra predicción angular y una línea recta paralela al eje x.
La figura 25 es una vista que muestra un aspecto de adquisición de muestras de predicción cuando el bloque actual es una forma no cuadrada.
La figura 26 es una vista que muestra modos de intra predicción de ángulo amplio.
La figura 27 es una vista que muestra un aspecto de aplicación de PDPC.
La figura 28 es una vista que muestra ejemplos de aplicación de valores de ponderación.
La figura 29 es una vista que muestra ejemplos de asignación de un valor de ponderación diferente a un subbloque de acuerdo con si un candidato de fusión tiene información de movimiento bidireccional.
La figura 30 es una vista que muestra ejemplos de asignación de un valor de ponderación diferente a un subbloque de acuerdo con el modo de intra predicción del bloque actual.
La figura 31 es una vista que muestra un ejemplo en el que un segundo candidato de fusión se especifica considerando el orden de búsqueda de bloques candidatos.
La figura 32 es una vista que muestra un ejemplo en el que un primer candidato de fusión y un segundo candidato de fusión se seleccionan de entre candidatos de fusión derivados de bloques no vecinos.
La figura 33 es una vista para describir un ejemplo de determinación de un segundo candidato de fusión. La figura 34 es una vista que muestra un ejemplo en el que valores de ponderación aplicados a bloques de predicción se determinan basándose en la forma de bloques candidatos.
La figura 35 es una vista que muestra un ejemplo en el que se sustituye un candidato de fusión.
Las figuras 36 y 37 son vistas que muestran un subbloque sobre el que se realizará una segunda transformada.
La figura 38 es una vista para describir ejemplos de determinación de un tipo de transformada del bloque actual.
La figura 39 es un diagrama de flujo que ilustra un proceso de determinación de fuerza de bloque.
La figura 40 es una vista que muestra candidatos de filtro predefinidos.
DESCRIPCIÓN DETALLADA
En lo sucesivo, se describirá con detalle un aspecto de la presente invención con referencia a las figuras adjuntas.
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 específico de codificación/descodificación, 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 un aspecto descrito 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 un aspecto de la presente invención.
Haciendo referencia a la figura 1, un aparato de codificación de vídeo 100 puede incluir una parte de subdivisión de imagen 110, una parte de predicción 120 y 125, una parte de transformada 130, una parte de cuantificación 135, una parte de reorganización 160, una parte de codificación por entropía 165, una parte de cuantificación inversa 140, una parte de transformada inversa 145, una parte de filtro 150 y una memoria 155.
Se muestra independientemente que cada uno de los componentes mostrados en figura 1 representa funciones características diferentes entre sí en un aparato de codificación de vídeo, y no significa que cada componente esté formado por la unidad de configuración de hardware separado o por software único. Es decir, cada componente se incluye para enumerarse como un componente por conveniencia de explicación, y al menos dos de los componentes pueden combinarse para formar un único componente, o un componente puede dividirse en una pluralidad de componentes para realizar una función. También se incluyen aspectos integrados y aspectos separados de los componentes en el alcance de la presente invención si los mismos no se apartan de la esencia de la presente invención.
Además, algunos de los componentes no son componentes esenciales que realizan funciones esenciales en la presente invención, pero pueden ser componentes opcionales solo para mejorar el rendimiento. La presente invención puede implementarse incluyendo solo componentes esenciales para implementar la esencia de la presente invención excluyendo componentes usados para mejorar el rendimiento, y también se incluye en el alcance de la presente invención una estructura que incluye solo los componentes esenciales excluyendo los componentes opcionales usados para mejorar el rendimiento.
La parte de subdivisión de imagen 110 puede 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 una pluralidad de unidades de codificación. Para subdividir las unidades de codificación en una imagen, puede usarse una estructura de árbol recursivo tal como una estructura de árbol cuádruple. Un vídeo o una unidad de codificación subdividida en diferentes unidades de codificación usando la unidad de codificación más grande como raíz puede subdividirse para tener tantos nodos secundarios como el número de unidades de codificación subdivididas. Una unidad de codificación que ya no se subdivide 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 el presente documento, en un aspecto de la presente invención, la unidad de codificación puede usarse como un significado de una unidad que realiza una codificación o con un significado de una unidad que realiza una 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 una pluralidad de unidades de predicción N x N.
La parte de predicción 120 y 125 puede incluir una parte de inter predicción 120 que realiza una inter predicción y una parte intra predicción 125 que realiza una intra predicción. Puede determinarse si usar una inter predicción o realizar una intra predicción para una unidad de predicción y determinar información específica (por ejemplo, modo de intra predicción, vector de movimiento, imagen de referencia, etc.) de acuerdo con cada método de predicción. En este punto, una unidad de procesamiento para realizar predicción puede ser diferente de una unidad de procesamiento para determinar un método de predicción y contenido específico. Por ejemplo, pueden determinarse un método de predicción y un modo de predicción en una unidad de predicción, y la predicción puede realizarse sobre una unidad de transformada. Un coeficiente residual (bloque residual) entre el bloque de predicción generado y el bloque original puede introducirse en la parte de transformada 130. Además, la información de modo de predicción, la información de vector de movimiento y similares usados para predicción pueden codificarse mediante la parte de codificación por entropía 165 junto con el coeficiente residual y transferirse a un 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íxeles de un número entero de píxeles o menos a partir de la imagen de referencia. En el caso de un píxel de luminancia, puede usarse un filtro de interpolación de 8 derivaciones basado en DCT con un coeficiente de filtro variable para generar información de píxeles de un número entero de píxeles o menos por la unidad de 1/4 de píxel. En el caso de una señal de croma, puede usarse un filtro de interpolación de 4 derivaciones 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 menos por la unidad de 1/8 de píxel.
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 método 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.
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 a la imagen original por la unidad de píxel para una imagen sobre 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 la imagen 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) puede realizarse basándose en un valor obtenido mediante la comparación de la imagen reconstruida filtrada con la imagen 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 descodificador de vídeo de acuerdo con un aspecto de la presente invenció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 una pluralidad de fragmentos de información tal como un método de predicción, un tamaño de un bloque actual, una dirección de predicción y similares.
La parte de predicción 230 y 235 puede generar un bloque de predicción basándose en información relacionada con la generación de un bloque de predicción proporcionado por el 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 unidad de predicción puede recibir diversa información tal como información de unidad de predicción introducida desde la parte de descodificación por entropía 210, información de modo de predicción del método de intra predicción, información relacionada con la predicción de movimiento de un método de inter predicción y similares, identificar la unidad de predicción de la unidad de codificación actual y determinar si la unidad de predicción realiza una inter predicción o una intra predicción. La parte de inter predicción 230 puede realizar una inter predicción sobre la unidad de predicción actual basándose en información incluida en al menos una imagen de entre imágenes antes o después de la imagen actual que incluye la unidad de predicción actual mediante el uso de información necesaria para inter predicción de la unidad de predicción actual proporcionada por el codificador de vídeo. Como alternativa, la parte de inter predicción 230 puede realizar una inter predicción basándose en información acerca de un área parcial previamente reconstruida en la imagen actual que incluye la unidad de inter predicción actual.
Para realizar una inter predicción, puede determinarse, basándose en la unidad de codificación, si el método de predicción de movimiento de la unidad de predicción incluida en una unidad de codificación correspondiente es un modo de omisión, un modo de fusión, un modo de predicción de vector de movimiento 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 de árbol de codificación básica de acuerdo con un aspecto de la presente invención.
Un bloque de codificación de un tamaño máximo puede definirse como un bloque de árbol de codificación. Una imagen se subdivide en una pluralidad de unidades de árbol de codificación (CTU). La unidad de árbol de codificación es una unidad de codificación que tiene un tamaño máximo y puede denominarse unidad de codificación grande (LCU). La figura 3 muestra un ejemplo en el que una imagen se subdivide en una pluralidad de unidades de árbol de codificación.
El tamaño de la unidad de árbol de codificación puede definirse a un nivel de imagen o a un nivel de secuencia. Para este fin, puede señalizarse información que indica el tamaño de la unidad de árbol de codificación a través de un conjunto de parámetros de imagen o un conjunto de parámetros de secuencia.
Por ejemplo, el tamaño de la unidad de árbol de codificación para toda la imagen en una secuencia puede establecerse a 128 x 128. Como alternativa, al nivel de imagen, puede determinarse uno cualquiera de entre 128 x 128 y 256 x 256 como el tamaño de la unidad de árbol de codificación. Por ejemplo, el tamaño de la unidad de árbol de codificación puede establecerse a 128 x 128 en una primera imagen, y el tamaño de la unidad de árbol de codificación puede establecerse a 256 x 256 en una segunda imagen.
Pueden generarse bloques de codificación subdividiendo una unidad de árbol de codificación. El bloque de codificación indica una unidad básica para realizar una codificación/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 la bandera es verdadera, el modo de codificación de predicción del bloque actual puede determinarse como la referencia de imagen actual, y cuando la bandera es falsa, el modo de predicción del bloque actual puede determinarse como inter predicción.
Como alternativa, puede determinarse el modo de codificación de predicción del bloque actual basándose en un índice de imagen de referencia. Por ejemplo, cuando el índice de imagen de referencia indica la imagen actual, el modo de codificación de predicción del bloque actual puede determinarse como la referencia de imagen actual. Cuando el índice de imagen de referencia indica una imagen que no es la imagen actual, el modo de codificación de predicción del bloque actual puede determinarse como inter predicción. Es decir, la 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, puede generarse un primer bloque de predicción basándose en uno de entre la intra predicción, la inter predicción y la referenciación de imagen actual, y puede generarse un segundo bloque de predicción basándose en otro. Cuando se generan el primer bloque de predicción y el segundo bloque de predicción, puede generarse un bloque de predicción final a través de una operación promedio o una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. Puede señalizarse información que indica si la predicción combinada se aplica, o no, a través de un flujo de bits. La información puede ser una bandera de 1 bit.
La figura 4 es una vista que muestra diversos tipos de subdivisión de un bloque de codificación.
El bloque de codificación puede subdividirse en una pluralidad de bloques de codificación basándose en una subdivisión de árbol cuádruple, una subdivisión de árbol binario o una subdivisión de árbol ternario. El bloque de codificación subdividido puede subdividirse de nuevo en una pluralidad de bloques de codificación basándose en la subdivisión de árbol cuádruple, la subdivisión de árbol binario o la subdivisión de árbol ternario.
La subdivisión de árbol cuádruple se refiere a una técnica de subdivisión que subdivide un bloque actual en cuatro bloques. Como resultado de la subdivisión de árbol cuádruple, el bloque actual puede subdividirse en cuatro subdivisiones de forma cuadrada (véase 'SPLIT_QT' de la figura 4 (a)).
La subdivisión de árbol binario se refiere a una técnica de subdivisión que subdivide un bloque actual en dos bloques. Subdividir un bloque actual en dos bloques a lo largo de la dirección vertical (es decir, usar una línea vertical que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección vertical, y subdividir un bloque actual en dos bloques a lo largo de la dirección horizontal (es decir, usar una línea horizontal que cruza el bloque actual) puede denominarse subdivisión de árbol binario de dirección horizontal. Como resultado de la subdivisión de árbol binario, el bloque actual puede subdividirse en dos subdivisiones de forma no cuadrada. 'SPLIT_BT_VER' de la figura 4 (b) muestra un resultado de la subdivisión de árbol binario de dirección vertical y 'SPLIT_BT_HOR' de la figura 4 (c) muestra un resultado de la subdivisión de árbol binario de dirección horizontal.
La subdivisión de árbol ternario se refiere a una técnica de subdivisión que subdivide un bloque actual en tres bloques. Subdividir un bloque actual en tres bloques a lo largo de la dirección vertical (es decir, usar dos líneas verticales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección vertical, y subdividir un bloque actual en tres bloques a lo largo de la dirección horizontal (es decir, usar dos líneas horizontales que cruzan el bloque actual) puede denominarse subdivisión de árbol ternario de dirección horizontal. Como resultado de la subdivisión de árbol ternario, el bloque actual puede subdividirse en tres subdivisiones de forma no cuadrada. En este punto, la anchura/altura de una subdivisión situada en el centro del bloque actual puede ser dos veces más grande que la anchura/altura de las otras subdivisiones. 'SPLIT_TT_VER' de la figura 4 (d) muestra un resultado de la subdivisión de árbol ternario de dirección vertical y 'SPLIT_TT_HOR' de la figura 4 (e) muestra un resultado de la subdivisión de árbol ternario de dirección horizontal.
El número de veces de subdivisión de una unidad de árbol de codificación puede definirse como una profundidad de subdivisión. La profundidad de subdivisión máxima de una unidad de árbol de codificación puede determinarse a un nivel de secuencia o de imagen. En consecuencia, la profundidad de subdivisión máxima de una unidad de árbol de codificación puede ser diferente para cada secuencia o imagen.
Como alternativa, la profundidad de subdivisión máxima para cada técnica de subdivisión puede determinarse individualmente. Por ejemplo, la profundidad de subdivisión máxima permitida para la subdivisión de árbol cuádruple puede ser diferente de la profundidad de subdivisión máxima permitida para la subdivisión de árbol binario y/o la subdivisión de árbol ternario.
El codificador puede señalizar información que indica al menos uno de entre el tipo de subdivisión y la profundidad de subdivisión del bloque actual a través de un flujo de bits. El 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 una bandera de 1 bit de 'split_cu_flag' y cuando la bandera es verdadera, indica que el bloque de codificación se subdivide mediante una técnica de subdivisión de árbol cuádruple.
Cuando split_cu_flag es verdadera, puede señalizarse información que indica si el bloque de codificación se subdivide en árbol cuádruple a través de un flujo de bits. La información es una bandera de 1 bit de split_qt_flag, y cuando la bandera es verdadera, el bloque de codificación puede subdividirse en cuatro bloques.
Por ejemplo, en el ejemplo mostrado en la figura 5, como una unidad de árbol de codificación se subdivide en árbol cuádruple, se generan cuatro bloques de codificación que tienen una profundidad de subdivisión de 1. Además, se muestra que la subdivisión de árbol cuádruple se aplica de nuevo al primer y cuarto bloque de codificación de entre los cuatro bloques de codificación generados como resultado de la subdivisión de árbol cuádruple. Como resultado, pueden generarse cuatro bloques de codificación que tienen una profundidad de subdivisión de 2.
Además, los bloques de codificación que tienen una profundidad de subdivisión de 3 pueden generarse mediante la aplicación de la subdivisión de árbol cuádruple de nuevo a un bloque de codificación que tiene una profundidad de subdivisión de 2.
Cuando no se aplica una subdivisión de árbol cuádruple al bloque de codificación, puede determinarse si se realiza una subdivisión de árbol binario o una subdivisión de árbol ternario sobre el bloque de codificación considerando al menos uno de entre el tamaño del bloque de codificación, si el bloque de codificación se sitúa en 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 la forma de una unidad básica 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, puede no permitirse la subdivisión de árbol binario o árbol ternario. 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 una pluralidad de 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 una pluralidad de 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 una pluralidad de 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 subdivisión de un bloque de codificación en una pluralidad de 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 asume que solo se permiten unidades básicas de datos cuadrados, en las figuras 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 una pluralidad de candidatos de tipo de subdivisión aplicables a un bloque de codificación, puede señalizarse información que indica uno cualquiera de entre la pluralidad de 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 factor de ponderación bidireccional especifica un valor de ponderación aplicado a un bloque de predicción L0 y un valor de ponderación aplicado a un bloque de predicción L1.
La figura 9 es un diagrama de flujo que ilustra un método de inter predicción de acuerdo con un aspecto de la presente invenció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 inter predicción que usa información de movimiento de traslación puede incluir un modo de fusión y un modo de predicción de vector de movimiento avanzado, y el modo de inter predicción que usa información de movimiento afín puede incluir un modo de fusión afín y un modo de predicción de vector de movimiento afín. La información de movimiento del bloque actual puede determinarse basándose en un bloque vecino adyacente al bloque actual o información analizada desde un flujo de bits de acuerdo con el modo de inter predicción.
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 10 es un diagrama de flujo que ilustra un proceso para derivar información de movimiento de un bloque actual usando un modo de fusión.
Puede derivarse un candidato de fusión del bloque actual (S1001). 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 11 es una vista que muestra un ejemplo de bloques candidatos usados para derivar un candidato de fusión.
Los bloques candidatos pueden incluir al menos uno de entre bloques vecinos que incluyen una muestra adyacente al bloque actual o bloques no vecinos que incluyen una muestra no adyacente al bloque actual. En lo sucesivo en el presente documento, las muestras para determinar los bloques candidatos se definen como muestras de referencia. Además, una muestra de referencia adyacente al bloque actual se denomina muestra de referencia vecina, y una muestra de referencia no adyacente al bloque actual se denomina muestra de referencia no vecina.
La muestra de referencia vecina puede incluirse en una columna vecina de la columna más a la izquierda del bloque actual o una fila vecina de la fila más superior del bloque actual. Por ejemplo, cuando las coordenadas de la muestra superior izquierda del bloque actual son (0, 0), puede usarse al menos una de entre un bloque que incluye una muestra de referencia en la posición de (-1, H - 1), un bloque que incluye una muestra de referencia en la posición de (W - 1, -1), un bloque que incluye una muestra de referencia en la posición de (W, -1), un bloque que incluye una muestra de referencia en la posición de (-1, H) y un bloque que incluye una muestra de referencia en la posición de (-1, -1) como un bloque candidato. Haciendo referencia al dibujo, pueden usarse bloques vecinos del índice 0 a 4 como bloques candidatos.
La muestra de referencia no vecina representa una muestra de la 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.
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.
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. Una cualquiera de entre las imágenes de referencia incluidas en la lista de imágenes de referencia puede establecerse como una imagen ubicada conjuntamente. Puede señalizarse información de índice para identificar la imagen ubicada conjuntamente de entre las imágenes de referencia a través de un flujo de bits. Como alternativa, una imagen de referencia que tiene un índice predefinido de entre las imágenes de referencia puede determinarse como la imagen ubicada conjuntamente.
Puede establecerse que la información de movimiento del candidato de fusión sea igual a la información de movimiento del bloque candidato. Por ejemplo, al menos uno de entre un vector de movimiento, un índice de imagen de referencia, una dirección de predicción y un índice de factor de ponderación bidireccional del bloque candidato puede establecerse como información de movimiento del candidato de fusión.
Puede generarse una lista de candidatos de fusión que incluye candidatos de fusión (S1002).
Los índices de candidatos de fusión en la lista de candidatos de fusión pueden asignarse de acuerdo con un orden predeterminado. Por ejemplo, los índices pueden asignarse en orden de un candidato de fusión derivado de un bloque vecino izquierdo, un candidato de fusión derivado de un bloque vecino superior, un candidato de fusión derivado de un bloque vecino superior derecho, un candidato de fusión derivado de un bloque vecino inferior izquierdo, un candidato de fusión derivado de un bloque vecino superior izquierdo y un candidato de fusión derivado de un bloque vecino temporal.
Cuando se incluye una pluralidad de candidatos de fusión en la lista de candidatos de fusión, puede seleccionarse al menos uno de entre la pluralidad de candidatos de fusión (S1003). Específicamente, puede señalizarse información
para especificar uno cualquiera de entre una pluralidad de candidatos de fusión a través de un flujo de bits. Por ejemplo, puede señalizarse información merge_idx que indica un índice de uno cualquiera de entre los candidatos de fusión incluidos en la lista de candidatos de fusión a través de un flujo de bits.
Cuando 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.
Un bloque de codificación puede subdividirse en una pluralidad de unidades de predicción y la predicción puede realizarse sobre cada una de las unidades de predicción subdivididas. En el presente caso, una unidad de predicción representa una unidad básica para realizar la predicción.
Un bloque de codificación puede subdividirse usando al menos una de entre una línea vertical, una línea horizontal, una línea oblicua y una línea diagonal. Puede señalizarse información para determinar al menos uno de entre el número, los ángulos y las posiciones de líneas que subdividen un bloque de codificación a través de un flujo de bits. Por ejemplo, puede señalizarse información que indica uno cualquiera de entre candidatos de tipo de subdivisión de un bloque de codificación a través de un flujo de bits, o puede señalizarse información que especifica uno cualquiera de entre una pluralidad de candidatos de línea para subdivisión de un bloque de codificación a través de un flujo de bits. Como alternativa, puede señalizarse información para determinar el número o tipos de candidatos de línea que subdividen un bloque de codificación a través del flujo de bits. Por ejemplo, si una línea oblicua que tiene un ángulo mayor que el de una línea diagonal y/o una línea oblicua que tiene un ángulo menor que el de una línea diagonal puede usarse como candidato de línea puede determinarse usando una bandera de 1 bit.
Como alternativa, puede determinarse adaptativamente al menos uno de entre el número, los ángulos y las posiciones de líneas que subdividen un bloque de codificación basándose en al menos uno de entre el modo de intra predicción del bloque de codificación, el modo de inter predicción del bloque de codificación, la posición de un candidato de fusión disponible del bloque de codificación y un patrón de subdivisión de un bloque vecino.
Cuando un bloque de codificación se subdivide en una pluralidad de unidades de predicción, la intra predicción o la inter predicción pueden realizarse sobre cada una de las unidades de predicción subdivididas.
La figura 12 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en una pluralidad de unidades de predicción usando una línea diagonal.
Como se muestra en los ejemplos de las figuras 12 (a) y 12 (b), un bloque de codificación puede subdividirse en dos unidades de predicción triangulares usando una línea diagonal.
En las figuras 12 (a) y 12 (b), se muestra que un bloque de codificación se subdivide en dos unidades de predicción usando una línea diagonal que conecta dos vértices del bloque de codificación. Sin embargo, el bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, al menos un extremo de la cual no pasa a través de un vértice del bloque de codificación.
La figura 13 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en dos unidades de predicción.
Como se muestra en los ejemplos de las figuras 13 (a) y 13 (b), un bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, ambos extremos de la cual están en contacto con la frontera superior y la frontera inferior del bloque de codificación, respectivamente.
Como alternativa, como se muestra en los ejemplos de las figuras 13 (c) y 13 (d), un bloque de codificación puede subdividirse en dos unidades de predicción usando una línea oblicua, ambos extremos de la cual están en contacto con la frontera izquierda y la frontera derecha del bloque de codificación, respectivamente.
Como alternativa, un bloque de codificación puede subdividirse en dos bloques de predicción de tamaño diferente. Por ejemplo, un bloque de codificación puede subdividirse en dos unidades de predicción de tamaño diferente
estableciendo una subdivisión de línea oblicua del bloque de codificación para entrar en contacto con dos superficies fronterizas que forman un vértice.
La figura 14 es una vista que muestra ejemplos de subdivisión de un bloque de codificación en una pluralidad de bloques de predicción de diferente tamaño.
Como se muestra en los ejemplos de las figuras 14 (a) y 14 (b), debido a que se establece que una línea diagonal que conecta las esquinas superior izquierda e inferior derecha del bloque de codificación pase a través de la frontera izquierda, la frontera derecha, la frontera superior o la frontera inferior, en lugar de pasar a través de la esquina superior izquierda o la esquina inferior derecha del bloque de codificación, el bloque de codificación puede subdividirse en dos unidades de predicción que tienen diferentes tamaños.
Como alternativa, como se muestra en los ejemplos de las figuras 14 (c) y 14 (d), debido a que se establece que una línea diagonal que conecta las esquinas superior derecha e inferior izquierda del bloque de codificación pase a través de la frontera izquierda, la frontera derecha, la frontera superior o la frontera inferior, en lugar de pasar a través de la esquina superior izquierda o la esquina inferior derecha del bloque de codificación, el bloque de codificación puede subdividirse en dos unidades de predicción que tienen diferentes tamaños.
Cada una de las unidades de predicción generadas subdividiendo un bloque de codificación se denominará 'N-ésima unidad de predicción'. Por ejemplo, en los ejemplos mostrados en las figuras 12 a 14, PU1 puede definirse como una primera unidad de predicción y PU2 puede definirse como una segunda unidad de predicción. La primera unidad de predicción significa una unidad de predicción que incluye una muestra ubicada conjuntamente en la parte inferior izquierda o una muestra situada en la parte superior izquierda en el bloque de codificación, y la segunda unidad de predicción significa una unidad de predicción que incluye una muestra ubicada conjuntamente en la parte superior derecha o una muestra situada en la parte inferior derecha en el bloque de codificación.
Por el contrario, una unidad de predicción que incluye una muestra ubicada en la parte superior derecha o una muestra ubicada en la parte inferior derecha en el bloque de codificación puede definirse como una primera unidad de predicción, y una unidad de predicción que incluye una muestra ubicada en la parte inferior izquierda o una muestra ubicada en la parte superior izquierda en el bloque de codificación puede definirse como una segunda unidad de predicción.
Los aspectos a continuación se describen centrándose en ejemplos de subdivisión de un bloque de codificación usando una línea diagonal. Particularmente, la subdivisión de un bloque de codificación en dos unidades de predicción usando una línea diagonal se denomina subdivisión diagonal o subdivisión triangular, y una unidad de predicción generada basándose en la subdivisión diagonal se denomina unidad de predicción triangular. Sin embargo, también es posible aplicar los aspectos descritos a continuación a los ejemplos de subdivisión de un bloque de codificación usando una línea oblicua de un ángulo diferente del de una línea vertical, una línea horizontal o una línea diagonal.
Puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en al menos uno de entre un tipo de sector, el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión, el tamaño del bloque de codificación, la forma del bloque de codificación, el modo de codificación de predicción del bloque de codificación y el patrón de subdivisión del nodo primario.
Por ejemplo, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si el sector actual es de tipo B. Una subdivisión diagonal puede permitirse solo cuando el sector actual es de tipo B.
Como alternativa, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si el número máximo de candidatos de fusión incluidos en la lista de candidatos de fusión es dos o más. La subdivisión diagonal puede permitirse solo cuando el número máximo de candidatos de fusión incluidos en la lista de candidatos de fusión es dos o más.
Como alternativa, cuando al menos uno de entre la anchura y la altura es mayor que 64 en la implementación de hardware, existe un problema en que se accede de forma redundante a una unidad de procesamiento de datos de un tamaño de 64 x 64. En consecuencia, cuando al menos uno de entre la anchura y la altura del bloque de codificación es mayor que un valor umbral, puede no permitirse subdividir un bloque de codificación en una pluralidad de bloques de predicción. Por ejemplo, cuando al menos uno de entre la anchura y la altura de un bloque de codificación es mayor que 64 (por ejemplo, cuando al menos uno de entre la anchura y la altura es 128), puede no usarse una subdivisión diagonal.
Como alternativa, puede no permitirse la subdivisión diagonal para un bloque de codificación del cual el número de muestras es mayor que un valor umbral, considerando el número máximo de muestras que pueden procesarse simultáneamente en la implementación de hardware. Por ejemplo, puede no permitirse la subdivisión diagonal para un bloque de árbol de codificación del cual el número de muestras es mayor que 4.096.
Como alternativa, puede no permitirse una subdivisión diagonal para un bloque de codificación del cual el número de muestras incluidas en el bloque de codificación es menor que un valor umbral. Por ejemplo, puede establecerse no aplicar la subdivisión diagonal a un bloque de codificación cuando el número de muestras incluidas en el bloque de codificación es menor que 64.
Como alternativa, puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación basándose en si la relación de anchura a altura del bloque de codificación es menor que un primer valor umbral o si la relación de anchura a altura del bloque de codificación es mayor que un segundo valor umbral. En el presente caso, la relación de anchura a altura whRatio del bloque de codificación puede determinarse como una relación de la anchura CbW con respecto a la altura CbH del bloque de codificación como se muestra en la Ecuación 1.
[Ecuación 1]
El segundo valor umbral puede ser un número inverso del primer valor umbral. Por ejemplo, cuando el primer valor umbral es k, el segundo valor umbral puede ser 1/k.
La subdivisión diagonal puede aplicarse a un bloque de codificación solo cuando la relación de anchura a altura del bloque de codificación está entre el primer valor umbral y el segundo valor umbral.
Como alternativa, puede usarse una subdivisión triangular solo cuando la relación de anchura a altura del bloque de codificación es menor que el primer valor umbral o mayor que el segundo valor umbral. Por ejemplo, cuando el primer valor umbral es 16, puede no permitirse una subdivisión diagonal para un bloque de codificación de un tamaño 64 x 4 o 4 x 64.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el patrón de subdivisión del nodo primario. Por ejemplo, cuando un bloque de codificación de nodo primario se subdivide basándose en una subdivisión de árbol cuádruple, puede aplicarse una subdivisión diagonal a un bloque de codificación de nodo hoja. Por otra parte, puede establecerse no permitir la subdivisión diagonal al bloque de codificación de nodo hoja cuando el bloque de codificación de nodo primario se subdivide basándose en una subdivisión de árbol binario o de árbol ternario.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el modo de codificación de predicción de un bloque de codificación. Por ejemplo, pueden permitirse la subdivisión diagonal solo cuando el bloque de codificación se codifica mediante intra predicción, cuando el bloque de codificación se codifica mediante inter predicción, o cuando el bloque de codificación se codifica mediante un modo de inter predicción predefinido. En el presente caso, el modo de inter predicción predefinido puede representar al menos uno de entre un modo de fusión, un modo de predicción de vector de movimiento avanzado, un modo de fusión afín y un modo de predicción de vector de movimiento afín.
Como alternativa, puede determinarse si permitir, o no, la subdivisión diagonal basándose en el tamaño de una región de procesamiento paralelo. Por ejemplo, cuando el tamaño de un bloque de codificación es mayor que el tamaño de una región de procesamiento paralelo puede no usarse una subdivisión diagonal.
Puede determinarse si aplicar, o no, la subdivisión diagonal a un bloque de codificación considerando dos o más de las condiciones enumeras anteriormente.
Como otro ejemplo, señalizarse información que indica si aplicar, o no, la subdivisión diagonal a un bloque de codificación puede a través de un flujo de bits. La información puede señalizarse a un nivel de secuencia, de imagen, de sector o de bloque. Por ejemplo, puede señalizarse una bandera triangle_partition_flag que indica si se aplica una subdivisión triangular a un bloque de codificación a un nivel de bloque de codificación.
Cuando se determina aplicar la subdivisión diagonal a un bloque de codificación, puede señalizarse información que indica el número de líneas que subdividen el bloque de codificación o las posiciones de las líneas a través de un flujo de bits.
Por ejemplo, cuando un bloque de codificación se subdivide mediante una línea diagonal, puede señalizarse información que indica la dirección de la línea diagonal que subdivide el bloque de codificación a través de un flujo de bits. Por ejemplo, puede señalizarse una bandera triangIe_partition_type_flag que indica la dirección de la línea diagonal a través de un flujo de bits. La bandera indica si el bloque de codificación se subdivide mediante una línea diagonal que conecta la esquina superior izquierda y la esquina inferior derecha o si el bloque de codificación se subdivide mediante una línea diagonal que conecta la esquina superior derecha y la esquina inferior izquierda. La subdivisión de un bloque de codificación por una línea diagonal que conecta la esquina superior izquierda y la esquina inferior derecha puede denominarse tipo de subdivisión triangular izquierda, y la subdivisión de un bloque de
codificación por una línea diagonal que conecta la esquina superior derecha y la esquina inferior izquierda puede denominarse tipo de subdivisión triangular derecha. Por ejemplo, cuando el valor de la bandera es 0, puede indicar que el tipo de subdivisión del bloque de codificación es el tipo de subdivisión triangular izquierda, y cuando el valor de la bandera es 1, puede indicar que el tipo de subdivisión del bloque de codificación es el tipo de subdivisión triangular derecha.
Además, puede señalizarse información que indica si las unidades de predicción tienen el mismo tamaño o información que indica la posición de una línea diagonal para subdividir el bloque de codificación a través de un flujo de bits. Por ejemplo, cuando la información que indica los tamaños de las unidades de predicción indica que los tamaños de las unidades de predicción son iguales, se omite la codificación de la información que indica la posición de la diagonal y el bloque de codificación puede subdividirse en dos unidades de predicción usando una línea diagonal que pasa a través de dos vértices del bloque de codificación. Por otra parte, cuando la información que indica los tamaños de las unidades de predicción indica que los tamaños de las unidades de predicción no son los mismos, puede determinarse la posición de la línea diagonal que subdivide el bloque de codificación basándose en la información que indica la posición de la línea diagonal. Por ejemplo, cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, la información de posición puede indicar si la línea diagonal está en contacto con la frontera izquierda y la frontera inferior o la frontera superior y la frontera derecha del bloque de codificación. Como alternativa, cuando el tipo de subdivisión triangular derecha se aplica a un bloque de codificación, la información de posición puede indicar si la línea diagonal está en contacto con la frontera derecha y la frontera inferior o la frontera superior y la frontera izquierda del bloque de codificación.
Puede señalizarse información que indica el tipo de subdivisión de un bloque de codificación a un nivel de bloque de codificación. En consecuencia, puede determinarse el tipo de subdivisión para cada bloque de codificación al cual se aplica la subdivisión diagonal.
Como otro ejemplo, puede señalizarse información que indica el tipo de subdivisión para una secuencia, una imagen, un sector, una tesela o una unidad de árbol de codificación. En este caso, puede establecerse que los tipos de subdivisión de bloques de codificación a los que se aplica la subdivisión diagonal en una secuencia, una imagen, un sector, una tesela o una unidad de árbol de codificación sean iguales.
Como alternativa, puede codificarse y señalizarse información para determinar el tipo de subdivisión para la primera unidad de codificación a la que se aplica la subdivisión diagonal en la unidad de árbol de codificación, y puede establecerse que la segunda unidad de codificación y unidades de codificación subsiguientes a las que se aplica la subdivisión diagonal usen un tipo de subdivisión igual que el de la primera unidad de codificación.
Como otro ejemplo, puede determinarse el tipo de subdivisión de un bloque de codificación basándose en el tipo de subdivisión de un bloque vecino. En el presente caso, el bloque vecino puede incluir al menos uno de entre un bloque vecino adyacente a la esquina superior izquierda del bloque de codificación, un bloque vecino adyacente a la esquina superior derecha, un bloque vecino adyacente a la esquina inferior izquierda, un bloque vecino ubicado en la parte superior, y un bloque vecino ubicado en el lado izquierdo. Por ejemplo, puede establecerse que el tipo de subdivisión del bloque actual sea igual que el tipo de subdivisión de un bloque vecino. Como alternativa, puede determinarse el tipo de subdivisión del bloque actual basándose en si el tipo de subdivisión triangular izquierda se aplica al bloque vecino superior izquierda o si el tipo de subdivisión triangular derecha se aplica al bloque vecino superior derecha o al bloque vecino inferior izquierda.
Puede establecerse que el tamaño de una unidad de predicción no sea mayor que el de una unidad de transformada. Además, puede establecerse incluir necesariamente una unidad de predicción en una unidad de transformada. En consecuencia, cuando la subdivisión de unidad de transformada de VPDU se aplica a un bloque de codificación, puede aplicarse una subdivisión diagonal a la unidad de transformada en lugar de aplicar una subdivisión diagonal al bloque de codificación.
La figura 15 es una vista que muestra un ejemplo de aplicación de subdivisión diagonal a una unidad de transformada.
Como se muestra en el ejemplo de la figura 15, cuando un bloque de codificación se subdivide en una pluralidad de unidades de transformada, puede determinarse si aplicar, o no, la subdivisión diagonal a cada unidad de transformada. Como alternativa, puede determinarse si la subdivisión diagonal se aplica mediante la unidad de bloque que tiene un tamaño menor que el de la unidad de transformada.
Como alternativa, cuando se aplica una subdivisión de unidad de transformada de VPDU a un bloque de codificación, se determina si aplicar, o no, la subdivisión diagonal al bloque de codificación, y pueden establecerse que todas las unidades de transformada incluidas en el bloque de codificación sigan la determinación. Por ejemplo, cuando se determina que se aplica la subdivisión diagonal a un bloque de codificación, todas las unidades de transformada incluidas en el bloque de codificación pueden subdividirse en dos unidades de predicción.
Para realizar la compensación de predicción de movimiento sobre una primera unidad de predicción triangular y una segunda unidad de predicción triangular, puede derivarse información de movimiento de cada una de la primera unidad
de predicción triangular y la segunda unidad de predicción triangular. En este punto, la información de movimiento de la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse de candidatos de fusión incluidos en la lista de candidatos de fusión. Para distinguir una lista de candidatos de fusión general de una lista de candidatos de fusión usada para derivar la información de movimiento de las unidades de predicción triangulares, la lista de candidatos de fusión para derivar la información de movimiento de las unidades de predicción triangulares se denomina lista de candidatos de fusión triangular, y un candidato de fusión incluido en la lista de candidatos de fusión triangular se denominará candidato de fusión triangular. Sin embargo, el uso del método para derivar un candidato de fusión y el método para construir una lista de candidatos de fusión descrita anteriormente por los candidatos de fusión triangular y el método para construir la lista de candidatos de fusión triangular también se incluye en el espíritu de la presente invención.
Puede señalizarse información para determinar el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular a través de un flujo de bits. La información puede indicar una diferencia entre el número máximo de candidatos de fusión que puede incluir la lista de candidatos de fusión y el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular.
Los candidatos de fusión triangular pueden derivarse de un bloque espacialmente vecino y un bloque temporalmente vecino de un bloque de codificación.
La figura 16 es una vista que muestra bloques vecinos usados para derivar un candidato de fusión triangular.
Un candidato de fusión triangular puede derivarse usando al menos uno de entre un bloque vecino ubicado en la parte superior de un bloque de codificación, un bloque vecino ubicado en el lado izquierdo del bloque de codificación, y un bloque ubicado conjuntamente incluido en una imagen diferente del bloque de codificación. El bloque vecino superior puede incluir al menos uno de entre un bloque que incluye una muestra (xCb CbW - 1, yCb - 1) situada en la parte superior del bloque de codificación, un bloque que incluye una muestra (xCb CbW, yCb - 1) situada en la parte superior del bloque de codificación y un bloque que incluye una muestra (xCb - 1, yCb - 1) situada en la parte superior del bloque de codificación. El bloque vecino izquierdo puede incluir al menos uno de entre un bloque que incluye una muestra (xCb - 1, yCb CbH - 1) ubicada en el lado izquierdo del bloque de codificación y un bloque que incluye una muestra (xCb - 1, yCb CbH) ubicada en el lado izquierdo del bloque de codificación. El bloque ubicado conjuntamente puede determinarse como uno cualquiera de entre un bloque que incluye una muestra (xCb CbW, yCb CbH) adyacente a la esquina superior derecha del bloque de codificación y un bloque que incluye una muestra (xCb/2, yCb/2) situada en el centro del bloque de codificación, en una imagen ubicada conjuntamente.
Los bloques vecinos pueden buscarse en un orden predefinido, y los candidatos de fusión triangular pueden construirse como una lista de candidatos de fusión triangular de acuerdo con un orden predefinido. Por ejemplo, la lista de candidatos de fusión triangular puede construirse mediante la búsqueda de los candidatos de fusión triangular en el orden de B1, A1, B0, A0, C0, B2 y C1.
La información de movimiento de las unidades de predicción triangulares puede derivarse basándose en la lista de candidatos de fusión triangular. Es decir, las unidades de predicción triangulares pueden compartir una lista de candidatos de fusión triangular.
Para derivar información de movimiento de la unidad de fusión triangular, puede señalizarse información para especificar al menos uno de entre los candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular a través de un flujo de bits. Por ejemplo, puede señalizarse información de índice merge_triangle_idx para especificar al menos uno de entre los candidatos de fusión triangular a través de un flujo de bits.
La información de índice puede especificar una combinación de un candidato de fusión de la primera unidad de predicción triangular y un candidato de fusión de la segunda unidad de predicción triangular. Por ejemplo, la Tabla 1 muestra un ejemplo de una combinación de candidatos de fusión de acuerdo con información de índice merge_triangle_idx.
[Tabla 1]
Cuando el valor de información de índice merge_triangle_idx es 1, indica que la información de movimiento de la primera unidad de predicción triangular se deriva de un candidato de fusión que tiene un índice de 1, y la información de movimiento de la segunda unidad de predicción triangular se deriva de un candidato de fusión que tiene un índice de 0. Un candidato de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular y un candidato de fusión triangular para derivar información de movimiento de la segunda unidad de predicción triangular puede determinarse a través de información de índice merge_triangle_idx.
Puede determinarse un tipo de subdivisión de un bloque de codificación al cual se aplica la subdivisión diagonal basándose en la información de índice. Es decir, la información de índice puede especificar una combinación de un candidato de fusión de la primera unidad de predicción triangular, un candidato de fusión de la segunda unidad de predicción triangular y una dirección de subdivisión del bloque de codificación. Cuando se determina un tipo de subdivisión del bloque de codificación basándose en la información de índice, puede no codificarse información triangle_partition_type_flag que indica la dirección de una línea diagonal que subdivide el bloque de codificación. La Tabla 2 expresa tipos de subdivisión de un bloque de codificación con respecto a información de índice merge_triangle_idx.
[Tabla 2]
Cuando la variable TriangleDir es 0, indica que el tipo de subdivisión triangular izquierda se aplica al bloque de codificación, y cuando la variable TriangleDir es 1, indica que el tipo de subdivisión triangular derecha se aplica al bloque de codificación. Combinando la Tabla 1 y la Tabla 2, puede establecerse especificar una combinación del candidato de fusión de la primera unidad de predicción triangular, el candidato de fusión de la segunda unidad de
predicción triangular y la dirección de subdivisión del bloque de codificación mediante información de índice merge_triangle_idx.
Como otro ejemplo, puede señalizarse información de índice solo para una cualquiera de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular, y puede determinarse un índice de un candidato de fusión triangular para la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular basándose en la información de índice. Por ejemplo, un candidato de fusión triangular de la primera unidad de predicción triangular puede determinarse basándose en información de índice merge_triangle_idx que indica un índice de uno cualquiera de entre los candidatos de fusión triangular. Además, puede especificarse un candidato de fusión triangular de la segunda unidad de predicción triangular basándose en merge_triangle_idx. Por ejemplo, el candidato de fusión triangular de la segunda unidad de predicción triangular puede derivarse sumando o restando un desplazamiento a información de índice merge_triangle_idx. El desplazamiento puede ser un número entero tal como 1 o 2. Por ejemplo, un candidato de fusión triangular que tiene un valor obtenido sumando 1 a merge_triangle_idx como un índice puede determinarse como el candidato de fusión triangular de la segunda unidad de predicción triangular. Cuando merge_triangle_idx indica un candidato de fusión triangular que tiene el valor de índice más grande de entre los candidatos de fusión triangular, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de un candidato de fusión triangular que tiene un índice de 0 o un candidato de fusión triangular que tiene un valor obtenido restando 1 de merge_triangle_idx como un índice.
Como alternativa, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de un candidato de fusión triangular que tiene una imagen de referencia igual que la del candidato de fusión triangular de la primera unidad de predicción triangular especificada por la información de índice. En el presente caso, el candidato de fusión triangular que tiene una imagen de referencia igual que el candidato de fusión triangular de la primera unidad de predicción triangular puede indicar un candidato de fusión triangular que tiene al menos uno de entre la imagen de referencia L0 y la imagen de referencia L1 igual que los del candidato de fusión triangular de la primera unidad de predicción triangular. Cuando hay una pluralidad de candidatos de fusión triangular que tienen una imagen de referencia igual que la del candidato de fusión triangular de la primera unidad de predicción triangular, puede seleccionarse al menos uno de entre los candidatos de fusión triangular basándose en si el candidato de fusión incluye información de movimiento bidireccional o un valor de diferencia entre el índice del candidato de fusión y la información de índice.
Como otro ejemplo, puede señalizarse información de índice para cada una de la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Por ejemplo, pueden señalizarse una primera información de índice 1st_merge_idx para determinar un candidato de fusión triangular de la primera unidad de predicción triangular y una segunda información de índice 2nd_merge_idx para determinar un candidato de fusión triangular de la segunda unidad de predicción triangular a través de un flujo de bits. La información de movimiento de la primera unidad de predicción triangular puede derivarse del candidato de fusión triangular determinado basándose en la primera información de índice 1st_merge_idx, y la información de movimiento de la segunda unidad de predicción triangular puede derivarse del candidato de fusión triangular determinado basándose en la segunda información de índice 2nd_merge_idx.
La primera información de índice 1 st_merge_idx puede indicar un índice de uno cualquiera de entre los candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular. El candidato de fusión triangular de la primera unidad de predicción triangular puede determinarse como un candidato de fusión triangular indicado por primera información de índice 1st_merge_idx.
Puede establecerse no usar el candidato de fusión triangular indicado por la primera información de índice 1st_merge_idx como un candidato de fusión triangular de la segunda unidad de predicción triangular. En consecuencia, la segunda información de índice 2nd_merge_idx de la segunda unidad de predicción triangular puede indicar un índice de uno cualquiera de entre los candidatos de fusión triangular restantes excluyendo el candidato de fusión triangular indicado por la primera información de índice. Cuando el valor de segunda información de índice 2nd_merge_idx es menor que el valor de primera información de índice 1st_merge_idx, el candidato de fusión triangular de la segunda unidad de predicción triangular puede determinarse como un candidato de fusión triangular que tiene la información de índice indicada por segunda información de índice 2nd_merge_idx. Por otro lado, cuando el valor de la segunda información de índice 2nd_merge_idx es igual a o mayor que el valor de la primera información de índice 1st_merge_idx, el candidato de fusión triangular de la segunda unidad de predicción triangular puede determinarse como un candidato de fusión triangular que tiene un valor obtenido sumando 1 al valor de la segunda información de índice 2nd_merge_idx como un índice.
Como alternativa, puede determinarse si señalizar, o no, la segunda información de índice de acuerdo con el número de candidatos de fusión triangular incluidos en la lista de candidatos de fusión triangular. Por ejemplo, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular no supera 2, puede omitirse la señalización de la segunda información de índice. Cuando se omite la señalización de la segunda información de índice, puede derivarse un segundo candidato de fusión triangular sumando o restando un desplazamiento a la primera información de índice. Por ejemplo, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular es 2 y la primera información de índice indica el
índice 0, el segundo candidato de fusión triangular puede derivarse sumando 1 a la primera información de índice. Como alternativa, cuando el número máximo de candidatos de fusión triangular que puede incluir la lista de candidatos de fusión triangular es 2 y la primera información de índice indica 1, el segundo candidato de fusión triangular puede derivarse restando 1 de la primera información de índice.
Como alternativa, cuando se omite la señalización de la segunda información de índice, la segunda información de índice puede establecerse a un valor por defecto. En el presente caso, el valor por defecto puede ser 0. El segundo candidato de fusión triangular puede derivarse mediante la comparación de la primera información de índice y la segunda información de índice. Por ejemplo, cuando la segunda información de índice es menor que la primera información de índice, un candidato de fusión que tiene el índice 0 puede establecerse como el segundo candidato de fusión triangular, y cuando la segunda información de índice es igual a o mayor que la primera información de índice, un candidato de fusión que tiene el índice 1 puede establecerse como el segundo candidato de fusión triangular.
Cuando el candidato de fusión triangular tiene información de movimiento unidireccional, la información de movimiento unidireccional del candidato de fusión triangular puede establecerse como información de movimiento de la unidad de predicción triangular. Por otro lado, cuando el candidato de fusión triangular tiene información de movimiento bidireccional, solo uno de entre información de movimiento L0 e información de movimiento L1 puede establecerse como información de movimiento de la unidad de predicción triangular. Cuál se tomará de entre la información de movimiento L0 y la información de movimiento L1 puede determinarse basándose en el índice del candidato de fusión triangular o información de movimiento de otra unidad de predicción triangular.
Por ejemplo, cuando el índice del candidato de fusión triangular es un número par, la información de movimiento L0 de la unidad de predicción triangular puede establecerse a 0, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la unidad de predicción triangular. Por otro lado, cuando el índice del candidato de fusión triangular es un número impar, la información de movimiento L1 de la unidad de predicción triangular puede establecerse a 0, y la información de movimiento L0 del candidato de fusión triangular puede establecerse a 0. Por el contrario, cuando el índice del candidato de fusión triangular es un número par, la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la unidad de predicción triangular, y cuando el índice del candidato de fusión triangular es un número impar, la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la unidad de predicción triangular. Como alternativa, cuando el candidato de fusión triangular es un número par para la primera unidad de predicción triangular, la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la primera unidad de predicción triangular, mientras que cuando el candidato de fusión triangular es un número impar para la segunda unidad de predicción triangular, la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la segunda unidad de predicción triangular.
Como alternativa, cuando la primera unidad de predicción triangular tiene información de movimiento L0, la información de movimiento L0 de la segunda unidad de predicción triangular puede establecerse a 0, y la información de movimiento L1 del candidato de fusión triangular puede establecerse como información de movimiento L1 de la segunda unidad de predicción triangular. Por otro lado, cuando la primera unidad de predicción triangular tiene información de movimiento L1, la información de movimiento L1 de la segunda unidad de predicción triangular puede establecerse a 0, y la información de movimiento L0 del candidato de fusión triangular puede establecerse como información de movimiento L0 de la segunda unidad de predicción triangular.
Una lista de candidatos de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular y una lista de candidatos de fusión triangular para derivar información de movimiento de la segunda unidad de predicción triangular puede establecerse de forma diferente.
Por ejemplo, cuando un candidato de fusión triangular para derivar información de movimiento de la primera unidad de predicción triangular en la lista de candidatos de fusión triangular se especifica basándose en la información de índice para la primera unidad de predicción triangular, la información de movimiento de la segunda unidad de predicción triangular puede derivarse usando la lista de candidatos de fusión triangular que incluye los candidatos de fusión triangular restantes excluyendo el candidato de fusión triangular indicado por la información de índice. Específicamente, la información de movimiento de la segunda unidad de predicción triangular puede derivarse de uno cualquiera de entre los candidatos de fusión triangular restantes.
En consecuencia, el número máximo de candidatos de fusión triangular que incluye la lista de candidatos de fusión triangular de la primera unidad de predicción triangular y el número máximo de candidatos de fusión triangular que incluye la lista de candidatos de fusión triangular de la segunda unidad de predicción triangular puede ser diferente. Por ejemplo, cuando la lista de candidatos de fusión triangular de la primera unidad de predicción triangular incluye candidatos de fusión M, la lista de candidatos de fusión triangular de la segunda unidad de predicción triangular puede incluir M - 1 candidatos de fusión excluyendo el candidato de fusión triangular indicado por la información de índice de la primera unidad de predicción triangular.
Como otro ejemplo, se deriva un candidato de fusión de cada unidad de predicción triangular basándose en bloques vecinos adyacentes a un bloque de codificación, y puede determinarse la disponibilidad de los bloques vecinos considerando la forma o la posición de la unidad de predicción triangular.
La figura 17 es una vista para describir ejemplos de determinación de la disponibilidad de un bloque vecino para cada unidad de predicción triangular.
Un bloque vecino no adyacente a la primera unidad de predicción triangular puede establecerse como no disponible para la primera unidad de predicción triangular, y un bloque vecino no adyacente a la segunda unidad de predicción triangular puede establecerse como no disponible para la segunda unidad de predicción triangular.
Por ejemplo, como se muestra en el ejemplo de la figura 17 (a), cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, puede determinarse que los bloques A1, A0 y A2 adyacentes a la primera unidad de predicción triangular de entre los bloques vecinos adyacentes al bloque de codificación están disponibles para la primera unidad de predicción triangular, mientras que los bloques B0 y B1 no están disponibles para la primera unidad de predicción triangular. En consecuencia, la lista de candidatos de fusión triangular para la primera unidad de predicción triangular puede incluir candidatos de fusión triangular derivados de los bloques A1, A0 y A2 y puede no incluir candidatos de fusión triangular derivados de los bloques B0 y B1.
Como se muestra en el ejemplo de la figura 17 (b), cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, puede determinarse que los bloques B0 y B1 adyacentes a la segunda unidad de predicción triangular están disponibles para la segunda unidad de predicción triangular, mientras que los bloques A1, A0 y A2 no están disponibles para la segunda unidad de predicción triangular. En consecuencia, la lista de candidatos de fusión triangular para la segunda unidad de predicción triangular puede incluir candidatos de fusión triangular derivados de los bloques B0 y B1 y puede no incluir candidatos de fusión triangular derivados de los bloques A1, A0 y A2.
En consecuencia, el número de candidatos de fusión triangular o el intervalo de candidatos de fusión triangular que la unidad de predicción triangular puede usar puede determinarse basándose en al menos uno de entre la posición de la unidad de predicción triangular o el tipo de subdivisión del bloque de codificación.
Como otro ejemplo, el modo de fusión puede aplicarse a solo uno de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Además, puede establecerse que la información de movimiento de la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular sea igual que la información de movimiento de la unidad de predicción triangular a la cual se aplica el modo de fusión, o puede derivarse refinando la información de movimiento de la unidad de predicción triangular a la cual se aplica el modo de fusión.
Por ejemplo, un vector de movimiento y un índice de imagen de referencia de la primera unidad de predicción triangular puede derivarse basándose en un candidato de fusión triangular, y un vector de movimiento de la segunda unidad de predicción triangular puede derivarse refinando el vector de movimiento de la primera unidad de predicción triangular. Por ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse sumando o restando un vector de movimiento de refinamiento {Rx, Ry} al vector de movimiento {mvDILXx, mvD1 LXy} de la primera unidad de predicción triangular. Puede establecerse que el índice de imagen de referencia de la segunda unidad de predicción triangular sea igual que el índice de imagen de referencia de la primera unidad de predicción triangular.
Puede señalizarse información para determinar un vector de movimiento de refinamiento que indica la diferencia entre el vector de movimiento de la primera unidad de predicción triangular y el vector de movimiento de la segunda unidad de predicción triangular a través de un flujo de bits. La información puede incluir al menos una de entre información que indica el tamaño del vector de movimiento de refinación e información que indica el signo del vector de movimiento de refinación.
Como alternativa, el signo del vector de movimiento de refinamiento puede derivarse basándose en al menos uno de entre la posición de la unidad de predicción triangular, el índice de la unidad de predicción triangular y el tipo de subdivisión aplicado al bloque de codificación.
Como otro ejemplo, puede señalizarse el vector de movimiento y el índice de imagen de referencia de una cualquiera de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. El vector de movimiento de la otra de entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse refinando el vector de movimiento señalizado.
Por ejemplo, el vector de movimiento y el índice de imagen de referencia de la primera unidad de predicción triangular pueden determinarse basándose en información señalizada desde un flujo de bits. Además, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse mediante el refinamiento del vector de movimiento de la primera unidad de predicción triangular. Por ejemplo, el vector de movimiento de la segunda unidad de predicción triangular puede derivarse sumando o restando un vector de movimiento de refinamiento {Rx, Ry} al vector de movimiento {mvD1 LXx, mvD1 LXy} de la primera unidad de predicción triangular. Puede establecerse que el índice de
imagen de referencia de la segunda unidad de predicción triangular sea igual que el índice de imagen de referencia de la primera unidad de predicción triangular.
La predicción de compensación de predicción de movimiento para cada bloque de codificación puede realizarse basándose en la información de movimiento de la primera unidad de predicción triangular y la información de movimiento de la segunda unidad de predicción triangular. En este punto, puede tener lugar un deterioro de la calidad de vídeo en la frontera entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Por ejemplo, la continuidad de la calidad de vídeo puede deteriorarse en las proximidades de un borde existente en la frontera entre la primera unidad de predicción triangular y la segunda unidad de predicción triangular. Para reducir el deterioro de la calidad de vídeo en la frontera, puede derivarse una muestra de predicción a través de un filtro de alisado o una predicción ponderada.
Las muestras de predicción en un bloque de codificación al cual se aplica una subdivisión diagonal pueden derivarse basándose en una operación de suma ponderada de una primera muestra de predicción obtenida basándose en la información de movimiento de la primera unidad de predicción triangular y una segunda muestra de predicción obtenida basándose en la información de movimiento de la segunda unidad de predicción triangular. Como alternativa, una muestra de predicción de la primera unidad de predicción triangular se deriva de un primer bloque de predicción determinado basándose en la información de movimiento de la primera unidad de predicción triangular, y una muestra de predicción de la segunda unidad de predicción triangular se deriva de un segundo bloque de predicción determinado basándose en la información de movimiento de la segunda unidad de predicción triangular, y una muestra de predicción ubicada en la región fronteriza de la primera unidad de predicción triangular y la segunda unidad de predicción triangular puede derivarse basándose en una operación de suma ponderada de la primera muestra de predicción incluida en el primer bloque de predicción y la segunda muestra de predicción incluida en el segundo bloque de predicción. Por ejemplo, la Ecuación 2 muestra un ejemplo de derivación de muestras de predicción de la primera unidad de predicción triangular y la segunda unidad de predicción triangular.
[Ecuación 2]
En la Ecuación 2, P1 denota una primera muestra de predicción y P2 denota una segunda muestra de predicción. w l denota un valor de ponderación aplicado a la primera muestra de predicción y (1 - w1) denota un valor de ponderación aplicado a la segunda muestra de predicción. Como se muestra en el ejemplo de la Ecuación 2, el valor de ponderación aplicado a la segunda muestra de predicción puede derivarse restando el valor de ponderación aplicado a la primera muestra de predicción de un valor constante.
Cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación, la región fronteriza puede incluir muestras de predicción de las cuales la coordenada de eje x y la coordenada de eje y son iguales. Por otro lado, cuando el tipo de subdivisión triangular derecha se aplica a un bloque de codificación, la región fronteriza puede incluir muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es mayor que o igual a un primer valor umbral y menor que un segundo valor umbral.
Puede determinarse un tamaño de la región fronteriza basándose en al menos uno de entre el tamaño del bloque de codificación, la forma del bloque de codificación, información de movimiento de las unidades de predicción triangulares, un valor de diferencia entre los vectores de movimiento de las unidades de predicción triangulares, un orden de salida de imágenes de referencia y un valor de diferencia entre la primera muestra de predicción y la segunda muestra de predicción en la frontera diagonal.
Las figuras 18 y 19 son vistas que muestran ejemplos de derivación de una muestra de predicción basándose en una operación de suma ponderada de una primera muestra de predicción y una segunda muestra de predicción. La figura 18 muestra un ejemplo de aplicación del tipo de subdivisión triangular izquierda a un bloque de codificación y la figura 19 muestra un ejemplo de aplicación del tipo de subdivisión triangular derecha a un bloque de codificación. Además, las figuras 18 (a) y 19 (a) son vistas que muestran patrones de predicción para un componente de luma y las figuras 18 (b) y 19 (b) son vistas que muestran patrones de predicción para un componente de croma.
En los dibujos, los números marcados en las muestras de predicción ubicadas cerca de la frontera entre la primera unidad de predicción y la segunda unidad de predicción indican valores de ponderación aplicados a la primera muestra de predicción. Por ejemplo, cuando un número marcado en una muestra de predicción es N, la muestra de predicción puede derivarse aplicando un valor de ponderación de N/8 a la primera muestra de predicción y aplicando un valor de ponderación de (1 -(N/8)) a la segunda muestra de predicción.
En una región no fronteriza, puede determinarse la primera muestra de predicción o la segunda muestra de predicción como una muestra de predicción. Haciendo referencia al ejemplo de la figura 18, en una región que pertenece a la primera unidad de predicción triangular de entre las regiones en las que el valor absoluto de la diferencia de entre la coordenada de eje x y la coordenada de eje y es mayor que un valor umbral, la primera muestra de predicción derivada
basándose en la información de movimiento de la primera unidad de predicción triangular puede determinarse como una muestra de predicción. Por otro lado, en una región que pertenece a la segunda unidad de predicción triangular de entre las regiones en las que el valor de diferencia de entre la coordenada de eje x y la coordenada de eje y es mayor que un valor umbral, la segunda muestra de predicción derivada basándose en la información de movimiento de la segunda unidad de predicción triangular puede determinarse como una muestra de predicción.
Haciendo referencia al ejemplo de la figura 19, en una región en la que la suma de la coordenada de eje x y la coordenada de eje y es menor que un primer valor umbral, la primera muestra de predicción derivada basándose en la información de movimiento de la primera unidad de predicción triangular puede determinarse como una muestra de predicción. Por otro lado, en una región en la que la suma de la coordenada de eje x y la coordenada de eje y es mayor que un segundo valor umbral, la segunda muestra de predicción derivada basándose en la información de movimiento de la segunda unidad de predicción triangular puede determinarse como una muestra de predicción.
Puede determinarse un valor umbral para determinar una región no fronteriza basándose en al menos uno de entre el tamaño de un bloque de codificación, la forma del bloque de codificación y un componente de color. Por ejemplo, cuando el valor umbral para un componente de luma se establece a N, el valor umbral para un componente de croma puede establecerse a N/2.
Las muestras de predicción incluidas en la región fronteriza pueden derivarse basándose en una operación de suma ponderada de la primera muestra de predicción y la segunda muestra de predicción. En este punto, pueden determinarse los valores de ponderación aplicados a la primera muestra de predicción y a la segunda muestra de predicción basándose en al menos uno de entre la posición de una muestra de predicción, el tamaño de un bloque de codificación, la forma del bloque de codificación y un componente de color.
Por ejemplo, como se muestra en el ejemplo de la figura 18 (a), pueden derivarse muestras de predicción en la posición de la misma coordenada de eje x y de coordenada de eje y aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales el valor absoluto de la diferencia entre la coordenada de eje x y la coordenada de eje y es 1 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (3 : 1) o (1 : 3). Además, las muestras de predicción de las cuales el valor absoluto de la diferencia de la coordenada de eje x y la coordenada de eje y es 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como alternativa, como se muestra en el ejemplo de la figura 18 (b), pueden derivarse muestras de predicción en la posición de las mismas coordenada de eje x y coordenada de eje y aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción, y pueden derivarse muestras de predicción de las cuales el valor absoluto de la diferencia entre la coordenada de eje x y la coordenada de eje y es 1 estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Por ejemplo, como se muestra en el ejemplo de la figura 19 (a), pueden derivarse muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es más pequeña que la anchura o la altura de un bloque de codificación por 1 aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es igual a o menor que la anchura o la altura del bloque de codificación por 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (3 : 1) o (1 : 3). Pueden derivarse muestras predichas de las cuales la suma de las coordenadas de eje x y las coordenadas de eje y es mayor o más pequeña que la anchura o la altura del bloque de codificación por 1 o 3 estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como alternativa, como se muestra en el ejemplo de la figura 19 (b), pueden derivarse muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es más pequeña que la anchura o la altura del bloque de codificación por 1 aplicando el mismo valor de ponderación a la primera muestra de predicción y a la segunda muestra de predicción. Las muestras de predicción de las cuales la suma de la coordenada de eje x y la coordenada de eje y es igual a o menor que la anchura o la altura del bloque de codificación por 2 pueden derivarse estableciendo la relación de valor de ponderación aplicada a la primera muestra de predicción y a la segunda muestra de predicción a (7 : 1) o (1 : 7).
Como otro ejemplo, puede determinarse el valor de ponderación considerando la posición de una muestra de predicción o la forma de un bloque de codificación. Las ecuaciones 3 a 5 muestran un ejemplo de derivación de un valor de ponderación cuando el tipo de subdivisión triangular izquierda se aplica a un bloque de codificación. La Ecuación 3 muestra un ejemplo de derivación de un valor de ponderación aplicado a la primera muestra de predicción cuando el bloque de codificación es una forma cuadrada.
[Ecuación 3]
En la Ecuación 3, x e y denotan la posición de una muestra de predicción. Cuando un bloque de codificación es una forma no cuadrada, puede derivarse un valor de ponderación aplicado a la primera muestra de predicción como se muestra en la Ecuación 4 o 5. La Ecuación 4 muestra un caso en el que la anchura de un bloque de codificación es mayor que la altura, y la Ecuación 5 muestra un caso en el que la anchura de un bloque de codificación es menor que la altura.
[Ecuación 4]
[Ecuación 5]
Cuando el tipo de subdivisión triangular derecha se aplica a un bloque de codificación, puede determinarse un valor de ponderación aplicado a la primera muestra de predicción como se muestra en las Ecuaciones 6 a 8. La Ecuación 6 muestra un ejemplo de derivación de un valor de ponderación aplicado a la primera muestra de predicción cuando el bloque de codificación es una forma cuadrada.
[Ecuación 6]
En la Ecuación 6, CbW denota la anchura de un bloque de codificación. Cuando el bloque de codificación es una forma no cuadrada, puede derivarse el valor de ponderación aplicado a la primera muestra de predicción como se muestra en la Ecuación 7 o Ecuación 8. La Ecuación 7 muestra un caso en el que la anchura de un bloque de codificación es mayor que la altura, y la Ecuación 8 muestra un caso en el que la anchura de un bloque de codificación es menor que la altura.
[Ecuación 7]
[Ecuación 8]
En la Ecuación 7, CbH denota la altura del bloque de codificación.
Como se muestra en el ejemplo, de entre las muestras de predicción en la región fronteriza, las muestras de predicción incluidas en la primera unidad de predicción triangular se derivan asignando un valor de ponderación mayor que el de la segunda muestra de predicción a la primera muestra de predicción, y las muestras de predicción incluidas en la segunda unidad de predicción triangular se derivan asignando un valor de ponderación mayor que el de la primera muestra de predicción a la segunda muestra de predicción.
Cuando la subdivisión diagonal se aplica a un bloque de codificación, puede establecerse no aplicar un modo de predicción combinada que combina el modo de intra predicción y el modo de fusión al bloque de codificación.
La intra predicción es para predecir un bloque actual usando muestras reconstruidas que se han codificado/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, puede determinarse la técnica de intra predicción del bloque actual basándose en al menos uno de entre la posición del bloque actual, el tamaño del bloque actual, la forma del bloque actual y una técnica de intra predicción de un bloque vecino. Por ejemplo, cuando el bloque actual existe a través de 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 una pluralidad de 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. En lo sucesivo en el presente documento, un proceso para realizar una intra predicción basándose en una intra predicción general se describirá con más detalle con referencia a las figuras.
La figura 20 es un diagrama de flujo que ilustra un método de intra predicción de acuerdo con un aspecto de la presente invención.
Puede determinarse una línea de muestra de referencia del bloque actual (S2001). La línea de muestra de referencia significa un conjunto de muestras de referencia incluidas en una k-ésima línea separada del lado superior y/o izquierdo del bloque actual. Las muestras de referencia pueden derivarse de muestras reconstruidas que se han codificado/descodificado en las proximidades del bloque actual.
Puede señalizarse información de índice para identificar la línea de muestra de referencia del bloque actual de entre una pluralidad de líneas de muestra de referencia a través de un flujo de bits. Por ejemplo, puede señalizarse información de índice intra_luma_ref_idx para especificar la línea de muestra de referencia del bloque actual a través de un flujo de bits. Puede señalizarse información de índice mediante la unidad de bloque de codificación.
La pluralidad de líneas de muestra de referencia puede incluir al menos una de entre una primera línea, una segunda línea, una tercera línea y una cuarta línea en el lado superior y/o izquierdo del bloque actual. Una línea de muestra de referencia configurada de una fila adyacente a la parte superior del bloque actual y una columna adyacente al lado izquierdo del bloque actual de entre la pluralidad de líneas de muestra de referencia se denomina línea de muestra de referencia adyacente, y las otras líneas de muestra de referencia pueden denominarse líneas de muestra de referencia no adyacentes.
Solo puede seleccionarse parte de la pluralidad de líneas de muestra de referencia como la línea de muestra de referencia del bloque actual. Por ejemplo, las líneas de muestra de referencia restantes excluyendo una tercera línea de muestra de referencia no adyacente de entre la pluralidad de líneas de muestra de referencia pueden establecerse como líneas de muestra de referencia candidatas. La Tabla 3 muestra índices asignados respectivamente a líneas de muestra de referencia candidatas.
[Tabla 3]
Puede establecerse un número mayor de líneas de muestra de referencia candidatas o un número menor de líneas de muestra de referencia candidatas que las líneas de muestra de referencia candidatas descritas anteriormente. Además, el número o las posiciones de líneas de muestra de referencia no adyacentes establecidas como líneas de muestra de referencia candidatas no se limitan al ejemplo descrito anteriormente. Por ejemplo, una primera línea de muestra de referencia no adyacente y una tercera línea de muestra de referencia no adyacente pueden establecerse como líneas de muestra de referencia candidatas, o una segunda línea de muestra de referencia no adyacente y una tercera línea de muestra de referencia no adyacente pueden establecerse como líneas de muestra de referencia candidatas. Como alternativa, toda la primera línea de muestra de referencia no adyacente, la segunda línea de muestra de referencia no adyacente y la tercera línea de muestra de referencia no adyacente pueden establecerse como líneas de muestra de referencia candidatas.
Pueden determinarse el número o tipos de líneas de muestra de referencia candidatas basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, la posición del bloque actual, si el bloque actual se subdivide, o no, en subbloques y el modo de intra predicción del bloque actual.
Puede determinarse la línea de muestra de referencia del bloque actual basándose en al menos uno de entre la posición del bloque actual, el tamaño del bloque actual, la forma del bloque actual y un modo de codificación de predicción de un bloque vecino. Por ejemplo, cuando el bloque actual está en contacto con la frontera de una imagen, una tesela, un sector o una unidad de árbol de codificación, la línea de muestra de referencia adyacente puede determinarse como la línea de muestra de referencia del bloque actual.
Como alternativa, cuando el bloque actual es una forma no cuadrada, puede determinarse una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual. Como alternativa, cuando la relación de anchura a altura del bloque actual es mayor que o igual a un valor umbral, la línea de muestra de referencia adyacente puede determinarse como la línea de muestra de referencia del bloque actual.
La línea de muestra de referencia puede incluir muestras de referencia superiores ubicadas en la parte superior del bloque actual y muestras de referencia izquierdas ubicadas en el lado izquierdo del bloque actual. Las muestras de referencia superiores y las muestras de referencia izquierdas pueden derivarse de muestras reconstruidas en las proximidades del bloque actual. Las muestras reconstruidas pueden estar en un estado antes de que se aplique el filtro en bucle.
A continuación, puede determinarse el modo de intra predicción del bloque actual (S2002). En cuanto al modo de intra predicción del bloque actual, puede determinarse al menos uno de entre un modo de intra predicción no angular y un modo de intra predicción angular como el modo de intra predicción del bloque actual. El modo de intra predicción no angular incluye un modo plano y un modo de CC, y el modo de intra predicción angular incluye 33 o 65 modos entre la dirección diagonal inferior izquierda y la dirección diagonal superior derecha.
La figura 21 es una vista que muestra modos de intra predicción.
La figura 21 (a) muestra 35 modos de intra predicción y la figura 21 (b) muestra 67 modos de intra predicción.
Puede definirse un número mayor o menor de modos de intra predicción que los mostrados en la figura 21.
Puede establecerse un modo más probable (MPM) basándose en el modo de intra predicción de un bloque vecino adyacente al bloque actual. En el presente caso, el bloque vecino puede incluir un bloque vecino izquierdo adyacente al lado izquierdo del bloque actual y un bloque vecino superior adyacente a la parte superior del bloque actual.
El número de MPM incluidos en una lista de MPM puede establecerse previamente en el codificador y en el descodificador. El número de MPM incluidos en la lista de MPM puede establecerse previamente en el codificador y en el descodificador. Por ejemplo, el número de MPM puede ser 3, 4, 5 o 6. Como alternativa, puede señalizarse información que indica el número de MPM a través de un flujo de bits. Como alternativa, puede determinarse el número de MPM basándose en al menos uno de entre el modo de codificación de predicción de un bloque vecino y el tamaño, la forma y el índice de línea de muestra de referencia del bloque actual. Por ejemplo, cuando se determina una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual, pueden usarse N MPM, mientras que cuando se determina una línea de muestra de referencia no adyacente como la línea de muestra de referencia del bloque actual, pueden usarse M MPM. M es un número natural menor que N, y por ejemplo, N puede ser 6, y M puede ser 5, 4 o 3. En consecuencia, cuando el índice de la línea de muestra de referencia del bloque actual es 0 y la bandera de MPM es verdadera, puede determinarse uno cualquiera de entre 6 modos de intra predicción candidatos como el modo de intra predicción del bloque actual, mientras que cuando el índice de la línea de muestra de referencia del bloque actual es mayor que 0 y la bandera de MPM es verdadera, puede determinarse uno cualquiera de entre 5 modos de intra predicción candidatos como el modo de intra predicción del bloque actual.
Como alternativa, puede usarse un número fijo (por ejemplo, 6 o 5) de candidatos de MPM independientemente del índice de la línea de muestra de referencia del bloque actual.
Se genera una lista de MPM que incluye una pluralidad de MPM y puede señalizarse información que indica si un MPM que es igual que el modo de intra predicción del bloque actual se incluye en la lista de MPM a través de un flujo de bits. La información es una bandera de 1 bit y puede denominarse bandera de MPM. Cuando la bandera de MPM indica que un MPM igual que el del bloque actual se incluye en la lista de MPM, puede señalizarse información de índice que identifica uno de entre los MPM a través de un flujo de bits. Por ejemplo, puede señalizarse información de índice mμm_idx que especifica uno cualquiera de entre la pluralidad de MPM a través de un flujo de bits. El MPM especificado por la información de índice puede establecerse como el modo de intra predicción del bloque actual. Cuando la bandera de MPM indica que un MPM igual que el del bloque actual no se incluye en la lista de MPM, puede señalizarse información de modo residual que indica uno cualquiera de entre los modos de intra predicción residuales que no sean MPM a través de un flujo de bits. La información de modo residual indica un valor de índice correspondiente al modo de intra predicción del bloque actual cuando los índices se reasignan a los modos de intra
predicción residuales excluyendo los MPM. El descodificador puede disponer los MPM en orden ascendente y determinar el modo de intra predicción del bloque actual comparando la información de modo residual con los MPM. Por ejemplo, cuando la información de modo residual es igual a o menor que el MPM, el modo de intra predicción del bloque actual puede derivarse sumando 1 a la información de modo residual.
Cuando se deriva el modo de intra predicción del bloque actual, puede omitirse la comparación entre algunos de los MPM y la información de modo residual. Por ejemplo, de entre los MPM, los MPM del modo de intra predicción no angular pueden excluirse de los objetivos de comparación. Cuando los modos de intra predicción no angulares se establecen como MPM, es claro que la información de modo residual indica el modo de intra predicción angular y, por lo tanto, el modo de intra predicción del bloque actual puede derivarse a través de la comparación entre los MPM residuales excluyendo los modos de intra predicción no angulares y la información de modo residual. En lugar de excluir los modos de intra predicción no angular de los objetivos de comparación, el número de modos de intra predicción no angular se suma a la información de modo residual y, entonces, puede compararse un valor de resultado de la comparación con los MPM residuales.
En lugar de establecer el modo por defecto a MPM, puede señalizarse información que indica si el modo de intra predicción del bloque actual es el modo por defecto a través de un flujo de bits. La información es una bandera de 1 bit y la bandera puede denominarse bandera de modo por defecto. La bandera de modo por defecto puede señalizarse solo cuando la bandera de MPM indica que un MPM igual que el del bloque actual se incluye en la lista de MPM. Como se ha descrito anteriormente, el modo por defecto puede incluir al menos uno de entre un modo plano, un modo de CC, un modo de dirección vertical y un modo de dirección horizontal. Por ejemplo, cuando el modo plano se establece como el modo por defecto, la bandera de modo por defecto puede indicar si el modo de intra predicción del bloque actual es un modo plano. Cuando la bandera de modo por defecto indica que el modo de intra predicción del bloque actual no es el modo por defecto, puede establecerse uno de entre los MPM indicados por la información de índice como el modo de intra predicción del bloque actual.
Cuando se usa la bandera de modo por defecto, puede establecerse no establecer un modo de intra predicción igual que el modo por defecto como un MPM. Por ejemplo, cuando la bandera de modo por defecto indica si el modo de intra predicción del bloque actual es un modo plano, el modo de intra predicción del bloque actual puede derivarse mediante el uso de 5 MPM excluyendo el MPM correspondiente al modo plano.
Cuando se establece una pluralidad de modos de intra predicción como modos por defecto, puede señalizarse adicionalmente información de índice que indica uno cualquiera de entre los modos por defecto. El modo de intra predicción del bloque actual puede establecerse como el modo por defecto indicado por la información de índice.
Cuando el índice de la línea de muestra de referencia del bloque actual no es 0, puede establecerse no usar el modo por defecto. Por ejemplo, puede establecerse no usar un modo de intra predicción no angular tal como un modo de CC o un modo plano cuando se determina una línea de muestra de referencia no adyacente como la línea de muestra de referencia del bloque actual. En consecuencia, cuando el índice de la línea de muestra de referencia no es 0, no se señaliza la bandera de modo por defecto y el valor de la bandera de modo por defecto puede establecerse a un valor predefinido (es decir, falso).
Cuando se determina el modo de intra predicción del bloque actual, pueden adquirirse muestras de predicción para el bloque actual basándose en el modo de intra predicción determinado (S2003).
Cuando se selecciona el modo de CC, se generan muestras de predicción para el bloque actual basándose en un valor promedio de muestras de referencia. Específicamente, pueden generarse valores de todas las muestras en un bloque de predicción basándose en un valor promedio de las muestras de referencia. El valor promedio puede derivarse usando al menos una de entre muestras de referencia superiores ubicadas en la parte superior del bloque actual y muestras de referencia izquierdas ubicadas en el lado izquierdo del bloque actual.
Dependiendo de la forma del bloque actual, el número o intervalo de las muestras de referencia usadas para derivar el valor promedio puede variar. Por ejemplo, cuando el bloque actual es un bloque de forma no cuadrada cuya anchura es mayor que la altura, el valor promedio puede calcularse usando solo las muestras de referencia superiores. Por otro lado, cuando el bloque actual es un bloque de forma no cuadrada del cual la anchura es menor que la altura, el valor promedio puede calcularse usando solo las muestras de referencia izquierdas. Es decir, cuando la anchura y la altura del bloque actual son diferentes, el valor promedio puede calcularse usando solo muestras de referencia adyacentes al más largo. Como alternativa, basándose en la relación de anchura a altura del bloque actual, puede determinarse si calcular, o no, el valor promedio usando solo las muestras de referencia superiores o si calcular, o no, el valor promedio usando solo las muestras de referencia izquierdas.
Cuando se selecciona el modo plano, puede adquirirse una muestra de predicción usando una muestra de predicción de dirección horizontal y una muestra de predicción de dirección vertical. En el presente caso, la muestra de predicción de dirección horizontal se adquiere basándose en una muestra de referencia izquierda y una muestra de referencia derecha situada en una línea horizontal igual que la de la muestra de predicción, y la muestra de predicción de dirección vertical se adquiere basándose en una muestra de referencia superior y una muestra de referencia inferior
situada en una línea vertical igual que la de la muestra de predicción. En el presente caso, la muestra de referencia derecha puede generarse mediante la copia de una muestra de referencia adyacente a la esquina superior derecha del bloque actual, y la muestra de referencia inferior puede generarse mediante la copia de una muestra de referencia adyacente a la esquina inferior izquierda del bloque actual. La muestra de predicción de dirección horizontal puede adquirirse basándose en una operación de suma ponderada de la muestra de referencia izquierda y la muestra de referencia derecha, y la muestra de predicción de dirección vertical puede adquirirse basándose en una operación de suma ponderada de la muestra de referencia superior y la muestra de referencia inferior. En este punto, puede determinarse un valor de ponderación asignado a cada muestra de referencia de acuerdo con la posición de la muestra de predicción. La muestra de predicción puede adquirirse basándose en una operación promedio o una operación de suma ponderada de la muestra de predicción de dirección horizontal y la muestra de predicción de dirección vertical. Cuando se realiza la operación de suma ponderada, pueden determinarse valores de ponderación aplicados a la muestra de predicción de dirección horizontal y la muestra de predicción de dirección vertical basándose en la posición de la muestra de predicción.
Cuando se selecciona un modo de predicción angular, puede determinarse un parámetro que indica la dirección de predicción (o ángulo de predicción) del modo de predicción angular seleccionado. La Tabla 4 muestra el parámetro de intra dirección intraPredAng de cada modo de intra predicción.
[Tabla 4]
Cuando se definen 35 modos de intra predicción, la Tabla 4 muestra el parámetro de intra dirección de cada modo de intra predicción que tiene un índice de uno cualquiera de entre 2 y 34. Cuando se definen más de 33 modos de intra predicción angular, la Tabla 4 se subdivide adicionalmente para establecer el parámetro de intra dirección de cada modo de intra predicción angular.
Después de disponer muestras de referencia superiores y muestras de referencia izquierdas del bloque actual en una línea, puede adquirirse una muestra de predicción basándose en el valor del parámetro de intra dirección. En este punto, cuando el valor del parámetro de intra dirección es un valor negativo, las muestras de referencia izquierdas y las muestras de referencia superiores pueden disponerse en una línea.
Las figuras 22 y 23 son vistas que muestran un ejemplo de una disposición ordenada unidimensional que dispone muestras de referencia en una línea.
La figura 22 es una vista que muestra un ejemplo de una disposición unidimensional de dirección vertical que dispone muestras de referencia en la dirección vertical y la figura 23 es una vista que muestra un ejemplo de una disposición ordenada unidimensional de dirección horizontal que dispone muestras de referencia en la dirección horizontal. Los aspectos de las figuras 22 y 23 se describirán suponiendo que se definen 35 modos de intra predicción.
Cuando el índice de modo de intra predicción es uno cualquiera de entre 11 y 18, puede aplicarse una disposición ordenada unidimensional de dirección horizontal en el que las muestras de referencia superiores se giran en sentido antihorario, y cuando el índice de modo de intra predicción es uno cualquiera de entre 19 y 25, puede aplicarse una disposición ordenada unidimensional de dirección vertical en el que las muestras de referencia izquierdas se giran en sentido horario. Al disponer las muestras de referencia en una línea, puede considerarse un ángulo de modo de intra predicción.
Puede determinarse un parámetro de determinación de muestra de referencia basándose en un parámetro de intra dirección. El parámetro de determinación de muestra de referencia puede incluir un índice de muestra de referencia para especificar una muestra de referencia y un parámetro de valor de ponderación para determinar un valor de ponderación aplicado a la muestra de referencia.
El índice de muestra de referencia ildx y el parámetro de valor de ponderación ifact pueden adquirirse a través de las Ecuaciones 9 y 10 que se muestran a continuación, respectivamente.
[Ecuación 9]
[Ecuación 10]
En las Ecuaciones 9 y 10, Pang denota un parámetro de intra dirección. La muestra de referencia especificada por el índice de muestra de referencia ildx corresponde a un pel entero.
Pueden especificarse al menos una o más muestras de referencia para derivar una muestra de predicción. Específicamente, puede especificarse la posición de una muestra de referencia usada para derivar una muestra de predicción considerando la pendiente del modo de predicción. Por ejemplo, puede especificarse una muestra de referencia usada para derivar una muestra de predicción usando el índice de muestra de referencia ildx.
En este punto, cuando la pendiente del modo de intra predicción no se expresa mediante una muestra de referencia, puede generarse una muestra de predicción mediante la interpolación de una pluralidad de muestras de referencia. Por ejemplo, cuando la pendiente del modo intra predicción es un valor entre una pendiente entre una muestra de predicción y una primera muestra de referencia y una pendiente entre una muestra de predicción y una segunda muestra de referencia, la muestra de predicción puede adquirirse interpolando la primera muestra de referencia y la segunda muestra de referencia. Es decir, cuando una línea angular después de un ángulo de intra predicción no pasa a través de una muestra de referencia situada en un pel entero, la muestra de predicción puede adquirirse mediante la interpolación de muestras de referencia adyacentes a los lados izquierdo y derecho o hacia arriba y hacia abajo de una posición a través de la cual pasa la línea angular.
La ecuación 11 muestra un ejemplo de adquisición de una muestra de predicción basándose en muestras de referencia.
[Ecuación 11]
En la Ecuación 11, P denota una muestra de predicción y Ref_1D denota una cualquiera de entre muestras de referencia dispuestas unidimensionalmente. En este punto, puede determinarse la posición de una muestra de referencia mediante la posición ((x, y) de la muestra de predicción y el índice ildx de la muestra de referencia.
Cuando la pendiente del modo intra predicción puede expresarse como una muestra de referencia, el parámetro de valor de ponderación ifact se establece a 0. En consecuencia, la Ecuación 11 puede simplificarse como se muestra en la Ecuación 12.
[Ecuación 12]
La intra predicción para el bloque actual puede realizarse basándose en una pluralidad de modos de intra predicción. Por ejemplo, puede derivarse un modo de intra predicción para cada muestra de predicción y puede derivarse la muestra de predicción basándose en un modo de intra predicción asignado a cada muestra de predicción.
Como alternativa, puede derivarse un modo de intra predicción para cada región y puede realizarse intra predicción para cada región basándose en el modo de intra predicción asignado a cada región. En el presente caso, la región puede incluir al menos una muestra. Puede determinarse adaptativamente al menos uno de entre el tamaño y la forma de la región basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual y el modo de intra predicción del bloque actual. Como alternativa, al menos uno de entre el tamaño y la forma de la región puede definirse previamente en el codificador y en el descodificador para ser independiente del tamaño o la forma del bloque actual.
Como alternativa, la intra predicción puede realizarse basándose en cada una de una pluralidad de intra predicciones y una muestra de predicción final puede derivarse basándose en una operación promedio o una operación de suma ponderada de una pluralidad de muestras de predicción adquiridas a través de la pluralidad de intra predicciones. Por ejemplo, puede adquirirse una primera muestra de predicción realizando una intra predicción basándose en un primer modo de intra predicción, y puede adquirirse una segunda muestra de predicción realizando una intra predicción basándose en un segundo modo de intra predicción. Posteriormente, puede adquirirse una muestra de predicción final basándose en una operación promedio o una operación de suma ponderada de la primera muestra de predicción y la segunda muestra de predicción. En este punto, puede determinarse un valor de ponderación asignado a cada una de la primera muestra de predicción y la segunda muestra de predicción considerando al menos uno de entre si el primer modo de intra predicción es, o no, un modo de intra predicción no angular/angular, si el segundo modo de intra predicción es, o no, un modo de intra predicción no angular/angular y un modo de intra predicción de un bloque vecino.
La pluralidad de modos de intra predicción puede ser una combinación de un modo de intra predicción no angular y un modo de intra predicción angular, una combinación de modos de intra predicción angular o una combinación de modos de intra predicción no angular.
La figura 24 es una vista que muestra un ejemplo de ángulos formados entre modos de intra predicción angular y una línea recta paralela al eje x.
Como se muestra en el ejemplo de la figura 24, los modos de predicción angular pueden existir entre la dirección diagonal inferior izquierda y la dirección diagonal superior derecha. Describiendo en términos de un ángulo formado por el eje x y el modo de predicción angular, los modos de predicción angular pueden existir entre 45 grados (dirección diagonal inferior izquierda) y -135 grados (dirección diagonal superior derecha).
Cuando el bloque actual es una forma no cuadrada, de acuerdo con el modo de intra predicción del bloque actual, puede haber un caso de derivación de una muestra de predicción mediante el uso de una muestra de referencia más alejada de la muestra de predicción, en lugar de una muestra de referencia más cercana a la muestra de predicción, de entre las muestras de referencia situadas en la línea angular después del ángulo de intra predicción.
La figura 25 es una vista que muestra un aspecto de adquisición de muestras de predicción cuando el bloque actual es una forma no cuadrada.
Por ejemplo, como se muestra en el ejemplo de la figura 25 (a), se asume que el bloque actual es una forma no cuadrada de la cual la anchura es mayor que la altura, y el modo de intra predicción del bloque actual es un modo de intra predicción angular que tiene un ángulo entre 0 y 45 grados. En el caso anterior, cuando se deriva la muestra de predicción A cerca de la columna derecha del bloque actual, puede haber un caso de uso de muestra de referencia izquierda L lejos de la muestra de predicción, en lugar de muestra de referencia superior T cercana a la muestra de predicción, de entre las muestras de referencia situadas en un modo angular después del ángulo.
Como otro ejemplo, como se muestra en el ejemplo de la figura 25 (b), se asume que el bloque actual es una forma no cuadrada de la cual la altura es mayor que la anchura, y el modo de intra predicción del bloque actual es un modo de intra predicción angular que tiene un ángulo entre -90 y -135 grados. En el caso anterior, cuando se deriva la muestra de predicción A cerca de la fila inferior del bloque actual, puede haber un caso de uso de muestra de referencia superior T lejos de la muestra de predicción, en lugar de muestra de referencia izquierda L cercana a la muestra de predicción, de entre las muestras de referencia situadas en un modo angular después del ángulo.
Para solucionar el problema descrito anteriormente, cuando el bloque actual es una forma no cuadrada, el modo de intra predicción del bloque actual se puede sustituir con un modo de intra predicción del sentido opuesto. En consecuencia, los modos de predicción angular que tienen un ángulo mayor o menor que el de los modos de predicción angular mostrados en la figura 21 puede usarse para un bloque de forma no cuadrada. El modo de intra predicción angular como este puede definirse como un modo de intra predicción de ángulo amplio. El modo de intra predicción de ángulo amplio representa un modo de intra predicción angular que no pertenece al intervalo de 45 a -135 grados.
La figura 26 es una vista que muestra modos de intra predicción de ángulo amplio.
En el ejemplo mostrado en la figura 26, los modos de intra predicción con un índice de -1 a -14 y los modos de intra predicción con un índice de 67 a 80 representan modos de intra predicción de ángulo amplio.
En la figura 26, aunque se muestran 14 modos de intra predicción de ángulo amplio (-1 a -14) que tienen un ángulo mayor que 45 grados y 14 modos de intra predicción de ángulo ancho (67 a 80) que tienen un ángulo menor que -135 grados, puede definirse un número mayor o menor de modos de intra predicción de ángulo amplio.
Cuando se usa un modo de intra predicción de ángulo amplio, la longitud de las muestras de referencia superiores puede establecerse a 2W 1, y la longitud de las muestras de referencia izquierdas puede establecerse a 2H 1.
Debido a que se usa un modo de intra predicción de ángulo amplio, la muestra A mostrada en la figura 25 (a) puede predecirse usando muestra de referencia T y muestra A mostrada en figura 25 (b) puede predecirse usando la muestra de referencia L.
Añadiendo modos de intra predicción existentes y modos de intra predicción de ángulo amplio N, puede usarse un total de 67 N modos de intra predicción. Por ejemplo, la Tabla 5 muestra parámetros de intra dirección de modos de intra predicción cuando se definen 20 modos de intra predicción de ángulo amplio.
[Tabla 5]
Cuando el bloque actual es una forma no cuadrada y el modo de intra predicción del bloque actual adquirido en la etapa S2002 pertenece a un intervalo de transformada, el modo de intra predicción del bloque actual puede transformarse en un modo de intra predicción de ángulo amplio. Puede determinarse el intervalo de transformada basándose en al menos uno de entre el tamaño, la forma y la relación del bloque actual. En el presente caso, la relación puede representar una relación de anchura a altura del bloque actual.
Cuando el bloque actual es una forma no cuadrada de la cual la anchura es mayor que la altura, el intervalo de transformada puede establecerse a partir de un índice de modo de intra predicción (por ejemplo, 66) de la dirección diagonal superior derecha (un índice del modo de intra predicción en la dirección diagonal superior derecha - N). En el presente caso, puede determinarse N basándose en la relación del bloque actual. Cuando el modo de intra predicción del bloque actual pertenece al intervalo de transformada, el modo de intra predicción puede transformarse en un modo de intra predicción de ángulo amplio. La transformada puede ser una resta de un valor predefinido del modo de intra predicción y el valor predefinido puede ser el número total (por ejemplo, 67) de modos de intra predicción excluyendo los modos de intra predicción de ángulo amplio.
De acuerdo con el aspecto descrito anteriormente, los modos de intra predicción del 66° al 53° pueden transformarse en los modos de intra predicción de ángulo amplio del -1° al -14°, respectivamente.
Cuando el bloque actual es una forma no cuadrada de la cual la altura es mayor que la anchura, el intervalo de transformada puede establecerse a partir de un índice de modo de intra predicción (por ejemplo, 2) de la dirección diagonal inferior izquierda (un índice del modo de intra predicción en la dirección diagonal inferior izquierda M). En el presente caso, puede determinarse M basándose en la relación del bloque actual. Cuando el modo de intra predicción del bloque actual pertenece al intervalo de transformada, el modo de intra predicción puede transformarse
en un modo de intra predicción de ángulo amplio. La transformada puede ser una suma de un valor predefinido al modo de intra predicción y el valor predefinido puede ser el número total (por ejemplo, 65) de modos de intra predicción angular excluyendo los modos de intra predicción de ángulo amplio.
De acuerdo con el aspecto descrito anteriormente, los modos de intra predicción del 2° al 15° pueden transformarse en los modos de intra predicción de ángulo amplio del 67° al 80°, respectivamente.
En lo sucesivo en el presente documento, los modos de intra predicción que pertenecen al intervalo de transformada se denominarán modos de intra predicción de sustitución de ángulo amplio.
Puede determinarse el intervalo de transformada basándose en la relación del bloque actual. Por ejemplo, las Tablas 6 y 7 muestran un intervalo de transformada cuando 35 modos de intra predicción y 67 modos de intra predicción se definen excluyendo los modos de intra predicción de ángulo amplio, respectivamente.
[Tabla 6]
[Tabla 7]
Como se muestra en los ejemplos de las Tablas 6 y 7, el número de modos de intra predicción de sustitución de ángulo amplio que pertenecen al intervalo de transformada puede variar de acuerdo con la relación del bloque actual.
Puede establecerse un intervalo de transformada como se muestra en la Tabla 8 mediante la subdivisión de la relación del bloque actual.
[Tabla 8]
Puede establecerse no usar el modo de intra predicción de ángulo amplio cuando se determina una línea de muestra de referencia no adyacente como la línea de muestra de referencia del bloque actual o cuando se usa un método de
codificación de intra predicción de múltiples líneas para seleccionar una cualquiera de entre una pluralidad de líneas de muestra de referencia. Es decir, aunque el bloque actual es una forma no cuadrada y el modo de intra predicción del bloque actual pertenece al intervalo de transformada, el modo de intra predicción del bloque actual puede no transformarse en el modo de intra predicción de ángulo amplio.
Como alternativa, pueden establecerse líneas de muestra de referencia no adyacentes como que no están disponibles como la línea de muestra de referencia del bloque actual o puede establecerse no usar el método de intra predicción de múltiples líneas para seleccionar una cualquiera de entre una pluralidad de líneas de muestra de referencia, cuando se determina el modo de intra predicción del bloque actual como el modo de intra predicción de ángulo amplio. Cuando no se usa el método de intra predicción de múltiples líneas, puede determinarse una línea de muestra de referencia adyacente como la línea de muestra de referencia del bloque actual.
Cuando no se usa el modo de intra predicción de ángulo amplio, la suma de nTbW y nTbH puede establecerse como refW y refH. En consecuencia, excluyendo la muestra de referencia superior izquierda, una muestra de referencia no adyacente que tiene una distancia de i del bloque actual puede incluir tantas como las muestras de referencia superiores (nTbW nTbH offsetX[i]) y tantas como las muestras de referencia izquierdas (nTbW nTbH offsetY[i]). Es decir, una muestra de referencia no adyacente que tiene una distancia de i del bloque actual puede incluir tantas como las muestras de referencia (2nTbW 2nTbH offsetX[i] offsetY[i] 1). Por ejemplo, cuando el valor de whRatio es mayor que 1, puede establecerse que el valor de offsetX sea mayor que el valor de offsetY. Por ejemplo, el valor de offsetX puede establecerse a 1, y el valor de offsetY puede establecerse a 0. Por otro lado, cuando el valor de whRatio es menor que 1, puede establecerse que el valor de offsetY sea mayor que el valor de offsetX. Por ejemplo, el valor de offsetX puede establecerse a 0, y el valor de offsetY puede establecerse a 1.
Debido a que los modos de intra predicción de ángulo amplio se usan además de los modos de intra predicción existentes, los recursos necesarios para codificar los modos de intra predicción de ángulo amplio aumentan y, por lo tanto, puede reducirse la eficiencia de codificación. En consecuencia, la eficiencia de codificación puede mejorarse codificando modos de intra predicción de sustitución para los modos de intra predicción de ángulo amplio, en lugar de codificar los modos de intra predicción de ángulo amplio tal cual están.
Por ejemplo, cuando el bloque actual se codifica usando el 67° modo de intra predicción de ángulo amplio, el 2° modo de intra predicción, que es el modo de intra predicción de sustitución del 67° modo de intra predicción de ángulo amplio, puede codificarse usando el modo de intra predicción del bloque actual. Además, cuando el bloque actual se codifica usando el -1er modo de intra predicción de ángulo amplio, el 66° modo de intra predicción, que es el modo de intra predicción de sustitución del -1er modo de intra predicción de ángulo amplio, puede codificarse usando el modo de intra predicción del bloque actual.
El descodificador puede descodificar el modo de intra predicción del bloque actual y determinar si el modo de intra predicción descodificado pertenece al intervalo de transformada. Cuando el modo de intra predicción descodificado es un modo de intra predicción de sustitución de ángulo amplio, el modo de intra predicción puede transformarse en el modo de intra predicción de ángulo amplio.
Como alternativa, cuando el bloque actual se codifica usando el modo de intra predicción de ángulo amplio, el modo de intra predicción de ángulo amplio puede codificarse tal cual está.
La codificación del modo de intra predicción puede realizarse basándose en la lista de MPM descrita anteriormente. Específicamente, cuando un bloque vecino se codifica usando un modo de intra predicción de ángulo amplio, el MPM puede establecerse basándose en un modo de intra predicción de sustitución de ángulo amplio correspondiente al modo de intra predicción de ángulo amplio.
Cuando se genera un bloque de predicción como resultado de realizar la intra predicción, las muestras de predicción pueden actualizarse basándose en la posición de cada una de las muestras de predicción incluidas en el bloque de predicción. El método de actualización como este puede denominarse método de intra predicción ponderada basándose en una posición de muestra o combinación de intra predicción dependiente de la posición (PDPC).
Puede determinarse si usar, o no, la PDPC considerando el modo de intra predicción del bloque actual, la línea de muestra de referencia del bloque actual, el tamaño del bloque actual o un componente de color. Por ejemplo, cuando el modo de intra predicción del bloque actual es al menos uno de entre un modo plano, un modo de CC, un modo de dirección vertical, un modo de dirección horizontal, un modo que tiene un valor de índice menor que el del modo de dirección vertical y un modo que tiene un valor de índice mayor que el del modo de dirección horizontal, puede usarse la PDPC. Como alternativa, solo cuando al menos uno de entre la anchura y la altura del bloque actual es mayor que 4, puede usarse la PDPC. Como alternativa, solo cuando el índice de la línea de imagen de referencia del bloque actual es 0, puede usarse la PDPC. Como alternativa, solo cuando el índice de la línea de imagen de referencia del bloque actual es igual a o mayor que un valor predefinido, puede usarse la PDPC. Como alternativa, una PDPC puede usarse solo para un componente de luminancia. Como alternativa, dependiendo de si se satisfacen, o no, dos o más de las condiciones enumeradas anteriormente, puede determinarse si usar, o no, la PDPC.
Como otro ejemplo, puede señalizarse información que indica si se aplica, o no, la PDPC a través de un flujo de bits.
Cuando se adquiere una muestra de predicción a través de la muestra de intra predicción, puede determinarse una muestra de referencia usada para corregir la muestra de predicción basándose en la posición de la muestra de predicción adquirida. Para mayor comodidad de explicación, en el aspecto descrito a continuación, una muestra de referencia usada para corregir una muestra de predicción se denomina muestra de referencia de PDPC. Además, una muestra de predicción adquirida a través de intra predicción se denomina primera muestra de predicción, y una muestra de predicción adquirida mediante la corrección de la primera muestra de predicción se denomina segunda muestra de predicción.
La figura 27 es una vista que muestra un aspecto de aplicación de PDPC.
La primera muestra de predicción puede corregirse usando al menos una muestra de referencia de PDPC. La muestra de referencia de PDPC puede incluir al menos una de entre una muestra de referencia adyacente a la esquina superior izquierda del bloque actual, una muestra de referencia superior ubicada en la parte superior del bloque actual y una muestra de referencia izquierda ubicada en el lado izquierdo del bloque actual.
Puede establecerse al menos una de entre las muestras de referencia que pertenecen a la línea de muestra de referencia del bloque actual como la muestra de referencia de PDPC. Como alternativa, independientemente de la línea de muestra de referencia del bloque actual, puede establecerse al menos una de entre las muestras de referencia que pertenecen a la línea de muestra de referencia que tiene el índice 0 como la muestra de referencia de PDPC. Por ejemplo, aunque la primera muestra de predicción se adquiere usando una muestra de referencia incluida en una línea de muestra de referencia del índice 1 o índice 2, la segunda muestra de predicción puede adquirirse usando una muestra de referencia incluida en la línea de muestra de referencia del índice 0.
Pueden determinarse el número o posiciones de las muestras de referencia de PDPC usadas para corregir la primera muestra de predicción considerando al menos uno de entre el modo de intra predicción del bloque actual, el tamaño del bloque actual, la forma del bloque actual y la posición de la primera muestra de predicción.
Por ejemplo, cuando el modo de intra predicción del bloque actual es un modo plano o un modo de CC, la segunda muestra de predicción puede adquirirse usando una muestra de referencia superior y una muestra de referencia izquierda. En este punto, la muestra de referencia superior puede ser una muestra de referencia vertical con respecto a la primera muestra de predicción (por ejemplo, una muestra de referencia de la misma coordenada x), y la muestra de referencia izquierda puede ser una muestra de referencia horizontal con respecto a la primera muestra de predicción (por ejemplo, una muestra de referencia de la misma coordenada y).
Cuando el modo de intra predicción del bloque actual es un modo de intra predicción de dirección horizontal, la segunda muestra de predicción puede adquirirse usando una muestra de referencia superior. En este punto, la muestra de referencia superior puede ser una muestra de referencia vertical con respecto a la primera muestra de predicción.
Cuando el modo de intra predicción del bloque actual es un modo de intra predicción de dirección vertical, la segunda muestra de predicción puede adquirirse usando una muestra de referencia izquierda. En este punto, la muestra de referencia izquierda puede ser una muestra de referencia horizontal con respecto a la primera muestra de predicción.
Cuando el modo de intra predicción del bloque actual es un modo de intra predicción de dirección diagonal inferior izquierda o un modo de intra predicción de dirección diagonal superior derecha, la segunda muestra de predicción puede adquirirse basándose en una muestra de referencia superior izquierda, una muestra de referencia superior y una muestra de referencia izquierda. La muestra de referencia superior izquierda puede ser una muestra de referencia adyacente a la esquina superior izquierda del bloque actual (por ejemplo, una muestra de referencia en la posición de (-1, -1)). La muestra de referencia superior puede ser una muestra de referencia situada en la dirección diagonal superior derecha de la primera muestra de predicción, y la muestra de referencia izquierda puede ser una muestra de referencia situada en la dirección diagonal inferior izquierda de la primera muestra de predicción.
En resumen, cuando la posición de la primera muestra de predicción es (x, y), R(-1, -1) puede establecerse como la muestra de referencia superior izquierda, y R(x y 1, -1) o R(x, -1) puede establecerse como la muestra de referencia superior. Además, R(-1, x y 1) o R(-1, y) puede establecerse como la muestra de referencia izquierda.
Un modo de predicción puede aplicarse al bloque actual una pluralidad de veces, o una pluralidad de modos de predicción pueden aplicarse de forma redundante al bloque actual. De esta forma, un método de predicción que usa un modo de predicción homogéneo o heterogéneo puede denominarse modo de predicción combinada (o Modo de Predicción Multi-hipótesis).
El modo de predicción combinada incluye al menos uno de entre un modo que combina un modo de fusión y un modo de fusión, un modo que combina inter predicción e intra predicción, un modo que combina un modo de fusión y un modo de predicción de vector de movimiento avanzado y un modo que combina un modo de fusión e intra predicción.
En el modo de predicción combinada, puede generarse un primer bloque de predicción basándose en el primer modo de predicción, y puede generarse un segundo bloque de predicción basándose en el segundo modo de predicción. Entonces, puede generarse un tercer bloque de predicción basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. El tercer bloque de predicción puede establecerse como el bloque de predicción final del bloque actual.
Puede determinarse si usar, o no, el modo de predicción combinada basándose en el tamaño o la forma del bloque actual. Por ejemplo, puede determinarse si usar, o no, el modo de predicción combinada basándose en al menos uno de entre el tamaño del bloque de codificación, el número de muestras incluidas en el bloque de codificación, la anchura del bloque de codificación y la altura del bloque de codificación. Por ejemplo, cuando al menos uno de entre la anchura y la altura del bloque de codificación es mayor que o igual a 128, o cuando el número de muestras incluidas en el bloque de codificación es menor que o igual a 64, el modo de predicción combinada puede no aplicarse al bloque de codificación.
Además, puede señalizarse información que indica si el modo de predicción combinada 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. Por ejemplo, puede señalizarse una bandera mh_intra_flag que indica si el modo de predicción combinada que combina el modo de fusión y la intra predicción a través de un flujo de bits. Cuando mh_intra_flag es 1, indica que se usa el modo de predicción combinada que combina el modo de fusión y la intra predicción, y cuando mh_intra_flag es 0, indica que no se usa el modo de predicción combinada que combina el modo de fusión y la intra predicción.
Solo cuando el modo de codificación de predicción del bloque actual es el modo de inter predicción y el modo de fusión se aplica al bloque actual, el modo de predicción combinada que combina el modo de fusión y la intra predicción puede aplicarse al bloque actual. Es decir, mh_intra_flag puede señalizarse cuando el valor de la bandera merge_flag que indica si el modo de fusión se aplica al bloque actual es 1.
En el modo de predicción combinada que combina el modo de fusión y la intra predicción, el modo de intra predicción del bloque actual puede establecerse a un modo de intra predicción predefinido. Por ejemplo, cuando se usa el modo de predicción combinada, el modo de intra predicción del bloque actual puede establecerse a un modo plano.
Como otro ejemplo, cuando se usa el modo de predicción combinada que combina el modo de fusión y la intra predicción, puede determinarse uno de entre los modos de intra predicción candidatos como el modo de intra predicción del bloque actual. En el presente caso, el modo de intra predicción candidato puede incluir al menos uno de entre un modo de intra predicción no angular y un modo de intra predicción angular de una dirección específica. En el presente caso, el modo de intra predicción no angular incluye al menos uno de entre el modo de CC y el modo plano, y el modo de intra predicción angular incluye al menos uno de entre el modo de intra predicción de la dirección horizontal, el modo de intra predicción de la dirección vertical y el modo de intra predicción de una dirección diagonal. Por ejemplo, cuando se usa el modo de predicción combinada, solo puede establecerse el modo de CC, el modo plano, el modo de intra predicción de la dirección horizontal o el modo de intra predicción de la dirección vertical como el modo de intra predicción del bloque actual. Como alternativa, cuando se usa el modo de predicción combinada, solo puede establecerse el modo plano, el modo de intra predicción de la dirección horizontal o el modo de intra predicción de la dirección vertical como el modo de intra predicción del bloque actual. Como alternativa, cuando se usa el modo de predicción combinada, solo puede establecerse el modo de CC, el modo plano o el modo de intra predicción de la dirección vertical como el modo de intra predicción del bloque actual. Como alternativa, cuando se usa el modo de predicción combinada, solo puede establecerse el modo de CC, el modo plano o el modo de intra predicción de la dirección horizontal como el modo de intra predicción del bloque actual.
Puede señalizarse información de índice para especificar uno cualquiera de entre los modos de intra predicción candidatos a través de un flujo de bits. Por ejemplo, puede señalizarse un índice mh_intra_idx que especifica uno cualquiera de entre los modos de intra predicción candidatos a través de un flujo de bits. Las tablas 9 y 10 muestran modos de intra predicción de acuerdo con el valor de mh_intra_idx. Puede determinarse un modo de intra predicción indicado por mh_intra_idx como el modo de intra predicción del bloque actual.
[Tabla 9]
[Tabla 10]
El número de modos de intra predicción candidatos puede tener un valor fijo en el codificador y en el descodificador. Como alternativa, el número o tipos de modos de intra predicción candidatos pueden variar de acuerdo con al menos uno de entre el tamaño del bloque actual, la forma del bloque actual y si un bloque vecino se codifica mediante intra predicción.
Como otro ejemplo, cuando se aplica el modo de predicción combinada que combina el modo de fusión y la intra predicción, puede determinarse el modo de intra predicción del bloque actual basándose en los MPM. En este punto, el número de MPM que incluye la lista de MPM cuando se aplica intra predicción general puede ser diferente del número de MPM que incluye la lista de MPM cuando se aplica el modo de predicción combinada. Por ejemplo, cuando no se aplica el modo de predicción combinada, la lista de MPM puede incluir 6 o 5 MPM, mientras que cuando se aplica el modo de predicción combinada, la lista de MPM puede incluir 4 o 3 MPM. Es decir, cuando se realiza la intra predicción general, se usan N MPM, mientras que cuando se aplica el modo de predicción combinada, pueden usarse menos de N MPM.
Por ejemplo, se asume que cuando se aplica un modo de intra predicción general, los MPM derivados basándose en el modo de intra predicción de un bloque vecino adyacente al bloque actual son modo plano, modo de CC, INTRA_MODE32, INTRA_MODE31, INt Ra_MODE33 e INTRA_MODE30. Cuando se aplica el modo de predicción combinada al bloque actual, puede determinarse el modo de intra predicción del bloque actual usando solo algunos de los 6 MPM. Por ejemplo, el modo de intra predicción del bloque actual puede determinarse usando una lista de MPM que incluye 3 MPM que tienen los índices más pequeños de entre los MPM, es decir, el modo plano, el modo de CC e INTRA_MODE32. Como alternativa, puede determinarse uno cualquiera que tenga un valor de índice predefinido de entre los MPM como el modo de intra predicción del bloque actual.
Como otro ejemplo, es posible establecer de forma igual el número de MPM usados para determinar el modo de intra predicción del bloque actual cuando se aplica una intra predicción general, y la cantidad de MPM usados para determinar el modo de intra predicción del bloque actual cuando se aplica el modo de predicción combinada.
Cuando se aplica el modo de predicción combinada, puede omitirse la codificación de la bandera de MPM y puede considerarse que la bandera de MPM es verdadera. Es decir, cuando se aplica el modo de predicción combinada, puede determinarse uno cualquiera de entre los MPM como el modo de intra predicción del bloque actual.
Puede establecerse no usar el método de intra predicción de múltiples líneas cuando el modo de predicción combinada que combina el modo de fusión y la intra predicción se aplica al bloque actual. Cuando no se usa el método de intra predicción de múltiples líneas, puede usarse una línea de muestra de referencia adyacente para la intra predicción del bloque actual.
Como alternativa, puede establecerse usar el método de intra predicción de múltiples líneas cuando el modo de predicción combinada que combina el modo de fusión y la intra predicción se aplica al bloque actual. Puede señalizarse información para determinar la línea de muestra de referencia del bloque actual de entre una pluralidad de líneas de muestra de referencia a través de un flujo de bits. Como alternativa, puede determinarse la línea de muestra de referencia del bloque actual considerando al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, el modo de intra predicción del bloque actual y la línea de muestra de referencia de un bloque vecino.
El número de modos de intra predicción candidatos disponibles puede establecerse de forma diferente de acuerdo con la línea de muestra de referencia del bloque actual. Por ejemplo, cuando se usa una línea de muestra de referencia adyacente, el modo de intra predicción candidato puede incluir al menos uno de entre el modo plano, el modo de CC, el modo de intra predicción de la dirección horizontal, el modo de intra predicción de la dirección vertical, el modo de intra predicción de la dirección diagonal inferior izquierda y el modo de intra predicción de la dirección diagonal superior derecha. Por otro lado, cuando se usa una línea de muestra de referencia no adyacente, el modo de intra predicción candidato puede incluir al menos uno de entre el modo de intra predicción de la dirección horizontal, el modo de intra predicción de la dirección vertical, el modo de intra predicción de la dirección diagonal inferior izquierda y el modo de intra predicción de la dirección diagonal superior derecha.
Puede generarse un primer bloque de predicción usando un candidato de fusión seleccionado en el modo de fusión, y puede generarse un segundo bloque de predicción usando el modo de intra predicción. En este punto, puede establecerse no aplicar una subdivisión triangular al bloque actual cuando se genera el primer bloque de predicción. Es decir, puede no permitirse una subdivisión triangular en el modo de predicción combinada que combina el modo de fusión y la intra predicción. Además, puede establecerse no aplicar una PDPC al bloque actual cuando se genera el segundo bloque de predicción. Es decir, puede no permitirse una PDPC en el modo de predicción combinada que combina el modo de fusión y la intra predicción.
Puede generarse un tercer bloque de predicción basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. Por ejemplo, la Ecuación 13 muestra un ejemplo de generación de un tercer bloque de predicción basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción.
[Ecuación 13]
En la Ecuación 13, Pfus denota un primer bloque de predicción obtenido basándose en el modo de fusión, y Pintra denota un segundo bloque de predicción obtenido basándose en la intra predicción. Pcomb denota un tercer bloque de predicción obtenido combinando el primer bloque de predicción y el segundo bloque de predicción. w denota un primer valor de ponderación aplicado al primer bloque de predicción. Puede derivarse un segundo valor de ponderación aplicado al segundo bloque de predicción restando el primer valor de ponderación w de la constante N. En el presente caso, N puede tener un valor predefinido en el codificador y en el descodificador. Por ejemplo, N puede ser 4 u 8. Como alternativa, puede derivarse la constante N basándose en al menos uno de entre el tamaño, la forma y el modo de intra predicción del bloque actual.
A diferencia del ejemplo que se muestra en la Ecuación 13, w puede establecerse como el segundo valor de ponderación, y un valor obtenido restando el segundo valor de ponderación de la constante N predeterminada puede establecerse como el primer valor de ponderación.
Pueden determinarse los valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en al menos uno de entre el modo de intra predicción del bloque actual y si el modo de fusión tiene información de movimiento bidireccional. Por ejemplo, el primer valor de ponderación w cuando el modo de intra predicción del bloque actual es modo de intra predicción angular puede ser mayor que el primer valor de intra predicción w cuando el modo de intra predicción del bloque actual es modo de intra predicción no angular. Como alternativa, el primer valor de ponderación w cuando el candidato de fusión realiza la predicción bidireccional puede ser mayor que el primer valor de ponderación w cuando el candidato de fusión realiza la predicción unidireccional.
Como otro ejemplo, pueden determinarse valores de ponderación considerando modos de codificación de predicción de bloques vecinos adyacentes al bloque actual. En el presente caso, el bloque vecino puede incluir al menos uno de entre un bloque vecino superior adyacente a la parte superior del bloque actual, un bloque vecino izquierdo adyacente al lado izquierdo del bloque actual, y un bloque vecino superior izquierdo adyacente a la esquina superior izquierda del bloque actual. Puede determinarse un valor de ponderación basándose en el número de bloques vecinos codificados por intra predicción de entre los bloques vecinos adyacentes al bloque actual. Por ejemplo, a medida que aumenta el número de bloques vecinos codificados por intra predicción de entre los bloques vecinos adyacentes al bloque actual, el primer valor de ponderación puede tener un valor menor y el segundo valor de ponderación puede tener un valor mayor. Por otro lado, a medida que disminuye el número de bloques vecinos no codificados por intra predicción de entre los bloques vecinos adyacentes al bloque actual, el primer valor de ponderación puede tener un valor mayor y el segundo valor de ponderación puede tener un valor menor. Por ejemplo, cuando tanto el bloque vecino izquierdo como el bloque vecino superior se codifican mediante intra predicción, el segundo valor de ponderación puede establecerse a n. Cuando solo uno de entre el bloque vecino izquierdo y el bloque vecino superior se codifica mediante intra predicción, el segundo valor de ponderación puede establecerse a n/2. Cuando ni el bloque vecino izquierdo ni el bloque vecino superior se codifican mediante intra predicción, el segundo valor de ponderación puede establecerse a n/4. En el presente caso, n representa un número entero igual a o menor que N.
Puede determinarse el valor de ponderación mediante la unidad de muestra o subbloque en el bloque actual. Por ejemplo, el bloque actual puede subdividirse en una pluralidad de subbloques, y puede establecerse que un valor de ponderación aplicado a cada subbloque tenga un valor diferente. En este punto, el número de subbloques puede tener un valor fijo en el codificador y en el descodificador. Como alternativa, puede determinarse adaptativamente el número de subbloques basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, el modo de intra predicción del bloque actual y el modo de codificación de predicción de un bloque vecino.
La figura 28 es una vista que muestra ejemplos de aplicación de valores de ponderación.
El bloque actual puede subdividirse en una pluralidad de subbloques, y un valor de ponderación aplicado a cada subbloque puede establecerse a un valor diferente. Por ejemplo, como se muestra en los ejemplos de las figuras 28 (a) y (b), para un subbloque que incluye una muestra ubicada en la esquina superior izquierda del bloque actual, se establece que el segundo valor de ponderación sea mayor que el primer valor de ponderación. Por otro lado, para un subbloque que incluye una muestra situada en la esquina inferior derecha del bloque actual, puede establecerse que el primer valor de ponderación sea mayor que el segundo valor de ponderación.
Un tercer subbloque de predicción para un subbloque puede obtenerse realizando una predicción ponderada sobre el primer subbloque de predicción y el segundo subbloque de predicción correspondiente al subbloque. En este punto, como se muestra en el ejemplo de la figura 28, los valores de ponderación usados para la predicción ponderada pueden establecerse de forma diferente para cada subbloque.
Puede determinarse de forma diferente un valor de ponderación asignado a un subbloque de acuerdo con si el candidato de fusión tiene información de movimiento bidireccional.
La figura 29 es una vista que muestra ejemplos de asignación de un valor de ponderación diferente a un subbloque de acuerdo con si un candidato de fusión tiene información de movimiento bidireccional.
Cuando un candidato de fusión tiene información de movimiento bidireccional, el primer valor de ponderación w asignado a al menos uno de entre los subbloques puede establecerse a un valor grande en comparación con un caso en el que el candidato de fusión tiene información de movimiento unidireccional. Por ejemplo, en las figuras 29 (a) y (b), se muestra que para todos los subbloques, el valor de ponderación w aplicado cuando se aplica la predicción bidireccional tiene un valor mayor que el valor de ponderación w aplicado cuando se aplica la predicción unidireccional.
Como alternativa, puede determinarse un valor de ponderación aplicado a un subbloque basándose en el modo de intra predicción del bloque actual.
La figura 30 es una vista que muestra ejemplos de asignación de un valor de ponderación diferente a un subbloque de acuerdo con el modo de intra predicción del bloque actual.
Cuando el modo de intra predicción del bloque actual está en dirección vertical, puede establecerse que el segundo valor de ponderación de un subbloque ubicado en la parte superior del bloque actual sea mayor que el segundo valor de ponderación de un subbloque ubicado en la parte inferior del bloque actual.
Por ejemplo, puede establecerse que el segundo valor de ponderación sea mayor que el primer valor de ponderación para un subbloque ubicado en la parte superior del bloque actual, mientras que el primer valor de ponderación y el segundo valor de ponderación pueden establecerse de forma igual o puede establecerse que el primer valor de ponderación sea mayor que el segundo valor de ponderación para un subbloque ubicado en la parte inferior del bloque actual.
Cuando el modo de intra predicción del bloque actual está en dirección horizontal, puede establecerse que el segundo valor de ponderación de un subbloque ubicado en el lado izquierdo del bloque actual sea mayor que el segundo valor de ponderación de un subbloque ubicado en el lado derecho del bloque actual.
Por ejemplo, se establece que el segundo valor de ponderación sea mayor que el primer valor de ponderación para un subbloque ubicado en el lado izquierdo del bloque actual, mientras que el primer valor de ponderación y el segundo valor de ponderación pueden establecerse de forma igual o puede establecerse que el primer valor de ponderación sea mayor que el segundo valor de ponderación para un subbloque ubicado en el lado derecho del bloque actual.
Como otro ejemplo, cuando el modo de intra predicción del bloque actual está en dirección vertical, puede establecerse que el primer valor de intra predicción de un subbloque ubicado en la parte superior del bloque actual sea mayor que el primer valor de intra predicción del subbloque ubicado en la parte inferior del bloque actual, o cuando el primer valor de intra predicción del bloque está en dirección horizontal, puede establecerse que el primer valor de intra predicción de un subbloque ubicado en el lado izquierdo del bloque actual sea mayor que el primer valor de intra predicción de un subbloque ubicado en el lado derecho del bloque actual.
Como otro ejemplo, puede determinarse un valor de ponderación asignado a cada subbloque basándose en los modos de codificación de predicción de bloques vecinos adyacentes al bloque actual. Por ejemplo, cuando el bloque vecino superior del bloque actual se codifica mediante intra predicción y el bloque vecino izquierdo del bloque actual no se codifica mediante intra predicción, puede establecerse que el segundo valor de ponderación de un subbloque ubicado en el lado superior del bloque actual sea mayor que el segundo valor de ponderación de un subbloque ubicado en la parte inferior del bloque actual. Por otro lado, cuando el bloque vecino superior del bloque actual no se codifica mediante intra predicción y el bloque vecino izquierdo del bloque actual se codifica mediante intra predicción, puede establecerse que el segundo valor de ponderación de un subbloque ubicado en el lado izquierdo del bloque actual sea mayor que el segundo valor de ponderación de un subbloque ubicado en el lado derecho del bloque actual.
Para al menos uno de entre una pluralidad de subbloques, el primer valor de ponderación o el segundo valor de ponderación puede establecerse a 0. Es decir, para al menos uno de entre la pluralidad de subbloques, puede establecerse el primer subbloque de predicción o el segundo subbloque de predicción como el tercer subbloque de predicción. En consecuencia, puede no realizarse predicción combinada sobre al menos uno de entre la pluralidad de subbloques. Por ejemplo, para al menos uno de entre los múltiples subbloques, el primer valor de ponderación w puede establecerse a 0, o el primer valor de ponderación w puede establecerse a la constante N.
Un bloque al que se aplica el modo de predicción combinado que combina el modo de fusión y la intra predicción se puede considerar codificado mediante inter predicción. En consecuencia, puede establecerse que el modo de intra predicción de un bloque codificado en el modo de predicción combinada no esté disponible para derivar un modo de intra predicción de un bloque que se codificará/descodificará posteriormente. Cuando se deriva un MPM, el modo de intra predicción de un bloque no disponible puede considerarse como el modo plano.
Por otro lado, puede establecerse que la información de movimiento de un bloque codificado por el modo de predicción combinada esté disponible para derivar información de movimiento de un bloque que se codificará/descodificará posteriormente.
En el modo que combina un modo de fusión y un modo de fusión, la predicción de compensación de movimiento puede realizarse usando una pluralidad de candidatos de fusión. Específicamente, puede generarse un primer bloque de predicción usando un primer candidato de fusión, y puede generarse un segundo bloque de predicción usando un segundo candidato de fusión. Puede generarse un tercer bloque de predicción basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción.
Puede señalizarse información para especificar el primer candidato de fusión y el segundo candidato de fusión a través de un flujo de bits, respectivamente. Por ejemplo, puede señalizarse información de índice merge_idx para especificar el primer candidato de fusión y la información de índice merge_2nd_idx para especificar el segundo candidato de fusión a través de un flujo de bits. El segundo candidato de fusión puede determinarse basándose en información de índice merge_2nd_idx e información de índice merge_idx.
La información de índice merge_idx especifica uno cualquiera de entre los candidatos de fusión incluidos en la lista de candidatos de fusión.
La información de índice merge_2nd_idx puede especificar uno cualquiera de entre los candidatos de fusión restantes excluyendo el candidato de fusión especificado por merge_idx. En consecuencia, cuando el valor de merge_2nd_idx es menor que el de merge_idx, un candidato de fusión del cual el índice es el valor de merge_2nd_idx puede establecerse como el segundo candidato de fusión. Cuando el valor de merge_2nd_idx es igual a o mayor que el valor de merge_idx, un candidato de fusión que tiene un valor obtenido sumando 1 al valor de merge_2nd_idx como un índice puede establecerse como el segundo candidato de fusión.
Como alternativa, el segundo candidato de fusión puede especificarse considerando el orden de búsqueda de bloques candidatos.
La figura 31 es una vista que muestra un ejemplo en el que un segundo candidato de fusión se especifica considerando el orden de búsqueda de bloques candidatos.
En el ejemplo mostrado en la figura 31, los índices marcados en muestras vecinas y muestras no vecinas indican el orden de búsqueda de bloques candidatos. Por ejemplo, los bloques candidatos pueden buscarse secuencialmente desde la posición A0 hasta la posición A14.
Cuando el bloque A4 se selecciona como el primer candidato de fusión, un candidato de fusión derivado de un bloque candidato que tiene un orden de búsqueda junto a A4 puede especificarse como el segundo candidato de fusión. Por ejemplo, un candidato de fusión derivado de A5 puede seleccionarse como el segundo candidato de fusión. Cuando el bloque candidato en la posición A5 no puede usarse como un candidato de fusión, un candidato de fusión derivado de un siguiente bloque candidato puede seleccionarse como el segundo candidato de fusión.
El primer candidato de fusión y el segundo candidato de fusión pueden seleccionarse de entre candidatos de fusión derivados de bloques no vecinos.
La figura 32 es una vista que muestra un ejemplo en el que un primer candidato de fusión y un segundo candidato de fusión se seleccionan de entre candidatos de fusión derivados de bloques no vecinos.
Como se muestra en el ejemplo de la figura 32, los candidatos de fusión derivados de un primer bloque candidato y un segundo bloque candidato que no son adyacentes al bloque actual pueden seleccionarse como el primer candidato de fusión y el segundo candidato de fusión, respectivamente. En este punto, la línea de bloque a la que pertenece el primer bloque candidato y la línea de bloque a la que pertenece el segundo bloque candidato puede ser diferentes. Por ejemplo, el primer candidato de fusión puede derivarse de uno cualquiera de entre bloques candidatos A5 a A10, y el segundo candidato de fusión puede derivarse de uno cualquiera de entre bloques candidatos A11 a A15.
Como alternativa, puede establecerse de modo que el primer bloque candidato y el segundo bloque candidato no se incluyan en la misma línea (por ejemplo, fila o columna).
Como otro ejemplo, el segundo candidato de fusión puede especificarse basándose en el primer candidato de fusión. En este punto, el primer candidato de fusión puede especificarse mediante la información de índice merge_idx señalizada desde un flujo de bits. Por ejemplo, un candidato de fusión adyacente al primer candidato de fusión puede especificarse como el segundo candidato de fusión. En el presente caso, el candidato de fusión adyacente al primer candidato de fusión puede significar un candidato de fusión que tiene una diferencia de índice de 1 con respecto al primer candidato de fusión. Por ejemplo, un candidato de fusión que tiene un valor índice de merge_idx 1 puede establecerse como el segundo candidato de fusión. En este punto, cuando el valor de merge_idx 1 es mayor que el valor índice máximo (o cuando el valor índice del primer candidato de fusión es el índice máximo), un candidato de
fusión que tiene un valor índice de merge_idx - 1 o un candidato de fusión que tiene un valor índice de un valor predefinido (por ejemplo, 0) puede establecerse como el segundo candidato de fusión.
Como alternativa, el candidato de fusión adyacente al primer candidato de fusión puede significar un candidato de fusión derivado de un bloque candidato adyacente espacialmente a un bloque candidato usado para derivar el primer candidato de fusión. En el presente caso, el bloque candidato vecino del bloque candidato puede significar un bloque adyacente al bloque candidato en la dirección izquierda, derecha, superior, inferior o diagonal.
Como otro ejemplo, el segundo candidato de fusión puede especificarse basándose en información de movimiento del primer candidato de fusión. Por ejemplo, un candidato de fusión que comparte la misma imagen de referencia con el primer candidato de fusión puede seleccionarse como el segundo candidato de fusión. Cuando hay una pluralidad de candidatos de fusión que comparten la misma imagen de referencia con el primer candidato de fusión, un candidato de fusión que tiene el índice más pequeño de entre la pluralidad de candidatos de fusión, un candidato de fusión que tiene la diferencia de índice más pequeña del primer candidato de fusión, o un candidato de fusión que tiene la diferencia de vector de movimiento más pequeña del primer candidato de fusión puede seleccionarse como el segundo candidato de fusión. Como alternativa, el segundo candidato de fusión puede seleccionarse basándose en información de índice que especifica uno cualquiera de entre la pluralidad de candidatos de fusión.
Como alternativa, cuando el primer candidato de fusión es una predicción unidireccional de una primera dirección, un candidato de fusión que incluye información de movimiento en una segunda dirección puede establecerse como el segundo candidato de fusión. Por ejemplo, cuando el primer candidato de fusión tiene información de movimiento de la dirección L0, un candidato de fusión que tiene información de movimiento de la dirección L1 puede seleccionarse como el segundo candidato de fusión. Cuando hay una pluralidad de candidatos de fusión que tienen información de movimiento de la dirección L1, un candidato de fusión que tiene el índice más pequeño o un candidato de fusión que tiene la diferencia de índice más pequeña del primer candidato de fusión de entre la pluralidad de candidatos de fusión puede establecerse como el segundo candidato de fusión. Como alternativa, el segundo candidato de fusión puede seleccionarse basándose en información de índice que especifica uno cualquiera de entre la pluralidad de candidatos de fusión.
Como otro ejemplo, uno de entre los candidatos de fusión derivados de bloques vecinos adyacentes al bloque actual puede establecerse como el primer candidato de fusión, y uno de entre los candidatos de fusión derivados de bloques no vecinos no adyacentes al bloque actual puede establecerse como el segundo candidato de fusión.
Como otro ejemplo, uno de entre los candidatos de fusión derivados de bloques candidatos ubicados en la parte superior del bloque actual puede establecerse como el primer candidato de fusión, y uno de entre los candidatos de fusión derivados de bloques candidatos ubicados en el lado izquierdo puede establecerse como el segundo candidato de fusión.
En el modo de predicción combinada que combina un modo de fusión y un modo de fusión como se ha descrito anteriormente, el modo de fusión puede significar un modo de fusión basándose en un modelo de movimiento de traslación (denominado, en lo sucesivo en el presente documento, modo de fusión de traslación) o un modo de fusión basándose en un modelo de movimiento afín (denominado, en lo sucesivo en el presente documento, modo de fusión afín). Es decir, la predicción de compensación de movimiento puede realizarse combinando un modo de fusión de traslación y un modo de fusión de traslación o combinando un modo de fusión afín y un modo de fusión afín.
Como otro ejemplo, cuando un bloque vecino usado para derivar el primer candidato de fusión se codifica basándose en información de movimiento afín, un candidato de fusión derivado del bloque vecino codificado basándose en información de movimiento afín puede establecerse como un segundo candidato de fusión. Por ejemplo, cuando el primer candidato de fusión es un candidato de fusión afín, o cuando el primer candidato de fusión se deriva basándose en información de movimiento de un subbloque en un bloque de codificación codificado basándose en información de movimiento afín, el candidato de fusión afín o el candidato de fusión derivado basándose en información de movimiento de un subbloque en un bloque de codificación codificado basándose en información de movimiento afín puede seleccionarse como un segundo candidato de fusión. En el presente caso, el segundo candidato de fusión puede incluir al menos uno de entre un candidato de fusión más cercano al primer candidato de fusión en el orden de búsqueda, un candidato de fusión que tiene la diferencia de índice más pequeña del primer candidato de fusión, un candidato de fusión que tiene el índice más pequeño, y un candidato de fusión que tiene la diferencia de vector de movimiento más pequeña del primer candidato de fusión, de entre los candidatos de fusión que satisfacen las condiciones anteriores.
Contrariamente al ejemplo descrito anteriormente, cuando un bloque vecino usado para derivar el primer candidato de fusión se codifica basándose en información de movimiento de traslación (es decir, información de movimiento no afín), un candidato de fusión derivado del bloque vecino codificado basándose en información de movimiento de traslación puede establecerse como un segundo candidato de fusión. Por ejemplo, cuando el primer candidato de fusión es un candidato de fusión no afín, un candidato de fusión no afín puede seleccionarse como el segundo candidato de fusión. En el presente caso, el segundo candidato de fusión puede incluir al menos uno de entre un candidato de fusión más cercano al primer candidato de fusión en el orden de búsqueda, un candidato de fusión que
tiene la diferencia de índice más pequeña del primer candidato de fusión, un candidato de fusión que tiene el índice más pequeño, y un candidato de fusión que tiene la diferencia de vector de movimiento más pequeña del primer candidato de fusión, de entre los candidatos de fusión no afines.
Como alternativa, el segundo candidato de fusión se deriva sumando o restando un desplazamiento al índice del primer candidato de fusión, y cuando los métodos de codificación de bloques vecinos usados para derivar el primer candidato de fusión y el segundo candidato de fusión son diferentes, el segundo candidato de fusión puede restablecerse a otro candidato de fusión.
La figura 33 es una vista para describir un ejemplo de determinación de un segundo candidato de fusión.
Cuando se selecciona el primer candidato de fusión, un candidato de fusión que tiene un índice derivado sumando o restando un desplazamiento al índice del primer candidato de fusión puede seleccionarse como el segundo candidato de fusión. Por ejemplo, un candidato de fusión que tiene un valor indicado por merge_idx señalizado desde un flujo de bits como un índice puede seleccionarse como el primer candidato de fusión, y un candidato de fusión que tiene merge_idx 1 como un índice puede seleccionarse como el segundo candidato de fusión.
En este punto, cuando el primer candidato de fusión es un candidato de fusión afín o se deriva de un subbloque que pertenece a un bloque de codificación codificado por un modelo de movimiento afín, un candidato de fusión afín o un candidato de fusión derivado de un subbloque que pertenece a un bloque de codificación codificado por un modelo de movimiento afín debería establecerse como el segundo candidato de fusión. Cuando un candidato de fusión que tiene merge_idx 1 como un índice no es un candidato de fusión afín o no se deriva de un subbloque que pertenece a un bloque de codificación codificado por un modelo de movimiento afín, otro candidato de fusión puede establecerse como el segundo candidato de fusión. En el presente caso, otro candidato de fusión puede ser el primer candidato de fusión o un candidato de fusión que tiene la diferencia más pequeña de merge_idx 1, de entre los candidatos de fusión afines o los candidatos de fusión derivados de un subbloque que pertenece a un bloque de codificación codificado por un modelo de movimiento afín.
Por el contrario, cuando el primer candidato de fusión es un candidato de fusión no afín, un candidato de fusión no afín debería establecerse como el segundo candidato de fusión. Cuando un candidato de fusión que tiene merge_idx 1 como un índice es un candidato de fusión afín o se deriva de un subbloque que pertenece a un bloque de codificación codificado por un modelo de movimiento afín, otro candidato de fusión puede establecerse como el segundo candidato de fusión. En el presente caso, otro candidato de fusión puede ser el primer candidato de fusión o un candidato de fusión que tiene la diferencia más pequeña de merge_idx 1, de entre los candidatos de fusión no afines. Por ejemplo, en el ejemplo mostrado en la figura 33, se muestra que el candidato de fusión A3 que tiene merge_idx 2 como un índice se establece como el segundo candidato de fusión.
Como otro ejemplo, la predicción de compensación de movimiento puede realizarse combinando un modo de fusión de traslación y un modo de fusión afín. Es decir, uno cualquiera de entre el primer candidato de fusión y el segundo candidato de fusión puede ser un candidato de fusión afín, y el otro puede ser un candidato de fusión no afín.
Puede adquirirse un bloque de predicción combinada a través de una operación de suma ponderada del primer bloque de predicción derivado del primer candidato de fusión y el segundo bloque de predicción derivado basándose en el segundo candidato de fusión. En este punto, puede establecerse que el valor de ponderación aplicado al primer bloque de predicción sea mayor que el valor de ponderación aplicado al segundo bloque de predicción.
Como alternativa, los valores de ponderación pueden determinarse basándose en información de movimiento del primer candidato de fusión e información de movimiento del segundo candidato de fusión. Por ejemplo, pueden determinarse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en la diferencia en el orden de salida de la imagen de referencia y la imagen actual. Específicamente, a medida que aumenta la diferencia en el orden de salida de la imagen de referencia y la imagen actual, el valor de ponderación aplicado al bloque de predicción puede establecerse a un valor menor.
Como alternativa, pueden determinarse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción considerando los tamaños o las formas del bloque candidato usado para derivar el primer candidato de fusión (denominado, en lo sucesivo en el presente documento, primer bloque candidato) y el bloque candidato usado para derivar el segundo candidato de fusión (denominado, en lo sucesivo en el presente documento, segundo bloque candidato). Por ejemplo, un valor de ponderación aplicado a un bloque de predicción derivado del primer bloque candidato o el segundo bloque candidato que tiene una forma similar a la del bloque actual puede establecerse a un valor grande. Por otro lado, un valor de ponderación aplicado a un bloque de predicción derivado del primer bloque candidato o el segundo bloque candidato que tiene una forma desemejante de la del bloque actual puede establecerse a un valor pequeño.
La figura 34 es una vista que muestra un ejemplo en el que valores de ponderación aplicados a bloques de predicción se determinan basándose en la forma de bloques candidatos.
Se asume que el bloque actual es una forma no cuadrada de la cual la anchura es mayor que la altura.
Puede derivarse un primer bloque de predicción y un segundo bloque de predicción basándose en el primer candidato de fusión y el segundo candidato de fusión, y puede generarse un bloque de predicción combinada basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. En este punto, pueden determinarse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en las formas del primer bloque candidato y el segundo bloque candidato.
Por ejemplo, en el ejemplo mostrado en la figura 34, el primer bloque candidato es una forma cuadrada, y el segundo bloque candidato es una forma no cuadrada de la cual la anchura es mayor que la altura. Debido a que la forma del segundo bloque candidato es igual que la del bloque actual, puede establecerse que el valor de ponderación aplicado al segundo bloque de predicción sea mayor que el valor de ponderación aplicado al primer bloque de predicción. Por ejemplo, puede aplicarse un valor de ponderación de 5/8 al segundo bloque de predicción y puede aplicarse un valor de ponderación de 3/8 al primer bloque de predicción. La Ecuación 14 muestra un ejemplo de derivación de un bloque de predicción combinada basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción.
[Ecuación 14]
P(x, y) denota un bloque de predicción combinada, Pi(x, y) denota un primer bloque de predicción y P2(x, y) denota un segundo bloque de predicción.
Como otro ejemplo, pueden determinarse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en la forma del bloque actual. Por ejemplo, cuando el bloque actual es una forma no cuadrada de la cual la anchura es mayor que la altura, puede aplicarse un valor de ponderación mayor a un bloque de predicción generado basándose en un candidato de fusión derivado basándose en un bloque candidato ubicado en la parte superior del bloque actual de entre el primer candidato de fusión y el segundo candidato de fusión. Cuando tanto el primer candidato de fusión como el segundo candidato de fusión se derivan de los bloques candidatos ubicados en la parte superior del bloque actual, pueden establecerse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción de forma igual. Por otro lado, cuando el bloque actual es una forma no cuadrada de la cual la altura es mayor que la anchura, puede aplicarse un valor de ponderación mayor a un bloque de predicción generado basándose en un candidato de fusión derivado basándose en un bloque candidato ubicado en el lado izquierdo del bloque actual de entre el primer candidato de fusión y el segundo candidato de fusión. Cuando tanto el primer candidato de fusión como el segundo candidato de fusión se derivan de los bloques candidatos ubicados en el lado izquierdo del bloque actual, pueden establecerse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción de forma igual. Cuando el bloque actual es una forma cuadrada, pueden establecerse valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción de forma igual.
Como otro ejemplo, puede determinarse un valor de ponderación aplicado a cada bloque de predicción basándose en la distancia entre el bloque actual y un bloque candidato. En el presente caso, puede derivarse la distancia basándose en una diferencia de coordenadas de eje x, una diferencia de coordenadas de eje y del bloque actual o un valor mínimo de entre ellos. Puede establecerse que un valor de ponderación aplicado a un bloque de predicción derivado de un candidato de fusión que tiene una distancia pequeña con respecto al bloque actual sea mayor que un valor de ponderación aplicado a un bloque de predicción derivado de un candidato de fusión que tiene una distancia grande con respecto al bloque actual. Por ejemplo, en el ejemplo mostrado en la figura 31, el primer candidato de fusión se deriva de un bloque vecino adyacente al bloque actual, y el segundo candidato de fusión se deriva de un bloque no vecino que no es adyacente al bloque actual. En este caso, debido a que la distancia del eje x entre el primer bloque candidato y el bloque actual es menor que la distancia del eje x entre el segundo bloque candidato y el bloque actual, puede establecerse que el valor de ponderación aplicado al primer bloque de predicción sea mayor que el valor de ponderación aplicado al segundo bloque de predicción.
Como alternativa, cuando tanto el primer candidato de fusión como el segundo candidato de fusión se derivan de bloques no vecinos, puede asignarse un valor de ponderación mayor a un bloque de predicción derivado de un bloque no vecino a una distancia más cercana al bloque actual de entre los bloques no vecinos. Por ejemplo, en el ejemplo mostrado en la figura 32, debido a que la distancia del eje y entre el primer bloque candidato y el bloque actual es menor que la distancia del eje y entre el segundo bloque candidato y el bloque actual, puede establecerse que el valor de ponderación aplicado al primer bloque de predicción sea mayor que el valor de ponderación aplicado al segundo bloque de predicción.
Puede derivarse información de movimiento integrada basándose en el primer candidato de fusión y el segundo candidato de fusión, y puede realizarse una predicción de compensación de movimiento para el bloque actual
basándose en la información de movimiento integrada. Por ejemplo, un vector de movimiento del bloque actual puede derivarse basándose en una operación promedio o una operación de suma ponderada del vector de movimiento del primer candidato de fusión y el vector de movimiento del segundo candidato de fusión. En este punto, el valor de ponderación aplicado al vector de movimiento del primer candidato de fusión y el valor de ponderación aplicado al vector de movimiento del segundo candidato de fusión puede determinarse mediante los aspectos descritos anteriormente.
Cuando el primer candidato de fusión es un candidato de fusión no afín y el segundo candidato de fusión afín es un candidato de fusión afín, un vector de movimiento del bloque actual puede derivarse ajustando a escala el vector de movimiento del segundo candidato de fusión. La Ecuación 15 muestra un ejemplo de derivación de un vector de movimiento del bloque actual.
[Ecuación 15]
En la Ecuación 15, (mvX, mvY) denota el vector de movimiento del bloque actual, (mv0x, mv0y) denota el vector de movimiento del primer candidato de fusión y (mvlx, m vly) denota el vector de movimiento del segundo candidato de fusión. M denota un parámetro de ajuste a escala. M puede definirse previamente en el codificador y en el descodificador. Como alternativa, puede determinarse el valor del parámetro de ajuste a escala M de acuerdo con el tamaño del bloque actual o un bloque candidato. Por ejemplo, cuando la anchura o la altura del segundo bloque candidato es mayor que 32, M puede establecerse a 3, y en otros casos, M puede establecerse a 2.
La información de movimiento del primer candidato de fusión o el segundo candidato de fusión puede almacenarse como información de movimiento de un bloque al que se aplica el modo de predicción combinada que combina un modo de fusión y un modo de fusión. La información de movimiento almacenada puede usarse para derivar información de movimiento de un bloque que se codificará/descodificará posteriormente.
Como alternativa, el bloque puede subdividirse en una pluralidad de subbloques, y una cualquiera de entre información de movimiento del primer candidato de fusión e información de movimiento del segundo candidato de fusión puede almacenarse como información de movimiento de cada subbloque. En este punto, la información de movimiento de algunos de la pluralidad de subbloques puede establecerse como información de movimiento del primer candidato de fusión, y la información de movimiento de los demás puede establecerse como información de movimiento del segundo candidato de fusión.
Como alternativa, la información de movimiento integrada derivada basándose en la información de movimiento del primer candidato de fusión y el segundo candidato de fusión puede almacenarse como información de movimiento de un bloque al que se aplica el modo de predicción combinada que combina un modo de fusión y un modo de fusión.
En el modo de predicción en el que se combinan un modo de fusión y un modo de predicción de vector de movimiento avanzado, se genera un primer bloque de predicción usando información de movimiento derivada de un candidato de fusión, y se genera un segundo bloque de predicción usando un vector de movimiento derivado de un candidato de predicción de vector de movimiento.
En el modo de predicción de vector de movimiento avanzado, un candidato de predicción de vector de movimiento puede derivarse de un bloque vecino adyacente al bloque actual o un bloque ubicado conjuntamente en una imagen ubicada conjuntamente. Posteriormente, puede especificarse uno cualquiera de entre una pluralidad de candidatos de predicción de vector de movimiento y el candidato de predicción de vector de movimiento especificado puede establecerse como el predictor de vector de movimiento del bloque actual. Posteriormente, un vector de movimiento del bloque actual puede derivarse añadiendo el predictor de vector de movimiento del bloque actual y un valor de diferencia de vector de movimiento.
En el modo de predicción en el que se combinan un modo de fusión y un modo de predicción de vector de movimiento avanzado, el candidato de fusión y el candidato de predicción de vector de movimiento pueden derivarse del mismo bloque candidato. Por ejemplo, cuando el candidato de fusión se especifica mediante merge_idx, un vector de movimiento de un bloque candidato usado para derivar el candidato de fusión especificado puede establecerse como el predictor de vector de movimiento. Como alternativa, cuando el candidato de predicción de vector de movimiento se especifica mediante mvp_flag, un candidato de fusión derivado de un bloque candidato usado para derivar el candidato de fusión especificado puede seleccionarse.
Como alternativa, el bloque candidato usado para derivar el candidato de fusión y el bloque candidato usado para derivar el candidato de predicción de vector de movimiento pueden ser diferentes. Por ejemplo, cuando se selecciona un candidato de fusión derivado de un bloque candidato ubicado en la parte superior del bloque actual, puede establecerse seleccionar un candidato de predicción de vector de movimiento derivado de un bloque candidato ubicado en el lado izquierdo del bloque actual.
Como alternativa, cuando el candidato de fusión seleccionado por información de índice y el candidato de predicción de vector de movimiento seleccionado por información de índice se derivan del mismo bloque candidato, el candidato de predicción de vector de movimiento puede sustituirse con un candidato de predicción de vector de movimiento derivado de un bloque candidato vecino adyacente al bloque candidato, o el candidato de fusión puede sustituirse con un candidato de fusión derivado de un bloque candidato adyacente al bloque candidato.
La figura 35 es una vista que muestra un ejemplo en el que se sustituye un candidato de fusión.
En el ejemplo mostrado en la figura 35 (a), se muestra que se seleccionan un candidato de fusión y un candidato de predicción de vector de movimiento derivados del bloque candidato en la posición A2. Como se muestra en la figura, cuando un candidato de fusión y un candidato de predicción de vector de movimiento se derivan del mismo bloque candidato, puede usarse un candidato de fusión o un candidato de predicción de vector de movimiento derivado de un bloque candidato adyacente al bloque candidato en lugar del candidato de fusión o el candidato de predicción de vector de movimiento. Por ejemplo, como se muestra en el ejemplo de la figura 35 (b), puede usarse un candidato de fusión en la posición A1 en lugar del candidato de fusión en la posición A2.
Puede derivarse un primer bloque de predicción basándose en el candidato de fusión del bloque actual, y puede derivarse un segundo bloque de predicción basándose en el candidato de predicción de vector de movimiento. Posteriormente, puede derivarse un bloque de predicción combinada a través de una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción. En este punto, puede establecerse que el valor de ponderación aplicado al segundo bloque de predicción generado usando el modo de predicción de vector de movimiento avanzado sea mayor que el valor de ponderación aplicado al primer bloque de predicción generado usando el modo de fusión.
Una imagen residual derivada puede derivarse restando un vídeo de predicción de un vídeo original. En este punto, cuando el vídeo residual se cambia al dominio de la frecuencia, la calidad de vídeo subjetiva del vídeo no se reduce significativamente, aunque se eliminan las componentes de alta frecuencia de entre las componentes de frecuencia. En consecuencia, cuando los valores de las componentes de alta frecuencia se convierten para ser pequeños o los valores de las componentes de alta frecuencia se establecen a 0, hay un efecto de aumentar la eficiencia de compresión sin generar una distorsión visual significativa. Al reflejar esta característica, el bloque actual puede transformarse para descomponer un vídeo residual en componentes de frecuencia bidimensionales. La transformada puede realizarse usando una técnica de transformada tal como transformada discreta del coseno (DCT) o transformada discreta del seno (DST).
La DCT descompone (o transforma) un vídeo residual en componentes de frecuencia bidimensionales usando una transformada de coseno, y la DST descompone (o transforma) un vídeo residual en componentes de frecuencia bidimensionales usando una transformada sinusoidal. Como resultado de transformar el vídeo residual, las componentes de frecuencia pueden expresarse como un vídeo de base. Por ejemplo, cuando la transformada DCT se realiza sobre un bloque de un tamaño N x N, pueden adquirirse tantos componentes de patrón básicos como N2. El tamaño de cada uno de los componentes de patrón básicos incluidos en un bloque de un tamaño N x N puede adquirirse a través de la transformada. De acuerdo con una técnica de transformada usada para ello, el tamaño del componente de patrón básico puede denominarse coeficiente de DCT o coeficiente de DST.
Se usa principalmente la técnica de transformada DCT para transformar un vídeo en el que se distribuyen muchas componentes de baja frecuencia no nulos. Se usa principalmente la técnica de transformada DST para vídeos en los que se distribuyen muchas componentes de alta frecuencia.
El vídeo residual puede transformarse usando una técnica de transformada que no sea la DCT o la DST.
En lo sucesivo en el presente documento, la transformada de un vídeo residual en componentes de frecuencia bidimensionales se denominará transformada de vídeo bidimensional. Además, el tamaño de los componentes de patrón básicos adquiridos como resultado de la transformada se denomina coeficiente de transformada. Por ejemplo, el coeficiente de transformada puede significar un coeficiente de DCT o un coeficiente de DST. Cuando se aplican tanto la primera transformada como la segunda transformada descritas a continuación, el coeficiente de transformada puede significar el tamaño de un componente de patrón básico generado como resultado de la segunda transformada.
Puede determinarse la técnica de transformada para cada bloque. Puede determinarse la técnica de transformada basándose en al menos uno de entre el modo de codificación de predicción del bloque actual, el tamaño del bloque actual y la forma del bloque actual. Por ejemplo, cuando el bloque actual se codifica en el modo de intra predicción y el tamaño del bloque actual es menor que N x N, la transformada puede realizarse usando la técnica de transformada DST. Por otro lado, cuando no se satisfacen las condiciones anteriores, la transformada puede realizarse usando la técnica de transformada DCT.
La transformada de vídeo bidimensional puede no realizarse para algunos bloques del vídeo residual. No realizar la transformada de vídeo bidimensional puede denominarse omisión de transformada. Cuando se aplica la omisión de transformada, la cuantificación puede aplicarse a coeficientes residuales que no se han transformado.
Después de que el bloque actual se haya transformado usando DCT o DST, el bloque actual transformado puede transformarse de nuevo. En este punto, la transformada basándose en DCT o DST puede definirse como una primera transformada y transformar de nuevo un bloque al cual se aplica la primera transformada puede definirse como una segunda transformada.
La primera transformada puede realizarse usando uno cualquiera de entre una pluralidad de candidatos de núcleo de transformada. Por ejemplo, la primera transformada puede realizarse usando una cualquiera de entre DCT2, DCT8 o DCT7.
Pueden usarse diferentes núcleos de transformada para la dirección horizontal y la dirección vertical. Puede señalizarse información que indica la combinación de un núcleo de transformada de la dirección horizontal y un núcleo de transformada de la dirección vertical a través de un flujo de bits.
Las unidades para realizar la primera transformada y la segunda transformada pueden ser diferentes. Por ejemplo, la primera transformada puede realizarse sobre un bloque de 8 x 8, y la segunda transformada puede realizarse sobre un subbloque de un tamaño de 4 x 4 de entre el bloque de 8 x 8 transformado. En este punto, los coeficientes de transformada de las regiones residuales que no se han realizado, la segunda transformada puede establecerse a 0.
Como alternativa, la primera transformada puede realizarse sobre un bloque de 4 x 4, y la segunda transformada puede realizarse sobre una región de un tamaño de 8 x 8 que incluye el bloque de 4 x 4 transformado.
Puede señalizarse información que indica si se ha realizado, o no, la segunda transformada a través de un flujo de bits.
Como alternativa, puede determinarse si realizar, o no, la segunda transformada basándose en si el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son iguales. Por ejemplo, la segunda transformada puede realizarse solo cuando el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son iguales. Como alternativa, la segunda transformada puede realizarse solo cuando el núcleo de transformada de dirección horizontal y el núcleo de transformada de dirección vertical son diferentes entre sí.
Como alternativa, la segunda transformada pueden permitirse solo cuando la transformada de la dirección horizontal y la transformada de la dirección vertical usan un núcleo de transformada predefinido. Por ejemplo, cuando se usa un núcleo de transformada DCT2 para transformada de la dirección horizontal y transformada de la dirección vertical, pueden permitirse la segunda transformada.
Como alternativa, puede determinarse si realizar, o no, la segunda transformada basándose en el número de coeficientes de transformada no nulos del bloque actual. Por ejemplo, puede establecerse no usar la segunda transformada cuando el número de coeficientes de transformada no nulos del bloque actual es menor que o igual a un valor umbral, y puede establecerse usar la segunda transformada cuando el número de coeficiente de transformada no nulos del bloque actual es mayor que el valor umbral. Puede establecerse usar la segunda transformada solo cuando el bloque actual se codifica mediante intra predicción.
Basándose en la forma del bloque actual, puede determinarse el tamaño o la forma de un subbloque sobre el que se realizará la segunda transformada.
Las figuras 36 y 37 son vistas que muestran un subbloque sobre el que se realizará una segunda transformada.
Cuando el bloque actual es una forma cuadrada, la segunda transformada puede realizarse sobre un subbloque que tiene un tamaño N x N en la parte superior izquierda del bloque actual después de que se realiza la primera transformada. Por ejemplo, cuando el bloque actual es un bloque de codificación de un tamaño de 8 x 8, la segunda transformada puede realizarse sobre un subbloque que tiene un tamaño de 4 x 4 en la parte superior izquierda del bloque actual después de que la primera transformada se realiza sobre el bloque actual (véase la figura 36).
Cuando el bloque actual es una forma no cuadrada de la cual la anchura es al menos 4 veces mayor que la altura, la segunda transformada puede realizarse sobre un subbloque de un tamaño (kN) x (4kN) en la parte superior izquierda del bloque actual después de que se realiza la primera transformada. Por ejemplo, cuando el bloque actual es una forma no cuadrada de un tamaño de 16 x 4, la segunda transformada puede realizarse sobre un subbloque de un tamaño de 2 x 8 en la parte superior izquierda del bloque actual después de que la primera transformada se realiza sobre el bloque actual (véase la figura 37 (a)).
Cuando el bloque actual es una forma no cuadrada de la cual la altura es al menos 4 veces mayor que la anchura, la segunda transformada puede realizarse sobre un subbloque de un tamaño (4kN) x (kN) en la parte superior izquierda del bloque actual después de que se realiza la primera transformada. Por ejemplo, cuando el bloque actual es una forma no cuadrada de un tamaño de 16 x 4, la segunda transformada puede realizarse sobre un subbloque de un tamaño de 2 x 8 en la parte superior izquierda del bloque actual después de que la primera transformada se realiza sobre el bloque actual (véase la figura 37 (b)).
El descodificador puede realizar una transformada inversa de la segunda transformada (segunda transformada inversa) y puede realizar una transformada inversa de la primera transformada (primera transformada inversa) sobre un resultado de la segunda transformada inversa. Como resultado de realizar la segunda transformada inversa y la primera transformada inversa, pueden adquirirse señales residuales para el bloque actual.
Puede señalizarse información que indica el tipo de transformada del bloque actual a través de un flujo de bits. La información puede ser información de índice tu_mts_idx que indica una de entre combinaciones de un tipo de transformada para la dirección horizontal y un tipo de transformada para la dirección vertical.
Puede determinarse un núcleo de transformada para la dirección vertical y un núcleo de transformada para la dirección horizontal basándose en los candidatos de tipo de transformada especificados por información de índice tu_mts_idx. Las tablas 11 y 12 muestran combinaciones de tipo de transformada de acuerdo con tu_mts_idx.
[Tabla 11]
[Tabla 12]
El tipo de transformada puede determinarse como una cualquiera de entre DCT2, DST7, DCT8 y transformada de omisión. Como alternativa, un candidato de combinación de tipo de transformada puede configurarse usando solo núcleos de transformada, excepto la omisión de transformada.
En el caso en el que se usa la Tabla 11, cuando tu_mts_idx es 0, puede aplicarse omisión de transformada en la dirección horizontal y la dirección vertical. Cuando tu_mts_idx es 1, puede aplicarse DCT2 en la dirección horizontal y la dirección vertical. Cuando tu_mts_idx es 3, puede aplicarse DCT8 en la dirección horizontal y puede aplicarse DCT7 en la dirección vertical.
En el caso en el que se usa la Tabla 12, cuando tu_mts_idx es 0, puede aplicarse DCT2 en la dirección horizontal y la dirección vertical. Cuando tu_mts_idx es 1, puede aplicarse omisión de transformada en la dirección horizontal y la dirección vertical. Cuando tu_mts_idx es 3, puede aplicarse DCT8 en la dirección horizontal y puede aplicarse DCT7 en la dirección vertical.
Puede determinarse si codificar, o no, la información de índice basándose en al menos uno de entre el tamaño, la forma y el número de coeficientes no nulos del bloque actual. Por ejemplo, cuando el número de coeficientes no nulos es igual a o menor que un valor umbral, no se señaliza información de índice y puede aplicarse un tipo de transformada por defecto al bloque actual. En el presente caso, el tipo de transformada por defecto puede ser DST7. Como alternativa, el modo por defecto puede variar de acuerdo con el tamaño, la forma o el modo de intra predicción del bloque actual.
Puede determinarse el valor umbral basándose en el tamaño o la forma del bloque actual. Por ejemplo, cuando el tamaño del bloque actual es menor que o igual a 32 x 32, el valor umbral puede establecerse a 2, y cuando el bloque actual es mayor que 32 x 32 (por ejemplo, cuando el bloque actual es un bloque de codificación de un tamaño de 32 x 64 o 64 x 32), el valor umbral puede establecerse a 4.
Pueden almacenarse previamente una pluralidad de tablas de consulta en el codificador/descodificador. En la pluralidad de tablas de consulta, al menos uno de entre el valor de índice asignado a los candidatos de combinación de tipo de transformada, el tipo de los candidatos de combinación de tipo de transformada y el número de candidatos de combinación de tipo de transformada pueden ser diferentes.
Puede seleccionarse una tabla de consulta para el bloque actual basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, el modo de codificación de predicción del bloque actual, el modo de intra predicción del bloque actual, si se aplica la segunda transformada y si se aplica omisión de transformada a un bloque vecino.
Por ejemplo, cuando el tamaño del bloque actual es 4 x 4 o menor o cuando el bloque actual se codifica mediante inter predicción, puede usarse la tabla de consulta de la Tabla 11, y cuando el tamaño del bloque actual es mayor que 4 x 4o cuando el bloque actual se codifica mediante intra predicción, puede usarse la tabla de consulta de la Tabla 12.
Como alternativa, puede señalizarse información que indica una cualquiera de entre la pluralidad de tablas de consulta a través de un flujo de bits. El descodificador puede seleccionar una tabla de consulta para el bloque actual basándose en la información.
Como otro ejemplo, el índice asignado al candidato de combinación de tipo de transformada puede determinarse de forma adaptativa basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, el modo de codificación de predicción del bloque actual, el modo de intra predicción del bloque actual, si se aplica la segunda transformada y si se aplica omisión de transformada a un bloque vecino. Por ejemplo, cuando el tamaño del bloque actual es 4 x 4, el índice asignado a la omisión de transformada puede tener un valor menor que el del índice asignado a la omisión de transformada cuando el tamaño del bloque actual es mayor que 4x4. Específicamente, cuando el tamaño del bloque actual es 4 x 4, el índice 0 puede asignarse a la omisión de transformada, y cuando el bloque actual es mayor que 4 x 4 y menor que o igual a 16 x 16, puede asignarse un índice mayor que 0 (por ejemplo, índice 1) a la omisión de transformada. Cuando el bloque actual es mayor que 16 x 16, puede asignarse un valor máximo (por ejemplo, 5) al índice de la omisión de transformada.
Como alternativa, cuando el bloque actual se codifica mediante inter predicción, el índice 0 puede asignarse a la omisión de transformada. Cuando el bloque actual se codifica mediante intra predicción, puede asignarse un índice mayor que 0 (por ejemplo, índice 1) a la omisión de transformada.
Como alternativa, cuando el bloque actual es un bloque de un tamaño de 4 x 4 codificado mediante inter predicción, el índice 0 puede asignarse a la omisión de transformada. Por otro lado, cuando el bloque actual no se codifica mediante inter predicción o el bloque actual es mayor que 4 x 4, puede asignarse un índice de un valor mayor que 0 (por ejemplo, índice 1) a la omisión de transformada.
Pueden definirse y usarse candidatos de combinación de tipo de transformada diferentes de los candidatos de combinación de tipo de transformada enumerados en las Tablas 11 y 12. Por ejemplo, puede usarse un candidato de combinación de tipo de transformada, en el que se aplica omisión de transformada a una cualquiera de entre la transformada de dirección horizontal y la transformada de dirección vertical, y se aplica un núcleo de transformada tal como DCT7, DCT8 o DST2 al otro. En este momento, puede determinarse si usar, o no, la omisión de transformada como candidato de tipo de transformada para la dirección horizontal o la dirección vertical basándose en al menos uno de entre el tamaño (por ejemplo, anchura y/o altura), la forma, el modo de codificación de predicción y el modo de intra predicción del bloque actual.
Como alternativa, puede señalizarse información que indica si un candidato de tipo de transformada específico está disponible a través de un flujo de bits. Por ejemplo, puede señalizarse una bandera que indica si puede usarse la omisión de transformada como un candidato de tipo de transformada para la dirección horizontal y la dirección vertical. De acuerdo con la bandera, puede determinarse si un candidato de combinación de tipo de transformada específico se incluye en una pluralidad de candidatos de combinación de tipo de transformada.
Como alternativa, puede señalizarse si un candidato de tipo de transformada específico se aplica al bloque actual a través de un flujo de bits. Por ejemplo, puede señalizarse una bandera cu_mts_flag que indica si aplicar, o no, DCT2 para la dirección horizontal y la dirección vertical. Cuando el valor de cu_mts_flag es 1, puede establecerse DCT2 como un núcleo de transformada para la dirección vertical y la dirección horizontal. Cuando el valor de cu_mts_flag es 0, puede establecerse DCT8 o DST7 como un núcleo de transformada para la dirección vertical y la dirección horizontal. Como alternativa, cuando el valor de cu_mts_flag es 0, puede señalizarse información tu_mts_idx que especifica uno cualquiera de entre la pluralidad de candidatos de combinación de tipo de transformada.
Cuando el bloque actual es una forma no cuadrada de la cual la anchura es mayor que la altura o una forma no cuadrada de la cual la altura es mayor que la anchura, puede omitirse la codificación de cu_mts_flag y el valor de cu_mts_flag puede considerarse como 0.
El número de candidatos de combinación de tipo de transformada disponibles puede establecerse de forma diferente de acuerdo con el tamaño, la forma o el modo de intra predicción del bloque actual. Por ejemplo, cuando el bloque actual es una forma cuadrada, pueden usarse tres o más candidatos de combinación de tipo transformada, y cuando el bloque actual es una forma no cuadrada, pueden usarse dos candidatos de combinación de tipo transformada. Como alternativa, cuando el bloque actual es una forma cuadrada, solo pueden usarse candidatos de combinación de tipo de transformada de los cuales el tipo de transformada para la dirección horizontal es diferente del tipo de transformada para la dirección vertical de entre los candidatos de combinación de tipo de transformada.
Cuando hay tres o más candidatos de combinación de tipo de transformada que el bloque actual puede usar, puede señalizarse información de índice tu_mts_idx que indica uno de entre los candidatos de combinación de tipo de transformada. Por otro lado, cuando hay dos candidatos de combinación de tipo transformada que puede usar el bloque actual, puede señalizarse una bandera mts_flag que indica uno cualquiera de entre los candidatos de combinación de tipo transformada. La Tabla 13 muestra un proceso de codificación de información para especificar candidatos de combinación de tipo de transformada de acuerdo con la forma del bloque actual.
[Tabla 13]
Pueden reorganizarse (o reordenarse) índices de los candidatos de combinación de tipo transformada de acuerdo con la forma del bloque actual. Por ejemplo, los índices asignados a los candidatos de combinación de tipo de transformada cuando el bloque actual es una forma cuadrada pueden ser diferentes de los índices asignados a los candidatos de combinación de tipo de transformada cuando el bloque actual es una forma no cuadrada. Por ejemplo, cuando el bloque actual es una forma cuadrada, puede seleccionarse una combinación de tipo transformada basándose en la Tabla 14 que se muestra a continuación, y cuando el bloque actual es una forma no cuadrada, puede seleccionarse una combinación de tipo transformada basándose en la Tabla 15 que se muestra a continuación.
[Tabla 14]
[Tabla 15]
Puede determinarse un tipo de transformada basándose en el número de coeficientes de dirección horizontal no nulos o el número de coeficientes de dirección vertical no nulos del bloque actual. En el presente caso, el número de coeficientes no nulos de dirección horizontal indica el número de coeficientes no nulos incluidos en un bloque 1 x N (en donde N es la anchura del bloque actual), y el número de coeficientes no nulos de dirección vertical indica el número de coeficientes no nulos incluidos en un bloque N x 1 (en donde N es la altura del bloque actual). Cuando el valor máximo del coeficiente no nulo de dirección horizontal es menor que o igual a un valor umbral, puede aplicarse un primer tipo de transformada en la dirección horizontal, y cuando el valor máximo del coeficiente no nulo de dirección horizontal es mayor que el valor umbral, puede aplicarse un segundo tipo de transformada en la dirección horizontal. Cuando el valor máximo del coeficiente no nulo de dirección vertical es menor que o igual a un valor umbral, puede aplicarse el primer tipo de transformada en la dirección vertical, y cuando el valor máximo del coeficiente no nulo de dirección vertical es mayor que el valor umbral, puede aplicarse el segundo tipo de transformada en la dirección vertical.
La figura 38 es una vista para describir ejemplos de determinación de un tipo de transformada del bloque actual.
Por ejemplo, cuando el bloque actual se codifica mediante intra predicción y el valor máximo del coeficiente de dirección horizontal no nulo del bloque actual es 2 o menos (véase la figura 38 (a)), el tipo de transformada de la dirección horizontal puede determinarse como DST7.
Cuando el bloque actual se codifica mediante intra predicción y el valor máximo del coeficiente no nulo de dirección vertical del bloque actual es mayor que 2 (véase la figura 38 (b)), puede determinarse DCT2 o DCT8 como el tipo de transformada de la dirección vertical.
Puede señalizarse información que indica si determinar, o no, explícitamente el tipo de transformada del bloque actual basándose en información señalizada desde un flujo de bits a través de un flujo de bits. Por ejemplo, información sps_explicit_intra_mts_flag que indica si se permite una determinación de tipo de transformada explícita para un bloque codificado por intra predicción y/o información sps_explicit_inter_mts_flag que indica si se permite una determinación de tipo de transformada explícita para un bloque codificado por inter predicción puede señalizarse a un nivel de secuencia.
Cuando se permite una determinación de tipo de transformada explícita, puede determinarse un tipo de transformada del bloque actual basándose en información de índice tu_mts_idx señalizada desde un flujo de bits. Por otro lado, cuando no se permite una determinación de tipo de transformada explícita, puede determinarse el tipo de transformada basándose en al menos uno de entre el tamaño del bloque actual, la forma del bloque actual, si se permite la transformada de una unidad de subbloque y la posición de un subbloque que incluye un coeficiente de transformada no nulo. Por ejemplo, puede determinarse el tipo de transformada de dirección horizontal del bloque actual basándose en la anchura del bloque actual, y puede determinarse el tipo de transformada de dirección vertical del bloque actual
basándose en la altura del bloque actual. Por ejemplo, cuando la anchura del bloque actual es menor que 4 o mayor que 16, el tipo de transformada de la dirección horizontal puede determinarse como DCT2. De lo contrario, el tipo de transformada de la dirección horizontal puede determinarse como DST7. Cuando la altura del bloque actual es menor que 4 o mayor que 16, el tipo de transformada de la dirección vertical puede determinarse como DCT2. De lo contrario, el tipo de transformada de la dirección vertical puede determinarse como DST7. En el presente caso, para determinar el tipo de transformada de la dirección horizontal y el tipo de transformada de la dirección vertical, pueden determinarse valores umbral en comparación con la anchura y la altura basándose en al menos uno de entre el tamaño, la forma y el modo de intra predicción del bloque actual.
Como alternativa, cuando el bloque actual es una forma cuadrada de la cual la altura y la anchura son iguales, se establece que el tipo de transformada de dirección horizontal y el tipo de transformada de dirección vertical sean iguales, mientras que cuando el bloque actual es una forma no cuadrada de la cual la altura y la anchura son diferentes, puede establecerse que el tipo de transformada de dirección horizontal y el tipo de transformada vertical sean diferentes entre sí. Por ejemplo, cuando la anchura del bloque actual es mayor que la altura, el tipo de transformada de dirección horizontal puede determinarse como DST7, y el tipo de transformada de dirección vertical puede determinarse como DCT2. Cuando la altura del bloque actual es mayor que la anchura, el tipo de transformada de dirección vertical puede determinarse como DST7, y el tipo de transformada de dirección horizontal puede determinarse como DCT2.
El número y/o el tipo de candidatos de tipo de transformada o el número y/o el tipo de candidatos de combinación de tipo de transformada pueden variar de acuerdo con si se permite una determinación de tipo de transformada explícita. Por ejemplo, cuando se permite una determinación de tipo de transformada explícita, pueden usarse DCT2, DST7 y DCT8 como candidatos de tipo de transformada. En consecuencia, cada uno del tipo de transformada de dirección horizontal y el tipo de transformada de dirección vertical pueden establecerse a DCT2, DST8 o DCT8. Cuando no se permite una determinación de tipo de transformada explícita, solo pueden usarse DCT2 y DST7 como candidatos de tipo de transformada. En consecuencia, cada uno del tipo de transformada de dirección horizontal y el tipo de transformada de dirección vertical pueden determinarse como DCT2 o DST7.
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). En lo sucesivo en el presente documento, un bloque reconstruido antes de aplicar el filtro en bucle se denomina primer bloque reconstruido, y un bloque reconstruido después de aplicar el filtro en bucle se denomina segundo bloque reconstruido.
Puede adquirirse el segundo bloque reconstruido mediante la aplicación de al menos uno de entre el filtro de desbloqueo, el SAO y el ALF al primer bloque reconstruido. En este punto, puede aplicarse SAO o ALF después de aplicar el filtro de desbloqueo.
El filtro de desbloqueo es para mitigar el deterioro de la calidad de vídeo (artefacto de bloqueo) en la frontera de un bloque, que tiene lugar cuando se realiza la cuantificación sobre bloques individuales. Para aplicar el filtro de desbloqueo, puede determinarse una fuerza de bloque (BS) entre el primer bloque reconstruido y un bloque reconstruido vecino.
La figura 39 es un diagrama de flujo que ilustra un proceso de determinación de fuerza de bloque.
En el ejemplo mostrado en la figura 39, P denota un primer bloque reconstruido y Q denota un bloque reconstruido vecino. En el presente caso, el bloque reconstruido vecino puede ser un bloque adyacente al lado izquierdo o al lado superior del bloque actual.
En el ejemplo mostrado en la figura 39, se muestra que la fuerza de bloque se determina considerando los modos de codificación de predicción de P y Q, si se incluye un coeficiente de transformada no nulo, si la inter predicción se realiza usando la misma imagen de referencia y si el valor de diferencia de vectores de movimiento es mayor que o igual a un valor umbral.
Puede determinarse si aplicar, o no, el filtro de desbloqueo basándose en la fuerza de bloque. Por ejemplo, cuando la fuerza de bloque es 0, puede no realizarse un filtrado.
El SAO es para mitigar un fenómeno de aparición de anillos (artefacto de aparición de anillos) que tiene lugar cuando se realiza la cuantificación en el dominio de la frecuencia. El SAO puede realizarse sumando o restando un desplazamiento determinado considerando el patrón del primer vídeo reconstruido. El método para determinar el desplazamiento incluye un desplazamiento de borde (EO) o un desplazamiento de banda (BO). El EO denota un
método para determinar un desplazamiento de una muestra actual de acuerdo con el patrón de píxeles circundantes. El BO denota un método para aplicar un desplazamiento común a un conjunto de píxeles que tienen valores de brillo similares en una región. Específicamente, el brillo de píxel puede dividirse en 32 secciones iguales y los píxeles que tienen valores de brillo similares pueden establecerse como un conjunto. Por ejemplo, pueden establecerse cuatro bandas adyacentes de entre 32 bandas como un grupo, y puede aplicarse el mismo valor de desplazamiento a las muestras que pertenecen a las cuatro bandas.
El ALF es un método para generar un segundo vídeo reconstruido mediante la aplicación de un filtro que tiene un tamaño/forma predefinido al primer vídeo reconstruido o un vídeo reconstruido al que se ha aplicado un filtro de desbloqueo. La ecuación 16 muestra un ejemplo de aplicación del ALF.
[Ecuación 16]
Uno cualquiera de entre los candidatos de filtro predefinidos puede seleccionarse mediante la unidad de una imagen, una unidad de árbol de codificación, un bloque de codificación, un bloque de predicción o un bloque de transformada. Cada uno de los candidatos de filtro puede ser diferente o bien en el tamaño o bien en la forma.
La figura 40 es una vista que muestra candidatos de filtro predefinidos.
Como se muestra en el ejemplo de la figura 40, puede seleccionarse al menos una de entre las formas de rombo de 5 x 5, 7 x 7 y 9 x 9.
Solo puede usarse una forma de rombo de un tamaño de 5 x 5 para un componente de croma.
La aplicación de los aspectos descritos anteriormente que se centran en un proceso de descodificación o en un proceso de codificación a un proceso de codificación o en un proceso de descodificación se incluye en el alcance de la presente invención. Cambiar los aspectos en un orden predeterminado en un orden diferente del orden descrito también se incluye en el alcance de la presente invención.
Aunque los aspectos anteriores se han descrito basándose en una serie de etapas o diagramas de flujo, esto no limita el orden de series temporales de la presente invención, y puede realizarse simultáneamente o en un orden diferente como sea necesario. Además, cada uno de los componentes (por ejemplo, unidades, módulos, etc.) que constituyen el diagrama de bloques en los aspectos descritos anteriormente pueden implementarse como un dispositivo o software de hardware, o una pluralidad de componentes pueden combinarse para implementarse como un único dispositivo o software de hardware. Los aspectos descritos 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 usando uno o más módulos de software para realizar el proceso de la presente invención y viceversa.
La presente invención puede aplicarse a un dispositivo electrónico que codifica y descodifica un vídeo.
Claims (13)
- REIVINDICACIONESI .Un método de descodificación de vídeo que comprende las etapas de:determinar si aplicar, o no, un modo de predicción combinada a un bloque actual (S901);obtener un primer bloque de predicción y un segundo bloque de predicción para el bloque actual cuando se aplica el modo de predicción combinada al bloque actual (S902), en donde el primer bloque de predicción se obtiene basándose en información de movimiento de un candidato de fusión del bloque actual, y el segundo bloque de predicción se obtiene basándose en un modo de intra predicción del bloque actual; yobtener un tercer bloque de predicción para el bloque actual basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción (S903),en donde, cuando se aplica el modo de predicción combinada al bloque actual, se deshabilita la subdivisión triangular para el bloque actual.
- 2. El método de acuerdo con la reivindicación 1, en donde el modo de intra predicción del bloque actual se establece a un modo plano.
- 3. El método de acuerdo con la reivindicación 2, en donde el segundo bloque de predicción se obtiene basándose en una línea de muestra de referencia adyacente.
- 4. El método de acuerdo con la reivindicación 1, en donde en la ejecución de la operación de suma ponderada, se determinan valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en modos de predicción de bloques vecinos adyacentes al bloque actual.
- 5. El método de acuerdo con la reivindicación 1, en donde, cuando al menos una de entre una anchura y una altura del bloque actual es mayor que un valor umbral, el modo de predicción combinada no se aplica al bloque actual.
- 6. Un método de codificación de vídeo que comprende las etapas de:determinar si aplicar, o no, un modo de predicción combinada a un bloque actual (S901);obtener un primer bloque de predicción y un segundo bloque de predicción para el bloque actual cuando se aplica el modo de predicción combinada al bloque actual (S902), en donde el primer bloque de predicción se obtiene basándose en información de movimiento de un candidato de fusión del bloque actual, y el segundo bloque de predicción se obtiene basándose en un modo de intra predicción del bloque actual; yobtener un tercer bloque de predicción para el bloque actual basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción (S903),en donde, cuando se aplica el modo de predicción combinada al bloque actual, se deshabilita la subdivisión triangular para el bloque actual.
- 7. El método de acuerdo con la reivindicación 6, en donde el modo de intra predicción del bloque actual se establece a un modo plano.
- 8. El método de acuerdo con la reivindicación 7, en donde el segundo bloque de predicción se obtiene basándose en una línea de muestra de referencia adyacente.
- 9. El método de acuerdo con la reivindicación 6, en donde en la ejecución de la operación de suma ponderada, se determinan valores de ponderación aplicados al primer bloque de predicción y al segundo bloque de predicción basándose en modos de predicción de bloques vecinos adyacentes al bloque actual.
- 10. El método de acuerdo con la reivindicación 6, en donde, cuando al menos una de entre una anchura y una altura del bloque actual es mayor que un valor umbral, el modo de predicción combinada no se aplica al bloque actual.
- I I .Un descodificador de vídeo que comprende: un procesador y una memoria configurada para almacenar un programa informático capaz de ser ejecutado en el procesador, en dondeel procesador está configurado para determinar si aplicar, o no, un modo de predicción combinada a un bloque actual, obtener un primer bloque de predicción y un segundo bloque de predicción para el bloque actual cuando se aplica el modo de predicción combinada al bloque actual, y obtener un tercer bloque de predicción para el bloque actual basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción, en donde el primer bloque de predicción se obtiene basándose en información de movimiento de un candidato de fusión del bloque actual, y el segundo bloque de predicción se obtiene basándose en un modo de intra predicción del bloque actual,en donde, cuando se aplica el modo de predicción combinada al bloque actual, se deshabilita la subdivisión triangular para el bloque actual.
- 12.Un codificador de vídeo que comprende: un procesador y una memoria configurada para almacenar un programa informático capaz de ser ejecutado en el procesador, en dondeel procesador está configurado para determinar si aplicar, o no, un modo de predicción combinada a un bloque actual; obtener un primer bloque de predicción y un segundo bloque de predicción para el bloque actual cuando se aplica el modo de predicción combinada al bloque actual, en donde el primer bloque de predicción se obtiene basándose en información de movimiento de un candidato de fusión del bloque actual, y el segundo bloque de predicción se obtiene basándose en un modo de intra predicción del bloque actual; y obtener un tercer bloque de predicción para el bloque actual basándose en una operación de suma ponderada del primer bloque de predicción y el segundo bloque de predicción,en donde, cuando se aplica el modo de predicción combinada al bloque actual, se deshabilita la subdivisión triangular para el bloque actual.
- 13.Un medio de almacenamiento, que almacena un programa ejecutable, en donde, cuando el programa ejecutable es ejecutado por un procesador, se implementa el método de una cualquiera de las reivindicaciones 1 a 10.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180136256 | 2018-11-08 | ||
KR20180148948 | 2018-11-27 | ||
PCT/KR2019/015097 WO2020096389A1 (ko) | 2018-11-08 | 2019-11-07 | 영상 신호 부호화/복호화 방법 및 이를 위한 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2948265T3 true ES2948265T3 (es) | 2023-09-07 |
Family
ID=70612512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES19882020T Active ES2948265T3 (es) | 2018-11-08 | 2019-11-07 | Método de codificación/descodificación de señales de imagen y aparato para el mismo |
Country Status (18)
Country | Link |
---|---|
US (3) | US11252405B2 (es) |
EP (2) | EP4221204A1 (es) |
JP (6) | JP7182705B2 (es) |
KR (1) | KR20200054105A (es) |
CN (5) | CN113170126A (es) |
AU (1) | AU2019375718B2 (es) |
BR (1) | BR112021008731A2 (es) |
CA (1) | CA3117933C (es) |
CL (1) | CL2021001206A1 (es) |
ES (1) | ES2948265T3 (es) |
IL (3) | IL282612B2 (es) |
MX (1) | MX2021005368A (es) |
PH (1) | PH12021550932A1 (es) |
PL (1) | PL3849184T3 (es) |
RU (1) | RU2766152C1 (es) |
SG (1) | SG11202104319VA (es) |
WO (1) | WO2020096389A1 (es) |
ZA (1) | ZA202102793B (es) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111083491B (zh) | 2018-10-22 | 2024-09-20 | 北京字节跳动网络技术有限公司 | 细化运动矢量的利用 |
WO2020098644A1 (en) | 2018-11-12 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Bandwidth control methods for inter prediction |
CN117319644A (zh) | 2018-11-20 | 2023-12-29 | 北京字节跳动网络技术有限公司 | 基于部分位置的差计算 |
WO2020103935A1 (en) | 2018-11-22 | 2020-05-28 | Beijing Bytedance Network Technology Co., Ltd. | Blending method for inter prediction with geometry partition |
US20200169757A1 (en) * | 2018-11-23 | 2020-05-28 | Mediatek Inc. | Signaling For Multi-Reference Line Prediction And Multi-Hypothesis Prediction |
EP3874747A4 (en) * | 2018-11-26 | 2021-12-29 | Huawei Technologies Co., Ltd. | Method of intra predicting a block of a picture |
CN113852815B (zh) * | 2018-12-25 | 2022-12-27 | 北京达佳互联信息技术有限公司 | 利用三角形形状预测单元的视频编码方法、设备及介质 |
CN113261290B (zh) | 2018-12-28 | 2024-03-12 | 北京字节跳动网络技术有限公司 | 基于修改历史的运动预测 |
US11032574B2 (en) * | 2018-12-31 | 2021-06-08 | Tencent America LLC | Method and apparatus for video coding |
WO2020171658A1 (ko) * | 2019-02-21 | 2020-08-27 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
WO2020177755A1 (en) | 2019-03-06 | 2020-09-10 | Beijing Bytedance Network Technology Co., Ltd. | Usage of converted uni-prediction candidate |
JP7361522B2 (ja) * | 2019-08-05 | 2023-10-16 | 日本放送協会 | 予測ブロック生成装置、画像符号化装置、画像復号装置、及びプログラム |
CN114365487B (zh) * | 2019-08-29 | 2024-08-13 | 日本放送协会 | 编码装置、解码装置及程序 |
EP4084477A4 (en) * | 2019-12-26 | 2023-12-20 | LG Electronics Inc. | IMAGE CODING/DECODING METHOD AND DEVICE FOR PERFORMING PDPC AND METHOD FOR TRANSMITTING A BIT STREAM |
US11212523B2 (en) * | 2020-01-12 | 2021-12-28 | Mediatek Inc. | Video processing methods and apparatuses of merge number signaling in video coding systems |
CN113452997B (zh) * | 2020-03-25 | 2022-07-29 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
US20220295075A1 (en) * | 2021-03-10 | 2022-09-15 | Lemon Inc. | Resource constrained video encoding |
US12003731B2 (en) * | 2021-09-29 | 2024-06-04 | Qualcomm Incorporated | Adaptive determination of multiple transform candidates for video coding |
WO2023224280A1 (ko) * | 2022-05-16 | 2023-11-23 | 현대자동차주식회사 | 혼합 성분간 예측을 사용하는 비디오 코딩을 위한 방법 및 장치 |
WO2024007366A1 (zh) * | 2022-07-08 | 2024-01-11 | Oppo广东移动通信有限公司 | 一种帧内预测融合方法、视频编解码方法、装置和系统 |
US20240236348A9 (en) * | 2022-10-19 | 2024-07-11 | Tencent America LLC | Modified intra prediction fusion |
WO2024145790A1 (zh) * | 2023-01-03 | 2024-07-11 | Oppo广东移动通信有限公司 | 解码方法、编码方法、解码器和编码器 |
WO2024191219A1 (ko) * | 2023-03-15 | 2024-09-19 | 현대자동차주식회사 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BRPI0413988A (pt) * | 2003-08-26 | 2006-11-07 | Thomson Licensing | método e aparelho para decodificar blocos intra-inter codificador hìbridos |
KR100750136B1 (ko) * | 2005-11-02 | 2007-08-21 | 삼성전자주식회사 | 영상의 부호화, 복호화 방법 및 장치 |
WO2010017166A2 (en) * | 2008-08-04 | 2010-02-11 | Dolby Laboratories Licensing Corporation | Overlapped block disparity estimation and compensation architecture |
KR101503269B1 (ko) * | 2010-04-05 | 2015-03-17 | 삼성전자주식회사 | 영상 부호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치, 및 영상 복호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치 |
CN108712652A (zh) * | 2012-06-29 | 2018-10-26 | 韩国电子通信研究院 | 视频编码方法和计算机可读介质 |
CN104769947B (zh) * | 2013-07-26 | 2019-02-26 | 北京大学深圳研究生院 | 一种基于p帧的多假设运动补偿编码方法 |
CN107113425A (zh) * | 2014-11-06 | 2017-08-29 | 三星电子株式会社 | 视频编码方法和设备以及视频解码方法和设备 |
WO2017043816A1 (ko) * | 2015-09-10 | 2017-03-16 | 엘지전자(주) | 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
KR20170058838A (ko) * | 2015-11-19 | 2017-05-29 | 한국전자통신연구원 | 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치 |
KR20180085714A (ko) * | 2015-12-17 | 2018-07-27 | 삼성전자주식회사 | 머지 후보 리스트를 이용한 비디오 복호화 방법 및 비디오 복호화 장치 |
KR102511546B1 (ko) * | 2017-02-24 | 2023-03-17 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
KR20190043482A (ko) * | 2017-10-18 | 2019-04-26 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
US20200120339A1 (en) * | 2018-10-11 | 2020-04-16 | Mediatek Inc. | Intra Prediction For Multi-Hypothesis |
-
2019
- 2019-11-07 CN CN201980070621.8A patent/CN113170126A/zh active Pending
- 2019-11-07 CN CN202310086511.9A patent/CN116074503A/zh active Pending
- 2019-11-07 WO PCT/KR2019/015097 patent/WO2020096389A1/ko unknown
- 2019-11-07 ES ES19882020T patent/ES2948265T3/es active Active
- 2019-11-07 KR KR1020190141985A patent/KR20200054105A/ko active Search and Examination
- 2019-11-07 MX MX2021005368A patent/MX2021005368A/es unknown
- 2019-11-07 CN CN202310088181.7A patent/CN116506598A/zh active Pending
- 2019-11-07 EP EP23164479.0A patent/EP4221204A1/en active Pending
- 2019-11-07 AU AU2019375718A patent/AU2019375718B2/en active Active
- 2019-11-07 CN CN202310087273.3A patent/CN116347069A/zh active Pending
- 2019-11-07 RU RU2021113748A patent/RU2766152C1/ru active
- 2019-11-07 IL IL282612A patent/IL282612B2/en unknown
- 2019-11-07 CN CN202110610866.4A patent/CN113329224B/zh active Active
- 2019-11-07 CA CA3117933A patent/CA3117933C/en active Active
- 2019-11-07 BR BR112021008731-1A patent/BR112021008731A2/pt unknown
- 2019-11-07 IL IL314659A patent/IL314659A/en unknown
- 2019-11-07 JP JP2021522955A patent/JP7182705B2/ja active Active
- 2019-11-07 EP EP19882020.1A patent/EP3849184B1/en active Active
- 2019-11-07 PL PL19882020.1T patent/PL3849184T3/pl unknown
- 2019-11-07 IL IL307307A patent/IL307307B1/en unknown
- 2019-11-07 SG SG11202104319VA patent/SG11202104319VA/en unknown
-
2021
- 2021-04-02 US US17/221,669 patent/US11252405B2/en active Active
- 2021-04-26 ZA ZA2021/02793A patent/ZA202102793B/en unknown
- 2021-04-26 PH PH12021550932A patent/PH12021550932A1/en unknown
- 2021-05-07 CL CL2021001206A patent/CL2021001206A1/es unknown
- 2021-12-30 US US17/646,678 patent/US11909955B2/en active Active
-
2022
- 2022-11-18 JP JP2022185306A patent/JP7500691B2/ja active Active
- 2022-11-18 JP JP2022185288A patent/JP2023018045A/ja active Pending
- 2022-11-18 JP JP2022185275A patent/JP2023018044A/ja active Pending
-
2023
- 2023-12-15 US US18/542,431 patent/US20240137497A1/en active Pending
-
2024
- 2024-05-31 JP JP2024089135A patent/JP2024109961A/ja active Pending
- 2024-07-19 JP JP2024115826A patent/JP2024138541A/ja active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2948265T3 (es) | Método de codificación/descodificación de señales de imagen y aparato para el mismo | |
KR102608847B1 (ko) | 영상 신호 부호화/복호화 방법 및 이를 위한 장치 | |
ES2972076T3 (es) | Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo | |
ES2800551B2 (es) | Método y aparato para tratar una señal de vídeo | |
US11750833B2 (en) | Video signal encoding and decoding method, and apparatus therefor | |
ES2972074T3 (es) | Método de codificación/descodificación de señal 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 | |
RU2802731C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов |