ES2895717T3 - Intra predicción y codificación de modo intra - Google Patents

Intra predicción y codificación de modo intra Download PDF

Info

Publication number
ES2895717T3
ES2895717T3 ES16734804T ES16734804T ES2895717T3 ES 2895717 T3 ES2895717 T3 ES 2895717T3 ES 16734804 T ES16734804 T ES 16734804T ES 16734804 T ES16734804 T ES 16734804T ES 2895717 T3 ES2895717 T3 ES 2895717T3
Authority
ES
Spain
Prior art keywords
intra
prediction
video data
video
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16734804T
Other languages
English (en)
Inventor
Xin Zhao
Jianle Chen
Li Zhang
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2895717T3 publication Critical patent/ES2895717T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

Un método de decodificación de un bloque de datos de vídeo, comprendiendo el método: seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos del bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; decodificar (750) información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y reconstruir (752) el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel, en donde la reconstrucción del bloque de datos de vídeo comprende: para cada respectiva muestra de un bloque predictivo de la PU actual: determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y calcular un valor de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.

Description

DESCRIPCIÓN
Intra predicción y codificación de modo intra
Campo técnico
Esta divulgación se refiere a la codificación y decodificación de vídeo.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse en una amplia gama de dispositivos, que incluyen televisiones digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio celular o por satélite, denominados "teléfonos inteligentes", dispositivos de teleconferencia de vídeo, dispositivos de envío por flujo continuo de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intra imagen) y/o predicción temporal (inter imagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para codificación de vídeo basada en bloques, un corte de vídeo (es decir, un fotograma de vídeo o una porción de un fotograma de vídeo) puede subdividirse en bloques de vídeo. Los bloques de vídeo en un corte intra codificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un corte inter codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las instantáneas pueden denominarse como fotogramas, y las instantáneas de referencia pueden denominarse como fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxel entre el bloque original a codificar y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformada, lo que da como resultado coeficientes residuales, que a continuación pueden cuantificarse. Los coeficientes cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes, y se puede aplicar codificación por entropía para lograr una compresión aún mayor.
El Capítulo 4 del libro "High Efficiency Video Coding (HEVC), Algorithms and Architectures" por Vivienne Sze et al describe predicción de intra-instantánea en HEVC. El artículo "Fast Mode Decision Algorithm for Intra Prediction in HEVC" por Zhao et al, Proceedings the IEEE Conference on Visual Communication and Image Processing (VCIP), 2011, describe técnicas para acelerar el proceso de selección de modo reduciendo los modos candidatos probados usando la optimización de tasa-distorsión.
Sumario
En general, esta divulgación describe técnicas para intra predicción y codificación de modo de intra predicción, que pueden usarse en el contexto de códecs de vídeo avanzados, tales como extensiones de la norma Codificación de Vídeo de Alta Eficacia (HEVC) o de la siguiente generación de normas de codificación de vídeo. El alcance de protección se define por las reivindicaciones independientes, a las que debe hacerse referencia ahora. Se incluyen características opcionales en las reivindicaciones dependientes.
De acuerdo con un aspecto de la invención reivindicada, se proporciona un método de codificación de bloques de datos de vídeo que incluye seleccionar, basándose en modos de intra predicción usados para codificar uno o más bloques vecinos del bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; codificar información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de 1/32 pel. Codificar el bloque de datos de vídeo comprende: para cada respectiva muestra de un bloque predictivo de la PU actual: determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de interpolación de 1/32 pel.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un método de decodificación de un bloque de datos de vídeo que incluye seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos del bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; decodificar información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel. Reconstruir el bloque de datos de vídeo comprende: para cada respectiva muestra de un bloque predictivo de la PU actual: determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y calcular un valor de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un dispositivo para codificar datos de vídeo que incluye una memoria configurada para almacenar los datos de vídeo; y uno o más procesadores configurados para: seleccionar, basándose en modos de intra predicción usados para codificar uno o más bloques vecinos de un bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; codificar información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel. Codificar el bloque de datos de vídeo comprende: para cada respectiva muestra de un bloque predictivo de la PU actual: determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un dispositivo para decodificar datos de vídeo que incluye una memoria configurada para almacenar los datos de vídeo; y uno o más procesadores configurados para: seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos de un bloque de datos de vídeo en una instantánea actual de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; decodificar información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel. Reconstruir el bloque de datos de vídeo comprende: para cada respectiva muestra de un bloque predictivo de la PU actual: determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y calcular un valor de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un medio legible por ordenador que almacena instrucciones que, cuando se ejecutan por uno o más procesadores, hacen que el uno o más procesadores realicen el método de codificación o decodificación.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción posterior. Otras características, objetos y ventajas serán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La Figura 2 es un diagrama conceptual que ilustra un ejemplo de intra predicción de un bloque de datos de vídeo. La Figura 3 es un diagrama conceptual que ilustra un ejemplo de los modos de intra predicción y correspondientes índices de modo.
La Figura 4 es un diagrama conceptual que ilustra una técnica de ejemplo para generar una muestra de predicción para un bloque de datos de vídeo de acuerdo con un modo de intra predicción planar.
La Figura 5 es un diagrama conceptual que ilustra una técnica de ejemplo para generar una muestra de predicción para un bloque de datos de vídeo de acuerdo con un modo de intra predicción angular.
La Figura 6 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La Figura 7 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La Figura 8 es un diagrama conceptual que ilustra un ejemplo de los modos de intra predicción y correspondientes índices de modo de acuerdo con las técnicas de esta divulgación.
La Figura 9 es un diagrama conceptual que ilustra ángulos de intra predicción de ejemplo de acuerdo con las técnicas de esta divulgación.
La Figura 10 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 11 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 12 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 13 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 14 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 15 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 16 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 17 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 18 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 19 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 20 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
La Figura 21 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación.
Descripción detallada
En general, esta divulgación describe técnicas para codificación de intra predicción y modo de intra predicción, que pueden usarse en el contexto de códecs de vídeo avanzados, tales como extensiones de la HEVC o de la siguiente generación de normas de codificación de vídeo. Por ejemplo, esta divulgación describe técnicas para derivar, seleccionar y/o señalizar modos más probables (MPM) para intra predicción. Los ejemplos descritos en esta divulgación también incluyen técnicas para intra predicción que usan un número aumentado de modos angulares. Las técnicas para intra predicción que usan un número aumentado de modos angulares pueden incluir técnicas para aplicar un filtro de interpolación de N derivaciones, donde N es mayor que 2. La divulgación también describe técnicas que pueden permitir múltiples direcciones de intra predicción por bloque, por ejemplo, respectivas direcciones para subbloques del bloque, que pueden no requerir señalización adicional de múltiples modos de intra predicción.
La intra predicción y la codificación de modo intra son técnicas que pueden usarse en el contexto de códecs de vídeo avanzados, tales como las extensiones de la norma de Codificación de Vídeo de Alta Eficacia (HEVC) o de la siguiente generación de normas de codificación de vídeo.
En codificación de modo intra en HEVC, para cada unidad de intra predicción (PU), se señaliza un modo de intra predicción seleccionado. Para seleccionar el modo de intra predicción, se identifican en primer lugar tres modos intra, que se supone que tienen una probabilidad más alta de seleccionarse realmente, en concreto, los modos más probables (MPM). En HEVC, hay 35 modos para la intra predicción de un bloque de luma, que incluyen un modo de intra predicción planar, un modo de intra predicción de CC y 33 direcciones de predicción diferentes asociadas con respectivos modos de intra predicción angular.
Los 35 ángulos de predicción fijos del diseño existente de la intra predicción en HEVC pueden ser ineficaces para capturar distribuciones de dirección de borde muy flexibles. Sin embargo, aplicar más ángulos de predicción puede dar como resultado un aumento indeseado de la complejidad del codificador. Por ejemplo, una extensión directa a 65 ángulos de predicción basándose en el software de referencia de HEVC puede requerir un número aproximadamente del doble de comprobaciones de SATD. Adicionalmente, la eficacia de la codificación de modo intra actual, que usa tres MPM, en HEVc puede verse limitada puesto que puede no corresponder de manera precisa a la distribución de probabilidad real de todos los modos de intra predicción disponibles.
Esta divulgación describe técnicas que pueden remediar una o más de estas deficiencias en HEVC. Por ejemplo, de acuerdo con algunas técnicas de esta divulgación, un codificador de vídeo puede derivar más de tres MPM. En algunos de tales ejemplos, el codificador de vídeo puede usar modelado de contexto para decodificar uno o más intervalos de valores de un índice de MPM que índica cuál de los MPM es un MPM seleccionado para una PU actual. En algunos ejemplos donde el codificador de vídeo deriva más de tres MPM, el codificador de vídeo puede definir, entre los MPM, un modo de intra predicción representativo para la columna vecina izquierda y usar el modo de intra predicción representativo para la columna vecina izquierda como el MPM para la columna vecina izquierda y/o definir un modo de intra predicción representativo para la fila vecina arriba y usar el modo de intra predicción representativo para la fila vecina arriba como el MPM para la fila vecina arriba. Adicionalmente, en algunos ejemplos donde el codificador de vídeo deriva más de tres m Pm , el codificador de vídeo puede seleccionar uno o más MPM angulares adicionales basándose en la similitud con un modo angular ya entre los MPM. En este ejemplo, la similitud se determina basándose en al menos una de las diferencias de índice de modo de intra predicción o las diferencias de ángulo de intra predicción. Adicionalmente, en algunas técnicas de ejemplo de esta divulgación, un índice no de MPM puede codificarse en el flujo de bits como una palabra de código más corta que [log2 N] bits si el índice no de MPM satisface un criterio y se codifica como un código de longitud fija con [log2 N] bits de lo contrario, en donde hay un total de N valores disponibles del índice no de MPM.
En algunos ejemplos de esta divulgación donde el codificador de vídeo puede usar más de 33 modos de intra predicción angular, el codificador de vídeo puede usar un filtro de interpolación en muestras reconstruidas vecinas en las que la interpolación tiene precisión de 1/32 pel. En algunos ejemplos de esta divulgación, el codificador de vídeo puede calcular un valor de una respectiva muestra aplicando un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, en donde N es mayor que 2.
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema 10 de codificación de vídeo que puede utilizar las técnicas de esta divulgación. Como se usa en el presente documento, la expresión "codificador de vídeo" hace referencia genéricamente tanto a codificadores de vídeo como a decodificadores de vídeo. En esta divulgación, la expresión "codificación de vídeo" o el término "codificación" puede hacer referencia genéricamente a codificación de vídeo y decodificación de vídeo.
Como se muestra en la Figura 1, el sistema 10 de codificación de vídeo incluye un dispositivo 12 de origen y un dispositivo 14 de destino. El dispositivo 12 de origen genera datos de vídeo codificados. Por consiguiente, el dispositivo 12 de origen puede denominarse como un dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo 14 de destino puede decodificar los datos de vídeo codificados generados por el dispositivo 12 de origen. Por consiguiente, el dispositivo 14 de destino puede denominarse dispositivo de decodificación de vídeo o aparato de decodificación de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender una amplia gama de dispositivos, que incluye ordenadores de sobremesa, dispositivos informáticos móviles, ordenadores portátiles (por ejemplo, portátiles), ordenadores de tableta, decodificadores de salón, teléfonos móviles como los llamados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores para el automóvil o similares.
El dispositivo 14 de destino puede recibir datos de vídeo codificados desde el dispositivo 12 de origen a través de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos que pueden mover los datos de vídeo codificados desde el dispositivo 12 de origen al dispositivo 14 de destino. En algunos ejemplos, el canal 16 puede comprender uno o más medios de comunicación que permiten que el dispositivo 12 de origen transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real. En este ejemplo, el dispositivo 12 de origen puede modular los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de vídeo modulados al dispositivo 14 de destino. El uno o más medios de comunicación pueden incluir medios de comunicación inalámbricos y/o alámbricos, tales como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). El uno o más medios de comunicación pueden incluir encaminadores, conmutadores, estaciones base u otro equipo que facilite la comunicación desde el dispositivo 12 de origen al dispositivo 14 de destino.
En algunos ejemplos, el canal 16 puede incluir un medio de almacenamiento que almacena datos de vídeo codificados generados por el dispositivo 12 de origen. En este ejemplo, el dispositivo 14 de destino puede acceder al medio de almacenamiento, por ejemplo, mediante acceso al disco o acceso a la tarjeta. El medio de almacenamiento puede incluir una diversidad de medios de almacenamiento de datos a los que se accede localmente, tales como discos Bluray, DVD, CD-ROM, memoria flash u otros medios de almacenamiento digital adecuados para almacenar datos de vídeo codificados.
En algunos ejemplos, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena datos de vídeo codificados generados por el dispositivo 12 de origen. En este ejemplo, el dispositivo 14 de destino puede acceder a datos de vídeo codificados almacenados en el servidor de archivos u otro dispositivo de almacenamiento intermedio mediante envío por flujo continuo o descarga. El servidor de archivos puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo 14 de destino. Los servidores de archivos de ejemplo incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a la red (NAS) y unidades de disco locales.
El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de una conexión de datos convencional, como una conexión a Internet. Ejemplos de tipos de conexiones de datos pueden incluir canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones por cable (por ejemplo, línea digital de abonado (DSL), módem por cable, etc.) o combinaciones de ambos que son adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión por envío de flujo continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo para soportar una diversidad de aplicaciones multimedia, tales como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo, por ejemplo, a través de Internet, codificación de datos de vídeo para almacenamiento en un medio de almacenamiento de datos, decodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 de codificación de vídeo puede configurarse para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo y/o telefonía de vídeo.
La Figura 1 es simplemente un ejemplo y las técnicas de esta divulgación pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se envían por flujo continuo a través de una red o similares. Un dispositivo de codificación puede codificar y almacenar datos en la memoria y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En muchos ejemplos, la codificación y decodificación se realiza mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
En el ejemplo de la Figura 1, el dispositivo 12 de origen incluye un origen 18 de vídeo, un codificador 20 de vídeo y una interfaz 22 de salida. En algunos ejemplos, la interfaz 22 de salida puede incluir un modulador/demodulador (módem) y/o un transmisor. El origen 18 de vídeo puede incluir un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene datos de vídeo capturados previamente, una interfaz de alimentación de vídeo para recibir datos de vídeo de un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de vídeo o una combinación de tales orígenes de datos de vídeo.
El codificador 20 de vídeo puede codificar datos de vídeo del origen 18 de vídeo. En algunos ejemplos, el dispositivo 12 de origen transmite directamente los datos de vídeo codificados al dispositivo 14 de destino a través de la interfaz 22 de salida. En otros ejemplos, los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento o un servidor de archivos para un acceso posterior por el dispositivo 14 de destino para decodificación y/o reproducción.
En el ejemplo de la Figura 1, el dispositivo 14 de destino incluye una interfaz 28 de entrada, un decodificador 30 de vídeo y un dispositivo 32 de visualización. En algunos ejemplos, la interfaz 28 de entrada incluye un receptor y/o un módem. La interfaz 28 de entrada puede recibir datos de vídeo codificados a través del canal 16. El decodificador 30 de vídeo puede decodificar datos de vídeo codificados. El dispositivo 32 de visualización puede visualizar los datos de vídeo decodificados. El dispositivo 32 de visualización puede estar integrado o puede ser externo al dispositivo 14 de destino. El dispositivo 32 de visualización puede comprender una diversidad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (OLED) u otro tipo de dispositivo de visualización.
El codificador 20 de vídeo y el decodificador 30 de vídeo pueden implementarse cada uno como cualquiera de una diversidad de circuitos adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de aplicación (ASIC), campos de matrices de puertas programables (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio, legible por ordenador y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cualquiera de los anteriores (incluido hardware, software, una combinación de hardware y software, etc.) puede considerarse uno o más procesadores. Cada uno del codificador 20 de vídeo y del decodificador 30 de vídeo se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo. Un aparato que incluye el codificador 20 de vídeo y/o el decodificador 30 de vídeo puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
El origen 18 de vídeo del dispositivo 12 de origen puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, el origen 18 de vídeo puede generar datos basados en gráficos informáticos como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen 18 de vídeo es una cámara de vídeo, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar denominados teléfonos de cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a codificación de vídeo, en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede codificarse por el codificador 20 de vídeo. La información de vídeo codificada puede a continuación emitirse por la interfaz 22 de salida en el canal 16.
Muchas de las técnicas descritas en esta divulgación pueden realizarse tanto por el codificador 20 de vídeo como por el decodificador 30 de vídeo. Por lo tanto, para facilidad de explicación, las técnicas pueden describirse con respecto a un codificador de vídeo, que puede ser un codificador de vídeo y/o un decodificador de vídeo, tal como el codificador 20 de vídeo y el decodificador 30 de vídeo. Esta divulgación puede referirse, en general, al codificador 20 de vídeo que "señaliza" cierta información a otro dispositivo, tal como el decodificador 30 de vídeo. El término "señalización" se puede referir generalmente a la comunicación de elementos de sintaxis y/u otros datos usados para decodificar los datos de vídeo comprimidos. Tal comunicación puede tener lugar en tiempo real o casi real. Como alternativa, tal comunicación puede ocurrir durante un lapso de tiempo, como podría ocurrir al almacenar elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que a continuación puede recuperarse por un dispositivo de decodificación en cualquier momento después de almacenarse en este medio.
Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones Codificación de Vídeo Escalable (SVC) y Codificación de Vídeo de Múltiples Vistas (MVC). Además, se ha desarrollado recientemente la Codificación de Vídeo de Alta Eficacia (HEVC) por el Equipo de Colaboración Mixto sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T y el Grupo de Expertos de Imágenes en Movimiento (MPEG) de la ISO/IEC. Un borrador de la especificación de HEVC está disponible a partir de: http://phenix.intevry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip, en lo sucesivo, "JCTVC-N1003".
En HEVC y otras especificaciones de codificación de vídeo, una secuencia de vídeo típicamente incluye una serie de instantáneas. Las imágenes también se pueden denominar "fotogramas". Una imagen puede incluir tres matrices de muestras, indicadas Sl, Sob y Sor. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Sob es una matriz bidimensional de muestras de croma Cb. Scp es una matriz bidimensional de muestras de croma Cr. Las muestras de croma pueden denominarse también en el presente documento como muestras "croma". En otros casos, una imagen puede ser monocroma y puede incluir únicamente una matriz de muestras de luma.
Para generar una representación codificada de una instantánea, el codificador 20 de vídeo puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque de árbol de codificación de muestras de luma, dos correspondientes bloques de árbol de codificación de muestras de croma, y estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único bloque de árbol de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque NxN de muestras. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación más grande" (LCU). Las CTU de HEVC pueden ser ampliamente análogas a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de codificación (CU). Un corte puede incluir un número entero de CTU ordenadas consecutivamente en un orden de exploración por filas. En HEVC, un corte puede ser un número entero de CTU contenidas en un segmento de corte independiente y todos los segmentos de corte dependientes posteriores, si los hubiera, que preceden al siguiente segmento de corte independiente, si los hubiera, dentro de la misma unidad de acceso.
Para generar una CTU codificada, el codificador 20 de vídeo puede realizar recursivamente subdivisión de árbol cuádruple en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación es un bloque N x N de muestras. Una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
El codificador 20 de vídeo puede subdividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque de muestras rectangular (es decir, cuadrado o no cuadrado) sobre el que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromas o imágenes que tienen tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador 20 de vídeo puede generar bloques de luma, Cb y Cr predictivos para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
El codificador 20 de vídeo puede utilizar intra predicción o inter predicción para generar los bloques predictivos para una PU. Si el codificador 20 de vídeo usa intra predicción para generar los bloques predictivos de una PU, el codificador 20 de vídeo puede generar los bloques predictivos de la PU basándose en muestras decodificadas de la imagen asociada con la PU.
Si el codificador 20 de vídeo usa la inter predicción para generar los bloques predictivos de una PU, el codificador 20 de vídeo puede generar los bloques predictivos de la PU basándose en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU. La inter predicción puede ser inter predicción unidireccional (es decir, unipredicción) o inter predicción bidireccional (es decir, bipredicción). Para realizar unipredicción o bipredicción, el codificador 20 de vídeo puede generar una primera lista de instantáneas de referencia (RefPicListO) y una segunda lista de instantáneas de referencia (RefPicList1) para un corte actual. Cada una de las listas de instantáneas de referencia puede incluir una o más instantáneas de referencia. Cuando se usa unipredicción, el codificador 20 de vídeo puede buscar las instantáneas de referencia en cualquiera o ambas de RefPicListO y RefPicList1 para determinar una ubicación de referencia dentro de una instantánea de referencia. Adicionalmente, cuando se usa unipredicción, el codificador 20 de vídeo puede generar, basándose al menos en parte en muestras que corresponden a la ubicación de referencia, los bloques de muestra predictiva para la PU. Además, cuando se usa unipredicción, el codificador 20 de vídeo puede generar un único vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción de la PU y la ubicación de referencia. Para indicar el desplazamiento espacial entre un bloque de predicción de la PU y la ubicación de referencia, un vector de movimiento puede incluir un componente horizontal que especifica un desplazamiento horizontal entre el bloque de predicción de la PU y la ubicación de referencia y puede incluir un componente vertical que especifica un desplazamiento vertical entre el bloque de predicción de la PU y la ubicación de referencia.
Cuando se usa bipredicción para codificar una PU, el codificador 20 de vídeo puede determinar una primera ubicación de referencia en una instantánea de referencia en RefPicListO y una segunda ubicación de referencia en una instantánea de referencia en RefPicList1. El codificador 20 de vídeo puede a continuación generar, basándose al menos en parte en muestras que corresponden a la primera y segunda ubicaciones de referencia, los bloques predictivos para la PU. Además, cuando se usa bipredicción para codificar la PU, el codificador 20 de vídeo puede generar un primer vector de movimiento que indica un desplazamiento espacial entre un bloque de muestra de la PU y la primera ubicación de referencia y un segundo vector de movimiento que indica un desplazamiento espacial entre el bloque de predicción de la PU y la segunda ubicación de referencia.
Típicamente, una construcción de lista de instantáneas de referencia para la primera o la segunda lista de instantáneas de referencia (por ejemplo, RefPicListO o RefPicList1) de una instantánea B incluye dos etapas: inicialización de lista de instantáneas de referencia y reordenación (modificación) de lista de instantáneas de referencia. La inicialización de lista de instantáneas de referencia es un mecanismo explícito que pone las instantáneas de referencia en la memoria de instantánea de referencia (también conocida como memoria intermedia de instantánea decodificada) en una lista basándose en el orden de valores de POC (Recuento de Orden de Instantánea, alineado con el orden de visualización de una instantánea). El mecanismo de reordenación de lista de instantáneas de referencia puede modificar la posición de una instantánea que se puso en la lista durante la inicialización de lista de instantáneas de referencia en cualquier nueva posición, o poner cualquier instantánea de referencia en la memoria de instantánea de referencia en cualquier posición incluso si la instantánea no pertenece a la lista inicializada. Algunas instantáneas después de la reordenación (modificación) de la lista de instantáneas de referencia pueden ponerse en una posición muy alejada en la lista. Sin embargo, si una posición de una instantánea supera el número de instantáneas de referencia activas de la lista, la instantánea no se considera como una entrada de la lista de instantáneas de referencia final. El número de instantáneas de referencia activas puede señalizarse en el encabezado de corte para cada lista. Después de que se construyen las listas de instantáneas de referencia (en concreto RefPicListO y RefPicList1, si estuvieran disponibles), puede usarse un índice de referencia a una lista de instantáneas de referencia para identificar cualquier instantánea de referencia incluida en la lista de instantáneas de referencia.
El codificador 20 de vídeo puede codificar ciertos bloques de datos de vídeo usando codificación de modo de intra predicción, y proporcionar información que indica un modo de intra predicción seleccionado usado para codificar el bloque. El codificador 20 de vídeo puede codificar por predicción bloques de cualquier tipo de fotograma o corte (por ejemplo, fotogramas I o cortes I, además de fotogramas P o cortes P y fotogramas B o cortes B) usando un modo de intra predicción. Cuando el codificador 20 de vídeo determina que un bloque debe codificarse en modo de intra predicción, el codificador 20 de vídeo puede realizar un análisis de tasa-distorsión para seleccionar un modo de intra predicción más apropiado. Los modos de intra predicción pueden denominarse también como "intra modos". Por ejemplo, el codificador 20 de vídeo puede calcular valores de tasa-distorsión para uno o más modos de intra predicción, y seleccionar uno de los modos que tiene características de tasa-distorsión aceptables.
El codificador 20 de vídeo puede estar configurado, en algunos ejemplos, para comenzar el análisis para la selección de un modo de intra predicción con el modo más probable, basándose en el contexto. Cuando el modo más probable consigue características de tasa-distorsión adecuadas, en algunos ejemplos, el codificador 20 de vídeo puede seleccionar el modo más probable. En otros ejemplos, el codificador 20 de vídeo no necesita comenzar el proceso de selección con el modo más probable.
Después de que el codificador 20 de vídeo genera un bloque predictivo (por ejemplo, un bloque de luma, Cb y Cr predictivo) para una o más PU de una CU, el codificador 20 de vídeo puede generar un bloque residual de luma para la CU. Cada muestra en un bloque residual puede indicar una diferencia entre una muestra en un bloque predictivo y una correspondiente muestra en un bloque de codificación original. Cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una correspondiente muestra en el bloque de codificación de luma original de la CU. Además, el codificador 20 de vídeo puede generar un bloque residual Cb para la CU. Cada muestra en el bloque residual Cb de la CU indica una diferencia entre una muestra Cb en uno de los bloques Cb predictivos de la CU y una muestra correspondiente en el bloque de codificación Cb original de la CU. El codificador 20 de vídeo también puede generar un bloque residual Cr para la CU. Cada muestra en el bloque residual Cr de la CU indica una diferencia entre una muestra Cr en uno de los bloques Cr predictivos de la CU y una muestra correspondiente en el bloque de codificación Cr original de la CU.
Adicionalmente, el codificador 20 de vídeo puede usar subdivisión de árbol cuádruple para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada es un bloque de muestras rectangular (por ejemplo, cuadrado o no cuadrado) sobre el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloque de transformada. Por lo tanto, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada Cb y un bloque de transformada Cr. El bloque de transformada de luma asociado con la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada Cb puede ser un subbloque del bloque residual Cb de la CU. El bloque de transformada Cr puede ser un subbloque del bloque residual Cr de la CU. En imágenes monocromas o imágenes que tienen tres planos de color separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada Cb de una TU para generar un bloque de coeficientes Cb para la TU. El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada Cr de una TU para generar un bloque de coeficientes Cr para la TU.
Después de generar un bloque de coeficiente (por ejemplo, un bloque de coeficiente de luma, un bloque de coeficiente Cb o un bloque de coeficiente Cr), el codificador 20 de vídeo puede cuantificar el bloque de coeficientes. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, proporcionando una compresión adicional.
Por lo tanto, siguiendo la codificación intra predictiva o inter predictiva para producir datos predictivos y datos residuales, y siguiendo cualquier transformada (tal como la transformada de números enteros de 4x4 u 8x8 usada en H.264/AVC o una transformada de coseno discreta DCT) para producir coeficientes de transformada, puede realizarse la cuantificación de coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que se cuantifican los coeficientes de transformada para reducir posiblemente la cantidad de datos usados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
Después de que el codificador 20 de vídeo cuantifica un bloque de coeficiente, el codificador 20 de vídeo puede codificar por entropía elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador 20 de vídeo puede realizar una codificación aritmética binaria adaptativa según contexto (CABAC) sobre los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, siguiendo la cuantificación, puede realizarse codificación por entropía de los datos cuantificados, por ejemplo, de acuerdo con codificación de longitud variable adaptativa al contexto (CAVLC), CABAC u otra metodología de codificación por entropía. Una unidad de procesamiento configurada para codificar por entropía, u otra unidad de procesamiento, puede realizar otras funciones de procesamiento, tales como la codificación por longitud de serie cero de coeficientes cuantificados y/o la generación de información de sintaxis, tal como valores de patrón de bloque codificado (CBP), tipo de macrobloque, modo de codificación, tamaño de macrobloque máximo para una unidad codificada (tal como un fotograma, corte, macrobloque o secuencia), o similares.
El codificador 20 de vídeo puede estar también configurado para determinar un contexto de codificación para un bloque. El contexto puede determinarse basándose en diversas características del bloque, tales como, por ejemplo, un tamaño del bloque, que puede determinarse en términos de dimensiones de píxel, tipo de unidad de predicción (PU), tal como, en el ejemplo de HEVC, 2Nx2N, Nx2N, 2NxN, NxN, tipos de intra predicción de distancia corta (SDIP) tales como 2NxN/2, N/2x2N, 2Nx1, 1x2N, un tipo de macrobloque en el ejemplo de H.264, una profundidad de unidad de codificación (CU) para el bloque u otras mediciones de tamaño para un bloque de datos de vídeo. En algunos ejemplos, el codificador 20 de vídeo puede determinar el contexto basándose en cómo cualquiera o todos los modos de intra predicción para un bloque vecino arriba, un bloque vecino izquierdo, un bloque vecino arriba-izquierdo, un bloque vecino arriba-derecho u otros bloques vecinos. En algunos ejemplos, el codificador 20 de vídeo determina el contexto basándose en ambos modos de intra predicción para uno o más bloques, así como en información de tamaño para el bloque actual que se está codificando.
El codificador 20 de vídeo puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y bytes que contienen esos datos en forma de una carga útil de secuencia de bytes sin procesar (RBSP) intercalados según sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL incluye un encabezado de unidad de NAL y encapsula una RBSP. El encabezado de unidad de NAL puede incluir un elemento de sintaxis que indica un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por el encabezado de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que se encapsula dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de instantánea (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un corte codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para mensajes de SEI y así sucesivamente. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes de SEI) puede denominarse como unidades de NAL de capa de codificación de vídeo (VCL). Las unidades de NAL que contienen conjuntos de parámetros (por ejemplo, conjuntos de parámetros de vídeo (VPS), conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de instantánea (PPS), etc.) pueden denominarse como unidades de NAL de conjunto de parámetros.
El decodificador 30 de vídeo puede recibir un flujo de bits generado por el codificador 20 de vídeo. Además, el decodificador 30 de vídeo puede analizar el flujo de bits para obtener elementos de sintaxis del flujo de bits. El decodificador 30 de vídeo puede reconstruir imágenes de los datos de vídeo basándose, al menos en parte, en los elementos de sintaxis obtenidos del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser generalmente recíproco al proceso realizado por el codificador 20 de vídeo. Por ejemplo, el decodificador 30 de vídeo puede usar vectores de movimiento de las Pu para determinar bloques predictivos para las PU de una CU actual. Además, el decodificador 30 de vídeo puede cuantificar a la inversa los bloques de coeficientes asociados con las TU de la CU actual. El decodificador de vídeo 30 puede realizar transformadas inversas sobre los bloques de coeficientes para reconstruir bloques de transformada asociados con las TU de la CU actual. El decodificador 30 de vídeo puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el decodificador de vídeo 30 puede reconstruir la imagen.
Por lo tanto, en algunos ejemplos de esta divulgación, el decodificador 30 de vídeo puede recibir finalmente datos de vídeo codificados, por ejemplo, de la interfaz 28 de entrada. De acuerdo con algunas técnicas de esta divulgación, el decodificador 30 de vídeo puede recibir una palabra de código u otra sintaxis representativa de un modo de intra predicción usado para codificar un bloque de datos de vídeo. El decodificador 30 de vídeo puede estar configurado para determinar un contexto de codificación para el bloque de una manera sustancialmente similar al codificador 20 de vídeo.
Como se ha mencionado anteriormente, las unidades de NAL particulares del flujo de bits pueden incluir VPS, SPS y PPS. En algunos ejemplos, un VPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más secuencias de vídeo codificadas (CVS) completas. En algunos ejemplos, un SPS es una estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más CVS completas. Un SPS puede incluir un elemento de sintaxis que identifica un VPS que está activo cuando el SPS está activo. Por lo tanto, los elementos de sintaxis de un VPS pueden ser aplicables más en general que los elementos de sintaxis de un SPS. En algunos ejemplos, un PPS es una estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más instantáneas codificadas completas según se determina por un elemento de sintaxis hallado en cada encabezado de segmento de corte.
Un conjunto de parámetros (por ejemplo, un VPS, SPS, PPS, etc.) puede contener una identificación que se referencia, directa o indirectamente, de un encabezado de corte de un corte. En algunos ejemplos, un encabezado de corte es el encabezado de segmento de corte del segmento de corte independiente que es un segmento de corte actual o el segmento de corte independiente más reciente que precede a un segmento de corte dependiente actual en orden de decodificación. En tales ejemplos, un encabezado de segmento de corte es un número entero de unidades de árbol de codificación ordenadas consecutivamente en la exploración de piezas y contenidas en una única unidad de NAL. El proceso de referencia es conocido como "activación". Por lo tanto, cuando el decodificador 30 de vídeo está decodificando un corte particular, se dice que un conjunto de parámetros referenciado, directa o indirectamente, por un elemento de sintaxis en un encabezado de corte del corte particular está "activado". Dependiendo del tipo de conjunto de parámetros, la activación puede tener lugar en una base por instantánea o en una base por secuencia. Por ejemplo, un encabezado de corte de un corte puede incluir un elemento de sintaxis que identifica un PPS. Por lo tanto, cuando un codificador de vídeo codifica el corte, puede activarse el PPS. Adicionalmente, el PPS puede incluir un elemento de sintaxis que identifica un SPS. Por lo tanto, cuando se activa un PPS que identifica el SPS, puede activarse el SPS. El SPS puede incluir un elemento de sintaxis que identifica un VPS. Por lo tanto, cuando se activa un SPS que identifica el VPS, se activa el VPS.
Como se ha mencionado brevemente anteriormente, el codificador 20 de vídeo puede codificar elementos de sintaxis usando codificación CABAC. Para aplicar una codificación CABAC a un elemento de sintaxis, el codificador 20 de vídeo puede convertir a binario el elemento de sintaxis para formar una serie de uno o más bits, que se denominan "binarios". Además, el codificador 20 de vídeo puede identificar un contexto de codificación. El contexto de codificación puede identificar probabilidades de codificación de binarios que tienen valores particulares. Por ejemplo, un contexto de codificación puede indicar una probabilidad de 0,7 de codificar un binario de valor 0 y una probabilidad de 0,3 de codificar un binario de valor 1. Después de identificar el contexto de codificación, el codificador 20 de vídeo puede dividir un intervalo en un subintervalo inferior y un subintervalo superior. Uno de los subintervalos puede estar asociado con el valor 0 y el otro subintervalo puede estar asociado con el valor 1. Las anchuras de los subintervalos pueden ser proporcionales a las probabilidades indicadas para los valores asociados por el contexto de codificación identificado. Si un binario del elemento de sintaxis tiene el valor asociado con el subintervalo inferior, el valor codificado puede ser igual al límite inferior del subintervalo inferior. Si el mismo binario del elemento de sintaxis tiene el valor asociado con el subintervalo superior, el valor codificado puede ser igual al límite inferior del subintervalo superior. Para codificar el siguiente binario del elemento de sintaxis, el codificador 20 de vídeo puede repetir estas etapas, estando el intervalo el subintervalo asociado con el valor del bit codificado. Cuando el codificador 20 de vídeo repite estas etapas para el siguiente binario, el codificador 20 de vídeo puede usar probabilidades modificadas basándose en las probabilidades indicadas por el contexto de codificación identificado y los valores reales de binarios codificados. En algunos ejemplos, cuando el codificador 20 de vídeo repite estas etapas para el siguiente binario, el codificador 20 de vídeo puede seleccionar otro contexto de codificación.
Cuando el decodificador 30 de vídeo realiza una decodificación de CABAC sobre un elemento de sintaxis, el decodificador de vídeo 30 puede identificar un contexto de codificación. El decodificador 30 de vídeo puede dividir entonces un intervalo en un subintervalo inferior y un subintervalo superior. Uno de los subintervalos puede estar asociado con el valor 0 y el otro subintervalo puede estar asociado con el valor 1. Las anchuras de los subintervalos pueden ser proporcionales a las probabilidades indicadas para los valores asociados por el contexto de codificación identificado. Si el valor codificado está dentro del subintervalo inferior, el decodificador 30 de vídeo puede decodificar un binario que tiene el valor asociado con el subintervalo inferior. Si el valor codificado está dentro del subintervalo superior, el decodificador 30 de vídeo puede decodificar un binario que tiene el valor asociado con el subintervalo superior. Para decodificar un siguiente binario del elemento de sintaxis, el decodificador 30 de vídeo puede repetir estas etapas, siendo el intervalo el subintervalo que contiene el valor codificado. Cuando el decodificador 30 de vídeo repite estas etapas para el siguiente binario, el decodificador 30 de vídeo puede usar probabilidades modificadas basándose en las probabilidades indicadas por el contexto de codificación identificado y los binarios decodificados. El decodificador 30 de vídeo puede a continuación deshacer la conversión a binario los binarios para recuperar el elemento de sintaxis.
En lugar de realizar la codificación CABAC ordinaria en todos los elementos de sintaxis, el codificador 20 de vídeo puede codificar algunos binarios usando codificación CABAC de derivación. Puede resultar computacionalmente menos costoso realizar una codificación CABAC de derivación sobre un binario que realizar una codificación CABAC ordinaria sobre el binario. Además, realizar una codificación CABAC de derivación puede permitir un grado más alto de paralelización y de rendimiento. Los binarios codificados mediante una codificación CABAC de derivación se pueden denominar "binarios de derivación". La agrupación de binarios de derivación puede aumentar el rendimiento del codificador 20 de vídeo y del decodificador 30 de vídeo. El motor de codificación CABAC de derivación puede ser capaz de codificar varios binarios en un único ciclo, mientras que el motor de codificación CABAC ordinaria puede ser capaz de codificar solo un único binario en un ciclo. El motor de codificación CABAC de derivación puede ser más simple debido a que el motor de codificación CABAC de derivación no selecciona contextos y puede suponer una probabilidad de A para ambos símbolos (0 y 1). En consecuencia, en la codificación CABAC de derivación, los intervalos se dividen directamente por la mitad.
La Figura 2 es un diagrama conceptual que ilustra un ejemplo de intra predicción de un bloque de datos de vídeo. Para intra predicción, se predice un bloque de datos de vídeo (por ejemplo, una PU) usando muestras de imagen reconstruidas que son espacialmente vecinas. Se muestra en la Figura 2 un ejemplo típico de la intra predicción para un bloque 40 de imagen, por ejemplo, un bloque de imagen 16x16. Con intra predicción, se predice el bloque 40 de imagen por las muestras reconstruidas vecinas arriba e izquierda (muestras de referencia) a lo largo de una dirección de predicción seleccionada (como se indica por la flecha 42).
La Figura 3 es un diagrama conceptual que ilustra un ejemplo de los modos de intra predicción y correspondientes índices de modo. En HEVC, hay 35 modos para la intra predicción de un bloque de luma, que incluye un modo planar (es decir, un modo de intra predicción planar), un modo de CC y 33 modos angulares (es decir, modos de intra predicción angular), como se indica en la Figura 3. Los 35 modos de la intra predicción, como se definen en HEVC, se indexan como la tabla a continuación
T l 1 - ifi i n m inr r i i n n m r i
Figure imgf000012_0001
La Figura 4 es un diagrama conceptual que ilustra una técnica de ejemplo para generar una muestra de predicción para un bloque de datos de vídeo de acuerdo con un modo de intra predicción planar. El modo planar es típicamente el modo de intra predicción más frecuentemente usado. Para realizar una predicción planar para un bloque NxN, para cada muestra pxy ubicada en (x, y), como se ilustra en la Figura 4, se calcula el valor de predicción usando cuatro muestras reconstruidas vecinas específicas, es decir, muestras de referencia, con un filtro bilineal. Las cuatro muestras de referencia incluyen una muestra superior-derecha reconstruida TR (50), una muestra reconstruida inferior-izquierda BL (52), y las dos muestras reconstruidas (54, 56) ubicadas en la misma columna (rx, -1 ) y la fila (r_1,y) de la muestra actual, como se ilustra en la Figura 4. El modo planar puede formularse como: pxy = (N-x-1)L + (N-y-1)T + xT R y-BL. En esta fórmula, N es la altura y anchura del bloque.
Para un modo de CC, el bloque de predicción se rellena simplemente con el valor promedio de las muestras reconstruidas vecinas. Por ejemplo, para generar un bloque predictivo para una PU usando un modo de intra predicción de CC, el codificador de vídeo puede establecer cada muestra del bloque predictivo para la PU igual a un valor promedio de muestras reconstruidas vecinas. En general, ambos de los modos planar y de intra predicción de CC se aplican para modelar regiones de imagen que varían suavemente y son constantes.
HEVC especifica 33 diferentes direcciones de predicción para sus modos de intra predicción angular. Para cada intra predicción angular dada, la dirección de intra predicción puede identificarse, por ejemplo, de acuerdo con la Figura 3. En el ejemplo de la Figura 3, el modo de intra predicción 10 corresponde a una predicción dirección horizontal pura, y el modo de intra predicción 26 corresponde a una dirección de predicción vertical pura.
Dada una dirección de intra predicción específica, para cada muestra del bloque de predicción, su coordenada (x, y) se proyecta en primer lugar en la fila/columna de muestras reconstruidas vecinas a lo largo de la dirección de predicción, como se muestra en un ejemplo en la Figura 3. Supóngase que se proyecta (x, y) a la posición fraccional a entre dos muestras reconstruidas vecinas L y R, entonces el valor de predicción para (x, y) se calcula usando un filtro de interpolación bilineal de dos derivaciones, formulado como sigue: pxy = (1-a)L aR . Para evitar operaciones de coma flotante, en HEVC, el cálculo precedente se aproxima en realidad usando aritmética de números enteros como: pxy = ((32-a)L a R 16)>>5, donde a es un número entero igual a 32*a.
Para codificación de intra modo en HEVC, para cada intra PU, se señaliza un modo de intra predicción seleccionado. Para señalizar el modo de intra predicción seleccionado, se identifican en primer lugar tres modos de intra predicción que se supone que tienen una probabilidad superior de que se seleccionen realmente, en concreto los modos más probables (MPM). En HEVC, los MPM, etiquetados candModeList[x], x=0, 1, 2, se derivan como sigue.
En primer lugar, un modo vecino izquierdo (candIntraPredModeA) y un modo vecino arriba (candIntraPredModeB) se derivan como sigue de acuerdo con el subartículo 8.4.2 de JCTVC-N1003:
La entrada a este proceso es una ubicación de luma (xPb, yPb) que especifica la muestra superior-izquierda del bloque de predicción de luma actual con relación a la muestra de luma superior-izquierda de la instantánea actual.
1. Las ubicaciones vecinas (xNbA, yNbA) y (xNbB, yNbB) se establecen igual a (xPb - 1, yPb) y (xPb, yPb - 1), respectivamente.
2. Para que X se sustituya por cualquiera de A o B, las variables candIntraPredModeX se derivan como sigue: - El proceso de derivación de disponibilidad para un bloque en orden de exploración en z como se especifica en el subartículo 6.4.1 se invoca con la ubicación (xCurr, yCurr) establecida igual a (xPb, yPb) y la ubicación vecina (xNbY, yNbY) establecida igual a (xNbX, yNbX) como entradas, y la salida se asigna a availableX.
- El modo de intra predicción candidato candIntraPredModeX se deriva como sigue:
- Si availableX es igual a FALSO, candIntraPredModeX se establece igual a INTRA_CC.
- De lo contrario, si CuPredMode[xNbX][yNbX] no es igual a MODO_INTRA o pcm_flag[xNbX][yNbX] es igual a 1, candIntraPredModeX se establece igual a INTRA_CC,
- De lo contrario, si X es igual a B e yPb - 1 es menor que ((yPb >> CtbLog2SizeY) « CtbLog2SizeY), candIntraPredModeB se establece igual a INTRA_CC.
- De lo contrario, candIntraPredModeX se establece igual a IntraPredModeY[xNbX][yNbX].
Por lo tanto, si la muestra vecina izquierda de la muestra superior izquierda del bloque de predicción de luma de una PU actual no está disponible, si la muestra vecina izquierda de la muestra superior izquierda del bloque de predicción de luma de la PU actual no se predice usando intra predicción, o si la muestra vecina izquierda de la muestra superior izquierda del bloque de predicción de luma de la PU actual se codifica usando modulación de código de pulso (PCM), candIntraPredModeA se establece al modo de intra predicción de CC. De lo contrario, candIntraPredModeA se establece al modo de intra predicción de una PU cuyo bloque de predicción contiene la muestra vecina izquierda de la muestra superior izquierda del bloque de predicción de luma de la PU actual. De manera similar, si la muestra vecina arriba de la muestra superior izquierda del bloque de predicción de luma de una PU no está disponible, si la muestra vecina arriba de la muestra superior izquierda del bloque de predicción de luma de la PU actual no se predice usando intra predicción, si la muestra vecina arriba de la muestra superior izquierda del bloque de predicción de luma de la PU actual se codifica usando PCM, o si la muestra vecina arriba de la muestra superior izquierda del bloque de predicción de luma de la PU actual está en un bloque de árbol de codificación diferente de la PU actual, candIntraPredModeB se establece al modo de intra predicción de CC. De lo contrario, candIntraPredModeB se establece al modo de intra predicción de luma de una PU cuyo bloque de predicción contiene la muestra vecina arriba de la muestra superior izquierda del bloque de predicción de luma de la PU actual (es decir, IntraPredModeY[xNbX][yNbX].
A continuación, en el subartículo 8.4.2 del documento JCTVC-N1003, usando el modo vecino izquierdo derivado (candIntraPredModeA) y el modo vecino arriba (candIntraPredModeB), los tres MPM se derivan como sigue:
3. candModeList[x] con x = 0..2 se deriva como sigue:
- Si candIntraPredModeB es igual a candIntraPredModeA, se aplica lo siguiente:
- Si candIntraPredModeA es menor que 2 (es decir igual a INTRA_PLANAR o INTRA_CC), candModeList[x] con x = 0..2 se deriva como sigue:
candModeList[ 0 ] = INTRA_PLANAR (8-15)
candModeList[ 1 ] = INTRA_CC (8-16)
candModeList[ 2 ] = INTRA_ANGULAR26 (8-17)
De lo contrario, candModeList[x] con x = 0..2 se deriva como sigue:
candModeList[ 0 ] = candIntraPredModeA (8-18)
candModeList[ 1 ] =
2 ( ( candIntraPredModeA 29 ) % 32) (8-19)
candModeList[ 2 ] =
2 ( ( candIntraPredModeA - 2+1)% 32) (8-20)
De lo contrario (candIntraPredModeB no es igual a candIntraPredModeA), se aplica lo siguiente: candModeList[0] y candModeList[1] se derivan como sigue:
candModeList[ 0 ] = candIntraPredModeA (8-21)
candModeList[ 1 ] = candIntraPredModeB (8-22)
- Si ninguno de candModeList[0] ni candModeList[1] es igual a INTRA_PLANAR, candModeList[2] se establece igual a INTRA_PLANAR,
- De lo contrario, si ninguno de candModeList[0] ni candModeList[1] es igual a INTRA_CC, candModeList[2] se establece igual a INTRA_CC,
- De lo contrario, candModeList[2] se establece igual a INTRA_ANGULAR26.
Después de que se deciden los tres MPM, en el subartículo 8.4.2 del documento JCTVC-N1003, para cada PU, se señaliza en primer lugar una bandera de un bit prev_intra_luma_pred_flag[xPb][yPb] para indicar si el intra modo seleccionado de la PU actual es el mismo que uno de los tres MPM.
- Si prev_intra_luma_pred_flag[xPb][yPb] se señaliza como 1, es decir, se selecciona uno de los 3 MPM para codificar la PU actual, se señaliza adicionalmente un índice mpm_idx (puede ser igual a 0, 1 o 2), que indica cuál MPM se selecciona para codificar la PU actual. El mpm_idx se convierte a binario usando código unario truncado y se codifica por derivación no usando modelado de contexto
- De lo contrario (prev intra_luma_pred_flag[xPb][yPb] se señaliza como 0), es decir, no se usa MPM para la PU actual, se señaliza adicionalmente un índice rem_intra_luma_pred_mode[xPb][yPb], que indica cuál no MPM se selecciona para la PU actual. El valor de rem_intra_luma_pred_mode[xPb][yPb] podría ser 0, 1, ...,31, y se usa conversión a binario de longitud fija (5 bits) con codificación de derivación.
Como se ha analizado anteriormente, el codificador 20 de vídeo selecciona el modo de intra predicción para una PU actual. El proceso de selección del modo de intra predicción para una PU puede denominarse como una decisión de modo intra del lado del codificador. Cuando se selecciona un modo de intra predicción para una PU actual, el codificador 20 de vídeo puede seleccionar uno de los tres MPM determinados para la PU actual o uno de los modos de intra predicción no de MPM. Si el codificador 20 de vídeo selecciona uno de los tres MPM para la PU actual como el modo de intra predicción para la PU actual, el codificador 20 de vídeo puede señalizar, en el flujo de bits, un índice de MPM para la PU actual. En el documento JCTVC-N1003, se indica mpm_ind[x][y] el índice de MPM para una PU que tiene una muestra de luma superior izquierda en las coordinadas (x, y). De lo contrario, si el codificador 20 de vídeo no selecciona uno de los tres MPM para la PU actual como el modo de intra predicción para la PU actual, el codificador 20 de vídeo puede señalizar, en el flujo de bits, un índice no de MPM para la PU actual. En el documento JCTVC-N1003, se indica rem_intra_pred_mode[x][y] el índice no de MPM para una PU que tiene una muestra de luma superior izquierda en las coordenadas (x, y). Adicionalmente, el codificador 20 de vídeo señaliza, en el flujo de bits, un elemento de sintaxis que indica si se señaliza un índice de MPM o un índice no de MPM para la PU actual. En el documento JCTVC-N1003, se indica prev_intra_luma_pred_flag[x][y] a este elemento de sintaxis para una PU que tiene una muestra de luma superior izquierda en las coordenadas (x, y).
En el documento JCTVC-N1003, un índice de MPM puede tener únicamente tres valores diferentes potenciales, mientras que un índice no de MPM puede tener muchos más valores potenciales. En consecuencia, puede requerirse menos bits para señalizar un índice de MPM que un índice no de MPM.
Para seleccionar un modo de intra predicción para una PU actual de manera tan eficaz como sea posible, en el diseño del software de referencia de HEVC (denominado como "el HM"), se han integrado varios métodos de decisión de intra modo rápidos. El software de referencia de HM puede descargarse de: https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-14.0/.
Puesto que hay hasta 35 modos de intra predicción disponibles para un bloque de luma, una decisión de modo de codificador basada en la optimización de tasa-distorsión completa puede ser demasiado costosa para una implementación práctica. En la última versión del HM, el intra modo decisión se realiza como dos etapas. En la primera etapa, se decide en primer lugar de manera aproximada una lista de N candidatos de intra modo usando un criterio de coste mucho más económico comúnmente conocido como "Suma de Diferencia de Transformada Absoluta" (SATD). El valor de N depende del tamaño de bloque, y el ajuste por defecto en el HM es: N equivale a 8 para 4x4 y 8x8, y N equivale a 3 para 16x16 y tamaños de bloque más grandes. Después de eso, los modos vecino izquierdo y superior, es decir, cualquiera de candIntraPredModeA o tanto candIntraPredModeA como candIntraPredModeB (si candIntraPredModeA no es igual a candIntraPredModeA), se anexan a la lista de candidatos de intra modo, si no están ya incluidos. En la segunda etapa, la lista de candidatos de intra modo se alimenta en el proceso de cálculo de coste de tasa-distorsión costoso, y se decide el mejor modo de intra predicción final para la PU actual. Con este proceso de decisión de intra modo de dos etapas, se omite la mayoría de los modos de intra predicción para el cálculo de coste de tasa-distorsión costoso, y se selecciona aún el mejor modo de intra predicción sin mucha penalización de caída de rendimiento de codificación.
En Matsuo et al., "Improved intra angular prediction by DCT-based interpolation filter", Signal Processing Conference (EUSIPCO), 2012 Proceedings of the 20th European, págs. 1568-1572. IEEE, 2012., se propone aplicar un filtro de interpolación basado en DCT de 4 derivaciones para tamaños de bloque de 4x4 y 8x8 y se desconecta el filtro de intra suavizado también cuando se aplica el filtro de 4 derivaciones, para tamaños de bloque mayores o iguales que 16x16, se aplica el filtro de interpolación bilineal de 2 derivaciones. En Maani, Ehsan, "Interpolation filter for intra prediction of HEVC", Solicitud de Patente de Estados Unidos 13/312.946, presentada el 6 de diciembre 2011, puede usarse un filtro de interpolación de 4 derivaciones cuando el filtro de intra suavizado está desconectado, mientras que podría obtenerse el filtro de interpolación de 4 derivaciones basándose en un proceso de interpolación CUBIC, un proceso de interpolación basado en DCT o un proceso de interpolación Hermite. En M. Guo, X. Guo y S. Lei, "Improved Intra Mode Coding", Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 4th Meeting: Daegu, Corea, 20-28 de enero de 2011, se selecciona la conversión a binario del intra modo de manera adaptativa de un conjunto de árboles de codificación predefinidos de acuerdo con los modos de sus bloques vecinos.
Puede haber un número de problemas asociados con las técnicas existentes para intra predicción para codificar datos de vídeo, por ejemplo, de acuerdo con la norma de HVEC. Por ejemplo, los 35 ángulos de predicción fijos del diseño existente de la intra predicción en HEVC pueden ser ineficaces para capturar distribuciones de dirección de borde muy flexibles. Sin embargo, aplicar más ángulos de predicción puede dar como resultado aumentos de complejidad del codificador indeseado. Por ejemplo, una extensión directa a 65 ángulos de predicción basándose en el software de referencia de HEVC puede requerir un número aproximadamente el doble de comprobaciones de SATD con relación a los 35 ángulos de predicción fijos del diseño existente de intra predicción en HEVC. Adicionalmente, la eficacia de la codificación de intra modo actual, por ejemplo, usando tres MPM en HEVC, puede estar limitada puesto que puede no corresponder de manera precisa a la distribución de probabilidad real de todos los modos de intra predicción disponibles. En otras palabras, los tres MPM determinados en HEVC para una PU particular pueden no ser realmente los modos de intra predicción que es más probable que se usen para la PU particular.
Las técnicas de esta divulgación pueden resolver los problemas anteriormente identificados asociados con las técnicas existentes para intra predicción para codificar datos de vídeo, por ejemplo, de acuerdo con la norma de HVEC, así como otros problemas en los campos técnicos de intra predicción y codificación y compresión de vídeo. Los siguientes métodos detallados pueden aplicarse individualmente. Como alternativa, puede aplicarse cualquier combinación de ellos.
De acuerdo con algunas técnicas de esta divulgación, pueden usarse más de tres MPM para señalizar un modo de intra predicción. Por ejemplo, un ejemplo típico del número de MPM, indicado M, puede ser 4, 5 o 6. El uso de MPM adicionales puede reducir la probabilidad de usar índices no de MPM para señalizar modos de intra predicción de las PU. Puesto que los índices de MPM se representan típicamente usando menos bits que los índices no de MPM, el uso de MPM adicionales puede reducir el tamaño de flujo de bits.
En algunos ejemplos donde se usan más de tres MPM para señalizar un modo de intra predicción de una PU, el codificador 20 de vídeo puede usar un proceso de codificación por entropía, tal como CABAC, para codificar un índice de MPM y el decodificador 30 de vídeo puede usar un proceso de decodificación por entropía, tal como CABAC, para decodificar el índice de MPM. El índice de MPM para una PU puede ser un valor numérico que identifica cuál de los MPM es el modo de intra predicción de la PU. Como parte del uso del proceso de codificación por entropía para codificar el índice de MPM, el codificador 20 de vídeo puede convertir a binario el índice de MPM. En otras palabras, el codificador 20 de vídeo puede convertir el índice de MPM en un código binario. En diferentes ejemplos, el codificador 20 de vídeo puede usar diversos métodos de conversión a binario para convertir el índice de MPM en un código binario. Por ejemplo, un codificador de vídeo puede convertir a binario el índice de MPM usando al menos uno de: un código unario truncado fijo o un código Huffman fijo. Adicionalmente, en algunos ejemplos, cuando se codifica el índice de MPM, el método de conversión a binario puede ser un código unario truncado fijo o un código Huffman fijo o decidido basándose en los intra modos vecinos codificados. Por ejemplo, un codificador de vídeo puede determinar el método de conversión a binario basándose en modos de intra predicción usados para codificar uno o más bloques vecinos. Por ejemplo, para un índice de MPM de una PU, el codificador de vídeo puede determinar el método de conversión a binario basándose en modos de intra predicción usados para codificar uno o más bloques vecinos adyacentes a la PU. Después de convertir a binario el índice de MPM, el codificador 20 de vídeo puede codificar por CABAC el índice de MPM convertido a binario e incluir el índice de MPM convertido a binario codificado por CABAc en el flujo de bits. Como parte de la decodificación del índice de MPM, el decodificador 30 de vídeo puede obtener el índice de MPM convertido a binario codificado por CABAC del flujo de bits, aplicar decodificación de CABAC al índice de MPM convertido a binario codificado por CABAC para recuperar el índice de MPM convertido a binario, y deshacer la conversión a binario del índice de MPM para recuperar el índice de MPM. En esta divulgación, la expresión "binarios de un índice de MPM" puede referirse a binarios del índice de MPM convertido a binario.
En algunos ejemplos de esta divulgación, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar modelado de contexto cuando codifican (por ejemplo, codificación CABAC) uno o más binarios de un índice de MPM. En otras palabras, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden seleccionar, para cada respectivo binario de uno o más binarios del índice de MPM, un respectivo contexto de codificación para el respectivo binario. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar el respectivo contexto de codificación para el respectivo binario para codificar el respectivo binario. Por ejemplo, cuando se codifica el índice de MPM, los primeros o los N binarios codificados seleccionados pueden codificarse usando modelado de contexto, mientras que se decide el índice de contexto usando los modos de intra predicción vecinos codificados. Por ejemplo, para un índice de MPM de una PU en una instantánea actual, el codificador de vídeo puede determinar el índice de contexto basándose en modos de intra predicción usados para codificar una o más PU vecinas adyacentes en la instantánea actual a la PU. En este ejemplo, N es un número entero. En algunos diversos ejemplos, N puede ser igual a 1, 2 o 3. Por lo tanto, en algunos ejemplos, el uno o más binarios de contexto modelado consisten en el primer binario del índice de MPM. En otros ejemplos, el uno o más de los binarios de contexto modelado consisten en unos N binarios seleccionados del índice de MPM, donde N se establece igual a M - K, en donde K es un número predefinido.
En un ejemplo donde el codificador 20 de vídeo y el decodificador 30 de vídeo usan modelado de contexto cuando se codifican uno o más binarios de un índice de m Pm de una PU actual, el índice de contexto depende de los casos de los modos de intra predicción vecinos izquierda y arriba. En el caso 0 de este ejemplo, los modos de intra predicción vecinos izquierda y arriba son iguales y ninguno de los modos de intra predicción es CC o planar. En el caso 1 de este ejemplo, los modos de intra predicción vecinos izquierda y arriba son iguales y al menos uno de los modos de intra predicción es CC o planar. En el caso 2 de este ejemplo, los modos de intra predicción vecinos izquierda y arriba son diferentes y ninguno es planar. En el caso 3 de este ejemplo, los modos de intra predicción vecinos izquierda y arriba son diferentes y al menos uno de los modos de intra predicción es planar. Los modos de intra predicción vecinos izquierda y arriba pueden ser los modos de intra predicción de las PU izquierda y arriba a la PU actual. En este ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden calcular el índice de contexto basándose en una tabla de mapeo predefinido que mapea desde el índice de caso (por ejemplo, el caso 0, el caso 1, el caso 2 o el caso 3) a un número de índice de contexto. En otras palabras, un codificador de vídeo puede usar un índice de caso a la tabla de mapeo de índice de contexto para determinar un índice de contexto del índice de caso. El número de índice de contexto puede identificar un contexto de codificación predefinido en un conjunto de contextos de codificación predefinidos.
Por lo tanto, en este ejemplo, cuando un codificador de vídeo selecciona un índice de contexto para un binario de contexto modelado del índice de MPM, el codificador de vídeo puede seleccionar un primer índice de contexto si los modos de intra predicción usados para decodificar un bloque vecino izquierdo y un bloque vecino arriba son iguales y ninguno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo ni el bloque vecino arriba es CC o planar. Adicionalmente, en este ejemplo, el codificador de vídeo puede seleccionar un segundo índice de contexto si los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba son iguales y al menos uno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba es CC o planar. En este ejemplo, el codificador de vídeo puede seleccionar un tercer índice de contexto si los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba son diferentes y ninguno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo ni el bloque vecino arriba es planar. En este ejemplo, el codificador de vídeo puede seleccionar un cuarto índice de contexto si los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba son diferentes y al menos uno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba es CC o planar.
En algunos ejemplos, se usan tablas de mapeo de índice de caso a índice de contexto diferentes para diferentes binarios. Por ejemplo, un codificador de vídeo, tal como el codificador 20 de vídeo o el decodificador 30 de vídeo, puede usar un primer índice de caso para la tabla de mapeo de índice de contexto para el binario 0 del índice de MPM, un segundo índice de caso para la tabla de mapeo de índice de contexto para el binario 1 del índice de MPM, un tercer índice de caso para la tabla de mapeo de índice de contexto para el binario 2 del índice de MPM, y así sucesivamente. Las diferentes tablas de mapeo de índice de caso a índice de contexto de este ejemplo pueden asignar diferentes contextos para los casos (por ejemplo, el caso 0, el caso 1, el caso 2 y el caso 3) anteriormente descritos. Por ejemplo, puede aplicarse el mapeo descrito en el párrafo anterior para el primer binario del índice de MPM, pero para un segundo binario del índice de MPM, el codificador de vídeo puede seleccionar el segundo índice de contexto si los modos de intra predicción usados para decodificar un bloque vecino izquierdo y un bloque vecino arriba son iguales y ninguno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo ni el bloque vecino arriba es CC o planar; seleccionar el tercer índice de contexto si los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba son iguales y al menos uno de los modos de intra predicción usados para decodificar el bloque vecino izquierdo y el bloque vecino arriba es CC o planar; y así sucesivamente.
En algunos ejemplos donde el codificador 20 de vídeo y el decodificador 30 de vídeo usan modelado de contexto cuando codifican uno o más binarios de un índice de MPM de una PU actual, únicamente se aplica un contexto para codificar cada uno de los primeros o los N binarios seleccionados, y el contexto puede no depender de los modos de intra predicción vecinos. Por ejemplo, en tales ejemplos, el codificador 20 de vídeo y el decodificador 30 de vídeo realizan el proceso de selección de contexto de codificación una vez para el índice de MPM y no lo repiten para el proceso de selección de contexto de codificación para posteriores binarios del índice de MPM. En otras palabras, un codificador de vídeo puede seleccionar un índice de contexto común para cada uno del uno o más binarios de contexto modelado del índice de MPM.
Como se ha mencionado anteriormente, en algunos ejemplos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar modelado de contexto cuando se codifican N binarios codificados de un índice de MPM. En un ejemplo de este tipo, N se establece igual a (M-K), donde K es un número predefinido y M es el número de MPM. Por ejemplo, K puede ser igual a 1, 2 o 3.
Por lo tanto, en los ejemplos anteriores, el codificador 20 de vídeo puede derivar M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, M es mayor que 3. Adicionalmente, la codificación de un elemento de sintaxis que indica si se usa un índice de modo más probable o un índice de modo no más probable para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado, el índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Basándose en el indicado del índice de MPM o el índice no de MPM que es el índice de MPM, el codificador 20 de vídeo puede seleccionar, para cada uno de uno o más binarios de contexto modelado del índice de MPM, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos, un índice de contexto para el binario de contexto modelado. El codificador 20 de vídeo puede codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, para codificar el elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar el modo de intra predicción seleccionado, el codificador 20 de vídeo puede codificar un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, mpm_idx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción de la PU. El codificador 20 de vídeo puede usar para cada uno del uno o más binarios de contexto modelado del índice de MPM, el índice de contexto seleccionado para que el binario de contexto modelado realice codificación CABAC del binario de contexto modelado. Adicionalmente, como parte de la codificación del bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el codificador 20 de vídeo puede generar, basándose en el modo de intra predicción seleccionado de la PU actual, un bloque predictivo para la PU actual. El codificador 20 de vídeo puede generar datos residuales que representan diferencias de píxeles entre la CU actual y el bloque predictivo. En este ejemplo, el codificador 20 de vídeo puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados, incluyendo las instantáneas codificadas la instantánea actual.
De manera similar, en algunos ejemplos, el decodificador 30 de vídeo puede derivar M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, M es mayor que 3. Adicionalmente, el decodificador 30 de vídeo puede decodificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado y el índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Basándose en el indicado del índice de MPM o el índice no de MPM que es el índice de MPM, el decodificador 30 de vídeo puede seleccionar, para cada uno de uno o más binarios de contexto modelado del índice de MPM, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos, un índice de contexto para el binario de contexto modelado. Adicionalmente, el decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
Por ejemplo, en este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, para decodificar el elemento de sintaxis que indica si se usa el índice de MPM o el índice no de MPM para indicar el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede decodificar, a partir de un flujo de bits, un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, mpm_idx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción de la PU actual. En este ejemplo, para cada uno del uno o más binarios de contexto modelado del índice de MPM, el decodificador 30 de vídeo puede usar el índice de contexto seleccionado para el binario de contexto modelado para realizar decodificación CABAC del binario de contexto modelado del índice de MPM. Adicionalmente, como parte de la reconstrucción del bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede generar un bloque predictivo para la PU actual usando el modo de intra predicción seleccionado. En este ejemplo, el decodificador 30 de vídeo puede reconstruir la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual. En este ejemplo, el decodificador 30 de vídeo puede recibir un flujo de bits que incluye una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados, incluyendo las instantáneas codificadas la instantánea actual.
Como se ha analizado brevemente anteriormente, la eficacia de la codificación de modo de intra predicción usando los tres MPM especificados en HEVC puede estar limitada puesto que los tres MPM especificados en HEVC, con frecuencia, no corresponden de manera precisa a la distribución de probabilidad real de todos los modos de intra predicción disponibles. Por ejemplo, la probabilidad del modo de intra predicción de una PU que es un modo de intra predicción no de MPM particular puede ser mayor que las probabilidades del modo de intra predicción de la PU que son cualquiera de los tres MPM especificados en HEVC.
Por lo tanto, de acuerdo con algunos ejemplos de esta divulgación, cuando se derivan los MPM, se define un modo de intra predicción representativo para la columna (o fila) vecina izquierda (o arriba) y se usa el modo de intra predicción representativo como el candidato de MPM de la columna vecina izquierda (o arriba). Por ejemplo, un codificador de vídeo puede definir un modo de intra predicción representativo para una columna vecina izquierda y usar el modo representativo para la columna vecina izquierda como un candidato de MPM. El codificador de vídeo puede usar el modo representativo para la columna vecina izquierda como un candidato de MPM además del MPM definido en HEVC para el bloque vecino izquierdo o en lugar del MPM definido en HEVC para el bloque vecino izquierdo (candIntraPredModeA). Además, el codificador de vídeo puede definir un modo de intra predicción representativo para una fila vecina arriba y usar el modo representativo para la fila vecina arriba como un candidato de m Pm . El codificador de vídeo puede usar el modo representativo para la fila vecina arriba como un candidato de MPM además del MPM definido en HEVC para el bloque vecino arriba o en lugar del MPM definido en HEVC para el bloque vecino arriba (candIntraPredModeB).
La columna vecina izquierda puede incluir una columna de muestras inmediatamente a la izquierda en una instantánea de una columna de muestras que contiene una muestra actual de una PU actual para una CU de la instantánea. Por ejemplo, la columna vecina izquierda puede incluir (o consistir en) cada muestra inmediatamente a la izquierda de la PU actual. La fila vecina arriba puede incluir una fila de muestras inmediatamente arriba en una instantánea de una fila de muestras que contiene una muestra actual de una PU actual para una CU de la instantánea. Por ejemplo, la fila vecina arriba puede incluir (o consistir en) cada muestra inmediatamente por encima de la PU actual.
Por ejemplo, como parte de la codificación de datos de vídeo, el codificador 20 de vídeo puede codificar un bloque de datos de vídeo en parte derivando los M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En algunos ejemplos, M es mayor que 3. En este ejemplo, los MPM pueden incluir un MPM para la columna vecina izquierda y un MPM para la fila vecina arriba. En algunos ejemplos, el codificador 20 de vídeo define un modo de intra predicción representativo para la columna vecina izquierda y usa el modo de intra predicción representativo para la columna vecina izquierda como el MPM para la columna vecina izquierda. En algunos ejemplos, el codificador 20 de vídeo define un modo de intra predicción representativo para la fila vecina arriba y usa el modo de intra predicción representativo para la fila vecina arriba como el MPM para la fila vecina arriba.
Adicionalmente, el codificador 20 de vídeo puede codificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo, y codifica el indicado del índice de MPM o el índice no de MPM. Por ejemplo, el codificador 20 de vídeo puede incluir, en el flujo de bits, datos que indican un elemento de sintaxis prev_intra_luma_pred_flag que indica si el flujo de bits incluye datos que indican un elemento de sintaxis m pm jndex o un rem_intra_luma_pred_mode. El índice de MPM indica cuál de los MMPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de los modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. El codificador 20 de vídeo codifica el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo es una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. Para codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el codificador 20 de vídeo puede reconstruir el bloque de datos de vídeo en parte generando un bloque predictivo para la PU actual usando el modo de intra predicción seleccionado. Adicionalmente, el codificador 20 de vídeo puede reconstruir la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual.
En un ejemplo similar de selección de un modo de intra predicción que va a usarse para intra predicción para codificar datos de vídeo, el decodificador 30 de vídeo puede decodificar un bloque de datos de vídeo en parte derivando M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, M puede ser mayor que 3. Los MPM pueden incluir un MPM para la columna vecina izquierda y un MPM para la fila vecina arriba. En algunos ejemplos, el decodificador 30 de vídeo define un modo de intra predicción representativo para la columna vecina izquierda y usa el modo de intra predicción representativo para la columna vecina izquierda como el MPM para la columna vecina izquierda. En algunos ejemplos, el decodificador 30 de vídeo define un modo de intra predicción representativo para la fila vecina arriba y usa el modo de intra predicción representativo para la fila vecina arriba como el MPM para la fila vecina arriba.
Adicionalmente, el decodificador 30 de vídeo puede decodificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo, y decodifica el indicado del índice de modo más probable o el índice de modo no más probable. Por ejemplo, el decodificador 30 de vídeo puede obtener previ_ntrapred_flag a partir de un flujo de bits. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado.
El decodificador 30 de vídeo puede reconstruir a continuación un bloque de vídeo basándose en el modo de intra predicción seleccionado resultante. En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, como parte de la reconstrucción del bloque de vídeo basándose en el modo de intra predicción seleccionado resultante, el decodificador 30 de vídeo puede usar el modo de intra predicción seleccionado para generar un bloque predictivo para el bloque de vídeo. Por ejemplo, el bloque de vídeo puede ser una CU y el decodificador 30 de vídeo puede usar el modo de intra predicción seleccionado para generar un bloque predictivo para una PU de la CU. Adicionalmente, el decodificador 30 de vídeo puede reconstruir al menos algunas muestras del bloque de vídeo añadiendo muestras del bloque predictivo a correspondientes muestras residuales para el bloque de vídeo. Por ejemplo, el bloque de vídeo puede ser una CU y el decodificador 30 de vídeo puede añadir muestras del bloque predictivo a correspondientes muestras residuales en uno o más bloques de transformada de las TU de la CU.
En diversos ejemplos, un codificador de vídeo puede determinar un modo de intra predicción representativo de diferentes maneras. En un ejemplo, se define como una función de todos los modos de intra predicción usados por los bloques vecinos. Por ejemplo, se cuenta el número de modos de intra predicción realmente usados de la columna (o fila) vecina izquierda (o arriba), en unidad del tamaño de PU más pequeño (por ejemplo, 4), y se define el más frecuentemente usado como el modo de intra predicción representativo. Por lo tanto, en los ejemplos anteriores, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden definir el modo de intra predicción representativo para la columna vecina izquierda basándose en un modo de intra predicción más frecuente de la columna vecina izquierda, y definir el modo de intra predicción representativo para la columna vecina arriba basándose en un modo de intra predicción más frecuente de la fila vecina arriba.
Como alternativa, el recuento está basado en el tamaño de la PU del bloque actual. Por ejemplo, un codificador de vídeo puede determinar el modo de intra predicción más frecuente de los bloques vecinos basándose en al menos uno de: (i) un tamaño de unidad de predicción más pequeño, o (ii) un tamaño de unidad de predicción del bloque de datos de vídeo. En un ejemplo, en lugar de contar basándose en la unidad de un tamaño de PU más pequeño (por ejemplo, 4x4), puede usare un tamaño de unidad diferente para un tamaño de PU diferente del bloque actual. Por ejemplo, si el tamaño de PU del bloque actual es 64x64, el recuento está basado en un tamaño de PU de 8x8 o un tamaño de PU de 16x16, en lugar del tamaño de PU más pequeño (4x4).
En algunos ejemplos, puede definirse un modo de intra predicción representativo como uno de los modos de intra predicción usados por un bloque vecino seleccionado en la columna (o fila) vecina izquierda (o arriba). Por ejemplo, el modo de intra predicción de la muestra (o bloque igual al tamaño de la PU más pequeña) ubicada en la posición media de la columna (fila) vecina izquierda (derecha), que no es la más a la izquierda (superior) o a la derecha (inferior), se define como el modo de intra predicción representativo del modo vecino izquierda (o arriba). Adicionalmente, en los ejemplos anteriores, puede determinarse el modo de intra predicción más frecuente de los bloques vecinos basándose en al menos uno de un tamaño de unidad de predicción más pequeño, o un tamaño de unidad de predicción del bloque de datos de vídeo. En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden definir el modo de intra predicción representativo para la columna vecina izquierda como un modo de intra predicción usado por un bloque vecino seleccionado en la columna vecina izquierda, y pueden definir el modo de intra predicción representativo para la fila vecina arriba como un modo de intra predicción usado por un bloque vecino seleccionado en la fila vecina arriba.
Como se ha mencionado anteriormente, ejemplos particulares de esta divulgación permiten M MPM, donde M es mayor que tres. Por lo tanto, de acuerdo con tales ejemplos de esta divulgación, el codificador 20 de vídeo puede derivar M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En otras palabras, el codificador 20 de vídeo puede derivar, de entre la pluralidad de modos de intra predicción, los M MPM para intra predicción de una PU de una CU de una instantánea actual de los datos de vídeo. En este ejemplo, M es mayor que 3. En este ejemplo, M es menor que un número total de los modos de intra predicción en la pluralidad de modos de intra predicción. Adicionalmente, en este ejemplo, el codificador 20 de vídeo puede codificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. En este ejemplo, el codificador 20 de vídeo puede codificar el indicado del índice de MPM o del índice no de MPM. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado y el índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. El codificador 20 de vídeo puede codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, el codificador 20 de vídeo puede codificar el elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar el modo de intra predicción seleccionado, el codificador 20 de vídeo puede codificar un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, m pm jdx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción de la PU. Adicionalmente, como parte de la codificación del bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el codificador 20 de vídeo puede generar, basándose en el modo de intra predicción seleccionado de la PU actual, un bloque predictivo para la PU actual. El codificador 20 de vídeo puede generar datos residuales que representan diferencias de píxeles entre la CU actual y el bloque predictivo. En este ejemplo, el codificador 20 de vídeo puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados, incluyendo las instantáneas codificadas la instantánea actual.
Además, de acuerdo con tales ejemplos de esta divulgación, el decodificador 30 de vídeo puede derivar M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo M es mayor que 3. M puede ser menor que el número total de los modos de intra predicción en la pluralidad de modos de intra predicción. Adicionalmente, en este ejemplo, el decodificador 30 de vídeo puede decodificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. En este ejemplo, el decodificador 30 de vídeo puede decodificar el indicado del índice de MPM o del índice no de MPM. El decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
Por ejemplo, en este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, para decodificar el elemento de sintaxis que indica si se usa el índice de MPM o el índice no de MPM para indicar el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede decodificar, a partir de un flujo de bits, un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, m pm jdx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción de la PU actual. Adicionalmente, como parte de la reconstrucción del bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede generar un bloque predictivo para la PU actual usando el modo de intra predicción seleccionado. En este ejemplo, el decodificador 30 de vídeo puede reconstruir la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual. En este ejemplo, el decodificador 30 de vídeo puede recibir un flujo de bits que incluye una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados, incluyendo las instantáneas codificadas la instantánea actual.
En algunos ejemplos, cuando se deciden los M (M > 3) MPM, los tres MPM originales definidos en HEVC se mantienen en los MMPM, y se añaden (M-3) modos de intra predicción adicionales. Por ejemplo, en algunos ejemplos, pueden seleccionarse los modos de intra predicción adicionales de manera que, siempre están incluidos modos planares y de CC en los MPM. En otras palabras, el proceso de derivación de los M MPM puede comprender incluir un modo planar y un modo de CC entre los M MPM.
Como alternativa, en algunos ejemplos, pueden seleccionarse los (M-3) modos de intra predicción adicionales de manera que siempre estén incluidos en los MPM los modos planar, Cc, VERTICAL (es decir, INTRA_ANGULAR26) y/u HORIZONTAL (es decir, INTRA_ANGULAR10) y/o DIAGONAL (es decir, INTRA_ANGULAR18). En otras palabras, el proceso de derivación de los M MPM puede comprender incluir un modo planar, un modo de CC y al menos uno de un modo vertical, un modo horizontal o un modo DIAGONAL entre los M mPm.
En algunos ejemplos, pueden seleccionarse los (M-3) modos de intra predicción adicionales de modos angulares que están más cerca del modo angular ya incluido en los primeros tres MPM. En este ejemplo, la expresión 'más cerca' se mide por la diferencia de índices de modo de intra predicción o el valor absoluto de la diferencia de índices de modo de intra predicción o la diferencia de ángulos de intra predicción. Por ejemplo, en este ejemplo, como parte de derivación de los M MPM, un codificador de vídeo (por ejemplo, el codificador 20 de vídeo o el decodificador 30 de vídeo) puede derivar tres MPM, en donde los tres mPm incluyen al menos un modo angular. Adicionalmente, en este ejemplo, el codificador de vídeo puede seleccionar uno o más MPM angulares adicionales basándose en la similitud con el al menos un modo angular. En este ejemplo, la similitud se determina basándose en al menos uno de las diferencias de índice de modo de intra predicción o diferencias de ángulo de intra predicción.
De acuerdo con algunos ejemplos de esta divulgación, para reducir el número de bits usados para codificar valores de índice, pueden incluirse ciertas variaciones en el número de bits que se utilizan para codificar valores de índice cuando se codifica el índice no de MPM. Por lo tanto, un codificador de vídeo, tal como el codificador 20 de vídeo y el decodificador 30 de vídeo, puede determinar si se está usando un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de una pluralidad de modos de intra predicción y, cuando se identifica un índice no de MPM, usar cualquiera de un código de longitud fija para representar el índice no de MPM o un código de longitud variable para representar el índice no de MPM, dependiendo de si se cumple uno o más criterios. En diversos ejemplos, un codificador de vídeo puede determinar los diversos criterios de diferentes maneras. Por ejemplo, pueden cumplirse los criterios si el índice no de MPM es uno de un número predeterminado de primeros índices no de MPM de la pluralidad de modos de intra predicción. En algunos ejemplos, se cumplen los criterios si el índice no de MPM es uno de un número predeterminado de últimos índices no de MPM. En algunos ejemplos, se cumplen los criterios si el índice no de MPM es uno de un número predeterminado de índices no de MPM seleccionados.
Por lo tanto, de acuerdo con un ejemplo de esta divulgación, el codificador 20 de vídeo puede derivar M modos más probables para intra predicción de un bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, M puede ser mayor que 3. Adicionalmente, el codificador 20 de vídeo puede codificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. Adicionalmente, en este ejemplo, el codificador 20 de vídeo puede codificar, basándose en el elemento de sintaxis que indica que se usa el índice no de MPM para indicar el modo de intra predicción seleccionado, el índice no de MPM. En este ejemplo, el índice no de MPM puede codificarse en el flujo de bits como una palabra de código más corta que [log2 N] bits si el índice no de MPM satisface un criterio y se codifica como un código de longitud fija con [log2 N] bits, de lo contrario. En este ejemplo, puede haber un total de N valores disponibles del índice no de m Pm . Adicionalmente, el codificador 20 de vídeo puede codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado. En esta divulgación, [ ] representa la operación de redondeo arriba.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo puede ser un modo de intra predicción seleccionado para una PU actual de la CU actual. Adicionalmente, en este ejemplo, para codificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar el modo de intra predicción seleccionado, el codificador 20 de vídeo puede incluir, en un flujo de bits, datos que indican un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, mpm_idx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar, para la PU actual, el modo de intra predicción seleccionado de una pluralidad de modos de intra predicción. Adicionalmente, en algunos de tales ejemplos, para codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el codificador 20 de vídeo puede generar un bloque predictivo para la PU usando el modo de intra predicción seleccionado y el codificador 20 de vídeo puede generar datos residuales que representan diferencias de píxeles entre la CU actual y el bloque predictivo. En algunos ejemplos, el codificador 20 de vídeo puede transformar y cuantificar los datos residuales e incluir, en un flujo de bits, elementos de sintaxis codificados por entropía que representan los coeficientes de transformada cuantificados resultantes.
En un ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de primeros índices no de MPM de la pluralidad de modos de intra predicción. Por ejemplo, para modos no de MPM, tanto el codificador y el decodificador pueden asignar un valor de índice a cada uno de los modos no de MPM disponibles. Con el valor de índice decodificado, el decodificador sabrá cuál del modo no de MPM se señaliza. En un ejemplo, cuando un índice no de MPM es uno de los primeros M valores de índice, el índice no de MPM puede encontrarse en el intervalo de 0 ~ (M-1). En otro ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de los últimos índices no de MPM. En otro ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de índices no de MPM seleccionados.
En un ejemplo similar, el decodificador 30 de vídeo puede derivar M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, M puede ser mayor que 3. Adicionalmente, en este ejemplo, el decodificador 30 de vídeo puede decodificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. Como anteriormente, el índice de MPM indica cuál de los M modos más probables es el modo de intra predicción seleccionado, y el índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Adicionalmente, en este ejemplo, basándose en el índice de MPM que indica el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede decodificar el índice no de MPM. En este ejemplo, se codifica el índice no de MPM en el flujo de bits como una palabra de código más corta que [log2 N] bits si el índice no de MPM satisface un criterio y se codifica en el flujo de bits como un código de longitud fija con [log2 N] bits, de lo contrario. En este ejemplo, hay un total de N valores disponibles del índice no de MPM. El decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo puede ser un modo de intra predicción seleccionado para una PU actual de la CU actual. Adicionalmente, en este ejemplo, para decodificar el elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar el modo de intra predicción seleccionado para intra predicción de la PU actual, el decodificador 30 de vídeo puede decodificar u obtener de otra manera, a partir de un flujo de bits, un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica si se usa un índice de MPM (por ejemplo, mpm_idx) o un índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar un modo de intra predicción seleccionado para la PU actual. Adicionalmente, en algunos ejemplos, como parte de la reconstrucción del bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, el decodificador 30 de vídeo puede generar un bloque predictivo para la PU actual usando el modo de intra predicción seleccionado. En tales ejemplos, el decodificador 30 de vídeo puede reconstruir la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual.
En un ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de primeros índices no de MPM de la pluralidad de modos de intra predicción. Por ejemplo, el criterio puede ser que el índice no de MPM es uno de los primeros X índices no de MPM de la pluralidad de modos de intra predicción, siendo X un número entero. En otro ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de los últimos índices no de MPM. Por ejemplo, el criterio puede ser que el índice no de MPM es uno de los últimos X índices no de MPM de la pluralidad de modos de intra predicción, siendo X un número entero. En otro ejemplo, puede cumplirse el criterio si el índice no de MPM es uno de un número predeterminado de índices no de MPM seleccionados. Por ejemplo, el criterio puede ser que el índice no de MPM es uno de los X índices no de MPM de la pluralidad de modos de intra predicción, siendo X un número entero.
Por lo tanto, cuando se codifica el índice no de MPM, todos los N índices no de MPM disponibles, excepto los primeros M o los últimos M o los M, valores de índice seleccionados pueden codificarse usando código de longitud fija con [log2 N] bits, mientras que los M valores de índice se señalizan usando una palabra de código más corta que [log2 N] bits. En este ejemplo, M puede ser o no igual al número de MPM. Como alternativa, todos los N índices no de MPM disponibles se codifican usando código de longitud fija con [log2 N] bits.
Como alternativa, en algunos ejemplos, se señaliza en primer lugar una bandera de un bit, que indica si el índice no de MPM hace referencia a un modo horizontal o vertical, con modelado de contexto, a continuación, se señaliza adicionalmente un índice que especifica adicionalmente cuál no MPM se selecciona. Por lo tanto, en este ejemplo, el codificador 20 de vídeo puede codificar, basándose en un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica que se usa el índice no de MPM (por ejemplo, rem_intra_luma_pred_mode) para indicar el modo de intra predicción seleccionado para el bloque de datos de vídeo, un segundo elemento de sintaxis que indica si el índice no de MPM hace referencia a uno de un modo horizontal o un modo vertical. De manera similar, el decodificador 30 de vídeo puede decodificar, a partir del flujo de bits, basándose en un elemento de sintaxis (por ejemplo, prev_intra_luma_pred_flag) que indica que se usa un índice no de MPM, un segundo elemento de sintaxis que indica si el índice no de MPM hace referencia a uno de un modo horizontal o un modo vertical.
En algunos ejemplos, cuando se usan más de tres MPM para señalizar el modo de intra predicción, durante la decisión de modo de codificador, para cada PU, se insertan los primeros K (K>=2) MPM en la lista de modos de intra predicción candidatos que han de comprobarse por optimización de tasa-distorsión. El valor de K puede depender de si el modo de intra predicción vecino izquierdo IntraModeL y el modo de intra predicción vecino arriba IntraModeA son iguales. Por ejemplo, K = (IntraModeL== IntraModeA)? 2 : 3. En otras palabras, en este ejemplo, K se establece igual a 2 si IntraModeL es igual a IntraModeA y se establece igual a 3 de lo contrario.
En algunos ejemplos, el número de MPM puede depender de los tamaños de CU o PU. Por ejemplo, el número de MPM puede ser mayor para tamaños de CU o PU más grandes. Como alternativa, en algunos ejemplos, el número de MPM puede señalizarse en un conjunto de parámetros de secuencia, un conjunto de parámetros de instantánea o en un encabezado de corte.
De acuerdo con algunos ejemplos de esta divulgación, un codificador de vídeo, tal como el codificador 20 de vídeo y el decodificador 30 de vídeo, puede usar más de 33 modos de intra predicción angular. Por ejemplo, el codificador de vídeo puede usar 65 modos angulares. En este ejemplo, los 65 ángulos de predicción (direcciones) pueden definirse de manera que se realiza la interpolación en precisión de 1/32 pel (píxel). Como se ha analizado anteriormente, cuando se codifica una PU usando un modo de intra predicción angular, un codificador de vídeo puede determinar una posición fraccional entre dos muestras vecinas reconstruidas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción angular, las coordenadas de una muestra del bloque predictivo de la PU. Cuando se realiza la interpolación en precisión de 1/32 pel, se definen 31 posiciones equidistantes entre los dos píxeles vecinos reconstruidos adyacentes y el codificador de vídeo establece la posición fraccional determinada como la más cercana a los píxeles vecinos reconstruidos o las 31 posiciones. Usar un número limitado de posiciones en lugar de una línea numérica real puede simplificar el procesamiento implicado al realizar los cálculos de interpolación. Como se ha descrito brevemente anteriormente, realizar la interpolación usando precisión de 1/32 pel a pesar de que están disponibles más de 33 modos de intra predicción angular, puede aumentar la precisión al mismo tiempo que se mantiene el nivel de complejidad igual. En particular, para realizar interpolaciones con precisión aumentada, sería necesario que se designara un número aumentado de diferentes filtros de interpolación y se almacenara tanto en el codificador como en el decodificador. Por lo tanto, por ejemplo, evitando la necesidad de precisión de interpolación aumentada, la complejidad (únicamente se están utilizando aún 32 filtros de interpolación diferentes) del codificador de vídeo puede seguir siendo igual usando interpolaciones de 1/32 pel.
Por lo tanto, en los ejemplos anteriores donde se usan más de 33 modos de intra predicción angular (por ejemplo, se usan 65 módulos de intra predicción angular) y se realiza la interpolación en precisión de 1/32 pel, como parte de la codificación de un bloque de los datos de vídeo, el codificador 20 de vídeo puede codificar información de sintaxis (por ejemplo, mpm_idx o rem_intra_luma_pred_mode) que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de modos de intra predicción que incluye más de 33 modos de intra predicción angular. En este ejemplo, se definen los modos de intra predicción angular de manera que se realiza la interpolación en precisión de 1/32 pel. Adicionalmente, en este ejemplo, el codificador 20 de vídeo puede codificar el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. Adicionalmente, en este ejemplo, como parte de la codificación del bloque de datos de vídeo, el codificador 20 de vídeo, para cada respectiva muestra de un bloque predictivo de la PU actual, el codificador 20 de vídeo puede determinar una posición fraccional entre dos muestras reconstruidas vecinas de la instantánea actual. La Figura 5 es un diagrama conceptual que ilustra una técnica de ejemplo para generar una muestra de predicción para un bloque de datos de vídeo de acuerdo con un modo de intra predicción angular. Por ejemplo, en el ejemplo de la Figura 5, el codificador 20 de vídeo puede determinar una posición fraccional a entre muestras vecinas L y R. Las dos muestras reconstruidas vecinas vecinas a la PU actual. El codificador 20 de vídeo puede determinar la posición fraccional proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas. Por ejemplo, en el ejemplo de la Figura 5, la línea 60 muestra que la dirección de predicción asociada con el modo de intra predicción seleccionado y (x,y) es la coordenada de la respectiva muestra 62. En este ejemplo, el codificador 20 de vídeo puede calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada. Esta interpolación es en precisión de 1/32 pel. Adicionalmente, en este ejemplo, como parte de la codificación del bloque de datos de vídeo, el codificador 20 de vídeo puede generar datos residuales que representan diferencias de píxeles entre el bloque actual y el bloque predictivo. El codificador 20 de vídeo puede transformar y cuantificar los datos residuales e incluir, en un flujo de bits, elementos de sintaxis codificados por entropía que representan los coeficientes de transformada cuantificados resultantes.
De manera similar, en un ejemplo, el decodificador 30 de vídeo puede decodificar información de sintaxis (por ejemplo, mpm_idx o rem_intra_luma_pred_mode) que indica un modo de intra predicción seleccionado para un bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En este ejemplo, la pluralidad de modos de intra predicción incluye más de 33 modos de intra predicción angular. Los modos de intra predicción angular pueden definirse de manera que se realiza la interpolación en precisión de 1/32 pel. El decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado.
Por lo tanto, en este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo puede ser un modo de intra predicción seleccionado para una PU actual de la CU actual. Como parte de la reconstrucción del bloque de datos de vídeo, para cada respectiva muestra de un bloque predictivo de la PU actual, el decodificador 30 de vídeo puede determinar una posición fraccional entre dos muestras reconstruidas vecinas de la instantánea actual proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas. Adicionalmente, el decodificador 30 de vídeo puede calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada. En este ejemplo, esta interpolación es en precisión de 1/32 pel. El decodificador 30 de vídeo puede reconstruir la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual.
En los ejemplos anteriores, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar más de 33 modos de intra predicción angular, de acuerdo con la invención. Por ejemplo, la pluralidad de modos de intra predicción angular puede incluir 65 modos de intra predicción angular. Adicionalmente, en los ejemplos anteriores, el filtro de interpolación puede ser un filtro de interpolación bilineal de dos derivaciones. En algunos de tales ejemplos, el filtro de interpolación se formula como:
pxy = (1-a)L a R
donde pxy es el valor calculado de la respectiva muestra, L y R son valores de las dos muestras vecinas reconstruidas, y a es la posición fraccional determinada.
Como se ha indicado anteriormente, de acuerdo con algunos ejemplos de esta divulgación, un codificador de vídeo puede usar más de 33 modos de intra predicción angular, de acuerdo con la invención. En un ejemplo de este tipo, para cada PU, se restringe a que únicamente estén disponibles para usarse N modos angulares, que se seleccionan de manera adaptativa de todos los modos angulares disponibles usando la información codificada de los bloques vecinos izquierdo y arriba. Por ejemplo, en este ejemplo, se prohíbe que el codificador 20 de vídeo seleccione (es decir, está restringido de) modos de intra predicción angular particulares cuando se codifica un bloque (por ejemplo, PU) de una instantánea. En este ejemplo, el codificador 20 de vídeo puede prohibirse de la selección de los modos de intra predicción angular particulares a pesar de que los modos de intra predicción angular particulares están disponibles para el codificador 20 de vídeo para su uso al codificar otros bloques de la misma instantánea, y a pesar del hecho de que los modos de intra predicción angular particulares puedan ofrecer mejor rendimiento de compresión que los modos de intra predicción angular que el codificador 20 de vídeo está permitido a usar para codificar el bloque.
Por lo tanto, en un ejemplo de acuerdo con la invención donde únicamente están disponibles N modos de intra predicción angular para usarse, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos, un subconjunto de N modos de intra predicción angular de entre la pluralidad de modos de intra predicción angular. En este ejemplo, la información de sintaxis que indica el modo de intra predicción seleccionado para la PU actual puede comprender un índice que indica el modo de intra predicción seleccionado. En este ejemplo, el índice es un código de longitud fija que consiste en [log2 W|bits. En este ejemplo, N puede ser diversos números enteros, tales como 33.
En algunos ejemplos, el número de total modos de intra predicción depende de tamaños de CU o PU. Por ejemplo, un codificador de vídeo (por ejemplo, el codificador 20 de vídeo o el decodificador 30 de vídeo) puede determinar, basándose en al menos uno de un tamaño de CU o un tamaño de PU, un número total de los modos de intra predicción en la pluralidad de modos de intra predicción. Por ejemplo, si un tamaño de CU o un tamaño PU está por debajo de un umbral particular únicamente están disponibles modos de intra predicción angular con valores de índice menores que un número particular. En algunos ejemplos, un número total de los modos de intra predicción puede señalizarse en un SPS, un PPS o un encabezado de corte.
Como se ha analizado anteriormente, el codificador 20 de vídeo y el decodificador 30 de vídeo puede aplicar un filtro de interpolación a muestras vecinas reconstruidas para determinar valores de muestras en un bloque predictivo. De acuerdo con algunas técnicas de esta divulgación, puede aplicarse un filtro de intra interpolación de N derivaciones, donde N es mayor que 2. Por ejemplo, N puede ser 3 y 4. Cuando un codificador de vídeo, tal como el codificador 20 de vídeo o el decodificador 30 de vídeo, usa un filtro de intra interpolación de N derivaciones para determinar el valor de una muestra en un bloque predictivo, el codificador de vídeo puede calcular el valor basándose en los valores de N muestras vecinas reconstruidas. Usar una interpolación de N derivaciones (N>2) puede ser ventajoso sobre la interpolación de 2 derivaciones existente puesto que puede proporcionar resultados de interpolación más precisos que incluyen más muestras de referencia (N muestras de referencia) durante la interpolación. Estadísticamente, usar más muestras de referencia introducirá mejor precisión de interpolación con complejidad más alta. El filtro de intra interpolación de N derivaciones puede incluir un filtro de interpolación de sincronización, un filtro de interpolación gaussiano y un filtro de interpolación derivado usando un modelo de correlación de imágenes. Un filtro de sincronización elimina todos los componentes de frecuencia por encima de una frecuencia de corte dada, sin afectar a las frecuencias inferiores y tiene respuesta de fase lineal. Por lo tanto, el filtro de interpolación de N derivaciones puede comprender al menos uno de un filtro de interpolación, un filtro de interpolación gaussiano y un filtro de interpolación derivado usando un modelo de correlación de imágenes.
De esta manera, el codificador 20 de vídeo puede codificar información de sintaxis que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. Por ejemplo, el codificador 20 de vídeo puede señalizar, en un flujo de bits, un elemento de sintaxis mpm_idx o un rem_intra_luma_pred_mode para la PU actual. Adicionalmente, el codificador 20 de vídeo puede aplicar un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas del bloque de datos de vídeo de acuerdo con el modo de intra predicción seleccionado, donde N es mayor que 2. El codificador 20 de vídeo puede aplicar el filtro de intra interpolación de N derivaciones para determinar muestras reconstruidas vecinas filtradas que pueden corresponder a posiciones entre las muestras reconstruidas vecinas de todos los pel. El codificador 20 de vídeo puede codificar el bloque de datos de vídeo basándose en las muestras reconstruidas vecinas filtradas de acuerdo con el modo de intra predicción seleccionado. Por ejemplo, el codificador 20 de vídeo puede usar las muestras reconstruidas vecinas filtradas para generar un bloque predictivo y generar datos residuales para el bloque de datos de vídeo basándose en el bloque predictivo.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. Adicionalmente, en este ejemplo, para cada respectiva muestra de un bloque de predicción de la PU actual, el codificador 20 de vídeo puede determinar una posición fraccional entre dos muestras reconstruidas vecinas de un conjunto de muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas. El conjunto de muestras reconstruidas vecinas incluye muestras reconstruidas arriba e izquierda de la PU actual en la instantánea actual. Adicionalmente, el codificador 20 de vídeo puede calcular un valor de la respectiva muestra aplicando un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, en donde N es mayor que 2. Como parte de la codificación del bloque de datos de vídeo basándose en las muestras reconstruidas vecinas filtradas, el codificador 20 de vídeo puede generar datos residuales que representan diferencias de píxel entre la CU actual y el bloque predictivo. El codificador 20 de vídeo puede transformar y cuantificar los datos residuales e incluir, en un flujo de bits, elementos de sintaxis codificados por entropía que representan los coeficientes de transformada cuantificados resultantes.
De manera similar, el decodificador 30 de vídeo puede decodificar información de sintaxis que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. Por ejemplo, el decodificador 30 de vídeo puede obtener, de un flujo de bits, un elemento de sintaxis mpm idx o un rem_intra_luma_pred_mode. Adicionalmente, el decodificador 30 de vídeo puede aplicar un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas del bloque de datos de vídeo de acuerdo con el modo de intra predicción seleccionado, en donde N es mayor que 2. Adicionalmente, el decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo basándose en las muestras reconstruidas vecinas filtradas de acuerdo con el modo de intra predicción seleccionado.
En este ejemplo, el bloque de datos de vídeo puede ser una CU actual en una instantánea actual de los datos de vídeo y el modo de intra predicción seleccionado para el bloque de datos de vídeo es un modo de intra predicción seleccionado para una PU actual de la CU actual. En este ejemplo, para cada respectiva muestra de un bloque predictivo de la PU actual, el decodificador 30 de vídeo puede determinar una posición fraccional entre dos muestras reconstruidas vecinas de un conjunto de muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas. El conjunto de muestras reconstruidas vecinas incluye muestras reconstruidas arriba e izquierda de la PU actual en la instantánea actual. El decodificador 30 de vídeo puede calcular un valor de predicción de la respectiva muestra aplicando un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, en donde N es mayor que 2. En este ejemplo, como parte de la reconstrucción del bloque de datos de vídeo (por ejemplo, la CU actual), el decodificador 30 de vídeo puede reconstruir un bloque de codificación de la CU actual usando valores residuales añadiendo muestras de los bloques predictivos de las PU de la CU a correspondientes muestras de bloques de transformada de las TU de la CU actual.
Cuando se deriva el filtro de interpolación usando un modelo de correlación de imágenes, puede aplicarse una función de correlación de imágenes basándose en la función gaussiana generalizada, y se deriva adicionalmente la función de interpolación para cada posición fraccional usando la estimación de medias de mínimos cuadrados. Por ejemplo, cuando se deriva el filtro de interpolación usando un modelo de correlación de imágenes, suponiendo que el modelo de correlación de imágenes es R(i,i) = Pxlil-Pyljl, donde i y j indican la distancia entre dos muestras de imagen en el eje horizontal y vertical, px es el factor de correlación de imagen en la dirección horizontal, py es el factor de correlación de imagen en la dirección vertical, tanto px como py pueden encontrarse en el intervalo de [0, 1], lo que significa que una distancia de imagen más grande emite una correlación más pequeña. En otro ejemplo, suponiendo que hay cuatro muestras, a, b, c y d, y ha de interpolarse la muestra fraccional e. Para derivar un filtro de interpolación deseable [f0, f1, f2, f3], el proceso de interpolación [a, b, c, d] * [f0 f1, f2, f3]T = [e] puede rescribirse como A * F = E, donde A = [a, b, c, d], F = [f0 f1, f2, f3]T, y E = [e]. De acuerdo con una estimación de medias de mínimos cuadrados, el filtro óptimo F es F* = (AT*A)"1*ATE, y "(AT*A)'1*ATE" puede determinarse por el modelo de correlación de imágenes supuesto. Por lo tanto, usando el modelo de correlación de imágenes, el filtro de interpolación para cada muestra fraccional puede derivarse usando una estimación de media de mínimos cuadrados.
Por lo tanto, en algunos ejemplos, donde un codificador de vídeo deriva el filtro de intra interpolación usando un modelo de correlación de imágenes, el codificador de vídeo puede aplicar una función de correlación de imágenes basándose en la función gaussiana generalizada. Adicionalmente, el codificador de vídeo puede derivar una función de interpolación para cada posición fraccional usando una estimación de media de mínimos cuadrados.
En algunos ejemplos, cuando un codificador de vídeo aplica un filtro de interpolación gaussiano, el parámetro que controla la intensidad del suavizado del filtro puede variar dependiendo del tamaño de bloque. Por lo tanto, en tales ejemplos, el filtro de intra interpolación puede comprender un filtro de interpolación gaussiano y un parámetro que controla una intensidad de suavizado del filtro de interpolación gaussiano varía basándose en tamaños de bloque. Por ejemplo, el filtro de interpolación gaussiano puede formularse como:
Figure imgf000025_0001
G(x, a), x indica la posición fraccional, y a controla la intensidad del suavizado. Por lo tanto, un valor mayor de a genera un filtro de interpolación gaussiano con intensidad de suavizado aumentada.
Adicionalmente, en algunos ejemplos, un codificador de vídeo puede seleccionar el filtro de interpolación a aplicar. En tales ejemplos, la selección del filtro puede depender de los tamaños de bloque y/o de la posición de muestra relativa dentro del bloque. Por lo tanto, en tales ejemplos, el codificador de vídeo puede seleccionar el filtro de intra interpolación basándose en al menos uno del tamaño de bloque o la posición de muestra relativa dentro del bloque. Por ejemplo, suponiendo que se ha diseñado un conjunto de diferentes filtros de interpolación, en concreto f1, f2, ... fy, pueden usarse diferentes filtros de interpolación para diferentes posiciones de píxel dentro del bloque actual. Por ejemplo, puede utilizarse el filtro de interpolación f1 para las primeras dos filas dentro del bloque actual, y puede utilizarse el filtro de interpolación f2 para las filas de píxeles restantes.
Pueden estar disponibles diferentes filtros de interpolación para intra predicción de un único bloque, y puede señalizarse la selección del filtro de interpolación o derivarse explícitamente de información decodificada vecina, que incluye los valores de muestra reconstruida y los modos de intra predicción. Por lo tanto, en tales ejemplos, el codificador de vídeo puede seleccionar el filtro de intra interpolación basándose en al menos uno de los valores de muestra reconstruidos o los modos de intra predicción de bloques vecinos. Por ejemplo, suponiendo que se ha diseñado un conjunto de diferentes filtros de interpolación, en concreto f1, f2, ... fy, pueden usarse diferentes filtros de interpolación para diferentes modos de intra predicción. Por ejemplo, puede utilizarse el filtro de interpolación f1 para el modo de intra predicción diagonal, y puede utilizarse el filtro de interpolación f2 para el modo de intra predicción vertical.
De acuerdo con algunos ejemplos de esta divulgación, pueden permitirse múltiples direcciones de intra predicción para una PU sin señalización adicional de múltiples modos de intra predicción. Por ejemplo, el decodificador 30 de vídeo puede decodificar información de sintaxis que indica un modo de intra predicción seleccionado para un bloque de datos de vídeo (por ejemplo, una PU) de entre una pluralidad de modos de intra predicción. Adicionalmente, el decodificador 30 de vídeo puede determinar uno o más modos de intra predicción adicionales para el bloque sin decodificar información de sintaxis adicional que indica modos de intra predicción adicionales. En este ejemplo, el decodificador 30 de vídeo puede reconstruir el bloque de datos de vídeo de acuerdo con el modo de intra predicción seleccionado y el uno o más modos de intra predicción adicionales. Por ejemplo, el decodificador 30 de vídeo puede reconstruir una CU que contiene el bloque basándose en datos residuales para la CU y un bloque predictivo para el bloque generado basándose en el modo de intra predicción seleccionado y el uno o más modos de intra predicción adicionales.
En algunos ejemplos donde están permitidas múltiples direcciones de intra predicción para una PU sin señalización adicional de los múltiples modos de intra predicción, la PU comprende una pluralidad de subbloques y cada subbloque en la PU puede tener su propio modo de intra predicción. En este ejemplo, un subbloque dentro de una PU es un bloque de 4x4. De esta manera, en un ejemplo, como parte de la determinación del uno o más modos de intra predicción adicionales para el bloque de datos de vídeo anteriormente mencionado, el decodificador 30 de vídeo puede determinar respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo sin decodificar información de sintaxis adicional que indica modos de intra predicción adicionales. Adicionalmente, en este ejemplo, como parte de la reconstrucción del bloque de datos de vídeo, el decodificador 30 de vídeo puede reconstruir los subbloques de acuerdo con los respectivos modos de intra predicción determinados.
Adicionalmente, en algunos ejemplos, la dirección de intra predicción para un subbloque puede derivarse como el modo de intra predicción del bloque de referencia arriba o izquierda más cerca. De esta manera, como parte de la determinación de respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo, el decodificador 30 de vídeo puede derivar un respectivo modo de intra predicción para al menos uno de los subbloques como un modo de intra predicción de un bloque de referencia arriba o izquierda más cerca. En algunos ejemplos, para cada subbloque de la PU actual, la predicción es una suma ponderada de dos direcciones de predicción, que viene del bloque más cerca en la fila de referencia arriba y la columna de referencia izquierda. De esta manera, como parte de la determinación de respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo, el decodificador 30 de vídeo puede derivar un respectivo modo de intra predicción para al menos uno de los subbloques basándose en uno o ambos de un bloque de referencia arriba y un bloque de referencia izquierda.
De manera similar, como parte de un proceso de codificación de datos de vídeo, el codificador 20 de vídeo puede codificar información de sintaxis que indica un modo de intra predicción seleccionado para un bloque de datos de vídeo (por ejemplo, una PU) de entre una pluralidad de modos de intra predicción. El codificador 20 de vídeo puede determinar uno o más modos de intra predicción adicionales para el bloque de datos de vídeo sin codificar información de sintaxis adicional que indica modos de intra predicción adicionales. El codificador 20 de vídeo puede codificar el bloque de datos de vídeo de acuerdo con el modo de intra predicción seleccionado y el uno o más modos de intra predicción adicionales. En algunos ejemplos, como parte de la determinación de uno o más modos de intra predicción adicionales para el bloque de datos de vídeo, el codificador 20 de vídeo puede determinar respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo sin codificar información de sintaxis adicional que indica modos de intra predicción adicionales, y, como parte de la codificación del bloque de datos de vídeo, el codificador 20 de vídeo puede codificar los subbloques de acuerdo con los respectivos modos de intra predicción determinados. En algunos ejemplos, como parte de la determinación de respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo, el codificador 20 de vídeo puede derivar un respectivo modo de intra predicción para al menos uno de los subbloques como un modo de intra predicción de un bloque de referencia arriba o izquierda más cerca. En algunos ejemplos, como parte de la determinación de respectivos modos de intra predicción para cada uno de una pluralidad de subbloques del bloque de datos de vídeo, el codificador 20 de vídeo puede derivar un respectivo modo de intra predicción para al menos uno de los subbloques basándose en uno o ambos de un bloque de referencia arriba y un bloque de referencia izquierda.
Como se ha mencionado anteriormente, el codificador 20 de vídeo puede realizar un proceso para decidir qué modo de intra predicción seleccionar para una PU. Debido a que la realización de un proceso de optimización de tasa distorsión completo para todos los 35 modos de intra predicción disponibles en HEVC puede ser poco práctico en algunos casos, el codificador 20 de vídeo puede determinar una lista de N candidatos de modo de intra predicción comprobando modos de intra predicción usando un criterio de "Suma de Diferencia de Transformada Absoluta" (SATD). Cuando están disponibles más de 35 modos de intra predicción, como es el caso en algunos ejemplos de esta divulgación, incluso comprobar los modos de intra predicción usando el criterio de SATD puede hacer que consuma tiempo de manera excesiva o ser intensivo en recursos.
Por lo tanto, de acuerdo con un ejemplo de esta divulgación, para reducir, por ejemplo, reducir en su mayoría, el número de comprobaciones de SATD para predicción intra angular en el codificador 20 de vídeo, se propone un esquema de comprobación de K etapas. En este ejemplo, K es mayor que 2. En este ejemplo, para cada etapa de la comprobación de SATD, únicamente puede comprobarse un número seleccionado de los modos de intra predicción, que provienen de un subconjunto predefinido de ángulos de intra predicción con coste de SATD. Por ejemplo, en una primera etapa de la comprobación de SATD, el codificador 20 de vídeo puede comprobar cada uno de los ángulos de intra predicción del subconjunto predefinido de los modos de intra predicción con coste de SATD, y puede decidir los N modos de intra predicción. En este ejemplo, N es un valor constante predefinido que depende del tamaño de bloque. Después de eso, para cada etapa restante de la comprobación de SATD, el codificador 20 de vídeo únicamente comprueba los ángulos de intra predicción que están más cerca, en términos de diferencia de ángulo de predicción, a los mejores N modos de intra predicción decididos en la etapa anterior con coste de SATD, y el codificador 20 de vídeo decide los mejores N modos de intra predicción para la siguiente etapa.
En un ejemplo, cuando se aplican los 65 modos angulares propuestos, el codificador 20 de vídeo aplica un esquema de comprobación de SATD de dos etapas para decidir cuál de los modos de intra predicción se examinará adicionalmente con criterio de coste más eficaz (por ejemplo, coste de tasa-distorsión (R-D)) en el lado del codificador. En la primera etapa, el codificador 20 de vídeo comprueba únicamente los 35 modos de intra predicción originales según se definen en HEVC, que incluyen planar, CC y 33 modos angulares, con coste de SATD, a continuación, se deciden los N mejores (N puede ser lo mismo que se usa en el software de referencia de HEVC) modos de intra predicción. En la segunda etapa, el codificador 20 de vídeo comprueba adicionalmente únicamente los modos intra angulares que son los vecinos directos (índice de modo angular ±1) de, es decir, adyacentes a, los mejores N modos angulares con coste de SATD. El codificador 20 de vídeo puede decidir comprobar adicionalmente los mejores N modos de intra predicción finales con coste R-D.
Por lo tanto, en algunos ejemplos, el codificador 20 de vídeo puede determinar un respectivo coste de SATD para codificar el bloque de datos de vídeo de acuerdo con cada uno de un primer subconjunto de los modos de intra predicción. Adicionalmente, el codificador 20 de vídeo puede determinar un segundo subconjunto de los modos de intra predicción basándose en los costes de SATD determinados del primer subconjunto de los modos de intra predicción. El codificador 20 de vídeo puede determinar un respectivo coste de SATD para codificar el bloque de datos de vídeo de acuerdo con cada uno del segundo subconjunto de los modos de intra predicción. Adicionalmente, el codificador 20 de vídeo puede seleccionar uno de los modos de intra predicción basándose en los costes de SATD determinados de los primeros y segundos subconjuntos de los modos de intra predicción. El codificador 20 de vídeo puede codificar el bloque de datos de vídeo de acuerdo con el seleccionado de los modos de intra predicción.
En este ejemplo, como parte de la determinación del segundo subconjunto de los modos de intra predicción basándose en los costes de SATD determinados del primer subconjunto de los modos de intra predicción comprende, el codificador 20 de vídeo puede identificar N modos de intra predicción del primer subconjunto de los modos de intra predicción que tienen un N más bajo de los costes de SATD determinados. El codificador 20 de vídeo puede incluir modos de intra predicción que tienen ángulos de intra predicción próximos a ángulos de intra predicción de los N modos de intra predicción identificados en el segundo subconjunto de los modos de intra predicción. Como parte de incluir modos de intra predicción que tienen ángulos de intra predicción próximos a ángulos de intra predicción de los N modos de intra predicción identificados en el segundo subconjunto de los modos de intra predicción, el codificador 20 de vídeo puede incluir modos de intra predicción que tienen ángulos de intra predicción adyacentes a ángulos de intra predicción de los N modos de intra predicción identificados en el segundo subconjunto de los modos de intra predicción.
Adicionalmente, en algunos ejemplos, como parte de la selección de uno de los modos de intra predicción basándose en los costes de SATD determinados de los primeros y segundos subconjuntos de los modos de intra predicción, el codificador 20 de vídeo puede identificar N modos de intra predicción de los primeros y segundos subconjuntos de los modos de intra predicción que tienen una N más baja de los costes de SATD determinados. En este ejemplo, el codificador 20 de vídeo puede determinar un respectivo coste de tasa-distorsión para cada uno de los N modos de intra predicción identificados. Además, en este ejemplo, el codificador 20 de vídeo puede seleccionar uno de los N modos de intra predicción identificados basándose en los costes de tasa-distorsión determinados.
En los ejemplos de esta divulgación relacionados con las comprobaciones de SATD, el valor de N depende de un tamaño de bloque del bloque de datos de vídeo. Adicionalmente, en algunos de tales ejemplos, el primer subconjunto de los modos de intra predicción puede incluir un modo de intra predicción planar, un modo de intra predicción de CC y 33 modos de predicción angular.
En algunos ejemplos de esta divulgación relacionados con las comprobaciones de SATD, los primeros y segundos subconjuntos de los modos de intra predicción comprenden los primeros y segundos de K subconjuntos de los modos de intra predicción y K es mayor o igual que 2. En tales ejemplos, para cada subconjunto actual de los K subconjuntos de los modos de intra predicción, el codificador 20 de vídeo puede determinar un respectivo coste de SATD para codificar el bloque de datos de vídeo de acuerdo con cada modo de intra predicción del subconjunto actual de los modos de intra predicción. Adicionalmente, el codificador 20 de vídeo puede determinar un siguiente subconjunto de los K subconjuntos de los modos de intra predicción basándose en los costes de SATD determinados del subconjunto actual de los modos de intra predicción.
La Figura 6 es un diagrama de bloques que ilustra un codificador 20 de vídeo de ejemplo que puede implementar las técnicas de esta divulgación. La Figura 6 se proporciona para fines de explicación y no se debería considerar limitante de las técnicas según se ejemplifican y se describen de forma general en esta divulgación. Las técnicas de esta divulgación pueden ser aplicables a cualquiera de una diversidad de métodos o normas de codificación.
En el ejemplo de la Figura 6, el codificador 20 de vídeo incluye una unidad 100 de procesamiento de predicción, una memoria 101 de datos de vídeo, una unidad 102 de generación residual, una unidad 104 de procesamiento de transformada, una unidad 106 de cuantificación, una unidad 108 de cuantificación inversa, una unidad 110 de procesamiento de transformada inversa, una unidad 112 de reconstrucción, una unidad 114 de filtro, una memoria intermedia 116 de imágenes decodificadas y una unidad 118 de codificación por entropía. La unidad 100 de procesamiento de predicción incluye una unidad 120 de procesamiento de inter predicción y una unidad 126 de procesamiento de intra predicción. La unidad 120 de procesamiento de inter predicción incluye una unidad 122 de estimación de movimiento (ME) y una unidad 124 de compensación de movimiento (MC). En otros ejemplos, el codificador 20 de vídeo puede incluir más, menos o diferentes componentes funcionales.
La memoria 101 de datos de vídeo puede almacenar datos de vídeo que van a codificarse por los componentes del codificador 20 de vídeo. Los datos de vídeo almacenados en la memoria 101 de datos de vídeo se pueden obtener, por ejemplo, del origen 18 de vídeo. La memoria intermedia 116 de imágenes decodificadas puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo mediante el codificador 20 de vídeo, por ejemplo, en modos de intra o inter codificación. La memoria 101 de datos de vídeo y la memoria intermedia 116 de imágenes decodificadas pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincrónica (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria 101 de datos de vídeo y la memoria intermedia 116 de imágenes decodificadas pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados.
El codificador 20 de vídeo puede recibir datos de vídeo. El codificador 20 de vídeo puede codificar cada CTU en un corte de una imagen de los datos de vídeo. Cada una de las CTU puede estar asociada con bloques de árbol de codificación de luma (CTB) del mismo tamaño y los CTB correspondientes de la imagen. Como parte de la codificación de una CTU, la unidad 100 de procesamiento de predicción puede realizar una subdivisión de árbol cuádruple para dividir los CTB de la CTU en bloques progresivamente más pequeños. Los bloques más pequeños pueden ser bloques de codificación de las CU. Por ejemplo, la unidad 100 de procesamiento de predicción puede subdividir un CTB asociado con una CTU en cuatro bloques con igual tamaño, subdividir uno o más de los subbloques en cuatro subsubbloques con igual tamaño, y así sucesivamente.
El codificador 20 de vídeo puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de la codificación de una CU, la unidad 100 de procesamiento de predicción puede subdividir los bloques de codificación asociados con la CU entre una o más PU de la CU. Por lo tanto, cada PU se puede asociar con un bloque de predicción de luma y bloques de predicción de croma correspondientes. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden soportar PU que tienen diversos tamaños. Como se ha indicado anteriormente, el tamaño de una CU puede hacer referencia al tamaño del bloque de codificación de luma de la CU y el tamaño de una PU puede hacer referencia al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular es de 2Nx2N, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden soportar tamaños de PU de 2Nx2N o NxN para la intra predicción, y tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN o similares para la inter predicción. El codificador 20 de vídeo y el decodificador 30 de vídeo también pueden soportar una subdivisión asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para la inter predicción.
La unidad de procesamiento 120 de inter predicción puede generar datos predictivos para una PU realizando inter predicción en cada PU de una CU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU e información de movimiento para la PU. La unidad de procesamiento de intra predicción 126 puede generar datos predictivos para una PU realizando una intra predicción en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y diversos elementos de sintaxis. La unidad 126 de procesamiento de intra predicción puede realizar una intra predicción en unas PU en cortes I, cortes P y cortes B.
Para realizar una intra predicción en una PU, la unidad 126 de procesamiento de intra predicción puede usar múltiples modos de intra predicción para generar múltiples conjuntos de bloques predictivos para la PU. Cuando se realiza intra predicción usando un modo de intra predicción particular, la unidad 126 de procesamiento de intra predicción puede generar bloques predictivos para la Pu usando un conjunto particular de muestras de bloques vecinos. Los bloques vecinos pueden estar arriba, arriba y a la derecha, arriba y a la izquierda de los bloques de predicción de la PU, suponiendo un orden de codificación de izquierda a derecha, de arriba a abajo para las PU, las CU y las CTU. La unidad 126 de procesamiento de intra predicción puede usar diversos números de los modos de intra predicción, por ejemplo, modos de predicción CC, planar o direccional/angular, como se describe en el presente documento. En algunos ejemplos, el número de modos de intra predicción puede depender del tamaño de los bloques de predicción de la PU.
La unidad 100 de procesamiento de predicción puede seleccionar los datos predictivos para las PU de una CU entre los datos predictivos generados por la unidad 120 de procesamiento de inter predicción para las PU o los datos predictivos generados por la unidad 126 de procesamiento de intra predicción para las PU. En algunos ejemplos, la unidad 100 de procesamiento de predicción selecciona los datos predictivos para las PU de la CU basándose en métricas de tasa/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados se pueden denominar en el presente documento bloques predictivos seleccionados.
La unidad 102 de generación residual puede generar, basándose en el bloque de codificación de luma, Cb y Cr de una CU y los bloques de luma, Cb y Cr predictivos seleccionados de las PU de los bloques residuales de CU, luma, Cb y Cr de la CU. Por ejemplo, la unidad 102 de generación residual puede generar los bloques residuales de la CU de tal manera que cada muestra en los bloques residuales tiene un valor igual a una diferencia entre una muestra en un bloque de codificación de la CU y una muestra correspondiente en un bloque predictivo seleccionado correspondiente de una PU de la CU.
La unidad 104 de procesamiento de transformada puede realizar subdivisión de árbol cuádruple para subdividir los bloques residuales de una CU en bloques de transformada asociados con las TU de la CU. Por lo tanto, una TU se puede asociar con un bloque de transformada de luma y dos bloques de transformada de croma correspondientes. Los tamaños y posiciones de los bloques de transformada de luma y de croma de las TU de una CU se pueden basar o no en los tamaños y posiciones de los bloques de predicción de las PU de la CU.
La unidad 104 de procesamiento de transformada puede generar bloques de coeficientes de transformada para cada TU de una CU aplicando una o más transformadas a los bloques de transformada de la TU. La unidad 104 de procesamiento de transformada puede aplicar diversas transformadas a un bloque de transformada asociado con una TU. Por ejemplo, la unidad 104 de procesamiento de transformada puede aplicar una transformada coseno discreta (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de transformada. En algunos ejemplos, la unidad 104 de procesamiento de transformada no aplica transformadas a un bloque de transformada. En tales ejemplos, el bloque de transformada se puede tratar como un bloque de coeficientes de transformada.
La unidad 106 de cuantificación puede cuantificar los coeficientes de transformada en un bloque de coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits se puede redondear a un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. La unidad 106 de cuantificación puede cuantificar un bloque de coeficientes asociado con una TU de una CU basándose en un valor de parámetro de cuantificación (QP) asociado con la CU. El codificador 20 de vídeo puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados con una CU ajustando el valor de QP asociado con la CU. La cuantificación puede introducir pérdida de información, por lo tanto, los coeficientes de transformada cuantificados pueden tener menor precisión que los originales.
La unidad 108 de cuantificación inversa y la unidad 110 de procesamiento de transformada inversa pueden aplicar cuantificación inversa y transformadas inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual a partir del bloque de coeficientes. La unidad 112 de reconstrucción puede añadir el bloque residual reconstruido a muestras correspondientes a partir de uno o más bloques predictivos generados por la unidad 100 de procesamiento de predicción para producir un bloque de transformada reconstruido asociado con una TU. Reconstruyendo bloques de transformada para cada TU de una CU de esta manera, el codificador 20 de vídeo puede reconstruir los bloques de codificación de la CU.
La unidad 114 de filtro puede realizar una o más operaciones de desbloqueo para reducir los artefactos de bloqueo en los bloques de codificación asociados con una CU. La memoria intermedia 116 de imágenes decodificadas puede almacenar los bloques de codificación reconstruidos después de que la unidad 114 de filtro haya realizado la una o más operaciones de desbloqueo sobre los bloques de codificación reconstruidos. La unidad 120 de procesamiento de inter predicción puede usar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar una inter predicción en unas PU de otras imágenes. Además, la unidad 126 de procesamiento de intra predicción puede usar bloques de codificación reconstruidos en la memoria intermedia 116 de imágenes decodificadas para realizar una intra predicción en otras PU en la misma imagen que la CU.
La unidad 118 de codificación por entropía puede recibir datos desde otros componentes funcionales del codificador 20 de vídeo. Por ejemplo, la unidad 118 de codificación por entropía puede recibir bloques de coeficientes desde la unidad 106 de cuantificación y puede recibir elementos de sintaxis desde la unidad 100 de procesamiento de predicción. La unidad 118 de codificación por entropía puede realizar una o más operaciones de codificación por entropía en los datos para generar datos codificados por entropía. Por ejemplo, la unidad 118 de codificación por entropía puede realizar en los datos una operación de codificación de longitud variable adaptativa según contexto (CAVLC), una operación CABAC, una operación de codificación de longitud variable a variable (V2V), una operación de codificación binaria aritmética adaptativa según contexto basada en sintaxis (SBAC), una operación de codificación por Entropía de Subdivisión de Intervalo de Probabilidad (PIPE), una operación de codificación exponencial-Golomb u otro tipo de operación de codificación por entropía. El codificador 20 de vídeo puede emitir un flujo de bits que incluye datos codificados por entropía generados por la unidad 118 de codificación por entropía.
El codificador 20 de vídeo es un ejemplo de un codificador de vídeo configurado para realizar cualquiera de las técnicas descritas en esta divulgación. De acuerdo con una o más técnicas de esta divulgación, una o más unidades dentro del codificador 20 de vídeo pueden realizar las técnicas descritas en el presente documento como parte de un proceso de codificación de vídeo. Por ejemplo, la unidad 126 de procesamiento de intra predicción y/o la unidad 118 de codificación por entropía, pueden estar configuradas para realizar las técnicas descritas en el presente documento como parte de un proceso de codificación de vídeo. En algunos ejemplos, la unidad 126 de procesamiento de intra predicción puede estar configurada para realizar las técnicas descritas en el presente documento para derivar o seleccionar modos de intra predicción y/o MPM para intra predicción, usando las técnicas un número aumentado de MPM y/o modos angulares, y aplicando las técnicas un filtro de intra interpolación de N derivaciones, donde N es mayor que 2. La unidad 126 de procesamiento de intra predicción puede estar configurada para realizar las técnicas descritas en el presente documento para permitir múltiples direcciones de intra predicción por bloque, por ejemplo, respectivas direcciones para subbloques del bloque, lo que puede no requerir señalización adicional de múltiples modos de intra predicción.
La unidad 126 de procesamiento de intra predicción puede proporcionar información de sintaxis a la unidad 118 de codificación por entropía, tal como un modo de intra predicción seleccionado y/o índice de MPM para intra predicción. La unidad 126 de procesamiento de intra predicción y/o la unidad 118 de codificación por entropía pueden estar configuradas para implementar las técnicas descritas en el presente documento para codificar o señalizar la información de sintaxis relacionada con intra predicción, por ejemplo, el modo de intra predicción seleccionado y/o el índice de MPM para intra predicción, en un flujo de bits de vídeo codificado, que puede decodificarse por el decodificador 30 de vídeo.
La Figura 7 es un diagrama de bloques que ilustra un decodificador 30 de vídeo de ejemplo que está configurado para implementar las técnicas de esta divulgación. La Figura 7 se proporciona para propósitos de explicación y no es limitante de las técnicas según se ejemplifican y se describen de forma general en esta divulgación. Las técnicas de esta divulgación pueden ser aplicables a una diversidad de métodos o normas de codificación.
En el ejemplo de la Figura 7, el decodificador 30 de vídeo incluye una unidad 150 de decodificación por entropía, una memoria 151 de datos de vídeo, una unidad 152 de procesamiento de predicción, una unidad 154 de cuantificación inversa, una unidad 156 de procesamiento de transformada inversa, una unidad 158 de reconstrucción, una unidad 160 de filtro y una memoria intermedia 162 de imágenes decodificadas. La unidad 152 de procesamiento de predicción incluye una unidad 164 de compensación de movimiento y una unidad 166 de procesamiento de intra predicción. En otros ejemplos, el decodificador 30 de vídeo puede incluir más, menos o diferentes componentes funcionales.
La memoria 151 de datos de vídeo puede almacenar datos de vídeo, tales como un flujo de bits de vídeo codificado, que va a decodificarse por los componentes del decodificador 30 de vídeo. Los datos de vídeo almacenados en la memoria 151 de datos de vídeo se pueden obtener, por ejemplo, de un medio 16 legible por ordenador, por ejemplo, de una fuente de vídeo local, tal como una cámara, a través de una comunicación de red cableada o inalámbrica de datos de vídeo, o accediendo a medios de almacenamiento de datos. La memoria 151 de datos de vídeo puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de vídeo codificados desde un flujo de bits de vídeo codificado. La memoria intermedia 162 de imágenes decodificadas puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la decodificación de datos de vídeo mediante el decodificador 30 de vídeo, por ejemplo, en modos de intra o inter codificación. La memoria 151 de datos de vídeo y la memoria intermedia 162 de imágenes decodificadas pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincrónica (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria 151 de datos de vídeo y la memoria intermedia 162 de imágenes decodificadas pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados.
Una memoria intermedia de instantánea codificada (CPB) formada por la memoria 151 de datos de vídeo puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades de NAL) de un flujo de bits. La unidad 150 de decodificación por entropía puede recibir unidades de NAL de la CPB formada por la memoria 151 de datos de vídeo y analizar las unidades de NAL para obtener elementos de sintaxis del flujo de bits. La unidad 150 de decodificación por entropía puede decodificar elementos de sintaxis codificados por entropía en las unidades de NAL. La unidad 152 de procesamiento de predicción, la unidad 154 de cuantificación inversa, la unidad 156 de procesamiento de transformada inversa, la unidad 158 de reconstrucción y la unidad 160 de filtro pueden generar datos de vídeo decodificados basándose en los elementos de sintaxis extraídos del flujo de bits.
Las unidades de NAL del flujo de bits pueden incluir unidades de NAL de corte codificadas. Como parte de la decodificación del flujo de bits, la unidad 150 de decodificación por entropía puede extraer y decodificar por entropía elementos de sintaxis de las unidades de NAL de corte codificadas. Cada uno de los cortes codificados puede incluir un encabezado de corte y datos de corte. El encabezado de corte puede contener elementos de sintaxis que pertenecen a un corte.
Además de decodificar elementos de sintaxis a partir del flujo de bits, el decodificador 30 de vídeo puede realizar una operación de decodificación en una CU. Realizando la operación de decodificación en una CU, el decodificador 30 de vídeo puede reconstruir bloques de codificación de la CU.
Como parte de la realización de una operación de decodificación en una CU, la unidad 154 de cuantificación inversa puede cuantificar a la inversa, es decir, descuantificar, bloques de coeficiente asociados con las TU de la CU. La unidad 154 de cuantificación inversa puede usar un valor QP asociado con la CU de la TU para determinar un grado de cuantificación y, de igual forma, un grado de cuantificación inversa para que se aplique a la unidad 154 de cuantificación inversa. Es decir, la relación de compresión, es decir, la relación del número de bits usados para representar la secuencia original y la comprimida, puede controlarse ajustando el valor QP usado cuando se cuantifican coeficientes de transformada. La relación de compresión puede depender también del método de codificación por entropía empleado.
Después de que la unidad 154 de cuantificación inversa haya cuantificado a la inversa un bloque de coeficientes, la unidad 156 de procesamiento de transformada inversa puede aplicar una o más transformadas inversas al bloque de coeficientes para generar un bloque residual asociado con la Tu. Por ejemplo, la unidad 156 de procesamiento de transformada inversa puede aplicar una DCT inversa, una transformada de números enteros inversa, una transformada de Karhunen-Loeve inversa (KLT), una transformada rotacional inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes.
Si una PU se codifica usando intra predicción, la unidad 166 de procesamiento de intra predicción puede realizar una intra predicción para generar bloques predictivos para la PU. La unidad 166 de procesamiento de intra predicción puede usar un modo de intra predicción para generar los bloques de luma, Cb y Cr predictivos para la PU basándose en valores de muestra reconstruidos de bloques espacialmente vecinos. La unidad 166 de procesamiento de intra predicción puede determinar el modo de intra predicción para la PU basándose en uno o más elementos de sintaxis decodificados del flujo de bits.
La unidad 152 de procesamiento de predicción puede construir una primera lista de instantáneas de referencia (RefPicListO) y una segunda lista de instantáneas de referencia (RefPicList1) basándose en elementos de sintaxis extraídos del flujo de bits. Adicionalmente, si se codifica una PU usando inter predicción, la unidad 150 de decodificación por entropía puede obtener información de movimiento para la PU. La unidad de compensación de movimiento 164 puede determinar, basándose en la información de movimiento de la PU, una o más regiones de referencia para la PU. La unidad 164 de compensación de movimiento puede generar, basándose en muestras en el uno o más bloques de referencia para la PU, bloques de luma, Cb,y Cr predictivos para la PU.
La unidad 158 de reconstrucción puede usar los valores residuales de los bloques de transformada de luma, Cb y Cr asociados con las TU de una CU y los bloques de luma, Cb y Cr predictivos de las PU de la CU, es decir, datos de intra predicción o datos de inter predicción, según sea aplicable, para reconstruir los bloques de codificación de luma, Cb y Cr de la CU. Por ejemplo, la unidad 158 de reconstrucción puede añadir muestras de los bloques de transformada de luma, Cb y Cr a correspondientes muestras de los respectivos de luma, Cb y Cr predictivos para reconstruir los bloques de codificación de luma, Cb y Cr de la CU.
La unidad 160 de filtro puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con los bloques de codificación de luma, Cb y Cr de la CU. El decodificador 30 de vídeo puede almacenar los bloques de codificación de luma, Cb y Cr de la CU en memoria intermedia 162 de instantánea decodificada. La memoria intermedia 162 de imágenes decodificadas puede proporcionar imágenes de referencia para una compensación de movimiento posterior, intra predicción y presentación en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la Figura 1. Por ejemplo, el decodificador 30 de vídeo puede realizar, basándose en los bloques de luma, Cb y Cr en la memoria intermedia 162 de imágenes decodificadas, operaciones de intra predicción o inter predicción en PU de otras CU. De esta manera, el decodificador 30 de vídeo puede extraer, a partir del flujo de bits, niveles de coeficientes de transformada del bloque de coeficiente de luma significativo, cuantificar a la inversa los niveles de coeficientes de transformada, aplicar una transformada a los niveles de coeficientes de transformada para generar un bloque de transformada, generar, basándose al menos en parte en el bloque de transformada, un bloque de codificación y emitir el bloque de codificación para su visualización.
El decodificador 30 de vídeo es un ejemplo de un decodificador de vídeo configurado para realizar cualquiera de las técnicas descritas en esta divulgación. De acuerdo con una o más técnicas de esta divulgación, una o más unidades dentro del decodificador 30 de vídeo pueden realizar las técnicas descritas en el presente documento como parte de un proceso de decodificación de vídeo. Por ejemplo, la unidad 166 de procesamiento de intra predicción y/o la unidad 150 de decodificación por entropía, pueden estar configuradas para realizar las técnicas descritas en el presente documento como parte de un proceso de decodificación de vídeo. En algunos ejemplos, la unidad 166 de procesamiento de intra predicción puede estar configurada para realizar las técnicas descritas en el presente documento para derivar o seleccionar modos de intra predicción y/o MPM para intra predicción, usando las técnicas un número aumentado de MPM y/o modos angulares, y aplicando las técnicas un filtro de intra interpolación de N derivaciones, donde N es mayor que 2. La unidad 166 de procesamiento de intra predicción puede estar configurada para realizar las técnicas descritas en el presente documento para permitir múltiples direcciones de intra predicción por bloque, por ejemplo, respectivas direcciones para subbloques del bloque, lo que puede no requerir señalización adicional de múltiples modos de intra predicción.
La unidad 166 de procesamiento de intra predicción puede recibir información de sintaxis de la unidad 150 de decodificación por entropía, tal como un modo de intra predicción seleccionado y/o índice de MPM para intra predicción. La unidad 166 de procesamiento de intra predicción y/o la unidad 150 de decodificación por entropía pueden estar configuradas para implementar las técnicas descritas en el presente documento para decodificar la información de sintaxis relacionada con intra predicción, por ejemplo, el modo de intra predicción seleccionado y/o el índice de MPM para intra predicción, de un flujo de bits de vídeo codificado.
En las siguientes subsecciones, se proporcionan implementaciones de ejemplo de técnicas particulares de esta divulgación. En la práctica, cualquier combinación de cualquier parte de los ejemplos puede usarse como un ejemplo nuevo. Las implementaciones de ejemplo se muestran en forma de ediciones al documento JCTVC-N1003. A continuación, se muestra el texto añadido al documento JCTVC-N1003 entre las etiquetas <ins> y </ins>, siendo "ins" la abreviatura de "insertar". El texto borrado del documento JCTVC-N1003 se muestra entre las etiquetas <dlt> y </dlt>, siendo "dlt" la abreviatura de "borrar".
Se describieron varios ejemplos anteriormente en los que el codificador 20 de vídeo y el decodificador 30 de vídeo usan más de tres MPM para señalizar un modo de intra predicción de una PU. En algunos de tales ejemplos, el codificador 20 de vídeo y el decodificador 30 de vídeo usan codificación CABAC para codificar y decodificar índices de MPM. Como parte de la codificación CABAC, el codificador 20 de vídeo aplica un proceso de conversión a binario a un índice de MPM para convertir el índice de MPM en un código binario y el decodificador 30 de vídeo deshace la conversión a binario del código binario para recuperar el índice de MPM. De acuerdo con una técnica de esta divulgación, como se muestra en la Tabla 9-32 a continuación, el índice de MPM (mpm_idx) se convierte a binario usando un proceso de conversión a binario de Rice truncado (TR) y el parámetro de entrada cMax se cambia de 2 a 5 para adaptar valores mayores del índice de MPM. La sección 9.3.3.2 del documento JCTVC-N1003 describe una implementación del proceso de conversión de binario de Rice truncado.
Tabla 9-32 - elementos de sintaxis conversiones a binario asociadas
Figure imgf000032_0001
Adicionalmente, como se ha descrito anteriormente, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar modelado de contexto cuando codifican (por ejemplo, codificación CABAC) uno o más binarios de un índice de MPM. En el documento JCTVC-N1003, un índice de MPM convertido a binario (es decir, mpm_idx) consiste en tres binarios. Sin embargo, en esta divulgación, con números mayores de MPM, el índice de MPM convertido a binario puede incluir cinco o más binarios. Como se especifica en el subartículo 9.3.4.2.1 del documento JCTVC-N1003, se especifica una variable ctxlnc por la entrada correspondiente en la Tabla 9-37 y cuando se lista más de un valor en la Tabla 9-37 para un binldx, el proceso de asignación para ctxlnc para ese binldx se especifica adicionalmente en los subartículos dados en paréntesis. Como se describe adicionalmente en el subartículo 9.3.4.2.1. del documento JCTVC-N1003, se usa ctxlnc para determinar un valor de ctxldx, que es un índice de un contexto de codificación. Como se muestra en la versión editada de la Tabla 9-37 a continuación, los primeros tres binarios del índice de MPM pueden codificarse usando contextos de codificación seleccionados usando los métodos de modelado de contexto del subartículo añadido 9.3.4.x.x a continuación y los binarios restantes del índice de MPM pueden codificarse usando codificación de derivación.
Tabla 9-37 - asi nación de ctxlnc a elementos de sintaxis con binarios de contexto codificado
Figure imgf000033_0001
<ins>9.3.3.x Proceso de conversión a binario para rem_intra_luma_pred_mode la entrada a este proceso es una solicitud para una conversión a binario para el elemento de sintaxis rem_intra_luma_pred_mode.
La salida de este proceso es la conversión a binario del elemento de sintaxis.
- Si rem_intra_luma_pred_mode equivale a 28, la cadena de conversión a binario es "111";
- De lo contrario, la conversión a binario es un código de longitud fija con 5 binarios.
9.3.4.x.x Proceso de derivación de ctxInc para el elemento de sintaxis mpm_idx
Las entradas a este proceso son los intra modos del bloque vecino izquierdo candIntraPredModeA, y el bloque vecino arriba candIntraPredModeB.
La salida de este proceso es la variable ctxlnc.
La variable csbfCtx se deriva usando la ubicación actual (xS, yS), dos binarios previamente decodificados del elemento de sintaxis coded_sub_block_flag en orden de exploración y el tamaño de bloque de transformada log2TrafoSize, como sigue:
- Cuando candIntraPredModeA equivale a candIntraPredModeB, ctxlnc se deriva como sigue
ctxlnc = candIntraPredModeA > 1 ? 0 : 1
- De lo contrario
ctxlnc = (candIntraPredModeA && candIntraPredModeB)? 2 : 3</ins>
De acuerdo con algunos ejemplos de esta divulgación, se definen más de tres MPM. El siguiente texto describe cambios de ejemplo al documento JCTVC-N1003 para implementar seis MPM.
8.4.2 Proceso de derivación para modo de intra predicción de luma
La entrada a este proceso es una ubicación de luma (xPb, yPb) que especifica la muestra superior-izquierda del bloque de predicción de luma actual con relación a la muestra de luma superior-izquierda de la instantánea actual.<ins>, un tamaño de bloque de predicción nPbS</ins>.
En este proceso, se deriva el modo de intra predicción de luma IntraPredModeY[xPb][yPb]. La tabla 8-1 especifica el valor para el modo de intra predicción y los nombres asociados.
- -
Figure imgf000034_0001
IntraPredModeY[xPb][yPb] etiquetado 0..34 representa direcciones de predicciones como se ilustra en la Figura 8-1, que es la Figura 8 de esta divulgación.
IntraPredModeY[xPb][yPb] se deriva mediante las siguientes etapas ordenadas:
4. Las ubicaciones vecinas (xNbA, yNbA) y (xNbB, yNbB) se establecen igual a (xPb - 1, yPb) y (xPb, yPb - 1), respectivamente.
5. Para que X se sustituya por cualquiera de A o B, las variables candIntraPredModeX se derivan como sigue: <ins>
- candIntraPredModeX se inicializa como INTRA CC.
- Inicializar los recuentos del uso de intra modo como 0: cntIntraPredModeX[¡1=0. ¡=0, 1.....34
- Inicializar el recuento máximo de uso de intra modo como 0: cntMaxIntraPredModeX = 0;
- Para x = 0..nPbS - 1, se aplica lo siguiente
- (xCurr, yCurr) = (X==A) ? (xNbA+x, yNbA) ? (xNbA, yNbA x)
- El proceso de derivación de disponibilidad para un bloque en orden de exploración en z como se especifica en el subartículo 6.4.1 se invoca con la ubicación (xCurr, yCurr) establecida igual a (xPb, yPb) y la ubicación vecina (xNbY, yNbY) establecida igual a (xNbX, yNbX) como entradas, y la salida se asigna a availableX. - Si availableX es igual a VERDADERO y CuPredMode[xNbX1[yNbX11 es igual a MODO INTRA, se aplica lo siguiente.
- cntIntraPredModeX[CuPredMode[xCurr1[yCurr11 +
- si cntIntraPredModeX[CuPredMode[xCurr1[yCurr11 > cntMaxIntraPredModeX, se aplica lo siguiente:
- cntMaxIntraPredModeX = cntIntraPredModeX[CuPredMode[xCurr1[vCurr11:
- candIntraPredModeX = CuPredMode[xCurr1[yCurr1
</ins>
<dlt>
- El proceso de derivación de disponibilidad para un bloque en orden de exploración en z como se especifica en el subartículo 6.4.1 se invoca con la ubicación (xCurr, yCurr) establecida igual a (xPb, yPb) y la ubicación vecina (xNbY, yNbY) establecida igual a (xNbX, yNbX) como entradas, y la salida se asigna a availableX.
- El modo de intra predicción candidato candIntraPredModeX se deriva como sigue:
- Si availableX es igual a FALSO, candIntraPredModeX se establece igual a INTRA_CC.
- De lo contrario, si CuPredMode[xNbX1[yNbX1 no es igual a MODO_INTRA o pcm_flag[xNbX1[yNbX1 es igual a 1, candIntraPredModeX se establece igual a INTRA_CC,
- De lo contrario, si X es igual a B e yPb - 1 es menor que ((yPb >> CtbLog2SizeY) << CtbLog2SizeY), candIntraPredModeB se establece igual a INTRA_CC.
- De lo contrario, candIntraPredModeX se establece igual a IntraPredModeY[xNbX][yNbX].</dlt>
6. candModeList[x] con x = 0..<dlt> 2</dlt><ins>5</ins> se deriva como sigue:
- <ins> idxPlanar se establece como 0, idxDC se establece como 1;</ins>
- Si candIntraPredModeB es igual a candIntraPredModeA, se aplica lo siguiente:
- Si candIntraPredModeA es menor que 2 (es decir igual a INTRA_PLANAR o INTRA_CC), candModeList[x] con x = 0..<dlt>2</dlt><ins>5</ins> se deriva como sigue:
candModeList[ 0 ] = INTRA_PLANAR (8-15)
candModeList[ 1 ] = INTRA_CC (8-16)
candModeList[ 2 ] = INTRA_ANGULAR26 (8-17)
<ins>candModeList[ 3 ] = INTRA_ANGULAR10 (8-17)
candModeList[ 4 ] = INTRA_ANGULAR2 (8-17)
candModeList[ 5 ] = INTRA_ANGULAR18 (8-17)</ins>
</ins>
- De lo contrario, candModeList[x] con x = 0..5 se deriva como sigue:
candModeList[ 0 ] = candIntraPredModeA (8-18)
<dlt>candModeList[ 2 ] =
2 ( ( candIntraPredModeA 29 ) % 32 ) (8-19)
candModeList[ 2 ] =
2 ( ( candIntraPredModeA - 2 1 ) % 32 ) (8-20)</dlt>
</dlt>
<ins>candModeList[ 1 ] = INTRA_PLANAR (8-20)
candModeList[ 2 ] = 2 (( candIntraPredModeA -1 ) % 32 ) (8-19)
candModeList[ 3 ] = 2 ( ( candIntraPredModeA 29 ) % 32 ) (8-20)
candModeList[ 4 ] = 2 (( candModeList[ 2 ] -1 ) % 32 ) (8-20)
candModeList[ 5 ] = INTRA_CC (8-20)
idxPlanar = 1
idxDC = 5</ins>
De lo contrario (candIntraPredModeB no es igual a candlntraPredModeA), se aplica lo siguiente:
- candModeList[0] y candModeList[1] se derivan como sigue:
candModeList[ 0 ] = candlntraPredModeA (8-21)
candModeList[ 1 ] = candIntraPredModeB (8-22)
- Si ninguno de candModeList[0] y candModeList[1] es igual a INTRA_PLANAR, candModeList[2] se establece igual a INTRA_PLANAR, <ins>y se aplica lo siguiente:
- maxDir = max(candModeList[0], candModeList[1])
- minDir = min(candModeList[0], candModeList[1])
- idxPlanar = 2
- Si alguno de candModeList[0] y candModeList[1] es igual a INTRA_CC, se aplica lo siguiente:
candModeList[ 3 ] = 2 ( ( maxDir 29 ) % 32 ) (8-21)
candModeList[ 4 ] = 2 ( ( maxDir -1 ) % 32 ) (8-22)
candModeList[ 5 ] = 2 (( candModeList[ 4 ] -1 ) % 32 ) (8-22)
idxDC = (candModeList[0]== INTRA_CC) ? 0 : 1
De lo contrario
candModeList[ 3 ] = INTRA_CC (8-21)
candModeList[ 4 ] = 2 ( ( maxDir -1 ) % 32 ) (8-22)
- Si candModeList[4] equivale a minDir, candModeList[4]++ candModeList[5] = 2 ((candModeList[4] 29) % 32) (8-22)
- Si candModeList[5] equivale a maxDir, candModeList[51--- Si candModeList[5] equivale a candModeList[4], candModeList[5]= minDir+1 idxDC = 3</ins>
- De lo contrario, si ninguno de candModeList[0] ni candModeList[1] es igual a INTRA_CC, candModeList[2] se establece igual a INTRA_CC, <ins>se aplica lo siguiente:
candModeList[3] = 2 ((candIntraPredModeA 29) % 32) candModeList[4] = 2 ((candIntraPredModeA - 1) % 32) candModeList[5] = 2 ((candModeList[4] - 1) % 32) idxPlanar = (candModeList[0]== INTRA_PLANAR) ? 0 : 1 idxDC = 2</ins>
- De lo contrario, candModeList[2] se establece igual a INTRA_ANGULAR26, se aplica lo siguiente: <ins>candModeList[3] = INTRA_ANGULAR10 candModeList[4] = INTRA_ANGULAR2 candModeList[5] = INTRA_ANGULAR18 idxPlanar = (candModeList[0]== INTRA_PLANAR) ? 0 : 1 idxDC = 1- idxPlanar</ins>
7. IntraPredModeY[xPb][yPb] se deriva aplicando el siguiente procedimiento:
- Si prev_intra_luma_pred_flag[xPb][yPb] es igual a 1, IntraPredModeY[xPb][yPb] se establece igual a candModeList[mpm_idx].
- De lo contrario, IntraPredModeY[xPb][yPb] se deriva aplicando las siguientes etapas ordenadas:
1) La matriz candModeList[x], x = 0...<dlt>2</dlt><ins>5</ins> se modifica como las siguientes etapas ordenadas:<ins>
i. candModeList[idxPlanar] = candModeList[0]
ii. candModeList[idxDC] = candModeList[1]
iii. candModeList[0] = INTRA_PLANAR
iv. candModeList[1] = INTRA_CC</ins>
v. Cuando candModeList[<dlt>0</dlt><ins>2</ins>] es mayor que candModeList[<dlt>1</dlt><ins>3</ins>], ambos valores se intercambian como sigue:
(candModeList[<dlt>0</dlt><ins>2</ins>], candModeList[<dlt>1</dlt><ins>3</ins>]) = Swap(candModeList[<dlt>0</dlt><ins>2</ins>], candModeList[<dlt>1</dlt><ins>3</ins>]) (8-23) vi. Cuando candModeList[<dlt>0</dlt><ins>2</ins>] es mayor que candModeList[<dlt>2</dlt><ins>4</ins>], ambos valores se intercambian como sigue:
(candModeList[<dlt>0</dlt><ins>2</ins>], candModeList[<dlt>2</dlt><ins>4</ins>]) = Swap(candModeList[ <dlt>0</dlt><ins>2</ins>], candModeList[<dlt>2</dlt><ins>4</ins>]) (8-24)
vii. <ins>Cuando candModeList[2 1 es mayor que candModeList[51, ambos valores se intercambian como sigue: (candModeList[21, candModeList[51) = Swap( candModeList[21, candModeList[51)</ins> viii. Cuando candModeList[<dlt>1</dlt><ins>3</ins>1 es mayor que candModeList[<dlt>2</dlt><ins>4</ins>1, ambos valores se intercambian como sigue:
(candModeList[<dlt>1</delete ><ins>3</ins>1, candModeList[<dlt>2</dlt><ins>4</ins>1) = Swap(candModeList[ <dlt>1</dlt><ins>3</ins>1, candModeList[<dlt>2</dlt><ins>4</ins>1) (8-25) ix. <ins>Cuando candModeList[31 es mayor que candModeList[51, ambos valores se intercambian como sigue: (candModeList[31, candModeList[51) = Swap( candModeList[31, candModeList[51)
x. Cuando candModeList[41 es mayor que candModeList[51, ambos valores se intercambian como sigue: (candModeList[41, candModeList[51) = Swap(candModeList[41, candModeList[51 )</ins>
2) IntraPredModeY[xPb1[yPb1 se deriva mediante las siguientes etapas ordenadas:
i. IntraPredModeY[xPb1[yPb1 se establece igual a rem_intra_luma_pred_mode[xPb1[yPb1.
ii. Para i igual a 0 a <dlt>2</dlt><ins>5</ins>, inclusive, cuando IntraPredModeY[xPb1[yPb1 es mayor o igual que candModeList[i1, el valor de IntraPredModeY[xPb1[yPb1 se incrementa en uno.
En la versión adaptada del ejemplo del subartículo 8.4.2 del documento JCTVC-N1003 mostrado anteriormente, el proceso de derivación para el MPM de la PU actual incluye un proceso de derivación para un modo de intra predicción representativo (candIntraPredModeA) para una columna vecina izquierda y un modo de intra predicción representativo (candIntraPredModeB) para una fila vecina arriba. En este ejemplo, la columna vecina izquierda corresponde a las muestras (xNbA, yNbA x) para x = x..nPbs y la fila vecina arriba corresponde a las muestras (xNbA+x, yNbA) para x = 0..nPbs), donde nPbs es la anchura y altura del bloque de predicción de la PU actual.
Adicionalmente, en la versión adaptada del ejemplo del subartículo 8.4.2 del documento JCTVC-N1003 mostrado anteriormente, la lista de candidatos de MPM (es decir, candModeList) siempre incluye los modos de predicción planar, CC, vertical (es decir, INTRA_ANGULAR26), horizontal (es decir, INTRA_An Gu LAR10) y diagonal (es decir, INTRA_ANGULAR18) si candIntraPredModeA es el mismo que candIntraPredModeB y candIntraPredModeA es planar o CC. Sin embargo, en este ejemplo, si candIntraPredModeA no es planar ni CC, la lista de candidatos de MPM incluye candIntraPredModeA, la intra predicción planar, tres modos de intra predicción angular más cerca de candIntraPredModeA y el modo de intra predicción de CC. Los tres modos de intra predicción angular más cerca de candIntraPredModeA se calculan como:
2 ( (candIntraPredModeA -1 ) % 32),
(2 ( ( candIntraPredModeA 29 ) % 32 ),
y
2 ( ( candModeList[ 2 ]-1 ) % 32 )
En las fórmulas anteriores, % indica la operación módulo.
De manera similar, en la versión adaptada de ejemplo del subartículo 8.4.2 del documento JCTVC-N1003 mostrado anteriormente, si candIntraPredModeA no es igual a candIntraPredModeB, el codificador de vídeo puede incluir en la lista de candidatos de MPM, otros modos de intra predicción angular determinados que están más cerca de cualquiera de candIntraPredModeA o candIntraPredModeB usando las fórmulas mostradas en la versión adaptada del ejemplo del subartículo 8.4.2 del documento JCTVC-N1003 que incluye operaciones de módulo.
Como se ha descrito anteriormente, en algunos ejemplos de esta divulgación, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden usar más de 33 modos de intra predicción angular. El siguiente texto describe cambios de ejemplo al documento JCTVC-N1003 para implementar 65 modos de intra predicción angular.
8.4.4.2.6 Especificación de modo de intra predicción en el intervalo de INTRA_ANGULAR2.. INTRA_ANGULAR34
Las entradas a este proceso son:
- el modo de intra predicción predModeIntra,
- las muestras vecinas p[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = -1,
- una variable nTbS que especifica el tamaño de bloque de transformada,
- una variable cIdx que especifica el componente de color del bloque actual.
Las salidas de este proceso son las muestras previstas predSamples[x][y], con x, y = 0..nTbS -1.
La Figura 8-2, que es la Figura 9 de esta divulgación, ilustra los 33 intra ángulos totales y la tabla 8-4 especifica la tabla de mapeo entre predModeIntra y el parámetro de ángulo intraPredAngle.
<dlt>Tabla 8-4 - es ecificación de intraPredAn le
Figure imgf000037_0001
</dlt>
<ins>Tabla 8-4 - es ecificación^ de intraPredAn le
Figure imgf000038_0001
</ins>
La tabla 8-5 especifica adicionalmente la tabla de mapeo entre predModeIntra y el parámetro de ángulo inverso invAngle.
Tabla 8-5 - es ecificación de invAn le
Figure imgf000038_0002
Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue:
- Si predModeIntra es igual o mayor que 18, se aplican las siguientes etapas ordenadas:
1. La matriz de muestras de referencia ref[x] se especifica como sigue:
- Se aplica lo siguiente:
ref[ x ] = p[ -1 x ][ -1 ], con x = 0..nTbS (8-47)
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende como sigue: - Cuando (nTbS * intraPredAngle) » 5 es menor que -1,
ref[ x ] = p[ -1 ][ -1 ( ( x * invAngle 128 ) >> 8 ) ],
con x = -1..( nTbS * intraPredAngle ) >> 5 (8-48)
- De lo contrario,
ref[ x ] = p[ -1 x ][ -1 ], con x = nTbS 1..2 * nTbS (8-49)
2. Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: a. La variable de índice ildx y el factor de multiplicación iFact se derivan como sigue:
iIdx = ((y+l)* intraPredAngle ) >> 5 (8-50)
iFact = ( ( y 1 ) * intraPredAngle) & 31 (8-51)
b. Dependiendo del valor de iFact, se aplica lo siguiente:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
predSamples[ x ][ y ] =
( ( 32 - iFact) * ref[ x iIdx 1 ] iFact * ref[ x iIdx 2 ] 16 ) >> 5 (8-52) - De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[ x ][ y ] = ref[ x ildx 1 ] (8-53)
c. Cuando predModeIntra es igual a 26 (vertical), cldx es igual a 0 y nTbS es menor que 32, se aplica la siguiente filtración con x = 0, y = 0..nTbS -1:
predSamples[ x ][ y ] =
CliplY(p[x][-1] ((p[-1][y]-p[-1][-1]) » 1)) (8-54)
- De lo contrario (predModeIntra es menor que 18), se aplican las siguientes etapas ordenadas:
1. La matriz de muestras de referencia ref[x] se especifica como sigue:
- Se aplica lo siguiente:
ref[ x ] = p[ -1 ][ -1 x ], con x = 0..nTbS (8-55)
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende como sigue: - Cuando (nTbS * intraPredAngle) >> 5 es menor que -1,
ref[ x ] = p[ -1 ( ( x * invAngle 128 ) >> 8 ) ][ -1 ],
con x = -1..( nTbS * intraPredAngle ) >> 5 (8-56)
- De lo contrario,
ref[ x ] = p[ -1 ][ -1 x ], con x = nTbS 1..2 * nTbS (8-57)
2. Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: a. La variable de índice ildx y el factor de multiplicación iFact se derivan como sigue:
ildx = ((x+l)* intraPredAngle ) >> 5 (8-58)
iFact = ((x+l)* intraPredAngle ) & 31 (8-59)
b. Dependiendo del valor de iFact, se aplica lo siguiente:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[ x ][ y ] =
( ( 32 - iFact) * ref[ y ildx 1 ] iFact * ref[ y ildx 2 ] 16 ) >>5 (8-60)
- De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
predSamples[ x ][ y ] = ref[ y ildx 1 ] (8-61) c. Cuando predModeIntra es igual a 10 (horizontal), cldx es igual a 0 y nTbS es menor que 32, se aplica la siguiente filtración con x = 0..nTbS -1, y = 0:
predSamples[ x ][ y ] =
Clip1Y(p[-1][y] ((p[x][-1]-p[-1][-1]) >> 1)) (8 -6 2 )
La tabla 8-5 especifica adicionalmente la tabla de mapeo entre predModelntra y el parámetro de ángulo inverso invAngle.
Tabla 8-5 - es ecificación de invAn le
Figure imgf000039_0001
Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: - Si predModeIntra es igual o mayor que 18, se aplican las siguientes etapas ordenadas:
7.4.9.11 Semántica de codificación residual
Para intra predicción, se usan diferentes órdenes de exploración. La variable scanldx especifica qué orden de exploración se usa donde scanldx igual a 0 especifica un orden de exploración diagonal arriba-derecha, scanldx igual a 1 especifica un orden de exploración horizontal, y scanldx igual a 2 especifica un orden de exploración vertical. El valor de scanldx se deriva como sigue:
- Si CuPredMode[x0][y0] es igual a MODO_INTRA y se cumple una o más de las siguientes condiciones:
- log2TrafoSize es igual a 2.
- log2TrafoSize es igual a 3 y cIdx es igual a 0.
predModeIntra se deriva como sigue:
- Si cIdx es igual a 0, predModeIntra se establece igual a IntraPredModeY[x0][y0].
- De lo contrario, predModeIntra se establece igual a IntraPredModeC.
scanldx se deriva como sigue:
- Si predModeIntra está en el intervalo de <dlt>6</dlt><ins>10</ins> a <dlt>14</dlt><ins>26</ins>, inclusive, scanldx se establece igual a 2 .
- De lo contrario, si predModeIntra está en el intervalo de <dlt>22</dlt><ins>42</ins> a <dlt>30</dlt><ins>58</ins>, inclusive, scanldx se establece igual a 1.
- De lo contrario, scanldx se establece igual a 0.
- De lo contrario, scanldx se establece igual a 0.
8.4.4.2.3 Proceso de filtración de muestras vecinas
Las entradas a este proceso son:
- las muestras vecinas p[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = -1,
- una variable nTbS que especifica el tamaño de bloque de transformada.
Las salidas de este proceso son las muestras filtradas pF[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = - 1.
La variable filterFlag se deriva como sigue:
- Si se cumplen una o más de las siguientes condiciones, filterFlag se establece igual a 0:
- predModeIntra es igual a INTRA_CC.
- nTbS es igual a 4.
- De lo contrario, se aplica lo siguiente:
- La variable minDistVerHor se establece igual a Min(Abs(predModeIntra - 26), Abs(predModeIntra -10)). - La variable intraHorVerDistThres[nTbS] se especifica en la Tabla 8-3.
- La variable filterFlag se deriva como sigue:
- Si minDistVerHor es mayor que intraHorVerDistThres[nTbS], filterFlag se establece igual a 1.
- De lo contrario, filterFlag se establece igual a 0.
7.4.9.11 Semántica de codificación residual
Para intra predicción, se usan diferentes órdenes de exploración. La variable scanldx especifica qué orden de exploración se usa donde scanldx igual a 0 especifica un orden de exploración diagonal arriba-derecha, scanldx igual a 1 especifica un orden de exploración horizontal, y scanIdx igual a 2 especifica un orden de exploración vertical. El valor de scanIdx se deriva como sigue:
- Si CuPredMode[x0][y0] es igual a MODO_INTRA y se cumple una o más de las siguientes condiciones:
- log2TrafoSize es igual a 2.
- log2TrafoSize es igual a 3 y cIdx es igual a 0.
predModeIntra se deriva como sigue:
- Si cIdx es igual a 0, predModeIntra se establece igual a IntraPredModeY[x0][y0].
- De lo contrario, predModeIntra se establece igual a IntraPredModeC.
scanIdx se deriva como sigue:
- Si predModeIntra está en el intervalo de <dlt>6</dlt><ins>10</ins> a <dlt>14</dlt><ins>26</ins>, inclusive, scanIdx se establece igual a 2.
- De lo contrario, si predModeIntra está en el intervalo de <dlt>22</dlt><ins>42</ins> a <dlt>30</dlt><ins>58</ins>, inclusive, scanldx se establece igual a 1.
- De lo contrario, scanIdx se establece igual a 0.
- De lo contrario, scanIdx se establece igual a 0.
8.4.4.2.3 Proceso de filtración de muestras vecinas
Las entradas a este proceso son:
- las muestras vecinas p[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = -1,
- una variable nTbS que especifica el tamaño de bloque de transformada.
Las salidas de este proceso son las muestras filtradas pF[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = - 1.
La variable filterFlag se deriva como sigue:
- Si se cumplen una o más de las siguientes condiciones, filterFlag se establece igual a 0:
- predModeIntra es igual a INTRA_CC.
- nTbS es igual a 4.
- De lo contrario, se aplica lo siguiente:
- La variable minDistVerHor se establece igual a Min(Abs(predModeIntra - 26), Abs(predModeIntra -10)). - La variable intraHorVerDistThres[nTbS] se especifica en la Tabla 8-3.
- La variable filterFlag se deriva como sigue:
- Si minDistVerHor es mayor que intraHorVerDistThres[nTbS], filterFlag se establece igual a 1.
- De lo contrario, filterFlag se establece igual a 0.
Tabla 8-3 - es ecificación de intraHorVerDistThres nTbS ara diversos tamaños de blo ue de transformada
Figure imgf000042_0001
Cuando filterFlag es igual a 1, se aplica lo siguiente:
Como se ha descrito anteriormente, de acuerdo con algunas técnicas de esta divulgación, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden aplicar un filtro de intra interpolación de N derivaciones. El siguiente texto describe cambios de ejemplo al documento JCTVC-N1003 para implementar la aplicación de un filtro de intra interpolación de 4 derivaciones.
<ins>x.x.x Proceso de inicialización de coeficientes de filtro de intra interpolación</¡ns>
La salida de este proceso es la matriz filterCubic[sFrac][pos]. El índice de matriz sFrac especifica la posición fraccional que varía de 0 a 31, pos especifica el coeficiente de filtro para la muestra de orden pos. La matriz filterCubic y filterGaussian se deriva como sigue:
<ins>filterCubic [32][4] = {
{
{ 0, 256, 0, 0 }, // 0
{ -3,252, 8 , -1 },// 1
{ -5, 247, 17, -3 }, // 2
{ -7, 242, 25, -4 }, // 3
{ -9, 236, 34, -5 }, // 4
{ -10, 230, 43, -7 }, // 5
{ -12, 224, 52, - 8 }, // 6
{ -13,217, 61, -9 },// 7
{ -14,210, 70,-10 },// 8
{ -15,203, 79,-11 },// 9
{ -16, 195, 89, -12 },// 10
{ -16, 187, 98, -13 },// 11
{ -16, 179, 107, -14 },// 12
{ -16, 170, 116, -14 },// 13
{ -17, 162, 126, -15 },// 14
{ -16, 153, 135, -16 },// 15
{ -16, 144, 144, -16 },// 16
},
};
sigma = 0,9
for( i=0; i<17; i++ )
{
for( c=0; c<4; C++ )
{
filterGaussian [b][i][c] = (256,0 * exp(-((c-delta)/sigma)2) / sum 0,5 );
}
}
for(i=17; i<32; i++)
{
for( c=0; c<4; C++ )
{
filterCubic [b][i][c] = filterCubic [b][32-i][3-c];
filterGaussian [b][i][c] = filterGaussian [b][32-i][3-c];
}
}
</ins>
8.4.4.2.6 Especificación de modo de intra predicción en el intervalo de INTRA ANGULAR2. INTRA ANGULAR34 Las entradas a este proceso son:
- el modo de intra predicción predModeIntra,
- las muestras vecinas p[x][y], con x = -1, y = -1..nTbS * 2 -1 y x = 0..nTbS * 2 -1 , y = -1,
- una variable nTbS que especifica el tamaño de bloque de transformada,
- una variable cIdx que especifica el componente de color del bloque actual.
Las salidas de este proceso son las muestras previstas predSamples[x][y], con x, y = 0..nTbS -1.
Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: - Si predModeIntra es igual o mayor que 18, se aplican las siguientes etapas ordenadas:
3. La matriz de muestras de referencia ref[x] se especifica como sigue:
- Se aplica lo siguiente:
ref[ x ] = p[ -1 x ][ -1 ], con x = 0..nTbS (8-47)
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende como sigue: - Cuando (nTbS * intraPredAngle) >> 5 es menor que -1,
ref[ x ] = p[ -1 ][ -1 ( ( x * invAngle 128 ) >> 8 ) ],
con x = -1..( nTbS * intraPredAngle ) >> 5 (8-48)
- De lo contrario,
ref[ x ] = p[ -1 x ][ -1 ], con x = nTbS 1..2 * nTbS (8-49)
4. Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: a. La variable de índice ildx y el factor de multiplicación iFact se derivan como sigue:
iIdx = ((y+1)* intraPredAngle ) >> 5 (8-50)
iFact = ( ( y 1 ) * intraPredAngle ) & 31 (8-51)
b. Dependiendo del valor de iFact, se aplica lo siguiente:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
<dlt>predSamples[ x ][ y ] =
( ( 32 - iFact) * ref[ x iIdx 1 ] iFact * ref[ x iIdx 2 ] 16 ) >> 5 (8-52)</dlt> <ins>For p=0,..,3, pF[p] = (cIdx==0 && nTbS<=8 ) ? filterCubic[iFact][p]: filterGaussian[iFact][p]
P[1] = ref[ x iIdx 1 ]
P[2] = ref[ x iIdx 2 ]
P[0] =( x==0) ? ref[ x ildx 1 ] : ref[ x ildx ]
P[3] =( x==nTbS-1) ? ref[ x ildx 2 ] : ref[ x ildx 3]
predSamples[ x ][ y ] =
( pF[O] * P[O] pF[1] * P[1] pF[2] * P[2]
pF[3] * P[3] 128) >> 8 (8-52)</ins>
- De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
predSamples[ x ][ y ] = ref[ x iIdx 1 ] (8-53)
c. Cuando predModeIntra es igual a 26 (vertical), cIdx es igual a 0 y nTbS es menor que 32, se aplica la siguiente filtración con x = 0, y = 0..nTbS -1:
predSamples[ x ][ y ] =
Clip1Y(p[x][-1] ((p[-1][y]-p[-1][-1]) >> 1)) (8-54)
- De lo contrario (predModeIntra es menor que 18), se aplican las siguientes etapas ordenadas:
3. La matriz de muestras de referencia ref[x] se especifica como sigue:
- Se aplica lo siguiente:
ref[ x ] = p[ -1 ][ -1 x ], con x = 0..nTbS (8-55)
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende como sigue: - Cuando (nTbS * intraPredAngle) >> 5 es menor que -1,
ref[ x ] = p[ -1 ( ( x * invAngle 128 ) >> 8 ) ][ -1 ],
con x = -1..( nTbS * intraPredAngle ) >> 5 (8-56)
- De lo contrario,
ref[ x ] = p[ -1 ][ -1 x ], con x = nTbS 1..2 * nTbS (8-57)
4. Los valores de las muestras de predicción predSamples[x][y], con x, y = 0..nTbS -1 se derivan como sigue: d. La variable de índice ildx y el factor de multiplicación iFact se derivan como sigue:
ildx = ((x+l)* intraPredAngle ) >> 5 (8-58)
iFact = ((x+l)* intraPredAngle ) & 31 (8-59)
e. Dependiendo del valor de iFact, se aplica lo siguiente:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
predSamples[ x ][ y ] =
( ( 32 - iFact) * ref[ y ildx 1 ] iFact * ref[ y ildx 2 ] 16 ) >> 5 (8-60) - De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue:
predSamples[ x ][ y ] = ref[ y ildx 1 (8-61)
f. Cuando predModelntra es igual a 10 (horizontal), cldx es igual a 0 y nTbS es menor que 32, se aplica la siguiente filtración con x = 0..nTbS -1, y = 0:
predSamples[ x ][ y ] =
Clip1Y(p[-1][y] ((p[x][-1]-p[-1][-1]) >> 1)) (8 -6 2 )
Los métodos descritos adicionalmente de acuerdo con las técnicas de esta divulgación no están de acuerdo con la invención y se presentan para fines de ilustración únicamente.
La Figura 10 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 10 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 2 0 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo deriva, de entre una pluralidad de modos de intra predicción, los MMPM para intra predicción de un bloque de datos (200) de vídeo. En un ejemplo, M puede ser mayor que 3. El codificador de vídeo codifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo (202) de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Basándose en el indicado del índice de MPM o el índice no de MPM que es el índice de MPM, el codificador de vídeo selecciona, para cada uno de uno o más binarios de contexto modelado del índice de MPM, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos, un índice de contexto para el binario (204) de contexto modelado. El codificador de vídeo codifica el bloque de datos de vídeo basándose en el modo (206) de intra predicción seleccionado.
La Figura 11 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 11 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo deriva, de entre una pluralidad de modos de intra predicción, M MPM para intra predicción de un bloque de datos (220) de vídeo. En un ejemplo, M puede ser mayor que 3. El decodificador de vídeo codifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo (222) de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos de vídeo. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los MMPM es el modo de intra predicción seleccionado. Basándose en el indicado del índice de MPM o el índice no de MPM que es el índice de MPM, el decodificador de vídeo selecciona, para cada uno de uno o más binarios de contexto modelado del índice de MPM, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos, un índice de contexto para el binario (224) de contexto modelado. El decodificador de vídeo reconstruye el bloque de datos de vídeo basándose en el modo (226) de intra predicción seleccionado.
La Figura 12 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 12 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 2 0 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo deriva M MPM (300) para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En un ejemplo, M puede ser mayor que 3 y el MPM puede incluir un MPM para una columna vecina izquierda y un MPM para una fila vecina arriba. En un ejemplo, los M MPM pueden derivarse por al menos uno de (i) definir un modo de intra predicción representativo para la columna vecina izquierda y usar el modo de intra predicción representativo para la columna vecina izquierda como el MPM para la columna vecina izquierda (302), o (ii) definir un modo de intra predicción representativo para la fila vecina arriba y usar el modo de intra predicción representativo para la fila vecina arriba como el MPM para la fila (304) vecina arriba.
El codificador de vídeo puede codificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (306) de vídeo. Adicionalmente, el codificador de vídeo puede codificar el indicado del índice de MPM o del índice (308) no de MPM. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. El codificador de vídeo puede codificar el bloque de datos de vídeo basándose en el modo (310) de intra predicción seleccionado.
La Figura 13 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 13 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo deriva M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de los modos (350) de intra predicción. En un ejemplo, M puede ser mayor que 3 y el MPM puede incluir un MPM para una columna vecina izquierda y un MPM para una fila vecina arriba. Los M modos más probables pueden derivarse por al menos uno de (i) definir un modo de intra predicción representativo para la columna vecina izquierda y usar el modo de intra predicción representativo para la columna vecina izquierda como el MPM para la columna vecina izquierda (352), o (ii) definir un modo de intra predicción representativo para la fila vecina arriba y usar el modo de intra predicción representativo para la fila vecina arriba como el MPM para la fila (354) vecina arriba.
El decodificador de vídeo puede decodificar un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (356) de vídeo. Adicionalmente, el decodificador de vídeo puede decodificar el indicado del índice de MPM o del índice (358) no de MPM. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. El decodificador de vídeo puede codificar el bloque de datos de vídeo basándose en el modo (360) de intra predicción seleccionado.
La Figura 14 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 14 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 20 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo deriva M MPM (400) para intra predicción del bloque de datos de vídeo de entre una pluralidad de modos de intra predicción. En un ejemplo, M puede ser mayor que 3. El codificador de vídeo codifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (402) de vídeo. En el ejemplo de la Figura 12, el índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. Adicionalmente, el índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Basándose en el índice de MPM que indica el modo de intra predicción seleccionado, el codificador de vídeo codifica el índice (404) no de MPM. En el ejemplo de la Figura 14, se codifica el índice no de MPM en el flujo de bits como una palabra de código más corta que [log2 N] bits si el índice no de MPM satisface un criterio y se codifica en el flujo de bits como un código de longitud fija con [log2 N]bits, de lo contrario. En el ejemplo de la Figura 14, hay un total de N valores disponibles del índice no de MPM. El codificador de vídeo codifica el bloque de datos de vídeo basándose en el modo (406) de intra predicción seleccionado.
La Figura 15 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 15 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo deriva M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de los modos (450) de intra predicción. En un ejemplo, M puede ser mayor que 3. El decodificador de vídeo decodifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (452) de vídeo. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. Basándose en el índice de MPM que indica el modo de intra predicción seleccionado, el decodificador de vídeo decodifica el índice (454) no de MPM. En el ejemplo de la Figura 15, se codifica el índice no de MPM se codifica en el flujo de bits como una palabra de código más corta que [log2 W]bits si el índice no de MPM satisface un criterio y se codifica en el flujo de bits como un código de longitud fija con [log2 N] bits, de lo contrario. En el ejemplo de la Figura 15, puede haber un total de N valores disponibles del índice no de MPM. Adicionalmente, en el ejemplo de la Figura 15, el decodificador de vídeo reconstruye el bloque de datos de vídeo basándose en el modo (456) de intra predicción seleccionado.
La Figura 16 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 16 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 20 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo deriva M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de los modos (600) de intra predicción. En el ejemplo de la Figura 16, M es mayor que 3. El codificador de vídeo codifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (602) de vídeo. El codificador de vídeo codifica el indicado del índice de MPM o el índice (604) no de MPM. El índice de MPM indica cuál de los MMPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MPM es el modo de intra predicción seleccionado. El codificador de vídeo codifica el bloque de datos de vídeo basándose en el modo (606) de intra predicción seleccionado.
La Figura 17 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 17 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo deriva M MPM para intra predicción del bloque de datos de vídeo de entre una pluralidad de los modos (650) de intra predicción. En el ejemplo de la Figura 17, M es mayor que 3. El decodificador de vídeo decodifica un elemento de sintaxis que indica si se usa un índice de MPM o un índice no de MPM para indicar un modo de intra predicción seleccionado de la pluralidad de modos de intra predicción para intra predicción del bloque de datos (652) de vídeo. El decodificador de vídeo decodifica el indicado del índice de MPM o del índice (654) no de MPM. El índice de MPM indica cuál de los M MPM es el modo de intra predicción seleccionado. El índice no de MPM indica cuál de la pluralidad de modos de intra predicción distinto de los M MMM es el modo (654) de intra predicción seleccionado. El decodificador de vídeo reconstruye el bloque de datos de vídeo basándose en el modo (656) de intra predicción seleccionado.
La Figura 18 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 18 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 2 0 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo codifica información de sintaxis que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de modos (700) de intra predicción. En un ejemplo, la pluralidad de modos de intra predicción puede incluir más de 33 modos de intra predicción angular. Los modos de intra predicción angular pueden definirse de manera que se realiza la interpolación en precisión de 1/32 pel. El codificador de vídeo codifica el bloque de datos de vídeo basándose en el modo (702) de intra predicción seleccionado.
La Figura 19 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 19 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo decodifica información de sintaxis que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de los modos (750) de intra predicción. En un ejemplo, la pluralidad de modos de intra predicción puede incluir más de 33 modos de intra predicción angular, y los modos de intra predicción angular pueden definirse de manera que se realiza la interpolación en precisión de 1/32 pel. El decodificador de vídeo puede reconstruir el bloque de datos de vídeo basándose en el modo (752) de intra predicción seleccionado.
La Figura 20 es un diagrama de flujo que ilustra un método de codificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 20 se describe con referencia a un codificador de vídeo genérico. El codificador de vídeo genérico puede corresponder, por ejemplo, al codificador 2 0 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de codificador de vídeo. El codificador de vídeo codifica información de sintaxis que indica un modo de intra predicción seleccionado para el bloque de datos de vídeo de entre una pluralidad de modos (800) de intra predicción. El codificador de vídeo aplica un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas del bloque de datos de vídeo de acuerdo con el modo (802) de intra predicción seleccionado. En un ejemplo, N puede ser mayor que 2. El codificador de vídeo puede codificar el bloque de datos de vídeo basándose en las muestras reconstruidas vecinas filtradas de acuerdo con el modo (804) de intra predicción seleccionado.
La Figura 21 es un diagrama de flujo que ilustra un método de decodificación de datos de vídeo de acuerdo con técnicas de esta divulgación. La Figura 21 se describe con referencia a un decodificador de vídeo genérico. El decodificador de vídeo genérico puede corresponder, por ejemplo, al decodificador 30 de vídeo, aunque las técnicas de esta divulgación no están limitadas a ningún tipo específico de decodificador de vídeo. El decodificador de vídeo decodifica información de sintaxis que indica un modo de intra predicción seleccionado para un bloque de datos de vídeo de entre una pluralidad de los modos (850) de intra predicción. El decodificador de vídeo aplica un filtro de intra interpolación de N derivaciones a muestras reconstruidas vecinas del bloque de datos de vídeo de acuerdo con el modo (852) de intra predicción seleccionado. En un ejemplo, N puede ser mayor que 2. El decodificador de vídeo puede reconstruir el bloque de datos de vídeo basándose en las muestras reconstruidas vecinas filtradas de acuerdo con el modo (854) de intra predicción seleccionado.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Medio legible por ordenador puede incluir medio de almacenamiento legible por ordenador, que corresponde a un medio de almacenamiento tal como un medio de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, medio legible por ordenador generalmente puede corresponder a (1 ) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2) un medio de comunicación tal como una señal u onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que medio de almacenamiento legible por ordenador y medio de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medio de almacenamiento tangible no transitorio. Disco magnético y disco óptico, como se usan en el presente documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Combinaciones de lo anterior deberían incluirse también dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ejecutarse por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento, puede hacer referencia a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software especializados configurados para codificar y decodificar, o incorporarse en un códec combinado. También, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware inter operativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.

Claims (11)

REIVINDICACIONES
1. Un método de decodificación de un bloque de datos de vídeo, comprendiendo el método:
seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos del bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; decodificar (750) información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y
reconstruir (752) el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel, en donde la reconstrucción del bloque de datos de vídeo comprende:
para cada respectiva muestra de un bloque predictivo de la PU actual:
determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y
calcular un valor de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
2. El método de la reivindicación 1, que comprende adicionalmente determinar, basándose en al menos uno de un tamaño de unidad de codificación o un tamaño de unidad de predicción, un número total de los modos de intra predicción en la pluralidad de modos de intra predicción.
3. El método de la reivindicación 1, en donde un número total de los modos de intra predicción en la pluralidad de modos de intra predicción se señaliza en al menos uno de: un conjunto de parámetros de secuencia, un conjunto de parámetros de instantánea o un encabezado de corte.
4. El método de la reivindicación 1, en donde el filtro de interpolación se formula como:
pxy = (1- a )L aR ,
donde pxy es el valor calculado de la respectiva muestra, L y R son valores de las dos muestras vecinas reconstruidas, y a es la posición fraccional determinada.
5. Un método de codificación de un bloque de datos de vídeo, comprendiendo el método:
seleccionar, basándose en modos de intra predicción usados para codificar uno o más bloques vecinos del bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; codificar (700) información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y
codificar (702) el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel, en donde la codificación del bloque de datos de vídeo comprende:
para cada respectiva muestra de un bloque predictivo de la PU actual:
determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y
calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
6. El método de la reivindicación 5, que comprende adicionalmente determinar, basándose en al menos uno de un tamaño de unidad de codificación o un tamaño de unidad de predicción, un número total de los modos de intra predicción en la pluralidad de modos de intra predicción.
7. El método de la reivindicación 5, en donde un número total de los modos de intra predicción en la pluralidad de modos de intra predicción se señaliza en al menos uno de: un conjunto de parámetros de secuencia, un conjunto de parámetros de instantánea o un encabezado de corte.
8. El método de la reivindicación 5, en donde el filtro de interpolación se formula como:
pxy = (1 - a )L aR ,
donde pxy es el valor calculado de la respectiva muestra, L y R son valores de las dos muestras vecinas reconstruidas, y a es la posición fraccional determinada.
9. Un dispositivo para decodificar datos de vídeo, comprendiendo el dispositivo:
una memoria configurada para almacenar los datos de vídeo; y
uno o más procesadores configurados para:
seleccionar, basándose en modos de intra predicción usados para decodificar uno o más bloques vecinos de un bloque de datos de vídeo en una instantánea actual de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular;
decodificar (750) información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y
reconstruir (752) el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado, los modos de intra predicción angular definidos de manera que se realiza la interpolación en precisión de 1/32 pel, en donde la reconstrucción del bloque de datos de vídeo comprende:
para cada respectiva muestra de un bloque predictivo de la PU actual:
determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y
calcular un valor de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
10. Un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo:
una memoria configurada para almacenar los datos de vídeo; y
uno o más procesadores configurados para:
seleccionar, basándose en modos de intra predicción usados para codificar uno o más bloques vecinos de un bloque de datos de vídeo, un subconjunto de 33 modos de intra predicción angular de entre una pluralidad de modos de intra predicción, en donde la pluralidad de modos de intra predicción incluye 65 modos de intra predicción angular; codificar (700) información de sintaxis que indica un modo de intra predicción seleccionado para una unidad de predicción actual, PU, del bloque de datos de vídeo de entre el subconjunto de 33 modos de intra predicción angular; y
codificar (702) el bloque de datos de vídeo basándose en el modo de intra predicción seleccionado usando precisión de interpolación de 1/32 pel, en donde la codificación del bloque de datos de vídeo comprende:
para cada respectiva muestra de un bloque predictivo de la PU actual:
determinar una posición fraccional entre dos muestras reconstruidas vecinas proyectando, a lo largo de una dirección de predicción asociada con el modo de intra predicción seleccionado, una coordenada de la respectiva muestra a una fila o columna de muestras reconstruidas vecinas que contienen las dos muestras reconstruidas vecinas, en donde las dos muestras reconstruidas vecinas son vecinas a la PU actual; y
calcular un valor de predicción de la respectiva muestra usando un filtro de interpolación que usa valores de las dos muestras reconstruidas vecinas para interpolar un valor en la posición fraccional determinada, siendo la interpolación en precisión de 1/32 pel.
11. Un medio legible por ordenador que almacena instrucciones que, cuando se ejecutan por uno o más procesadores, hacen que el uno o más procesadores realicen el método de cualquiera de las reivindicaciones 1 a 8.
ES16734804T 2015-06-18 2016-06-17 Intra predicción y codificación de modo intra Active ES2895717T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562181744P 2015-06-18 2015-06-18
US201562192310P 2015-07-14 2015-07-14
US15/184,103 US20160373770A1 (en) 2015-06-18 2016-06-16 Intra prediction and intra mode coding
PCT/US2016/038182 WO2016205712A1 (en) 2015-06-18 2016-06-17 Intra prediction and intra mode coding

Publications (1)

Publication Number Publication Date
ES2895717T3 true ES2895717T3 (es) 2022-02-22

Family

ID=56345224

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16734804T Active ES2895717T3 (es) 2015-06-18 2016-06-17 Intra predicción y codificación de modo intra

Country Status (10)

Country Link
US (1) US20160373770A1 (es)
EP (1) EP3311569B1 (es)
JP (2) JP6885883B2 (es)
KR (1) KR102430839B1 (es)
CN (1) CN107743705B (es)
AU (1) AU2016278991A1 (es)
BR (1) BR112017027269A2 (es)
ES (1) ES2895717T3 (es)
TW (1) TW201717626A (es)
WO (1) WO2016205712A1 (es)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11463689B2 (en) 2015-06-18 2022-10-04 Qualcomm Incorporated Intra prediction and intra mode coding
US10841593B2 (en) 2015-06-18 2020-11-17 Qualcomm Incorporated Intra prediction and intra mode coding
US20160373770A1 (en) * 2015-06-18 2016-12-22 Qualcomm Incorporated Intra prediction and intra mode coding
US10142627B2 (en) 2015-06-18 2018-11-27 Qualcomm Incorporated Intra prediction and intra mode coding
US11233990B2 (en) 2016-02-08 2022-01-25 Sharp Kabushiki Kaisha Systems and methods for intra prediction coding
CN113810712A (zh) * 2016-04-29 2021-12-17 世宗大学校产学协力团 用于对图像信号进行编码和解码的方法和装置
US10440391B2 (en) * 2016-08-05 2019-10-08 Mediatek Inc. Method and apparatus of video coding
CN115733973A (zh) * 2016-12-23 2023-03-03 华为技术有限公司 一种用于矩形视频编码块的编码方法、装置及计算机可读存储介质
TWI616090B (zh) * 2017-06-26 2018-02-21 元智大學 使用運算資料共用的高效率視訊編碼畫面內預測方法及其架構
JP7147145B2 (ja) * 2017-09-26 2022-10-05 富士通株式会社 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム
CN111316640B (zh) * 2017-11-17 2023-09-26 鸿颖创新有限公司 基于调整的帧内模式列表以编码视频数据的设备及方法
US20190268611A1 (en) * 2018-02-26 2019-08-29 Mediatek Inc. Intelligent Mode Assignment In Video Coding
US11611757B2 (en) * 2018-04-02 2023-03-21 Qualcomm Incorproated Position dependent intra prediction combination extended with angular modes
WO2019199149A1 (ko) * 2018-04-14 2019-10-17 엘지전자 주식회사 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US10645381B2 (en) * 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
CN110213576B (zh) * 2018-05-03 2023-02-28 腾讯科技(深圳)有限公司 视频编码方法、视频编码装置、电子设备及存储介质
KR102519380B1 (ko) * 2018-06-29 2023-04-06 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 이미지의 예측 블록의 인트라 예측을 위한 장치 및 방법
US11277644B2 (en) 2018-07-02 2022-03-15 Qualcomm Incorporated Combining mode dependent intra smoothing (MDIS) with intra interpolation filter switching
US10638161B2 (en) * 2018-07-13 2020-04-28 Tencent America LLC Methods and apparatus for most probable mode derivation
US10630979B2 (en) * 2018-07-16 2020-04-21 Tencent America LLC Reference sample padding and filtering for intra prediction in video compression
WO2020055291A1 (en) * 2018-09-13 2020-03-19 Huawei Technologies Co., Ltd. Method and apparatus for wide-angle intra-prediction
HUE063986T2 (hu) * 2018-09-16 2024-02-28 Huawei Tech Co Ltd Eljárás és berendezés predikcióhoz
US10469845B1 (en) * 2018-09-21 2019-11-05 Tencent America, Llc Method and apparatus for intra mode coding
WO2020061784A1 (zh) * 2018-09-25 2020-04-02 北京大学 编码方法、解码方法、编码设备和解码设备
WO2020076036A1 (ko) * 2018-10-07 2020-04-16 주식회사 윌러스표준기술연구소 복수개의 참조 라인을 위한 mpm 구성 방법을 이용한 비디오 신호 처리 방법 및 장치
US11303885B2 (en) 2018-10-25 2022-04-12 Qualcomm Incorporated Wide-angle intra prediction smoothing and interpolation
US20200162737A1 (en) * 2018-11-16 2020-05-21 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US11438583B2 (en) * 2018-11-27 2022-09-06 Tencent America LLC Reference sample filter selection in intra prediction
CN113170098B (zh) * 2018-12-07 2023-02-14 华为技术有限公司 视频译码的约束预测模式
CN111435993B (zh) * 2019-01-14 2022-08-26 华为技术有限公司 视频编码器、视频解码器及相应方法
WO2020171647A1 (ko) * 2019-02-21 2020-08-27 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측을 사용하는 영상 디코딩 방법 및 그 장치
AU2020242795B2 (en) * 2019-03-21 2023-05-25 Beijing Bytedance Network Technology Co., Ltd. Improved weighting processing of combined intra-inter prediction
US11496748B2 (en) * 2019-03-21 2022-11-08 Tencent America LLC Method and apparatus for improved planar and DC modes for non-zero reference lines
CN113812149B (zh) * 2019-03-22 2024-04-12 Lg电子株式会社 图像编译系统中的图像解码方法和设备以及图像编码方法和设备
JP7401556B2 (ja) * 2019-03-23 2023-12-19 華為技術有限公司 イントラ予測のためのエンコーダ、デコーダおよび対応する方法
CA3122752A1 (en) * 2019-03-24 2020-10-01 Huawei Technologies Co., Ltd. Method and apparatus for chroma intra prediction in video coding
WO2020207493A1 (en) 2019-04-12 2020-10-15 Beijing Bytedance Network Technology Co., Ltd. Transform coding based on matrix-based intra prediction
WO2020211807A1 (en) * 2019-04-16 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Matrix derivation in intra coding mode
CN113796086B (zh) * 2019-04-25 2023-06-06 寰发股份有限公司 编码或解码视频数据的方法和装置
WO2020228693A1 (en) * 2019-05-12 2020-11-19 Beijing Bytedance Network Technology Co., Ltd. Coding of multiple intra prediction methods
WO2020228761A1 (en) * 2019-05-14 2020-11-19 Beijing Bytedance Network Technology Co., Ltd. Filter selection for intra video coding
EP3954115A4 (en) * 2019-05-22 2023-04-19 Beijing Bytedance Network Technology Co., Ltd. MATRIX-BASED INTRAPREDICTION USING UPSAMPLING
CN114051735A (zh) * 2019-05-31 2022-02-15 北京字节跳动网络技术有限公司 基于矩阵的帧内预测中的一步下采样过程
EP3963885A4 (en) 2019-06-05 2022-12-14 Beijing Bytedance Network Technology Co., Ltd. DETERMINING CONTEXT FOR MATRIX-BASED INTRAPREDICTION
CN113068032B (zh) * 2019-06-25 2022-07-26 Oppo广东移动通信有限公司 图像编解码方法、编码器、解码器以及存储介质
WO2021027925A1 (en) * 2019-08-14 2021-02-18 Beijing Bytedance Network Technology Co., Ltd. Position-dependent intra prediction sample filtering
CN114270825A (zh) * 2019-08-19 2022-04-01 北京字节跳动网络技术有限公司 基于计数器的帧内预测模式的初始化
EP4070552A1 (en) * 2019-12-05 2022-10-12 InterDigital VC Holdings France, SAS Intra sub partitions for video encoding and decoding combined with multiple transform selection, matrix weighted intra prediction or multi-reference-line intra prediction
US11375231B2 (en) * 2020-01-14 2022-06-28 Tencent America LLC Method and apparatus for video coding
MX2023010538A (es) * 2021-03-11 2023-09-19 Guangdong Oppo Mobile Telecommunications Corp Ltd Metodo de intraprediccion, codificador, decodificador, y medio de almacenamiento.

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3410706B1 (en) * 2007-06-29 2021-12-01 Velos Media International Limited Image encoding device and image decoding device
US8750378B2 (en) * 2008-09-23 2014-06-10 Qualcomm Incorporated Offset calculation in switched interpolation filters
CN103262542A (zh) * 2010-10-26 2013-08-21 数码士有限公司 自适应帧内预测编码和解码方法
KR101383775B1 (ko) * 2011-05-20 2014-04-14 주식회사 케이티 화면 내 예측 방법 및 장치
KR101654673B1 (ko) * 2011-06-28 2016-09-22 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
JP2013058939A (ja) * 2011-09-08 2013-03-28 Sharp Corp 画像復号装置、および画像符号化装置
KR20140129423A (ko) * 2013-04-29 2014-11-07 인텔렉추얼디스커버리 주식회사 인트라 예측 방법 및 장치
CN103248892A (zh) * 2013-05-07 2013-08-14 北京大学 一种帧内预测方法及装置
WO2015000168A1 (en) * 2013-07-05 2015-01-08 Mediatek Singapore Pte. Ltd. A simplified dc prediction method in intra prediction
KR101700410B1 (ko) * 2015-02-10 2017-01-26 주식회사 아리스케일 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
CN104702962B (zh) * 2015-03-03 2019-04-16 华为技术有限公司 帧内编解码方法、编码器和解码器
US20160373770A1 (en) * 2015-06-18 2016-12-22 Qualcomm Incorporated Intra prediction and intra mode coding

Also Published As

Publication number Publication date
JP6885883B2 (ja) 2021-06-16
CN107743705B (zh) 2021-03-19
CN107743705A (zh) 2018-02-27
JP2018523372A (ja) 2018-08-16
WO2016205712A1 (en) 2016-12-22
KR102430839B1 (ko) 2022-08-08
TW201717626A (zh) 2017-05-16
EP3311569B1 (en) 2021-10-06
AU2016278991A1 (en) 2017-11-30
US20160373770A1 (en) 2016-12-22
EP3311569A1 (en) 2018-04-25
JP2021083122A (ja) 2021-05-27
KR20180019565A (ko) 2018-02-26
BR112017027269A2 (pt) 2018-09-04

Similar Documents

Publication Publication Date Title
ES2895717T3 (es) Intra predicción y codificación de modo intra
ES2854699T3 (es) Intrapredicción y codificación intramodo
ES2828577T3 (es) Intrapredicción y codificación intramodo
ES2794619T3 (es) Intrapredicción y codificación intramodo
ES2832607T3 (es) Intrapredicción y codificación intramodo
EP3311570B1 (en) Intra prediction and intra mode coding