ES2884375T3 - Intra predicción de croma de modelo lineal para codificación de vídeo - Google Patents

Intra predicción de croma de modelo lineal para codificación de vídeo Download PDF

Info

Publication number
ES2884375T3
ES2884375T3 ES17772283T ES17772283T ES2884375T3 ES 2884375 T3 ES2884375 T3 ES 2884375T3 ES 17772283 T ES17772283 T ES 17772283T ES 17772283 T ES17772283 T ES 17772283T ES 2884375 T3 ES2884375 T3 ES 2884375T3
Authority
ES
Spain
Prior art keywords
samples
block
chroma
luma samples
encoded
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
ES17772283T
Other languages
English (en)
Inventor
Kai Zhang
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 ES2884375T3 publication Critical patent/ES2884375T3/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Color Television Systems (AREA)

Abstract

Un método de decodificación de datos de vídeo, comprendiendo el método: recibir un bloque codificado de muestras de luma de un primer bloque de datos de vídeo; recibir bloques codificados de muestras de luma y muestras de croma de bloques vecinos de datos de vídeo; decodificar el primer bloque codificado de muestras de luma para crear muestras de luma reconstruidas del primer bloque; decodificar los bloques vecinos codificados de muestras de luma para crear muestras de luma reconstruidas de bloques vecinos y decodificar los bloques vecinos codificados de muestras de croma para crear muestras de croma reconstruidas de bloques vecinos; seleccionar un conjunto de muestras de luma reconstruidas de los bloques vecinos para usar al predecir las muestras de croma del primer bloque; clasificar las muestras de luma reconstruidas del conjunto que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras de muestras vecinas; clasificar las muestras de luma reconstruidas del conjunto que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras de muestras vecinas; determinar un primer modelo de predicción lineal basándose en las muestras de luma reconstruidas del primer grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; determinar un segundo modelo de predicción lineal basándose en las muestras de luma reconstruidas del segundo grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; clasificar las muestras de luma reconstruidas del primer bloque que son mayores que el primer umbral como si estuvieran en un primer grupo de muestras del primer bloque; clasificar las muestras de luma reconstruidas del primer bloque que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras del primer bloque; determinar si el número de muestras clasificadas en un grupo de muestras es menor que un número mínimo predefinido y cambiar al menos una muestra entre grupos de muestras cuando el número de muestras clasificadas en el grupo es menor que el número mínimo predefinido; aplicar el primer modelo de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras del primer bloque; aplicar el segundo modelo de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras del primer bloque; y determinar muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado.

Description

DESCRIPCIÓN
Intra predicción de croma de modelo lineal para codificación de vídeo
Campo técnico
Esta divulgación se refiere a la codificació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 codificación de vídeo, tales como aquellas descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC), ITU-T H.265/Codificación de Vídeo de Alta Eficacia (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 eficaz implementando tales técnicas de codificación de vídeo.
Las técnicas de codificación de vídeo incluyen predicción espacial (intra-imagen) y/o temporal (inter-imagen) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (por ejemplo, una imagen de vídeo o una porción de una imagen de vídeo) puede subdividirse en bloques de vídeo, que pueden denominarse también como unidades de árbol de codificación (CTU), unidades de codificación (CU) y/o nodos de codificación. 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 imágenes pueden denominarse como fotogramas, y las imágenes de referencia pueden denominarse como fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a codificarse. Los datos residuales representan diferencias de píxel entre el bloque original que va a codificarse 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 que 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 compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de la transformada, dando como resultado coeficientes de transformada residuales, que pueden a continuación cuantificarse. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para conseguir incluso más compresión.
El documento ZHANG X ET AL: "New modes for chroma intra prediction", JCTVC-G358, 10-11-2011, desvela el uso de dos modelos de predicción lineal (LMA y LML) para intra predicción de croma. En LML el conjunto de entrenamiento comprende las muestras vecinas ubicadas a la izquierda del bloque actual, en LMA comprende las muestras vecinas ubicadas por encima del bloque actual. El documento "Segmented regression - Wikipedia, the free encyclopedia", 29­ 05-2016, desvela la regresión lineal segmentada, que divide el conjunto de valores de característica de entrada y calcula un modelo de regresión lineal separado para cada partición. El documento BERTAN ARI ET AL: "Clustered linear regression", 01-03-2002, desvela la mejora de la precisión de la regresión lineal dividiendo los conjuntos de entrenamiento en múltiples grupos y calculando un modelo de regresión lineal para cada grupo. Los límites de los grupos se determinan para minimizar la distancia absoluta media total.
Sumario
De acuerdo con la invención, se proporciona un método de decodificación de datos de vídeo como se expone en la reivindicación 1, se proporciona un método de codificación de datos de vídeo como se expone en la reivindicación 2, se proporciona un aparato de decodificación como se expone en la reivindicación 9, se proporciona un aparato de codificación como se expone en la reivindicación 10 y se proporciona un medio de almacenamiento legible por ordenador como se expone en las reivindicaciones 11-12. Se exponen realizaciones adicionales de la invención en las reivindicaciones dependientes.
Cualquier otra realización mencionada en la descripción se considera únicamente como un ejemplo ilustrativo.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y de decodificación de vídeo de ejemplo que puede utilizar técnicas para intra predicción de croma de modelo lineal de múltiples modelos descritas en esta divulgación.
La Figura 2 es un diagrama de bloques que ilustra un codificador de vídeo que puede implementar técnicas para intra predicción de croma de modelo lineal de múltiples modelos de ejemplo descritas en esta divulgación.
La Figura 3 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar técnicas para intra predicción de croma de modelo lineal de múltiples modos descritas en esta divulgación.
La Figura 4 es un diagrama conceptual de ubicaciones de ejemplo de muestras usadas para derivar el parámetro de modelo a y el parámetro de modelo @ para intra predicción de croma de modelo lineal.
La Figura 5 es un gráfico de una regresión lineal de ejemplo entre componentes de luma (Y) y de croma (C).
La Figura 6 es un diagrama conceptual de un ejemplo de submuestreo de muestra de luma.
Las Figuras 7A-7E son gráficos de la clasificación de muestras vecinas de acuerdo con ejemplos de esta divulgación. Las Figuras 8A-8D son diagramas conceptuales de muestras de croma vecinas usadas para derivar modelos lineales de acuerdo con ejemplos de esta divulgación.
La Figura 9 es un diagrama conceptual de la clasificación de muestra vecina de acuerdo con ejemplos de esta divulgación.
La Figura 10 es un diagrama conceptual de dos modelos lineales para muestras de luma codificadas vecinas clasificadas en 2 grupos de acuerdo con ejemplos de esta divulgación.
La Figura 11 es un diagrama conceptual de la aplicación de un modelo lineal, modelo 1, de dos modelos lineales, a todos los píxeles de un bloque actual de acuerdo con ejemplos de esta divulgación.
La Figura 12 es un diagrama conceptual de la aplicación de otro modelo lineal, modelo 2, de los dos modelos lineales, a todos los píxeles del bloque actual de acuerdo con ejemplos de esta divulgación.
La Figura 13 es un diagrama conceptual de un procedimiento de predicción de acuerdo con ejemplos de esta divulgación.
Las Figuras 14A-14C son diagramas conceptuales de filtros de submuestreo de luma de acuerdo con un ejemplo de la presente divulgación.
La Figura 15 es un diagrama de flujo de señalización en modo de predicción angular LM (LAP) de acuerdo con un ejemplo de esta divulgación.
La Figura 16 es un diagrama de bloques de LAP de acuerdo con un ejemplo de la presente divulgación.
La Figura 17 es un diagrama conceptual de bloques vecinos de un bloque actual.
La Figura 18 es un diagrama de flujo que ilustra un método de codificación de ejemplo de la divulgación.
La Figura 19 es un diagrama de flujo que ilustra un método de codificación de ejemplo de la divulgación.
La Figura 20 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual.
La Figura 21 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo.
Descripción detallada
Esta divulgación se refiere a la predicción de componente cruzado en códecs de vídeo, y, más particularmente, a técnicas para intra predicción de croma de modelo lineal (LM). En un ejemplo de la divulgación, se describen técnicas de LM de múltiples modelos (MMLM). Cuando se usa un MMLM para intra predicción de croma, un codificador de vídeo (por ejemplo, un codificador de vídeo o decodificador de vídeo) puede usar más de un modelo lineal para predecir un bloque de componentes de croma de un correspondiente bloque de componentes de luma (por ejemplo, unidad de codificación (CU) o unidad de predicción (PU). Las muestras de luma vecinas y las muestras de croma vecinas del bloque actual pueden clasificarse en varios grupos, y cada grupo puede usarse como un conjunto de entrenamiento para derivar un modelo lineal separado. En un ejemplo, las muestras del correspondiente bloque de luma pueden clasificarse adicionalmente basándose en la misma regla para la clasificación de muestras vecinas. Un codificador de vídeo puede aplicar cada modelo lineal a porciones del bloque de luma actual, dependiendo de la clasificación, para obtener bloques de croma previstos parciales. Los bloques de croma previstos parciales de los múltiples modelos lineales pueden combinarse para obtener el bloque de croma previsto final.
En otro ejemplo de la divulgación, se describen técnicas para un modo de LM de múltiples filtros. Cuando se usan técnicas de predicción de croma de LM de múltiples filtros (MFLM), un codificador de vídeo puede usar un filtro de submuestreo de luma si los datos de vídeo no están en el formato 4:4:4. Es decir, si los bloques de croma se submuestrean en comparación con los valores de luma (es decir, los datos de vídeo no son 4:4:4), un codificador de vídeo puede submuestrear el bloque de luma para los fines de intra predicción de croma de componente cruzado. De esta manera, hay una correlación 1:1 entre muestras de luma y muestras de croma. Las técnicas de MFLM de esta divulgación pueden usarse además de los filtros de submuestreo definidos en los ejemplos del Modelo Exploratorio Mixto (JEM-3.0) actualmente bajo desarrollo por el Equipo de Exploración de Vídeo Mixto (JVET).
En otro ejemplo de la divulgación, se describen técnicas para un modo de predicción de LM-angular. Cuando se usa predicción de LM-angular (LAP), puede combinarse juntos algún tipo de predicción angular (por ejemplo, la predicción angular puede incluir direccional, CC, planar u otra intra predicción de componente no cruzado) y algún tipo de predicción de LM para obtener la predicción final para un bloque de croma. Usando cualquiera de las técnicas de predicción de LM de múltiples modelos (MMLM), predicción de croma (con o sin LM de múltiples filtros (MFLM)) y/o la predicción de LM-angular (LAP) descritas en el presente documento, ya sea en solitario o en combinación, puede dar como resultado una ganancia de codificación de tasa de bits-distorsión (tasa BD) de aproximadamente el 0,4 % y el 3,5 % en componentes de luma y croma individualmente, con un ligero aumento en el tiempo de codificación (por ejemplo, tiempo de codificación del 104 %).
La Figura 1 es un diagrama de bloques que ilustra un sistema 10 de codificación y decodificación de vídeo de ejemplo que puede utilizar técnicas para intra predicción de croma de modelo lineal descritas en esta divulgación. Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo 12 de origen que genera datos de vídeo codificados que van a decodificarse en un tiempo posterior por un dispositivo 14 de destino. En particular, el dispositivo 12 de origen proporciona los datos de vídeo al dispositivo 14 de destino mediante un medio 16 legible por ordenador. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de sobremesa, ordenadores portátiles (es decir, portátiles), ordenadores de tableta, decodificadores de salón, microteléfonos telefónicos tales como los denominados "inteligentes", los denominados mandos "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de envío por flujo continuo de vídeo o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden equiparse para comunicación inalámbrica.
El dispositivo 14 de destino puede recibir los datos de vídeo codificados para que se decodifiquen mediante un medio 16 legible por ordenador. El medio 16 legible por ordenador puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo 12 de origen al dispositivo 14 de destino. En un ejemplo, el medio 16 legible por ordenador puede comprender un medio de comunicación para posibilitar que el dispositivo 12 de origen transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo 14 de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo 12 de origen al dispositivo 14 de destino.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz 22 de salida al medio 16 legible por ordenador que está configurado como un dispositivo de almacenamiento. De manera similar, puede accederse a los datos codificados desde el dispositivo de almacenamiento por la interfaz 28 de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros u otro dispositivo de almacenamiento intermedio que puede almacenar el vídeo codificado generado por el dispositivo 12 de origen. El dispositivo 14 de destino puede acceder a datos de vídeo almacenados del dispositivo de almacenamiento mediante envío por flujo continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. Servidores de ficheros ilustrativos incluyen, un servidor web (por ejemplo, para un sitio web), un servidor de FTP, dispositivos de almacenamiento de conexión de red (NAS) o una unidad de disco local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluyendo una conexión a Internet. Esta puede incluir, un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que es adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados del dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no están necesariamente limitadas a aplicaciones o ajustes inalámbricos. Las técnicas pueden aplicarse a codificación de vídeo en apoyo de cualquiera de una diversidad de aplicaciones multimedia, tales como difusiones de televisión en el transcurso de la comunicación, transmisiones de televisión de cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo de Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 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.
En el ejemplo de la Figura 1, el dispositivo 12 de origen incluye el origen 18 de vídeo, el codificador 20 de vídeo y la interfaz 22 de salida. El dispositivo 14 de destino incluye la interfaz 28 de entrada, el decodificador 30 de vídeo y el dispositivo 32 de visualización. De acuerdo con esta divulgación, el codificador 20 de vídeo del dispositivo 12 de origen y/o el decodificador 30 de vídeo del dispositivo 14 de destino pueden estar configurados para aplicar las técnicas para intra predicción de croma de modelo lineal mejorado descritas en esta divulgación. En otros ejemplos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo 12 de origen puede recibir datos de vídeo desde un origen 18 de vídeo externo, tal como una cámara externa. Análogamente, el dispositivo 14 de destino puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la Figura 1 es simplemente un ejemplo. Las técnicas para intra predicción de croma de modelo lineal mejorado descritas en esta divulgación pueden realizarse por cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque las técnicas de esta divulgación se realizan, en general, por un dispositivo de codificación de vídeo, las técnicas pueden realizarse por un codificador/decodificador de vídeo, típicamente denominado como un "CODEC". Además, las técnicas de esta divulgación pueden realizarse también por un preprocesador de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino son simplemente ejemplos de tales dispositivos de codificación en los que el dispositivo 12 de origen genera datos de vídeo codificados para transmisión al dispositivo 14 de destino. En algunos ejemplos, los dispositivos 12, 14 pueden operar de una manera sustancialmente simétrica de manera que cada uno de los dispositivos 12, 14 incluya componentes de codificación y decodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión unidireccional o bidireccional entre los dispositivos 12, 14 de vídeo, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo o telefonía de vídeo.
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, pre-capturado o generado por ordenador puede codificarse por el codificador 20 de vídeo. La información de vídeo codificada puede emitirse a continuación por la interfaz 22 de salida en un medio 16 legible por ordenador.
El medio 16 legible por ordenador puede incluir medios transitorios, tales como una transmisión de difusión inalámbrica o de red cableada o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, unidad flash, disco compacto, disco de vídeo digital, disco Blu-ray u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo 12 de origen y proporcionar los datos de vídeo codificados al dispositivo 14 de destino, por ejemplo, mediante la transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo 12 de origen y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, el medio 16 legible por ordenador puede entenderse que incluye uno o más medios legibles por ordenador de diversas formas en diversos ejemplos.
La interfaz 28 de entrada del dispositivo 14 de destino recibe información desde el medio 16 legible por ordenador. La información del medio 16 legible por ordenador puede incluir información de sintaxis definida por el codificador 20 de vídeo, que también se usa por el decodificador 30 de vídeo, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas. El dispositivo 32 de visualización presenta visualmente los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo de emisión de luz orgánico (OLED) u otro tipo de dispositivo de visualización.
El codificador 20 de vídeo y el decodificador 30 de vídeo pueden operar de acuerdo con una norma de codificación de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficacia (HEVC), también denominada como ITU-T H.265. En otros ejemplos, el codificador 20 de vídeo y el decodificador de vídeo pueden operar de acuerdo con una norma de codificación de vídeo futura, que incluye la norma actualmente bajo desarrollo por el JVET. Como alternativa, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden operar de acuerdo con otras normas propietarias o industriales, tal como la norma ITU-T H.264, denominada como alternativa como MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC) o extensiones de tales normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular, y pueden aplicarse a normas de codificación de vídeo futuras. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador 20 de vídeo y el decodificador 30 de vídeo puede cada uno estar integrado con un codificador y decodificador de audio, y puede incluir unidades MUX-DEMUX apropiadas y otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ser de conformidad con el protocolo multiplexor de la ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador 20 de vídeo y el decodificador 30 de vídeo puede cada uno implementarse como cualquiera de una diversidad de circuitería de codificador o decodificador adecuada, que puede incluir circuitería de procesamiento de función fija y/o programable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar incluidos en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en un respectivo dispositivo.
En general, de acuerdo con la ITU-T H.265, una imagen de vídeo puede dividirse en una secuencia de unidades de árbol de codificación (CTU) (o unidades de codificación más grandes (LCU)) que pueden incluir muestras tanto de luminancia como de croma. Como alternativa, las CTU pueden incluir datos monocromo (es decir, muestras únicamente de luminancia). Los datos de sintaxis dentro de un flujo de bits pueden definir un tamaño para la CTU, que es una unidad de codificación más grande en términos del número de píxeles. Un corte incluye un número de CTU consecutivas en orden de codificación. Una imagen de vídeo puede subdividirse en uno o más cortes. Cada CTU puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, que corresponde a un nodo raíz a la CTU. Si una CU se divide en cuatro sub-CU, el nodo que corresponde a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos de sintaxis para la correspondiente CU. Por ejemplo, un nodo en el árbol cuádruple puede incluir una bandera de división, que indica si la CU que corresponde al nodo se divide en sub-CU. Los elementos de sintaxis para una CU pueden definirse de manera recursiva, y pueden depender de si la CU se divide en las sub-CU. Si una CU no se divide más, se denomina como una CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja se denominarán también como las CU hoja, incluso si no hay división explícita de la CU hoja original. Por ejemplo, si una CU en tamaño de 16x16 no se divide más, las cuatro sub-CU de 8x8 se denominarán también como CU hoja, aunque la CU de 16x16 nunca se dividió.
Una CU tiene un propósito similar que un macrobloque de la norma H.264, excepto que una CU no tiene una distinción de tamaño. Por ejemplo, una CTU puede dividirse en cuatro nodos hijo (también denominados como sub-CU), y cada nodo hijo puede convertirse, a su vez, en un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo no dividido final, denominado como un nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado como una CU hoja. Los datos de sintaxis asociados con un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse una CTU, denominado como profundidad de CU máxima, y puede definir también un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits puede definir también la unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para hacer referencia a cualquiera de una CU, unidad de predicción (PU) o unidad de transformada (TU), en el contexto de HEVC o estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en H.264/AVC).
Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y es, en general, cuadrado en forma. El tamaño de la CU puede variar de 8x8 píxeles hasta el tamaño de la CTU con un tamaño máximo, por ejemplo, de 64x64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la subdivisión de la CU en una o más PU. Los modos de subdivisión pueden diferir entre si se omite la CU o se codifica en modo directo, se codifica en modo de intra-predicción o se codifica en modo de predicción. Las PU pueden subdividirse para ser no cuadradas en forma. Los datos de sintaxis asociados con una CU pueden describir también, por ejemplo, la subdivisión de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede ser cuadrada o no cuadrada (por ejemplo, rectangular) en forma.
La norma de HVEC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. Las TU están típicamente dimensionadas basándose en el tamaño de las PU (o particiones de una CU) dentro de una CU dada definida para una CTU subdividida, aunque este puede no ser siempre el caso. Las TU tienen típicamente el mismo tamaño o menor que las PU (o subdivisiones de una CU, por ejemplo, en el caso de intra predicción). En algunos ejemplos, las muestras residuales que corresponden a una Cu pueden subdividirse en unidades más pequeñas usando una estructura de árbol cuádruple conocida como un "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse como unidades de transformada (TU). Los valores de diferencia de píxel asociados con las TU pueden transformarse para producir coeficientes de transformada, que pueden cuantificarse.
Una CU hoja puede incluir una o más unidades de predicción (PU) cuando se predice usando inter-predicción. En general, una PU representa un área espacial que corresponde a toda o una porción de la correspondiente CU, y puede incluir datos para recuperar y/o generar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Cuando la CU está codificada por inter-modo, una o más PU de la CU pueden incluir datos que definen información de movimiento, tal como uno o más vectores de movimiento, o las PU pueden codificarse en modo de omisión. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, Lista 0 o Lista 1) para el vector de movimiento.
Las CU hoja pueden también predecirse por intra-modo. En general, la intra predicción implica predecir una CU hoja (o subdivisiones de la misma) usando un intra-modo. Un codificador de vídeo puede seleccionar un conjunto de píxeles previamente codificados vecinos de la CU hoja para usar para predecir la CU hoja (o subdivisiones de la misma).
Una CU hoja puede incluir también una o más unidades de transformada (TU). Las unidades de transformada pueden especificarse usando un RQT (también denominado como una estructura de árbol cuádruple de TU), como se ha analizado anteriormente. Por ejemplo, una bandera de división puede indicar si una CU hoja se divide en cuatro unidades de transformada. A continuación, cada TU puede dividirse adicionalmente en sub-TU adicionales. Cuando la TU no se divide más, puede denominarse como una TU hoja. En general, para intra codificación, todas las TU hoja que pertenecen a una Cu hoja comparten el mismo modo de intra predicción. Es decir, el mismo modo de intrapredicción se aplica, en general, para calcular valores previstos para todas las TU de una CU hoja. Para intra codificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de intra predicción, como una diferencia entre la porción de la CU que corresponde a la TU y el bloque original. Un TU no está necesariamente limitada al tamaño de una PU. Por lo tanto, las TU pueden ser más grandes o más pequeñas que una PU. Para intra codificación, pueden coubicarse particiones de una CU, o la misma CU con una correspondiente TU hoja para la CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la correspondiente CU hoja.
Además, las TU de las CU hoja pueden también estar asociadas con respectivas estructuras de datos de árbol cuádruple, denominadas como árboles cuádruples residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuádruple que indica cómo se subdivide la CU hoja en las TU. El nodo raíz de un árbol cuádruple de TU generalmente corresponde a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a una CTU (o LCU). Las TU del RQT que no se dividen se denomina como TU hoja. En general, esta divulgación usa los términos CU y TU para hacer referencia a la CU hoja y TU hoja, respectivamente, a menos que se indique de otra manera.
Una secuencia de vídeo típicamente incluye una serie de fotogramas o imágenes de vídeo, empezando con una imagen de punto de acceso aleatorio (RAP). Una secuencia de vídeo puede incluir datos de sintaxis en un conjunto de parámetros de secuencia (SPS) que incluye características de la secuencia de vídeo. Cada corte de una imagen puede incluir datos de sintaxis de corte que describen un modo de codificación para el respectivo corte. El codificador 20 de vídeo típicamente opera en bloques de vídeo dentro de cortes de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
Como un ejemplo, puede realizarse predicción para las PU de diversos tamaños. Suponiendo que el tamaño de una CU particular es 2Nx2N, puede realizarse intra-predicción en los tamaños de PU de 2Nx2N o NxN, y puede realizarse inter-predicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. Puede realizarse la subdivisión asimétrica para inter-predicción también para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En subdivisión asimétrica, no se subdivide una dirección de una CU, mientras que la otra dirección se subdivide en el 25 % y el 75 %. La porción de la CU que corresponde a la partición del 25 % se indica por una "n" seguida por una indicación de "Arriba", "Abajo", "Izquierda" o "Derecha". Por lo tanto, por ejemplo, "2NxnU" hace referencia a una CU de 2Nx2N que se subdivide horizontalmente con una PU 2Nx0,5N en la parte superior y una PU de 2Nx1,5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" pueden usarse de manera intercambiable para hacer referencia a las dimensiones de píxel de un bloque de vídeo en términos de dimensiones vertical y horizontal, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Análogamente, un bloque NxN tiene en general N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, los bloques no necesariamente tienen que tener el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Siguiendo la codificación intra-predictiva o inter-predictiva que usa las PU de una CU, el codificador 20 de vídeo puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de sintaxis que describen un método o modo de generación de datos de píxel predictivos en el dominio espacial (también denominado como el dominio de los píxeles) y las TU pueden comprender coeficientes en el dominio de la transformada que sigue la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de número entero, una transformada de ondícula o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxel entre píxeles de la imagen no codificada y los valores de predicción que corresponden a las PU. El codificador 20 de vídeo puede formar las TU para incluir coeficientes de transformada cuantificados representativos de los datos residuales para la CU. Es decir, el codificador 20 de vídeo puede calcular los datos residuales (en forma de un bloque residual), transformar el bloque residual para producir un bloque de coeficientes de transformada, y, a continuación, cuantificar los coeficientes de transformada para formar coeficientes de transformada cuantificados. El codificador 20 de vídeo puede formar una TU que incluye los coeficientes de transformada cuantificados, así como otra información de sintaxis (por ejemplo, información de división para la TU).
Como se ha indicado anteriormente, después de cualquier transformada para producir coeficientes de transformada, el codificador 20 de vídeo puede realizar cuantificación de los coeficientes de transformada. La cuantificación hace referencia, 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, lo que proporciona compresión adicional. 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 la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración puede estar diseñada para colocar coeficientes de energía mayor (y, por lo tanto, de frecuencia inferior) delante de la matriz y para colocar coeficientes de energía inferior (y, por lo tanto, de frecuencia superior) en la parte trasera de la matriz. En algunos ejemplos, el codificador 20 de vídeo puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados para producir un vector en serie que puede codificarse por entropía. En otros ejemplos, el codificador 20 de vídeo puede realizar una exploración adaptiva. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador 20 de vídeo puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa según contexto (CAVLC), la codificación binaria aritmética adaptativa según contexto (CABAC), la codificación binaria aritmética adaptativa según contexto basada en sintaxis (SBAc ), la codificación por entropía de subdivisión de intervalo de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador 20 de vídeo puede también codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para su uso por decodificador 30 de vídeo al decodificar los datos de vídeo.
Para realizar CABAC, el codificador 20 de vídeo puede asignar un contexto dentro de un modelo de contexto a un símbolo que va a transmitirse. El contexto puede estar relacionado con, por ejemplo, si los valores vecinos del símbolo son o no distintos de cero. Para realizar CAVLC, el codificador 20 de vídeo puede seleccionar un código de longitud variable para un símbolo que va a transmitirse. Pueden construirse palabras de código en VLC de manera que los códigos relativamente más cortos corresponden a símbolos más probables, mientras que los códigos más largos corresponden a símbolos menos probables. De esta manera, el uso de VLC puede conseguir unos ahorros de bits, por ejemplo, sobre el uso de palabras de código de igual longitud para cada símbolo que va a transmitirse. La determinación de probabilidad puede estar basada en un contexto asignado al símbolo.
En general, el decodificador 30 de vídeo realiza un proceso sustancialmente similar, aunque recíproco, al realizado por el codificador 20 de vídeo para decodificar datos codificados. Por ejemplo, el decodificador 30 de vídeo cuantifica a la inversa y transforma a la inversa los coeficientes de una TU recibida para reproducir un bloque residual. El decodificador 30 de vídeo usa un modo de predicción señalizado (intra- o inter- predicción) para formar un bloque previsto. A continuación, el decodificador 30 de vídeo combina el bloque previsto y el bloque residual (en una base píxel a píxel) para reproducir el bloque original. Puede realizarse procesamiento adicional, tal como realizar un proceso de desbloqueo para reducir artefactos visuales a lo largo de los límites de bloque. Adicionalmente, el decodificador 30 de vídeo puede decodificar elementos de sintaxis usando CABAC de una manera sustancialmente similar a, aunque recíproca a, el proceso de codificación de CABAC del codificador 20 de vídeo.
El codificador 20 de vídeo puede enviar adicionalmente datos de sintaxis, tales como datos de sintaxis basados en bloques, datos de sintaxis basados en imágenes y datos de sintaxis basados en secuencias, al decodificador 30 de vídeo, por ejemplo, en un encabezado de imagen, un encabezado de bloque, un encabezado de corte u otros datos de sintaxis, tales como un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) o un conjunto de parámetros de vídeo (VPS).
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador 20 de vídeo que puede implementar técnicas para intra predicción de croma de modelo lineal mejorado descritas en esta divulgación. El codificador 20 de vídeo puede realizar intra- e inter- codificación de bloques de vídeo dentro de cortes de vídeo. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en vídeo dentro de un fotograma de vídeo o imagen dados. La inter-codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o imágenes adyacentes de una secuencia de vídeo. El intra-modo (modo I) puede hacer referencia a cualquiera de varios modos de codificación espacial. Los inter-modos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden hacer referencia a cualquiera de varios modos de codificación temporal.
Como se muestra en la Figura 2, el codificador 20 de vídeo recibe un bloque de vídeo actual dentro de un fotograma de vídeo que va a codificarse. En el ejemplo de la Figura 2, el codificador 20 de vídeo incluye la unidad 40 de selección de modo, la memoria 64 de imagen de referencia (que puede denominarse también como una memoria intermedia de imagen decodificada (DPB)), la memoria 65 de datos de vídeo, el sumador 50, la unidad 52 de procesamiento de transformada, la unidad 54 de cuantificación y la unidad 56 de codificación por entropía. La unidad 40 de selección de modo, a su vez, incluye la unidad 44 de compensación de movimiento, la unidad 42 de estimación de movimiento, la unidad 46 de intra-predicción y la unidad 48 de subdivisión. Para la reconstrucción del bloque de vídeo, el codificador 20 de vídeo también incluye la unidad 58 de cuantificación inversa, la unidad 60 de transformada inversa y el sumador 62. Un filtro de desbloqueo (no mostrado en la Figura 2) también puede incluirse para filtrar límites de bloque para eliminar los artefactos de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo típicamente filtraría la salida del sumador 62. Pueden usarse también filtros adicionales (dentro del bucle o posteriores al bucle) además del filtro de desbloqueo. Tales filtros no se muestran por brevedad, pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Como se muestra en la Figura 2, el codificador 20 de vídeo recibe datos de vídeo y almacena los datos de vídeo recibidos en la memoria 85 de datos de vídeo. La memoria 65 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 65 de datos de vídeo se pueden obtener, por ejemplo, del origen 18 de vídeo. La memoria 64 de imagen de referencia puede ser una memoria de imagen 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 intercodificación. La memoria 65 de datos de vídeo y la memoria 64 de imágenes de referencia pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como memoria de acceso aleatorio dinámica (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria 65 de datos de vídeo y la memoria 64 de imagen de referencia pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados. En diversos ejemplos, la memoria 65 de datos de vídeo puede estar en un chip con otros componentes del codificador 20 de vídeo, o fuera de un chip en relación con esos componentes.
Durante el proceso de codificación, el codificador 20 de vídeo recibe un fotograma o corte de vídeo que va a codificarse. El fotograma o corte puede dividirse en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento realizan codificación inter-predictiva del bloque de vídeo recibido con relación a uno o más bloques en uno o más fotogramas de referencia para proporcionar predicción temporal. La unidad 46 de intra-predicción puede realizar, como alternativa, codificación intra-predictiva del bloque de vídeo recibido con relación a uno o más bloques vecinos en el mismo fotograma o corte que el bloque que va a codificarse para proporcionar una predicción espacial. El codificador 20 de vídeo puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad 48 de subdivisión puede subdividir bloques de datos de vídeo en subbloques, basándose en una evaluación de los esquemas de subdivisión previos en pasadas de codificación previas. Por ejemplo, la unidad 48 de subdivisión puede subdividir inicialmente un fotograma o corte en CTU, y subdividir cada una de las CTU en sub-CU basándose en el análisis de tasa-distorsión (por ejemplo, optimización de tasa-distorsión). La unidad 40 de selección de modo puede producir adicionalmente una estructura de datos de árbol cuádruple indicativa de la subdivisión de una CTU en sub-CU. Las CU de nodo hoja del árbol cuádruple pueden incluir una o más PU y una o más TU.
La unidad 40 de selección de modo puede seleccionar uno de los modos de predicción, intra o inter, por ejemplo, basándose en los resultados de error, y proporcionar el bloque previsto resultante al sumador 50 para generar datos residuales y al sumador 62 para reconstruir el bloque codificado para su uso como un fotograma de referencia. Entre los posibles modos de intra predicción, la unidad 40 de selección de modo puede determinar usar un modo de intra predicción de croma de modelo lineal de acuerdo con las técnicas de esta divulgación. La unidad 40 de selección de modo también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de intra-modo, información de subdivisión y otra información de sintaxis de este tipo, a la unidad 56 de codificación por entropía.
La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar altamente integradas, pero, se ilustran de manera separada para propósitos conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un fotograma de vídeo o imagen actual con relación a un bloque predictivo dentro de un fotograma de referencia (u otra unidad codificada) con relación al bloque actual que se está codificando dentro del fotograma actual (u otra unidad codificada). Un bloque predictivo es un bloque que se halla que coincide estrechamente al bloque que va a codificarse, en términos de diferencia de píxel, que puede determinarse por una suma de diferencia absoluta (SAD), suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de vídeo puede calcular valores para las posiciones de píxeles sub-enteros de imágenes de referencia almacenadas en la memoria 64 de imagen de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel y otras posiciones de píxel fraccionales de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento con relación a las posiciones de píxel completas y las posiciones de píxel fraccionales y emitir un vector de movimiento con precisión de píxel fraccional.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un corte inter-codificado comparando la posición de la PU a la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria 64 de imagen de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación por entropía y a la unidad 44 de compensación de movimiento.
La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad 42 de estimación de movimiento. De nuevo, la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar funcionalmente integradas, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel, como se analiza a continuación. En general, la unidad 42 de estimación de movimiento realiza estimación de movimiento con relación a componentes de luminancia, y la unidad 44 de compensación de movimiento usa vectores de movimiento calculados basándose en los componentes de luminancia para tanto los componentes de croma como los componentes de luminancia. La unidad 40 de selección de modo puede generar también elementos de sintaxis asociados con los bloques de vídeo y el corte de vídeo para su uso por el decodificador 30 de vídeo al decodificar los bloques de vídeo del corte de vídeo.
La unidad 46 de intra-predicción puede intra-predecir un bloque actual, como una alternativa a la inter-predicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se ha descrito anteriormente. En particular, la unidad 46 de intra-predicción puede determinar un modo de intra-predicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intra-predicción puede codificar un bloque actual usando diversos modos de intra-predicción, por ejemplo, durante pasadas de codificación separadas y la unidad 46 de intra-predicción (o la unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intra-predicción apropiado para usar a partir de los modos probados.
Por ejemplo, la unidad 46 de intra-predicción puede calcular valores de tasa-distorsión usando un análisis de tasadistorsión para los diversos modos de intra-predicción probados, y seleccionar el modo de intra-predicción que tiene las mejores características de tasa-distorsión entre los modos probados. El análisis de tasa-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado, que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad 46 de intra-predicción puede calcular relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intra-predicción muestra el mejor valor de tasadistorsión para el bloque.
Después de seleccionar un modo de intra-predicción para un bloque, la unidad 46 de intra-predicción puede proporcionar información indicativa del modo de intra-predicción seleccionado para el bloque a la unidad 56 de codificación por entropía. La unidad 56 de codificación por entropía puede codificar la información que indica el modo de intra-predicción seleccionado. El codificador 20 de vídeo puede incluir en el flujo de bits transmitido datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intra-predicción y una pluralidad de tablas de índices de modo de intra predicción modificado (también denominadas como tablas de mapeo de palabra de código), definiciones de codificación de contextos para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices de modo de intra-predicción y una tabla de índices de modo de intrapredicción modificado para usar para cada uno de los contextos.
Como se explicará en más detalle a continuación, la unidad 46 de intra predicción puede estar configurada para realizar las técnicas de intra predicción de croma de modelo lineal mejoradas descritas en esta divulgación.
El codificador 20 de vídeo forma un bloque de vídeo residual restando los datos de predicción de la unidad 40 de selección de modo del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de resta. La unidad 52 de procesamiento de transformada aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada. Podrían usarse las transformadas de ondícula, las transformadas de enteros, las transformadas de subbanda, las transformadas de seno discretas (DST), u otros tipos de transformadas en lugar de una DCT. En cualquier caso, la unidad 52 de procesamiento de transformada aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada. La transformada puede convertir la información residual de un dominio de los píxeles a un dominio de la transformada, tal como un dominio de frecuencia. La unidad 52 de procesamiento de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
Después de la cuantificación, la unidad 56 de codificación por entropía codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación por entropía puede realizar codificación de longitud variable adaptativa según contexto (CAVLC), codificación binaria aritmética adaptativa según contexto (CABAC), codificación binaria aritmética adaptativa según contexto basada en sintaxis (SBAC), codificación por entropía de subdivisión de intervalo de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de codificación por entropía basada en contexto, el contexto puede estar basado en bloques vecinos. Después de la codificación por entropía por la unidad 56 de codificación por entropía, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el decodificador 30 de vídeo) o archivarse para su transmisión o recuperación posterior.
La unidad 58 de cuantificación inversa y la unidad de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles. En particular, el sumador 62 añade el bloque residual objetivo al bloque de predicción de movimiento compensado anteriormente producido por la unidad 44 de compensación de movimiento o la unidad 46 de intra-predicción para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria 64 de imagen de referencia. El bloque de vídeo reconstruido puede usarse por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para intercodificar un bloque en un fotograma de vídeo posterior.
De esta manera, el codificador 20 de vídeo de la Figura 2 representa un ejemplo de un codificador de vídeo configurado para codificar un bloque de muestras de luma para un primer bloque de datos de vídeo, reconstruir el bloque codificado de muestras de luma para crear muestras de luma reconstruidas, y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma reconstruidas para el primer bloque de datos de vídeo y dos o más modelos de predicción lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar muestras de luma para un primer bloque de datos de vídeo; determinar un modelo de predicción para usar para predecir muestras de croma para el primer bloque de datos de vídeo; determinar uno de una pluralidad de filtros de submuestreo para usar para submuestrear las muestras de luma; submuestrear las muestras de luma usando el filtro de submuestreo determinado para producir muestras de luma submuestreadas; y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma submuestreadas para el primer bloque de datos de vídeo y el modelo de predicción.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar si se codifica un bloque de croma actual de los datos de vídeo usando un modelo lineal, en el caso de que se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, codificar el bloque de croma actual de datos de vídeo usando el modelo lineal, en el caso de que no se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, comprendiendo adicionalmente el método determinar si se posibilita predicción angular de modo lineal cuando se determina que el bloque actual no va a codificarse usando el modelo lineal, aplicar, si se posibilita predicción angular de modo lineal, un patrón de predicción de modo angular y un patrón de predicción de modelo lineal a muestras del bloque de croma actual, y determinar una predicción angular de modo lineal final para las muestras del bloque de croma actual como una suma ponderada del patrón de predicción de modo angular aplicado y el patrón de predicción de modelo lineal.
En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar si se codifica un bloque de croma actual de los datos de vídeo usando un modelo lineal, en el caso de que se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, codificar el bloque de croma actual de datos de vídeo usando el modelo lineal, en el caso de que no se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, estando configurados adicionalmente el uno o más procesadores para determinar si se posibilita predicción angular de modo lineal cuando se determina que el bloque actual no se va a codificar usando el modelo lineal, aplicar, si se posibilita predicción angular de modo lineal, un patrón de predicción de modo angular y un patrón de predicción de modelo lineal a muestras del bloque de croma actual, y determinar una predicción angular de modo lineal final para las muestras del bloque de croma actual como una suma ponderada del patrón de predicción de modo angular aplicado y el patrón de predicción de modelo lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar un número de bloques de croma vecinos, con relación a datos de vídeo de bloque actual, que se codifican usando un modo de codificación de modelo lineal, y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo lineal.
En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar un número de bloques de croma vecinos, con relación a datos de vídeo de bloque actual, que se codifican usando un modo de codificación de modelo lineal, y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar un tamaño de un bloque de croma actual de los datos de vídeo, comparar el tamaño del bloque de croma actual a un umbral, aplicar un modo de modelo lineal de una pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual satisface el umbral, y no aplicar el modo de modelo lineal de la pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual no satisface el umbral.
En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar un tamaño de un bloque de croma actual de los datos de vídeo, comparar el tamaño del bloque de croma actual con un umbral, aplicar un modo de modelo lineal de una pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual satisface el umbral, y no aplicar el modo de modelo lineal de la pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual no satisface el umbral.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo del decodificador 30 de vídeo que puede implementar técnicas para intra predicción de croma de modelo lineal mejoradas descritas en esta divulgación. En el ejemplo de la Figura 3, el decodificador 30 de vídeo incluye una unidad 70 de decodificación por entropía, la unidad 72 de compensación de movimiento, la unidad 74 de intra predicción, la unidad 76 de cuantificación inversa, la unidad 78 de transformación inversa, la memoria 82 de imagen de referencia, la memoria 85 de datos de vídeo y el sumador 80. El decodificador 30 de vídeo puede realizar, en algunos ejemplos, una pasada de decodificación, generalmente recíproca a la pasada de codificación descrita con respecto al codificador 20 de vídeo (Figura 2). La unidad 72 de compensación de movimiento puede generar datos de predicción basándose en vectores de movimiento recibidos de la unidad 70 de decodificación por entropía, mientras que la unidad 74 de intra predicción puede generar datos de predicción basándose en los indicadores de modo de intra predicción recibidos de la unidad 70 de decodificación por entropía.
Durante el proceso de decodificación, el decodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un corte de vídeo codificado y elementos de sintaxis asociados del codificador 20 de vídeo. El decodificador 30 de vídeo almacena el flujo de bits de vídeo codificado recibido en la memoria 85 de datos de vídeo. La memoria 85 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 85 de datos de vídeo pueden obtenerse, por ejemplo, mediante el medio 16 legible por ordenador, desde los medios de almacenamiento, o desde una fuente de vídeo local, tal como una cámara o accediendo a medios de almacenamiento de datos físicos. La memoria 85 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 82 de imagen de referencia puede ser una memoria de imagen de referencia que almacena datos de vídeo de referencia para su uso al decodificar datos de vídeo por el decodificador 30 de vídeo, por ejemplo, en modos de intra- o intercodificación. La memoria 85 de datos de vídeo y la memoria 82 de imagen de referencia pueden estar formadas por cualquiera de una diversidad de dispositivos de memoria, tales como DRAM, SDRAM, MRAM, RRAM u otros tipos de dispositivos de memoria. La memoria 85 de datos de vídeo y la memoria 82 de imagen de referencia pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados. En diversos ejemplos, la memoria 85 de datos de vídeo puede estar en un chip con otros componentes del decodificador 30 de vídeo, o fuera de un chip en relación con esos componentes.
La unidad 70 de decodificación por entropía del decodificador 30 de vídeo decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intra-predicción y otros elementos de sintaxis. La unidad 70 de decodificación por entropía reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad 72 de compensación de movimiento. El decodificador 30 de vídeo puede recibir los elementos de sintaxis en el nivel de corte de vídeo y/o en el nivel de bloque de vídeo.
Cuando se codifica el corte de vídeo como un corte intra-codificado (I), la unidad 74 de intra-predicción puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual basándose en un modo de intra predicción señalizado y datos de bloques previamente decodificados del fotograma o imagen actual. Cuando se codifica el fotograma de vídeo como un corte inter-codificado (es decir, B o P), la unidad 72 de compensación de movimiento produce bloques predictivos para un bloque de vídeo del corte de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad 70 de decodificación por entropía. Los bloques predictivos pueden producirse de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de vídeo puede reconstruir las listas de fotogramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción por defecto basándose en imágenes de referencia almacenadas en la memoria 82 de imagen de referencia.
La unidad 72 de compensación de movimiento determina información de predicción para un bloque de vídeo del corte de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 72 de compensación de movimiento usa alguno de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o inter- predicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de inter-predicción (por ejemplo, corte B o corte P), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo inter-codificado del corte, estado de inter-predicción para cada bloque de vídeo inter-codificado del corte, y otra información para decodificar los bloques de vídeo en el corte de vídeo actual.
La unidad 72 de compensación de movimiento puede realizar también interpolación basándose en filtros de interpolación. La unidad 72 de compensación de movimiento puede usar filtros de interpolación como se usan por el codificador 20 de vídeo durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles sub-enteros de los bloques de referencia. En este caso, la unidad 72 de compensación de movimiento puede determinar los filtros de interpolación usados por el codificador 20 de vídeo de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
Como se explicará en más detalle a continuación, la unidad 74 de intra predicción puede estar configurada para realizar las técnicas de intra predicción de croma de modelo lineal mejoradas descritas en esta divulgación.
La unidad 76 de cuantificación inversa cuantifica a la inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad 70 de decodificación por entropía. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPy calculado por el decodificador 30 de vídeo para cada bloque de vídeo en el corte de vídeo para determinar un grado de cuantificación y, análogamente, un grado de cuantificación inversa que debe aplicarse.
La unidad 78 de transformación inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de entero inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de los píxeles.
Después de que la unidad 72 de compensación de movimiento genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis, el decodificador 30 de vídeo forma un bloque de vídeo decodificado sumando los bloques residuales de la unidad 78 de transformada inversa con los correspondientes bloques predictivos generados por la unidad 72 de compensación de movimiento. El sumador 80 representa el componente o componentes que realizan esta operación de suma. Si se desea, puede aplicarse también un filtro de desbloqueo para filtrar los bloques decodificados para eliminar artefactos de bloqueo. Pueden usarse también otros filtros (en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxel o mejorar de otra manera la calidad de vídeo. Los bloques de vídeo decodificados en un fotograma o imagen dados se almacenan a continuación en la memoria 82 de imagen de referencia, que almacena imágenes de referencia usadas para compensación de movimiento posterior. La memoria 82 de imagen de referencia también almacena vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la Figura 1.
De esta manera, el decodificador 30 de vídeo de la Figura 3 representa un ejemplo de un decodificador de vídeo configurado para recibir un bloque codificado de muestras de luma para el primer bloque de datos de vídeo, decodificar el bloque codificado de muestras de luma para crear muestras de luma reconstruidas, y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma reconstruidas para el primer bloque de datos de vídeo y dos o más modelos de predicción lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar muestras de luma para un primer bloque de datos de vídeo; determinar un modelo de predicción para usar para predecir muestras de croma para el primer bloque de datos de vídeo; determinar uno de una pluralidad de filtros de submuestreo para usar para submuestrear las muestras de luma; submuestrear las muestras de luma usando el filtro de submuestreo determinado para producir muestras de luma submuestreadas; y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma submuestreadas para el primer bloque de datos de vídeo y el modelo de predicción.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar si se codifica un bloque de croma actual de los datos de vídeo usando un modelo lineal, en el caso de que se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, codificar el bloque de croma actual de datos de vídeo usando el modelo lineal, en el caso de que no se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, comprendiendo adicionalmente el método determinar si se posibilita predicción angular de modo lineal cuando se determina que el bloque actual no va a codificarse usando el modelo lineal, aplicar, si se posibilita predicción angular de modo lineal, un patrón de predicción de modo angular y un patrón de predicción de modelo lineal a muestras del bloque de croma actual, y determinar una predicción angular de modo lineal final para las muestras del bloque de croma actual como una suma ponderada del patrón de predicción de modo angular aplicado y el patrón de predicción de modelo lineal. En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar si se codifica un bloque de croma actual de los datos de vídeo usando un modelo lineal, en el caso de que se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, codificar el bloque de croma actual de datos de vídeo usando el modelo lineal, en el caso de que no se codifique el bloque de croma actual de datos de vídeo usando un modelo lineal, estando configurados adicionalmente el uno o más procesadores para determinar si se posibilita predicción angular de modo lineal cuando se determina que el bloque actual no se va a codificar usando el modelo lineal, aplicar, si se posibilita predicción angular de modo lineal, un patrón de predicción de modo angular y un patrón de predicción de modelo lineal a muestras del bloque de croma actual, y determinar una predicción angular de modo lineal final para las muestras del bloque de croma actual como una suma ponderada del patrón de predicción de modo angular aplicado y el patrón de predicción de modelo lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar un número de bloques de croma vecinos, con relación a datos de vídeo de bloque actual, que se codifican usando un modo de codificación de modelo lineal, y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo lineal.
En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar un número de bloques de croma vecinos, con relación a datos de vídeo de bloque actual, que se codifican usando un modo de codificación de modelo lineal, y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo lineal.
En un ejemplo, un método de codificación de datos de vídeo comprende determinar un tamaño de un bloque de croma actual de los datos de vídeo, comparar el tamaño del bloque de croma actual a un umbral, aplicar un modo de modelo lineal de una pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual satisface el umbral, y no aplicar el modo de modelo lineal de la pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual no satisface el umbral.
En un ejemplo, un dispositivo para codificar datos de vídeo comprende una memoria que almacena datos de vídeo, y un codificador de vídeo que comprende uno o más procesadores configurados para determinar un tamaño de un bloque de croma actual de los datos de vídeo, comparar el tamaño del bloque de croma actual con un umbral, aplicar un modo de modelo lineal de una pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual satisface el umbral, y no aplicar el modo de modelo lineal de la pluralidad de modos de modelo lineal cuando el tamaño del bloque de croma actual no satisface el umbral.
La intra predicción de croma de Modelo Lineal (LM) se propuso en el JCT-VC en Chen, et al., "CE6.a.4: Chroma intra prediction by reconstructed luma samples", Joint Collaborative Team on Video Coding (JCT-VC) de la ITU-T SG16 WP3 y ISO/IEC JTC1/SC29/WG1, 5a reunión: Ginebra, 16-23 de marzo de 2011, JCTVC-E266, que está disponible en http://phenix.int-evry.fr/ict/doc_end_user/documents/5_Geneva/wg11/JCTVC-E0266-v4.zip. El modo de LM se ha propuesto también en el JVET, y se describe en la Sección 2.2.4 de
Chen, et al., "Algorithm Description of Joint Exploration Test Model 3", Equipo de Exploración de Vídeo Conjunto (JVET) de la ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 3a reunión: Ginebra, CH, 26 de mayo - 1 de junio de 2016, JVET-C1001, y que está disponible en http://phenix.intevry.fr/ivet/doc_end_user/documents/3_Geneva/wg11/JVET-C1001-v3.zip_LM, el modo supone que hay una relación lineal entre los componentes de luma y de croma de un bloque de vídeo. Cuando se codifican datos de vídeo de acuerdo con el modo de LM, el codificador 20 de vídeo (por ejemplo, la unidad 46 de intra predicción) y el decodificador 30 de vídeo (por ejemplo, la unidad 74 de intra predicción) pueden estar configurados para analizar los píxeles reconstruidos vecinos de un bloque de datos de vídeo utilizando el enfoque de regresión lineal para determinar la relación entre muestras de luma y muestras de croma. Cuando se usa el modo de LM, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para predecir los valores de croma (por ejemplo, tanto muestras de croma Cr como Cb) a partir de valores de luma reconstruidos del mismo bloque como sigue.
Predc [x, y] = a ■ RecL ' [ a; y]+¡3 ( 1)
donde Predc indica la predicción de muestras de croma en un bloque y RecL indica las muestras de luma reconstruidas en el bloque. Los parámetros a y @ se derivan de muestras reconstruidas causales que son vecinas al bloque actual.
En algunos ejemplos, la relación de muestreo de los componentes de croma es la mitad de la del componente de luma y los componentes de croma que tienen una diferencia de fase de 0,5 píxeles en la dirección vertical en muestreo YUV420 (por ejemplo, también denominado submuestreo de croma 4:2:0). Las muestras de luma reconstruidas se submuestrean en la dirección vertical y se submuestrean en la dirección horizontal para adaptar el tamaño y la fase de la señal de croma (es decir, el número esperado de componentes de croma en un bloque), como sigue:
RecL ' [ a; y] = (RecL[2x, 2y ]+RecL[2x, 2y + 1]) » 1 (2 )
donde >> es un desplazamiento lógico a la derecha.
Un ejemplo de LM utiliza una solución de mínimo cuadrado lineal entre los datos reconstruidos causales de un componente de luma submuestreado y un componente de croma causal para derivar parámetros de modelo lineal a y p. Por ejemplo, los parámetros de modelo a y p pueden derivarse como sigue:
Figure imgf000015_0001
donde Recc(i) y RecL'(i) indican muestras de croma reconstruidas y muestras de luma submuestreadas que son vecinas al bloque objetivo, y I indica el número total de muestras de datos vecinos.
La Figura 4 es un diagrama conceptual que ilustra las ubicaciones de muestras usadas para derivar el parámetro de modelo a y el parámetro de modelo p. Como se ilustra en la Figura 4, únicamente se marcan las muestras causales izquierda y superior como círculos grises que están implicadas en el cálculo del parámetro de modelo a y el parámetro de modelo p para mantener el número de muestras totales I como potencia de 2. Para un bloque de croma objetivo NxN, cuando están disponibles tanto las muestras causales izquierda como superior, el número total de muestras implicadas es 2N; cuando únicamente hay disponible la muestra causal izquierda o superior, el número total de muestras implicadas es N .
La Figura 5 es un gráfico de una regresión lineal de ejemplo entre componentes de luma (Y) y de croma (C). Como se ilustra en la Figura 5, de acuerdo con un ejemplo, puede resolverse una relación lineal entre componentes de luma y de croma usando un método de regresión lineal. En la Figura 5, un punto en el diagrama conceptual corresponde a un par de la muestra RecL[x, y], Recc[x, y]).
La Figura 6 es un diagrama conceptual que ilustra un ejemplo de submuestreo de muestra de luma en JEM3.0. En el ejemplo de la Figura 6, los símbolos de triángulo representan un valor de luma submuestreado, mientras que los símbolos de círculo representan las muestras de luma reconstruidas originales (es decir, antes de cualquier submuestreo). Las líneas representan cuáles de las muestras de luma originales se usan para crear un valor de luma submuestreado de acuerdo con cada filtro de submuestreo específico. En un ejemplo, JVET usa un filtro de submuestreo de muestra de luma más sofisticado para el modo de LM en JEM3.0, como se ilustra en la Figura 6 de esta divulgación, donde
Rec' L\x, y] = ( 2 ■ RecL[2x,2y\ 2 RecL[ 2x, 2y + 1] RecL\2x — 1,2 y]
4- RecL[2x l,2y] 4- RecL[2x — 1,2 y + 1] RecL[2x 4- 1,2 y 1]
4) » 3
Cuando las muestras se ubican en el límite de la imagen, puede aplicarse un filtro de dos derivaciones como se muestra en la ecuación (2), anterior.
Las técnicas anteriores para predicción de croma de LM usaban un modelo de regresión lineal sencillo para predecir valores de croma a partir de valores de luma reconstruidos. Sin embargo, este enfoque puede tener desventajas para ciertas secuencias de vídeo. Por ejemplo, la relación entre muestras de luma y de croma puede no ser lineal a través de todos los posibles valores de luma. Como tal, la predicción de croma de LM puede introducir cantidades indeseables de distorsión en el vídeo decodificado en algunos ejemplos. Esto se cumple especialmente para bloques de datos de vídeo que tienen una amplia gama de valores de luma. Esta divulgación describe técnicas para realizar predicción de croma de LM, que incluye técnicas para submuestreo de luma y una predicción de croma de LM y modo de predicción angular combinados. Las técnicas de esta divulgación pueden mejorar la calidad visual de los datos de vídeo codificados y decodificados usando un modo de predicción de croma de LM.
En algunos ejemplos, esta divulgación describe el concepto de múltiples filtros de submuestreo de luma. En un ejemplo, cuando se posibilita el modo de predicción de croma de LM, puede señalizarse adicionalmente uno o más conjuntos del filtro de submuestreo en cualquiera de un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) o un encabezado de corte. En un ejemplo, puede introducirse una sintaxis de mensaje de información de mejora complementaria (SEI) para describir el filtro de submuestreo. En un ejemplo, puede definirse un filtro de submuestreo por defecto, por ejemplo, el filtro de 6 derivaciones [1, 2, 1; 1, 2, 1] sin señalización. En un ejemplo, el codificador 20 de vídeo puede señalizar un índice del filtro que se usa en el modo de predicción de LM en una PU/CU/CU más grande. En un ejemplo, el uso de la derivación de filtro puede derivarse al vuelo sin señalización. Por ejemplo, el decodificador 30 de vídeo puede estar configurado para determinar el uso de la derivación de filtro a partir de características del flujo de bits de vídeo codificado y/o de los modos de codificación sin señalización explícita. Como se describirá en mayor detalle a continuación, esta divulgación describe un método de LM de múltiples modelos (MMLM), un método de lM de múltiples filtros (MFLM) y una predicción de LM-angular (LAP), cada uno de los cuales puede utilizarse, en solitario o en cualquier combinación.
En un ejemplo, cuando se utiliza un método de MMLM, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para usar más de un modelo lineal (por ejemplo, múltiples modelos lineales), para un único bloque/unidad de codificación (CU)/unidad de transformada (TU), para predecir componentes de croma del bloque a partir de componentes de luma del bloque. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para derivar los múltiples modelos lineales usando muestras de luma vecinas y muestras de croma vecinas.
Las muestras de luma vecinas y las muestras de croma vecinas del bloque actual pueden clasificarse en varios grupos basándose en los valores de las muestras. Cada grupo se usa como un conjunto de entrenamiento para derivar un modelo lineal diferente (es decir, se deriva una a y @ particulares para cada grupo particular). En un ejemplo, adicionalmente, el codificador 20 de vídeo y el decodificador 30 de vídeo están configurados para clasificar las muestras del correspondiente bloque de luma actual (es decir, el bloque de luma que corresponde al bloque de croma actual) basándose en la misma regla para la clasificación de muestras vecinas.
En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo están configurados para aplicar cada modelo lineal a las correspondientes muestras de luma clasificadas para obtener bloques de croma previstos parciales. El codificador 20 de vídeo y el decodificador 30 de vídeo están configurados para combinar cada bloque de croma previsto parcial obtenido de cada uno de los modelos lineales para obtener el bloque de croma previsto final. En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para aplicar cada modelo lineal a todas las muestras de luma del bloque actual para obtener múltiples bloques de croma previstos. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden aplicar a continuación una media ponderada a cada uno de los múltiples bloques de croma previstos para obtener un bloque de croma previsto final.
En algunos ejemplos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para requerir que el número de muestras en un grupo después de la clasificación sea mayor o igual que un número específico (por ejemplo, al menos 2 muestras por grupo de clasificación). En un ejemplo, el menor número de muestras en un grupo de clasificación está predefinido y se usa el mismo valor para todos los tamaños de bloque. En otro ejemplo, el menor número de muestras en un grupo de clasificación puede ser variable, y puede depender del tamaño del bloque actual, y/o puede depender de otras características (por ejemplo, qué grupo de clasificación incluye el menor número de muestras puede depender del modo o modos de predicción de bloques vecinos). Si el número de muestras en un grupo es menor que el mínimo definido para un cierto bloque, las muestras en otros grupos pueden cambiarse a este grupo (por ejemplo, las muestras de grupos de clasificación adyacentes pueden combinarse). Por ejemplo, una muestra en el grupo con la mayoría de las muestras puede cambiarse al grupo con muestras menores que el número mínimo definido para el bloque.
En un ejemplo, una muestra en un grupo (nombrado el grupo A) con la mayoría de las muestras puede cambiarse a un grupo (nombrado el grupo B) con muestras menores que el número mínimo definido para el bloque si es la muestra más cercana a la muestra existente en el grupo B. En un ejemplo, "el más cerca" puede hacer referencia al más cerca en posición de píxel. En otro ejemplo, "el más cerca" puede hacer referencia a la intensidad más cerca (por ejemplo, valor de croma o de luma). En otro ejemplo, el número mínimo definido para el bloque puede depender de la anchura y/o la altura del bloque de codificación.
En un ejemplo, la clasificación de muestras de luma y de croma vecinas puede estar basada en las intensidades de las muestras (por ejemplo, valores de las muestras vecinas de luma y/o croma) y/o las posiciones de las muestras de luma y/o croma vecinas. En un ejemplo, el codificador 20 de vídeo puede estar configurado para señalizar elementos de sintaxis al decodificador 30 de vídeo que indican el método de clasificación que va a usarse.
En un ejemplo, el número de clases puede estar predefinido y fijado para todas las secuencias de vídeo. En un ejemplo, el codificador 20 de vídeo puede estar configurado para señalizar el número de clases en un flujo de bits de vídeo codificado al decodificador 30 de vídeo en uno o más de un PPS, SPS y/o encabezado de corte. En un ejemplo, el número de clases puede depender del tamaño de bloque, por ejemplo, anchura y/o altura del bloque de luma/croma actual. Un ejemplo de M clases para MMLM se proporciona como sigue:
Figure imgf000017_0001
En el ejemplo anterior, Ti - Tm - 1 son niveles umbral para cada grupo de clasificación, y, por lo tanto, los niveles umbral para cada modelo lineal correspondiente Predc[x, y] = am • Rec'L[x, y] + pM. en el ejemplo anterior, los umbrales pueden definirse como valores de muestras de luma. Una muestra de luma vecina (RecL [x, y]) con un valor entre dos umbrales consecutivos (por ejemplo, Tm-i < RecL[x, y] < Tm) se clasifica en el grupo de orden m (en donde m es de 1 a M, inclusive). En un ejemplo, T-1 puede definirse como un valor negativo, por ejemplo, -1. Los (M-1) umbrales indicados por (Ti... Tm-i ) pueden señalizarse desde codificador 20 de vídeo al decodificador 30 de vídeo. En otros ejemplos, los umbrales pueden estar predefinidos y almacenarse en cada uno del codificador 20 de vídeo y del decodificador 30 de vídeo
En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular los umbrales dependiendo de todo o de un subconjunto parcial de las muestras de luma/croma codificadas vecinas, y/o las muestras de luma codificadas en el bloque actual.
Las Figuras 7A-7E son gráficos que representan la clasificación de muestras vecinas en múltiples grupos y la determinación de un modelo lineal para cada grupo de acuerdo con ejemplos de esta divulgación. La clasificación de muestras vecinas en dos grupos se ilustra en la Figura 7A, la clasificación de muestras vecinas en tres grupos se ilustra en la Figura 7B y la clasificación de muestras vecinas en dos o más grupos no continuos se ilustra en las Figuras 7C-7E. En algunos ejemplos, la definición o cálculo de los umbrales puede diferir bajo diferentes valores de M (por ejemplo, diferentes valores umbral dependiendo del número de grupos, y, por lo tanto, del número de modelos lineales).
En un ejemplo, como se ilustra en la Figura 7A, cuando M es igual a 2, las muestras vecinas pueden clasificarse en dos grupos. Una muestra vecina con RecL[x, y] < umbral puede clasificarse en el grupo 1; mientras que una muestra vecina con RecL[x, y] > umbral puede clasificarse en el grupo 2. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para derivar dos modelos lineales (uno para cada grupo) como sigue:
í Predc [.v, y] = a t • Rec \ [x, y] fd{ si Rec \ [x, y] < umbral
\Predc[x, y] = a 2 • Rec\\x,y] + fí2 si Rec\[x,y] > umbral ^ ^
En un ejemplo de acuerdo con la Figura 7A (es decir, donde se clasifican dos grupos), el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el valor promedio de las muestras de luma vecinas codificadas (también indicadas como 'reconstruidas'). Como se ha analizado anteriormente, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para submuestrear las muestras de luma reconstruidas si los componentes de croma están submuestreados (por ejemplo, se usa un formato de submuestreo de croma distinto de 4:4:4). En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el valor de mediana de las muestras de luma codificadas vecinas. En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el promedio de minV y maxV, en donde minV y maxV son el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en el formato 4:4:4). En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el valor promedio de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el valor de mediana de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular el umbral como el promedio de minV y maxV, en donde minV y maxV son el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4).
En un ejemplo, como se ilustra en la Figura 7B, cuando M es igual a 3, las muestras vecinas pueden clasificarse en tres grupos. Una muestra vecina (por ejemplo, muestra de luma) con Rec’L[x,y] < umbrali puede clasificarse en el grupo 1; una muestra vecina con umbrali < RecL[x,y] < umbral2 puede clasificarse en el grupo 2 y una muestra vecina con RecL[x,y] > umbral2 puede clasificarse en el grupo 3. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para derivar los tres modelos lineales como:
F’red, \x, y] = al - Rec \ [x, y] + pl si Rec'. [x, j'] < umbral
< Predc[x,y\ = a2-Rec'L[x,y] f32 si umbrall<Rec'L[x,y]<umbral2 (7)
Predc [x,y] = a* ■ Rec 'L[x, y] (3- si Rec', [x, y] > umbral2
En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular un umbral usando los métodos anteriormente descritos para el caso cuando M es igual a 2. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados adicionalmente para calcular umbral1 (por ejemplo, como se muestra en la Figura 7B) como el promedio de minV y umbral. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral2 (por ejemplo, como se muestra en la Figura 7B) como el promedio de maxV y umbral. Los valores de minV y maxV pueden ser el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral1 como 1/3 de sumV y umbral2 puede calcularse como 2/3 de sumV, donde sumV es el valor de suma acumulada de las muestras de luma codificadas vecinas (pueden submuestrearse si no están en formato 4:4:4).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral1 como un valor entre S[N/3] y S[N/3+1] y umbral2 puede calcularse como un valor entre S[2*N/3] y S[2*N/3+1]. En este ejemplo, N puede ser el número total de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). S[0], S[1],.... S[N-2], S[N-1] puede ser la secuencia ordenada de manera ascendente de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular un valor umbral usando cualquier método anteriormente descrito para el caso cuando M es igual a 2. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados adicionalmente para calcular umbral1 como el promedio de minV y umbral. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral2 como el promedio de maxV y umbral. En este ejemplo, los valores de minV y maxV pueden ser el valor mínimo y los valores máximos, respectivamente, de ambas de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral1 como 1/3 de sumV. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral2 como 2/3 de sumV. En este ejemplo, sumV puede ser el valor de suma acumulada de ambas de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para calcular umbral1 como un valor entre S[N/3] y S[N/3+1] y umbral2 puede calcularse como S[2*N/3] y S[2*N/3+1]. En este ejemplo, N puede ser el número total de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). S[0], S[1],.... S[N-2], S[N-1] puede ser la secuencia ordenada de manera ascendente de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4).
En un ejemplo, las relaciones lineales derivadas (representadas como líneas en las Figuras 7A-7E) de cada grupo pueden ser continuas por partes como en la Figura 7A y en la Figura 7B, donde los modelos lineales para grupos adyacentes dan como resultado el mismo valor en los diversos umbrales, como se muestra en las ecuaciones (8) y (9) a continuación:
o, ■ Rec'.[x, y ]+ (3X = a 2 ■ Rec'L[x, j32 si Rec\ [x.y] = umbral (8)
en la Figura 7A, y
Figure imgf000018_0001
en la Figura 7B.
En otro ejemplo, las relaciones lineales derivadas de cada grupo pueden ser no continuas, por partes, como en la Figura 7C y la Figura 7E, donde los modelos lineales para grupos adyacentes no dan como resultado el mismo valor en los diversos umbrales, como se muestra en las ecuaciones (10) y (11) a continuación
al -Rec'L[x,y]+j3l ^ a 2-Rec'L[x,y\+j32 si Rec'L[x,y] = umbral (10) en la Figura 7C, y
Figure imgf000019_0001
en la Figura 7E.
Para convertir modelos lineales por partes no continuos (por ejemplo, los modelos lineales por partes no continuos mostrados en la Figura 7C) a modelos lineales por partes continuos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para generar una zona de transición entre dos umbrales. El segmento del modelo lineal en la zona de transición conecta los modelos lineales originales. En este caso, una relación de dos modelos no continua da como resultado una relación de tres modelos (como se muestra en la Figura 7D) después de la conversión. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para derivar los límites de la zona de transición (Zo a Zi en la Figura 7D) basándose en el valor de los umbrales originales para la clasificación y los valores de las muestras vecinas y/o los valores para las muestras de bloque actual.
En el ejemplo con una zona de transición, los modelos lineales pueden definirse como sigue:
Figure imgf000019_0002
si Rec’L[x,y] está en la zona de transición [Z0, Z1].
En un ejemplo,
Figure imgf000019_0003
En un ejemplo,
s = 2" = Z1- Z q, coí = Zj - Rec' L[x,y\,co2 =s-col
Figure imgf000019_0004
Los modelos lineales por partes continuos convertidos pueden usarse para sustituir los modelos lineales por piezas continuos no continuos o pueden insertarse como modos de predicción de LM adicionales.
Con las técnicas de MMLM de esta divulgación, pueden usarse más muestras de luma y/o de croma vecinas para derivar los modelos lineales con relación a técnicas de modo de predicción de LM anteriores. La Figura 8A muestra las muestras de croma vecinas que se usan en ejemplos de modo de LM anteriores. Las mismas muestras de croma vecinas pueden usarse para las técnicas de MMLM de esta divulgación. Las Figuras 8B-8D son diagramas conceptuales de otros grupos de ejemplo de muestras de croma vecinas usadas para derivar los modelos lineales en modo de MMLM de acuerdo con ejemplos de esta divulgación. En las Figuras 8B-8D, se usan más muestras vecinas para derivar los modelos lineales en MMLM con relación a la Figura 8A. Los puntos negros en las Figuras 8A-8D representan las muestras de croma vecinas que se usan para derivar los dos o más modelos lineales de las técnicas de MMLM de esta divulgación. Los puntos blancos fuera del bloque muestran otras muestras de croma vecinas que no se usan. Los puntos blancos dentro del recuadro representan muestras de croma del bloque que van a predecirse. Pueden usarse también correspondientes muestras de luma submuestreadas para derivar los modelos lineales. La Figura 9 es un diagrama conceptual de la clasificación de muestras vecinas de acuerdo con un ejemplo de las técnicas de MMLM de esta divulgación. La Figura 9 ilustra un bloque de croma de codificación actual 4x4 (Recc) con muestras de croma vecinas codificadas, y correspondientes muestras de luma codificadas (Rec'L, que pueden submuestrearse si no están en el formato 4:4:4) en el bloque actual y los bloques vecinos. De acuerdo con un ejemplo, en modo de MMLM, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para clasificar las muestras de luma codificadas vecinas en grupos. En el ejemplo de la Figura 9, las muestras de luma codificadas vecinas se clasifican en dos grupos. Una muestra de luma vecina con Rec’L[x,y] < umbral puede clasificarse en el grupo 1; mientas que una muestra vecina con RecL[x,y] > umbral puede clasificarse en el grupo 2. En este ejemplo, el umbral puede ser 17, por ejemplo. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para clasificar las muestras de croma vecinas de acuerdo con la clasificación de las correspondientes muestras de luma vecinas. Es decir, se clasifica una correspondiente muestra de croma en el mismo grupo que la correspondiente muestra de luma en la misma posición.
Como se muestra en la Figura 9, cada una de las muestras de luma, tanto en el bloque actual como en las muestras de luma vecinas, tiene un valor de luma asociado representado en cada círculo. Los valores de luma vecinos que son menores o iguales que el umbral (en este caso 17), están sombreados en negro (grupo 1). Los valores de luma que son mayores que el umbral se dejan en blanco, es decir, no sombreados (grupo 2). Las muestras de croma vecinas se clasifican en el grupo 1 y el grupo 2 basándose en las clasificaciones de las correspondientes muestras de luma en las mismas posiciones.
La Figura 10 es un diagrama conceptual de dos modelos lineales para muestras de luma codificadas que se clasifican en 2 grupos. Después de que se clasifican las muestras vecinas en dos grupos (por ejemplo, como se muestra en la Figura 9), el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para derivar dos modelos lineales independientes, de manera separada, en los dos grupos como se representa en la Figura 10. En este ejemplo, los dos modelos lineales pueden obtenerse para las dos clases como
Modelo 1
Figure imgf000020_0001
Modelo 2
Los parámetros para los modelos lineales pueden derivarse de la misma manera como se ha descrito anteriormente, donde los parámetros se derivan para cada modelo lineal usando las muestras para el grupo de clasificación particular para ese modelo.
La Figura 11 es un diagrama conceptual de la aplicación de un modelo lineal, modelo 1, de dos modelos lineales, a todos los píxeles de un bloque actual. La Figura 12 es un diagrama conceptual de la aplicación de otro modelo lineal, modelo 2 de los dos modelos lineales, a todos los píxeles del bloque actual. En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para aplicar uno del modelo 1 o del modelo 2 a todas las muestras del bloque de luma submuestreadas (Rec'L) que corresponde al bloque de croma actualmente codificado, como se muestra en la Figura 11 y la Figura 12, respectivamente, para obtener las muestras de croma previstas para el bloque actual (Predc). En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para formar bloques de croma previstos con los dos modelos en paralelo. Entonces, la predicción final puede conseguirse seleccionando la muestra de croma prevista particular de los dos bloques previstos basándose en la clasificación de grupo para cada posición (es decir, basándose en la clasificación de grupo de cada valor de luma en cada posición de croma).
En otro ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para aplicar tanto el modelo 1 como el modelo 2 a todas las muestras del bloque de luma submuestreadas (Rec'L) que corresponde al bloque de croma actualmente codificado para obtener dos versiones de las muestras de croma previstas para el bloque actual (Predc). El codificador 20 de vídeo y el decodificador 30 de vídeo están configurados adicionalmente para calcular una media ponderada de las dos versiones de las muestras de croma previstas. El promedio ponderado de dos bloques de predicción (usando el modelo 1 o el modelo 2) puede tratarse como el bloque de predicción final del bloque de croma actual. Puede usarse cualquier ponderación. Como un ejemplo, puede usarse una ponderación 0,5/0,5.
La Figura 13 es un diagrama conceptual de otra técnica de predicción de ejemplo de acuerdo con las técnicas de MMLM de esta divulgación. Como se ilustra en la Figura 13, el codificador 20 de vídeo y el decodificador 30 de vídeo puede clasificar en primer lugar muestras de luma reconstruidas (Rec'L) en el bloque actual. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados adicionalmente para aplicar un primer modelo lineal (por ejemplo, el modelo 1 de la Figura 10) a muestras de luma en el primer grupo de clasificación (representado por círculos negros en la Figura 13). El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados adicionalmente para aplicar un segundo modelo lineal (por ejemplo, el modelo 2 de la Figura 10) a muestras de luma en un segundo grupo de clasificación (representado por círculos blancos en la Figura 13).
En el ejemplo de la Figura 13, las muestras de luma codificadas (submuestreadas si no están en el formato 4:4:4) pueden clasificarse en dos grupos dependiendo de las intensidades (por ejemplo, valores) de las muestras. Una muestra de luma con un valor menor o igual que el umbral (por ejemplo, RecL[x,y] < umbral) puede clasificarse en el grupo 1, mientras que una muestra de luma con un valor mayor que el umbral (por ejemplo, RecL[x, y] > umbral) puede clasificarse en el grupo 2. En este ejemplo, el umbral puede ser 17, que se calcula usando las muestras muestras de luma codificadas vecinas, como se ha descrito anteriormente. En un ejemplo, el método de clasificación para las muestras de luma reconstruidas en el bloque actual es el mismo que el método de clasificación usado para las muestras de luma vecinas codificadas.
Como se ilustra en la Figura 13, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para aplicar el modelo 1 a muestras de luma codificadas (submuestreadas si no están en el formato 4:4:4) en el bloque actual en el primer grupo de clasificación (círculos negros) para derivar las correspondientes muestras de croma previstas en el bloque actual. Análogamente, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para aplicar el modelo 2 a muestras de luma codificadas (submuestreadas si no están en el formato 4:4:4) en el bloque actual en el segundo grupo de clasificación (círculos blancos) para derivar las correspondientes muestras de croma previstas en el bloque actual. Como resultado, las muestras de croma previstas en el bloque actual se derivan de acuerdo con dos modelos lineales. Cuando hay más grupos, pueden usarse más modelos lineales para obtener las muestras de croma previstas.
En un ejemplo, el codificador 20 de vídeo puede señalizar el número de grupos en los que deben clasificarse las muestras de luma en el decodificador 30 de vídeo. Si el número es 1, se utiliza el modo de LM original. En otro ejemplo, un modo de LM con un número diferente de grupos puede tratarse como diferentes modos de LM. Por ejemplo, el modo de LM-MM1 incluye 1 grupo, el modo de LM-MM2 incluye 2 grupos y el modo de LM-MM3 incluye 3 grupos. LM-MM1 puede ser idéntico al método de LM original, mientras que puede realizarse LM-MM2 y LM-MM3 de acuerdo con las técnicas de esta divulgación. En otro ejemplo más, el decodificador 30 de vídeo puede derivar el número de grupos sin que el codificador 20 señalice el número de grupos.
En otro ejemplo de la divulgación, se describe un modo de LM de múltiples filtros (MFLM). En el modo de MFLM, puede definirse más de un filtro de submuestreo de luma si los datos de vídeo no están en un formato de submuestreo de croma 4:4:4. Por ejemplo, pueden usarse filtros de submuestreo adicionales, además de los filtros de submuestreo definidos en JEM-3.0 (mostrados en la Figura 6 de esta divulgación). Los filtros pueden estar en una forma de:
Rec'L[x,y] = a ■ RecL[2x, 2y\ b ■ RecL[2x, 2y 1] c ■ RecL[2x — 1,2y\ d ■ RecL[2x 1,2y\ e ■ RecL[2x — 1,2y 1] f ■ RecL[2x 1,2y 1] g,
( 12)
donde los pesos de filtro a, b, c, d, e, f, g son números reales.
o,
Rec'L [x, y] = ( a ■ RecL [2x, 2y\ + b ■ RecL [2x, 2y + 1] c ■ RecL \2x — 1,2y\ d ■ RecL[2x 1,2y\ e ■ RecL[2x — 1,2y 1] f RecL[2x 1,2y + 1] g ) / K ( 13)
donde los pesos de filtro a, b, c, d, e, f, g, h son números enteros.
o
Rec'L [x, y] = ( a ■ RecL \2x, 2y\ + b ■ RecL \2x, 2y + 1] c ■ RecL \2x — 1,2y\ d ■ RecL[2x 1,2y\ e ■ RecL[2x — 1,2y + ! ] / ■ RecL[2x 1,2y + 1] g ) » h, ( 14)
donde los pesos de filtro a, b, c, d, e, f, g, h son números enteros.
Las Figuras 14A-C son diagramas conceptuales de filtros de submuestreo de luma de acuerdo con un ejemplo de la presente divulgación. En los ejemplos de las Figuras 14A-14C, los símbolos de triángulo representan un valor de luma submuestreado, mientras que los símbolos de círculo representan las muestras de luma reconstruidas originales (es decir, antes de cualquier submuestreo). Las líneas representan cuáles de las muestras de luma originales se usan para crear un valor de luma submuestreado de acuerdo con cada filtro de submuestreo específico. Las ecuaciones para los diversos filtros de submuestreo representados en las Figuras 14A-14C se muestran a continuación: (a)
R ec 'L [ x ,y \ = (R ecL [ 2 x ,2 y ] RecL [2 x 1 ,2y \ 1 ) » 1;
(b)
R ec 'L [x ,y ] = ( RecL [2 x 1 ,2y \ RecL [2 x 1 ,2y 1] 1 ) » 1;
"
(c)
R ec 'L [x ,y ] = (R ecL [ 2 x , 2 y \ RecL [ 2 x , 2 y + 1] 1 ) » 1;
(d)
Figure imgf000022_0001
(e)
Figure imgf000022_0002
(f)
R ec 'L [x ,y ] = ( RecL [2 x , 2 y 1] RecL [2 x 1 ,2y \ 1 ) » 1;
(g)
Figure imgf000022_0003
(h)
Figure imgf000022_0004
(i)
Figure imgf000022_0005
(j)
Figure imgf000022_0006
(k)
Rec'L[x,y] = ( RecL[2x — 1,2y\ RecL[2x — 1,2y 1] 1) » 1; (i)
Figure imgf000023_0001
(m)
Figure imgf000023_0002
(n)
Figure imgf000023_0003
(o)
Figure imgf000023_0004
(P)
Figure imgf000023_0005
(q)
Figure imgf000023_0006
(r)
Figure imgf000023_0007
Si la secuencia de vídeo no está en un formato de submuestreo de croma 4:4:4 (es decir, sin submuestreo de croma), el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para realizar MFLM usando el modo de LM original (por ejemplo, modo de LM de modelo único) y uno o más de los filtros mostrados en las Figuras 14A-14C (o cualquier colección de filtros además de aquellos definidos en JEM-3.0 y mostrados en la Figura 6). Además, las técnicas de MFLM de esta divulgación pueden usarse en conjunto con las técnicas de MMLM anteriormente descritas.
En algunos ejemplos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar preconfigurados para usar uno de varios filtros de submuestreo candidatos, tal como 5 filtros. El codificador 20 de vídeo puede determinar un filtro óptimo para usar para una secuencia de vídeo dada (por ejemplo, basándose en la prueba de distorsión de tasa de bits) y señalizar un índice de filtro al decodificador 30 de vídeo en el flujo de bits de vídeo codificado. El índice de filtro puede señalizarse en el nivel de secuencia (por ejemplo, en VPS/SPS), en el nivel de imagen (por ejemplo, en PPS), en el nivel de corte (por ejemplo, en el encabezado de corte o en el encabezado de segmento de corte), nivel de unidad de árbol de codificación (en CTU), el nivel de unidad de codificación (en CU), el nivel de unidad de predicción (en PU), el nivel de unidad de transformada (en TU) o cualquier otro nivel de elementos de sintaxis.
En un ejemplo, los cinco filtros candidatos pueden ser como se muestran a continuación:
FiltroO:
Rec'L[x,y] = ( 2 ■ RecL[2x,2y\ 2 ■ RecL[2x,2y + 1] RecL[2x —
1,2y\ RecL[2x 1,2y\ RecL[2x — 1,2y + 1] RecL[2x 1,2y + 1] 4) » 3,
Filtrol:
Figure imgf000024_0001
Filtro2:
Figure imgf000024_0002
Filtro3:
Figure imgf000024_0003
Filtro4:
Figure imgf000024_0004
El filtro 1 es el filtro de 6 derivaciones original en JEM-3.0.
Los modos de LM con diferentes filtros pueden tratarse como diferentes modos de LM, tales como LM-MF0, LM-MF1, LM-MF2, LM-MF3 y LM-MF4. En el ejemplo anterior, LM-MF0 es idéntico al modo de LM original. En otro ejemplo, el decodificador 30 de vídeo puede derivar el filtro de submuestreo sin que lo señalice el codificador 20 de vídeo. Los resultados filtrados pueden recortarse al intervalo de valores de luma válidos.
La Figura 15 es un diagrama de flujo de señalización en modo de predicción angular LM (LAP) de acuerdo con un ejemplo de esta divulgación. Con predicción de LM-angular (LAP), algunas clases de predicción angular (pueden incluir intra predicción direccional, CC, planar u otra de componente no cruzado) pueden combinarse con técnicas de predicción de LM, que incluyen las técnicas de MMLM de esta divulgación, para obtener la predicción final del bloque de croma. Puede señalizarse un elemento de sintaxis tal como una bandera, por ejemplo, nombrada LAP_flag, si el bloque de croma actual se codifica con intra-predicción convencional pero no en ningún modo de LM. Supóngase que el modo de predicción para el bloque de croma actual sea el modo X, entonces X puede ser alguna clase de intrapredicción angular (que incluye el modo planar y el modo de CC). Debería observarse que, si se señaliza el bloque de croma actual como el modo de DM, el bloque de croma actual también se trata como un modo angular puesto que es idéntico a alguna clase de modo de predicción angular del correspondiente bloque de luma.
Se ilustra un ejemplo de señalización del modo de predicción de LAP en la Figura 15. El decodificador 30 de vídeo puede determinar si se usó un modo de LM para codificar el bloque (120) de croma actual. En caso afirmativo, el decodificador 30 de vídeo continúa decodificando el bloque de croma actual usando el modo de LM usado por el codificador 20 de vídeo (124). Si no, el decodificador 30 de vídeo lee y analiza LAP_flag (122). Si LAP_flag indica que ha de usarse el modo de predicción de LAP (por ejemplo, LAP_flag == 1), el decodificador 30 de vídeo decodifica el bloque de croma actual usando el modo de predicción LAP (128). Si LAP_flag indica que no ha de usarse el modo de predicción de LAP (por ejemplo, LAP_flag == 0), el decodificador 30 de vídeo decodifica el bloque de croma actual usando predicción angular (126).
Con LAP, se generan dos patrones de predicción para el bloque de croma en primer lugar, y, a continuación, se combinan juntos los dos patrones de predicción. Puede generarse un patrón de predicción con uno de los varios modos de predicción angular (por ejemplo, el modo angular X ). La otra predicción puede generarse con una clase de modo de LM, tal como el modo de LM-MM2 anteriormente descrito.
La Figura 16 es un diagrama de bloques de LAP de acuerdo con un ejemplo de la presente divulgación. Como se ilustra en la Figura 16, en un ejemplo de LAP, en primer lugar, puede generarse la predicción para cada muestra en el bloque actual con el modo de predicción angular X, indicado como P1(x,y). A continuación, la predicción de cada muestra en el bloque actual puede generarse con el modo de LM-MM2, indicado como P2(x,y). A continuación, la predicción de LM-angular final puede calcularse como
P(x, y) = wl(x, y) x P l(x, y) w2(x, y) x P2(x, y ) , ( 15)
donde (x,y) representa la coordenada de una muestra en un bloque y w1(x,y) y w2(x,y) son números reales. En un ejemplo, w1 y w2 pueden tener valores de 0,5. En la ec.(15), w1(x,y) y w2(x,y) pueden satisfacer:
wl(x, y) w2(x, y) = 1. (16)
En otro ejemplo,
P(x, y) = (wl(x, y) x Pl(x, y) + w2(x, y) x P2(x, y) a) / b , (17)
donde wl(x,y),w2(x,y), a y b son números enteros.
En la ec.(17), w1(x,y) y w2(x,y) pueden satisfacer:
w\(x,y) w2(x,y) = b . (18)
En otro ejemplo,
P(x, y) = (wl(x, y) x Pl(x, y) + w2(x, y) x P2(x, y) c t ) » b , (19)
donde wl(x,y), w2(x,y), a y b son números enteros.
En la ec.(17) w1(x,y) y w2(x,y) pueden satisfacer:
(x, y) + u’2(x, y) = 2h, (20)
En un ejemplo, w1(x,y) y w2(x,y) pueden ser diferentes para diferente (x,y). En otro ejemplo, w1(x,y) y w2(x,y) pueden quedar sin cambiar para toda (x,y). En un ejemplo,
P(x, y) = (Pl(x, y) P2(x, y) +1) » 1 , (21)
para toda (x,y).
En un ejemplo, LAP_flag puede codificarse usando CABAC. El contexto de codificación puede depender de LAP_flag codificada/decodificada de los bloques vecinos. Por ejemplo, puede haber 3 contextos para LAP_flag: LAPctx[0], LAPctx[1] y LAPctx[2]. La Figura l7 es un diagrama conceptual de bloques vecinos de un bloque actual. Se calcula una variable ctx como ctx =LAP_flag_A+LAP_flag_B, donde LAP_flag_A y LAP_flag_B son las LAP_flag de bloques vecinos A y B o bloques vecinos A1 y B1, como se ilustra en la Figura 17, respectivamente. En un ejemplo, P(x,y) puede recortarse al intervalo de valores de croma válidos.
Usando los métodos propuestos de esta divulgación, puede haber muchos tipos de modos de LM usados en comparación con el modo de LM especificado en JEM-3.0. Esta divulgación describe adicionalmente una manera eficaz para codificar el modo de intra predicción de croma usado para un bloque particular. En general, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para codificar el modo de predicción de LM usado (que incluye posibles modos MMLM, MFLM o MMLM y MFLM combinados) dependiendo del modo de intra predicción de bloques vecinos de croma y/o la otra información del bloque actual. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para codificar el modo de predicción de LM usado de manera que se codifican los modos más probables que van a usarse con las palabras de código más pequeñas usadas para especificar los modos. De esta manera, pueden usarse menos bits para indicar los modos de LM. Cuáles modos están diseñados con las palabras de código más pequeñas pueden ser adaptativo basándose en el modo de intra predicción de croma de bloques vecinos y/o la otra información del bloque actual.
En un ejemplo, algunos modos de LM, tales como LM, LM-MM2 (2 modelos lineales), LM-MM3 (3 modelos lineales), LM-MF1, l M-MF2, LM-MF3 y LM-MF4 son modos de LM candidatos. El modo de LM-MFX puede indicar un modo de LM particular que usa un subconjunto particular de filtros de submuestreo de luma. Un modo de LM-MF puede usar un único modo de LM de modelo lineal o un MMLM de acuerdo con las técnicas de esta divulgación. En este ejemplo, hay 7 modos de LM candidatos y se adjunta un modo distinto de LM para representar el caso si el bloque actual se codifica con modos angulares y ningún modo de LM. Si no se señaliza modo distinto de LM, entonces se señaliza el modo angular como en JEM-3.0 o cualquier otro método. El método de señalización de modos de LM propuesto no está limitado a los modos de predicción de LM específicos como se describe. Los métodos de codificación (que incluyen el mapeo de palabra de código y la conversión a binario, et al.) podrían aplicarse para cualquier otra clase de modos de LM o señalización de modos de intra predicción de croma. El codificador 20 de vídeo y el decodificador 30 de vídeo codifican DM_flag en primer lugar. Si el modo de predicción de corma no es el modo de DM, entonces se invoca el módulo LM_coding() propuesto, para indicar el modo de predicción de croma actual. Si el módulo LM_coding() codifica el modo distinto de LM, entonces se invoca un módulo Chroma_intra_mode_coding() para codificar el modo de predicción de croma angular. Una lógica de codificación ilustrativa es como sigue.
0 )
e ) )
Figure imgf000026_0001
ode c o d i n g ( ) ;
}Para señalizar los 8 posibles modos (que incluyen un modo distinto de LM), pueden usarse 8 símbolos, 0, 1,..., 6, 7 con diferentes palabras de código o conversión a binario para representar los 8 posibles modos. Un símbolo con un número menor no debe tener una longitud de código (en bits) más larga que la de un símbolo con un número más grande. Los símbolos pueden convertirse a binario de cualquier manera, tal como, código de longitud fija, código unario, código unario truncado, código Golomb exponencial, etc. Otra conversión a binario ilustrativa para cada símbolo es como sigue:
0: 00
1: 01
2: 100
3: 101
4: 1100
5: 1101
6: 1110
7: 1111
En otro ejemplo, las palabras de código para cada símbolo pueden ser como sigue:
0: 0
1: 100
2: 101
3: 1100
4: 1101
5: 1110
6: 11110
7: 11111
En un ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar configurados para realizar un mapeo por defecto entre los símbolos y los modos, es decir, mapeo entre el valor codificado y el modo de codificación. Por ejemplo, una lista de mapeo por defecto puede ser:
0: LM
1: LM-MM2
2: LM-MM3
3: LM-MF1
4: LM-MF2
5: LM-MF3
6: LM-MF4
7: Distinto de LM
De acuerdo con un ejemplo, el mapeo puede ser fijo. En otro ejemplo, el mapeo puede ser dinámico de acuerdo con la información decodificada de bloques vecinos y/o la información decodificada del bloque actual. En un ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos codificados en modos de LM, indicado como K. En un ejemplo, los bloques de croma vecinos pueden definirse para que sean los cinco bloques utilizados en el proceso de construcción de lista de candidatos de fusión, es decir, A0, A1, B0, B1 y B2 como se muestra en la Figura 17. Entonces, la lista de mapeo de símbolos puede ser:
- Si K==0, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 0<K<=3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF 1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si K>3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF 1, 4: LM-MF2, 5: LM-MF36: LM-MF4, 7: Distinto de LM;
En otro ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en modos de LM, indicado como K'. Entonces, la lista de mapeo de símbolos puede ser:
- Si K'==5, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 2<=K'<5, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si K'<=2, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF 1,4: LM-MF2, 5: LM-MF36: LM-MF4, 7: Distinto de LM;
En otro ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en intra modo, pero no en modos de LM, indicado como K'. Entonces, la lista de mapeo de símbolos puede ser:
- Si K'>=3, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 2<=K'<3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 1<=K'<2, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1, 4: LM-MF2, 5: Distinto de LM, 6: LM-MF3, 7: LM-MF4;
- Si K'==0, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF 1,4: LM-MF2, 5: LM-MF36: LM-MF4, 7: Distinto de LM;
En otro ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en intra modo, pero no en modos de LM, indicado como K'. Entonces, la lista de mapeo de símbolos puede ser:
- Si K'>=3, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF 1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 1<=K'<3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si K==0, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF 1, 4: LM-MF2, 5: Distinto de LM, 6: LM-MF3, 7: LM-MF4;
En otro ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en intra modo, pero no en modos de LM, indicado como K'. Entonces, la lista de mapeo de símbolos puede ser:
- Si K'>=3, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 2<=K'<3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si K'< 2, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1, 4: LM-MF2, 5: LM-MF36: LM-MF4, 7: Distinto de LM;
En otro ejemplo, el símbolo para el modo distinto de LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en intra modo, pero no en modos de LM, indicado como K'. Entonces, la lista de mapeo de símbolos puede ser:
- Si K'>=3, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si 1<=K'<3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
- Si K'==0, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1,4: LM-MF2, 5: LM-MF36: LM-MF4, 7: Distinto de LM;
En algunos ejemplos, el uso del LM de la presente divulgación puede depender del tamaño de bloque. En un ejemplo, si el tamaño del bloque de croma actual es MxN, LM-X no es aplicable si MxN<=T. T puede ser un número fijo o el valor de T puede señalizarse del codificador 20 de vídeo al decodificador 30 de vídeo. l M-X puede ser cualquier nuevo modo de LM propuesto tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4.
En otro ejemplo, si el tamaño del bloque de croma actual es MxN, LM-X no es aplicable si M+N<=T. T puede ser un número fijo o el valor de T puede señalizarse del codificador 20 de vídeo al decodificador 30 de vídeo. LM-X puede ser cualquier nuevo modo de LM propuesto tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4.
En otro ejemplo más, si el tamaño del bloque de croma actual es MxN, LM-X no es aplicable si Min(M, N)<=T. T puede ser un número fijo o el valor de T puede señalizarse del codificador 20 de vídeo al decodificador 30 de vídeo. LM-X puede ser cualquier nuevo modo de LM propuesto tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4.
En otro ejemplos más, si el tamaño del bloque de croma actual es MxN, LM-X no es aplicable si Max(M, N)<=T. T puede ser un número fijo o el valor de T puede señalizarse del codificador 20 de vídeo al decodificador 30 de vídeo. LM-X puede ser cualquier nuevo modo de LM propuesto tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4.
El uso del modo de LAP propuesto puede depender del tamaño de bloque. En un ejemplo, LAP no es aplicable si MxN<=T. T puede ser un número fijo o el valor de T puede señalizarse del codificador 20 de vídeo al decodificador 30 de vídeo. En otro ejemplo, LAP no es aplicable si M+N<=T. En otro ejemplo más, LAP no es aplicable si Min(M, N)<=T. En otro ejemplo más, LAP no es aplicable si Max(M, N)<=T. T puede ser cualquier número entero, tal como 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16..., etc., por ejemplo.
La Figura 18 es un diagrama de flujo que ilustra un método de codificación de ejemplo de la divulgación. Las técnicas de la Figura 18 pueden realizarse por uno o más componentes del codificador 20 de vídeo.
En un ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para codificar un bloque de muestras de luma para un primer bloque de datos de vídeo (132), reconstruir el bloque codificado de muestras de luma para crear muestras de luma reconstruidas (134) y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma reconstruidas para el primer bloque de datos de vídeo y dos o más modelos de predicción lineal (136).
En otro ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para determinar parámetros para cada uno de los dos o más modelos de predicción lineal usando muestras de luma y muestras de croma de los bloques de datos de vídeo que son vecinos al primer bloque de datos de vídeo. En un ejemplo, el codificador 20 de vídeo puede estar configurado para clasificar las muestras de luma reconstruidas que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras, clasificar las muestras de luma reconstruidas que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras, aplicar, un primer modelo de predicción lineal de los dos o más modelos de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras, aplicar un segundo modelo de predicción lineal de los dos o modelos de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras, siendo el segundo modelo de predicción lineal diferente del primer modelo de predicción lineal, y determinar las muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado. En un ejemplo, el primer umbral depende de las muestras de luma y croma codificadas vecinas.
En otro ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para submuestrear las muestras de luma reconstruidas. En otro ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para determinar uno de una pluralidad de filtros de submuestreo para usar para submuestrear las muestras de luma reconstruidas, submuestrear las muestras de luma reconstruidas usando el filtro de submuestreo determinado para producir muestras de luma submuestreadas, y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma submuestreadas y los dos o más modelos de predicción lineal.
En otro ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para determinar si se codifican muestras de croma de un segundo bloque de datos de vídeo usando un modelo de predicción lineal de los dos o más modelos de predicción lineal. En el caso de que no se codifiquen las muestras de croma del segundo bloque de datos de vídeo usando el modelo de predicción lineal, el codificador 20 de vídeo puede estar configurado para determinar que se posibilita un modo de predicción angular de modo lineal, aplicar un patrón de predicción de modo angular a las muestras de croma del segundo bloque de datos de vídeo para producir primeros valores de croma previstos, aplicar un patrón de predicción de modelo lineal a correspondientes muestras de luma del segundo bloque de datos de vídeo para producir segundos valores de croma previstos, y determinar un bloque final de valores de croma previstos para el segundo bloque de datos de vídeo determinando una media ponderada de los primeros valores de croma previstos y los segundos valores de croma previstos.
En otro ejemplo de la divulgación, el codificador 20 de vídeo puede estar configurado para determinar un número de bloques de croma vecinos, con relación al primer bloque de datos de vídeo, que se codifican usando un modo de codificación de modelo de predicción lineal, y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo de predicción lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal. En un ejemplo, el codificador 20 de vídeo puede estar configurado para usar una primera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es cero, usar una segunda lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es menor que un umbral, usar una tercera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es mayor que el umbral.
La Figura 19 es un diagrama de flujo que ilustra un método de codificación de ejemplo de la divulgación. Las técnicas de la Figura 19 pueden realizarse por uno o más componentes del decodificador 30 de vídeo.
En un ejemplo de la divulgación, el decodificador 30 de vídeo puede estar configurado para recibir un bloque codificado de muestras de luma para un primer bloque de datos de vídeo (142), decodificar el bloque codificado de muestras de luma para crear muestras de luma reconstruidas (144), y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma reconstruidas para el primer bloque de datos de vídeo y dos o más modelos de predicción lineal (146).
En otro ejemplo de la divulgación, el decodificador 30 de vídeo puede estar configurado para determinar parámetros para cada uno de los dos o más modelos de predicción lineal usando muestras de luma y muestras de croma de los bloques de datos de vídeo que son vecinos al primer bloque de datos de vídeo. En un ejemplo, el decodificador 30 de vídeo puede estar configurado para clasificar las muestras de luma reconstruidas que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras, clasificar las muestras de luma reconstruidas que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras, aplicar, un primer modelo de predicción lineal de los dos o más modelos de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras, aplicar un segundo modelo de predicción lineal de los dos o modelos de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras, siendo el segundo modelo de predicción lineal diferente del primer modelo de predicción lineal, y determinar las muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado. En un ejemplo, el primer umbral depende de las muestras de luma y croma codificadas vecinas.
En otro ejemplo de la divulgación, el decodificador 30 de vídeo puede estar configurado para submuestrear las muestras de luma reconstruidas. En otro ejemplo de la divulgación, el decodificador 30 de vídeo pueden estar configurados para determinar uno de una pluralidad de filtros de submuestreo para usar para submuestrear las muestras de luma reconstruidas, submuestrear las muestras de luma reconstruidas usando el filtro de submuestreo determinado para producir muestras de luma submuestreadas, y predecir muestras de croma para el primer bloque de datos de vídeo usando las muestras de luma submuestreadas y los dos o más modelos de predicción lineal.
En otro ejemplo de la divulgación, el decodificador 30 de vídeo puede estar configurado para determinar si se codifican muestras de croma de un segundo bloque de datos de vídeo usando un modelo de predicción lineal de los dos o más modelos de predicción lineal. En el caso de que no se codifiquen las muestras de croma del segundo bloque de datos de vídeo usando el modelo de predicción lineal, el decodificador 30 de vídeo puede estar configurado para determinar que se posibilita un modo de predicción angular de modo lineal, aplicar un patrón de predicción de modo angular a las muestras de croma del segundo bloque de datos de vídeo para producir primeros valores de croma previstos, aplicar un patrón de predicción de modelo lineal a correspondientes muestras de luma del segundo bloque de datos de vídeo para producir segundos valores de croma previstos, y determinar un bloque final de valores de croma previstos para el segundo bloque de datos de vídeo determinando una media ponderada de los primeros valores de croma previstos y los segundos valores de croma previstos.
En otro ejemplo de la divulgación, el decodificador 30 de vídeo puede estar configurado para determinar un número de bloques de croma vecinos, con relación al primer bloque de datos de vídeo, que se codifican usando un modo de codificación de modelo de predicción lineal y cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo de predicción lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal. En un ejemplo, el codificador 20 de vídeo puede estar configurado para usar una primera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es cero, usar una segunda lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es menor que un umbral, usar una tercera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es mayor que el umbral.
La Figura 20 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual. El bloque actual puede comprender una CU actual o una porción de la CU actual. Aunque se describen con respecto al codificador 20 de vídeo (Figuras 1 y 2), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 20.
En este ejemplo, el codificador 20 de vídeo predice inicialmente el bloque (150) actual. Por ejemplo, el codificador 20 de vídeo puede calcular una o más unidades de predicción (PU) para el bloque actual. El codificador 20 de vídeo puede calcular a continuación un bloque residual para el bloque actual, por ejemplo, para producir una unidad de transformada (TU) (152). Para calcular el bloque residual, el codificador 20 de vídeo puede calcular una diferencia entre el bloque original decodificado y el bloque previsto para el bloque actual. El codificador 20 de vídeo puede a continuación transformar y cuantificar coeficientes del bloque residual (154). A continuación, el codificador 20 de vídeo puede explorar los coeficientes de transformada cuantificados del bloque residual (156). Durante la exploración, o después de la exploración, el codificador 20 de vídeo puede codificar por entropía los coeficientes (158). Por ejemplo, el codificador 20 de vídeo puede codificar los coeficientes usando CAVLC o CABAC. El codificador 20 de vídeo puede a continuación emitir los datos codificados por entropía para los coeficientes del bloque (160).
La Figura 21 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo. El bloque actual puede comprender una CU actual o una porción de la CU actual. Aunque se describen con respecto al decodificador 30 de vídeo (Figuras 1 y 3), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 21.
El decodificador 30 de vídeo puede predecir el bloque actual (200), por ejemplo, usando un modo de intra- o interpredicción para calcular un bloque previsto para el bloque actual. El decodificador 30 de vídeo puede recibir también datos codificados por entropía para el bloque actual, tales como datos codificados por entropía para los coeficientes de un bloque residual que corresponde al bloque actual (202). El decodificador 30 de vídeo puede decodificar por entropía los datos codificados por entropía para reproducir los coeficientes del bloque residual (204). El decodificador 30 de vídeo, a continuación, puede explorar a la inversa los coeficientes reproducidos (206) para crear un bloque de coeficientes de transformada cuantificados. El decodificador 30 de vídeo, a continuación, puede cuantificar a la inversa y transformar a la inversa los coeficientes para producir un bloque residual (208). El decodificador 30 de vídeo puede decodificar finalmente el bloque actual combinando el bloque previsto y el bloque residual (210).
Lo siguiente resume ejemplos de la divulgación analizados a continuación. Los ejemplos anteriores descritos de predicción de LM usando un método de múltiples modelos, un método de múltiples filtros y la predicción de LM-angular pueden aplicarse individualmente o en cualquier combinación. Puede haber más de un modelo lineal entre los componentes de luma y de croma en un bloque de codificación/unidad de codificación (CU)/unidad de transformada (TU). Las muestras de luma y muestras de croma vecinas del bloque actual pueden clasificarse en varios grupos, y cada grupo puede usarse como un conjunto de entrenamiento para derivar un modelo lineal (es decir, se derivan a y @ particulares para un grupo particular). En un ejemplo, la clasificación de muestras puede ser basándose en las intensidades o las posiciones de las muestras. En otro ejemplo, el método de clasificación puede señalizarse desde el codificador al decodificador.
En un ejemplo, como se muestra en la Figura 7A, las muestras vecinas pueden clasificarse en dos grupos. Una muestra vecina con RecL[x, y] < umbral puede clasificarse en el grupo 1; aunque una muestra vecina con RecL[x,y\ > umbral puede clasificarse en el grupo 2. En un ejemplo, el umbral puede calcularse dependiendo de las muestras de luma/croma codificadas vecinas y las muestras de luma codificadas en el bloque actual. En un ejemplo, el umbral puede calcularse como el valor promedio de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbral puede calcularse como el valor de mediana de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo más, el umbral puede calcularse como el promedio de minV y maxV, en donde minV y maxV son el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbral puede calcularse como el valor promedio de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbral puede calcularse como el valor de mediana de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbral puede calcularse como el promedio de minV y maxV, en donde minV y maxV son el valor mínimo y los valores máximos respectivamente de las muestras de luma codificadas vecinas y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En un ejemplo, el umbral puede señalizarse del codificador 20 al decodificador 30.
En un ejemplo, como se ilustra en la Figura 7B, las muestras vecinas pueden clasificarse en tres grupos. Una muestra vecina con RecL[x,y] < umbrall puede clasificarse en el grupo 1; una muestra vecina con umbrall < RecL[x,y] < umbral2 puede clasificarse en el grupo 2 y una muestra vecina con RecL[x, y] > umbral2 puede clasificarse en el grupo 3. En un ejemplo, umbrall y umbral2 pueden calcularse dependiendo de las muestras de luma/croma codificadas vecinas y las muestras de luma codificadas en el bloque actual. En un ejemplo, el umbral puede calcularse en primer lugar como se ha descrito anteriormente. A continuación, el umbrall puede calcularse como el promedio de minV y umbral. El umbral2 puede calcularse como el promedio de maxV y umbral. minV y maxV pueden ser el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbrall puede calcularse como 1/3 de sumV. El umbral2 puede calcularse como 2/3 de sumV. sumV puede ser el valor de suma acumulada de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbrall puede calcularse como un valor entre S[N/3] y S[N/3+1]. El umbral2 puede calcularse como S[2*N/3] y S[2*N/3+1]. N puede ser el número total de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). S[0], S[1],.... S[N-2], S[N-1] puede ser la secuencia ordenada de manera ascendente de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbral puede calcularse en primer lugar como se ha descrito anteriormente. A continuación, el umbrall puede calcularse como el promedio de minV y umbral. El umbral2 puede calcularse como el promedio de maxV y umbral. minV y maxV pueden ser el valor mínimo y los valores máximos, respectivamente, de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en el formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbrall puede calcularse como 1/3 de sumV. El umbral2 puede calcularse como 2/3 de sumV. sumV puede ser el valor de suma acumulada de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En otro ejemplo, el umbrall puede calcularse como un valor entre S[N/3] y S[N/3+1]. El umbral2 puede calcularse como S[2*N/3] y S[2*N/3+1]. N puede ser el número total de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). S[0], S[1],.... S[N-2], S[N-1] puede ser la secuencia ordenada de manera ascendente de las muestras de luma codificadas vecinas (que pueden submuestrearse si no están en formato 4:4:4) y las muestras de luma codificadas en el bloque actual (que pueden submuestrearse si no están en formato 4:4:4). En un ejemplo, umbrall y umbral2 pueden señalizarse del codificador 20 al decodificador 30. En un ejemplo, pueden usarse más muestras vecinas para derivar los modelos lineales anteriores, por ejemplo, como en los ejemplos mostrados en las Figuras 8A-8D.
En un ejemplo, puede aplicarse el modelo 1 o el modelo 2 derivados en MMLM a todos los píxeles en el bloque actual, como se ilustra en las Figuras 11 y 12, respectivamente. En otro ejemplo, los píxeles en el bloque actual pueden clasificarse en primer lugar, a continuación, algunos de ellos pueden elegir aplicar el modelo 1 mientras que otros eligen aplicar el modelo 2, como se ilustra en la Figura 13. En un ejemplo, puede requerirse que el método de clasificación deba ser idéntico para las muestras de luma vecinas codificadas y para las muestras de luma codificadas en el bloque actual.
En un ejemplo, como se ilustra en la Figura 13, las muestras de luma codificadas (submuestreadas si no están en el formato 4:4:4) en el bloque actual en el grupo 1 pueden aplicar el modelo 1 para derivar las correspondientes muestras de croma previstas en el bloque actual, mientras que las muestras de luma codificadas (submuestreadas si no están en el formato 4:4:4) en el bloque actual en el grupo 2 pueden aplicar el modelo 2 para derivar las correspondientes muestras de croma previstas en el bloque actual. De esta manera, las muestras de croma previstas en el bloque actual pueden derivarse de acuerdo con dos modelos lineales. Cuando hay más grupos, pueden usarse más modelos lineales para obtener las muestras de croma previstas.
En un ejemplo, puede requerirse que el número de muestras en un grupo después de la clasificación sea mayor que un número específico, tal como 2 o 3. En un ejemplo, si el número de muestras en un grupo es menor que el número específico, las muestras en otros grupos pueden cambiarse a este grupo. Por ejemplo, una muestra en el grupo con la mayoría de las muestras puede cambiarse al grupo con muestras menores que el número específico. En un ejemplo, una muestra en el grupo (nombrado el grupo A) con la mayoría de las muestras puede cambiarse al grupo (nombrado el grupo B) con menos muestras que el número específico si es la muestra más cerca de la muestra existente en el grupo B. "Más cerca" puede hacer referencia a la más cerca en posición de píxel. O "más cerca" puede hacer referencia a la intensidad más cerca. En un ejemplo, el codificador 20 puede señalizar el número de grupos en los que deben clasificarse las muestras en el decodificador 30. Si el número es 1, es el modo de LM original. En otro ejemplo, el modo de LM con diferente número de grupos puede tratarse como diferentes modos de LM, por ejemplo, LM-MM1 con 1 grupo, LM-MM2 con 2 grupos y LM-MM3 con 3 grupos. LM-MM1 es idéntico al modo de LM original. En otro ejemplo, el decodificador 30 puede derivar el número de grupos sin que el codificador 20 señalice el número de grupos.
En un ejemplo, puede haber más de un filtro de submuestreo de luma cuando no está en el formato 4:4:4, distinto del filtro de submuestreo definido en JEM-3.0, como se ilustra en la Figura 6. En un ejemplo, los filtros pueden estar en una forma de:
a.
Figure imgf000032_0001
donde a, b, c, d, e, f, g son números reales.
b.
Figure imgf000032_0002
donde a, b, c, d, e, f, g, h son números enteros.
c.
Figure imgf000032_0003
donde a, b, c, d, e, f, g, h son números enteros.
Se ilustran ejemplos de posibles filtros en las Figuras 14A-14C, tal como los siguientes posibles filtros, por ejemplo: a.
Figure imgf000032_0004
b.
Figure imgf000032_0005
c.
Figure imgf000032_0006
d.
e.
Figure imgf000033_0001
f.
Figure imgf000033_0002
g.
Rec'L[x,y] = (RecL[2x, 2y] + RecL[2x, 2y + 1] RecL[2x — 1,2y] + RecL[2x — 1,2y + 1] 2) » 2;
h.
Rec'L[x,y] = (RecL[2x, 2y\ RecL[2x, 2y + 1] RecL[2x 1,2y\ Rech[2x + 1,2y + 1] 2) » 2;
i.
Figure imgf000033_0003
J-
Figure imgf000033_0004
k.
Rec'L[x,y] = (RecL[2x — 1,2y\ RecL[2x — 1,2y + 1] 1) » 1;
......... " ” ' ' ' ' -
l.
Rec'L[x,y] = (RecL[2x, 2y 1] RecL[2x — 1,2y + 1] 1) » 1;
m.
Rec'L[x,y\ = (Rech[2x — 1,2y\ RecL[2x,2y + 1] 1) » 1; n.
Rec’L[x,y] = ( RecL[2x, 2y] RecL[2x — 1,2y + 1] 1) » 1; o.
Figure imgf000034_0001
p.
Figure imgf000034_0002
q.
Rec 'L [ x , y ] = (2 ■ RecL [2 x 1 ,2y + 1 ] RecL [ 2 x , 2 y + 1 ] RecL [2 x
1 ,2y ] + 2 ) » 2;
r.
Rec 'L [ x , y ] = (5 ■ RecL [ 2 x , 2 y + 1 ] RecL [2 x — 1,2y + 1 ] RecL [2 x
1 ,2y + 1] RecL [2x, 2 y ] 4 ) » 3;
En un ejemplo, si la secuencia no está en formato 4:4:4, el modo de LM puede operar con cualquier filtro de submuestreo además del filtro definido en JEM-3.0, y mostrado en la Figura 6 de esta divulgación. En un ejemplo, el decodificador 30 puede derivar el filtro de submuestreo sin que lo señalice el codificador 20. En un ejemplo, los resultados filtrados pueden recortarse al intervalo de valores de croma válidos. Pueden combinarse tipos de predicción angular y tipos de predicción de LM juntos para obtener la predicción final. Puede señalizarse una bandera, nombrada LAP_flag, si el bloque de croma actual se codifica con intra-predicción pero no en cualquier modo de LM. En un ejemplo, si el modo de predicción para el bloque de croma actual es el modo X, entonces X puede ser un tipo de intrapredicción angular (que incluye el modo planar y el modo de CC). Debería observarse que, si se señaliza el bloque de croma actual como el modo Dm , también se trata como un modo angular puesto que es idéntico a un tipo de modo de predicción angular del correspondiente bloque de luma. En un ejemplo, pueden generarse dos patrones de predicción para el bloque de croma en primer lugar, y, a continuación, combinarse juntos. Puede generarse un patrón de predicción con el modo angular X. Puede generarse la otra predicción con un tipo de modo de LM, tal como el modo de LM-MM2, por ejemplo.
Como se ilustra en la Figura 16, en primer lugar, puede generarse la predicción para cada muestra en el bloque actual con el modo de predicción angular X, indicado como P1(x,y). A continuación, la predicción de cada muestra en el bloque actual puede generarse con el modo de LM-MM2, indicado como P2(x,y). A continuación, la predicción de LM-angular final puede calcularse como P(x, y) = w1(x, y) x P1(x, y) + w2(x, y) x P2(x, y), donde (x,y) representa la coordenada de una muestra en un bloque y w1(x,y) y w2(x,y) son números reales. w1(x,y) y w2(x,y) pueden satisfacer w1(x, y) + w2(x, y) =1. En otro ejemplo, la predicción de LM-angular final puede calcularse como:
P(x, y) = (w1(x, y) x P1(x, y) w2(x, y) x P2(x, y) + a) / b,
donde w1(x,y),w2(x,y), a y b son números enteros y w1(x,y) y w2(x,y) pueden satisfacer w1(x, y) w2(x, y) = b.
En otro ejemplo, la predicción de LM-angular final puede calcularse como P(x, y) = (w1(x, y) x P1(x, y) W2(x, y) x P2(x, y) + a) >> b,
donde wl(x,y), w2(x,y), a y b son números enteros y w1(x,y) y w2(x,y) pueden satisfacer: w1(x, y) W2(x, y) = 2b En un ejemplo, w1(x,y) y w2(x,y) pueden ser diferentes para diferente (x,y). En otro ejemplo, w1(x,y) y w2(x,y) pueden permanecer sin cambios para toda (x,y). En un ejemplo, P(x, y) = (P1(x, y) P2(x, y) + 1) >>1, para toda (x,y).
En un ejemplo, una LAP_flag puede codificarse por CABAC. El contexto de codificación puede depender de LAP_flag codificada/decodificada de los bloques vecinos. Por ejemplo, puede haber 3 contextos para LAP_flag: LAPctx[0], LAPctx[1] y LAPctx[2]. Una variable ctx puede calcularse como ctx =LAP_flag_A+LAP_flag_B, donde LAP_flag_A y LAP_flag B son las banderas de LAP de bloques vecinos A y B, respectivamente, como se ilustra en la Figura 17. En un ejemplo, P(x,y) puede recortarse al intervalo de valores de croma válidos. En un ejemplo, la codificación de los modos de LM puede depender del modo de intra predicción de croma de bloques vecinos. En un ejemplo, algunos modos de LM, tales como LM, LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4 pueden ser modos de LM candidatos. En este ejemplo, hay 7 modos de LM candidatos, y se anexa un modo distinto de LM para representar el caso donde se codifica el bloque actual con modos angulares, no modos de LM. Si no se señaliza LM, entonces puede señalizarse el modo angular como en JEM-3.0, o cualesquiera otros métodos distintos de LM.
En una lógica de codificación de ejemplo, puede codificarse en primer lugar DM_flag. Si el modo de predicción de croma no es el modo de DM, entonces puede invocarse el módulo LM_coding() propuesto, para indicar el modo de predicción de croma actual. Si el módulo LM_coding() codifica el modo distinto de LM, entonces puede invocarse el módulo Chroma_intra_mode_coding() para codificar el modo de predicción de croma angular.
{
DM_flag,
if(DM_flag == 0)
{
LM_coding() ;
if(IsNotLM(mode))
{
Chroma intra mode coding();
}}}
En un ejemplo, para señalizar los posibles N modos (incluyendo distintos de LM), pueden usarse N símbolos, 0, 1,..., 6, 7 con diferentes palabras de código o solicitarse la conversión a binario, para representar los N posibles modos. Un símbolo con un número menor no puede tener una longitud de código mayor que la de un símbolo con un número mayor. Los símbolos pueden convertirse a binario de cualquier manera, tal como, código de longitud fija, código unario, código unario truncado, código Golomb exponencial, etc. En un ejemplo, puede haber un mapeo por defecto entre los símbolos y los modos. En un ejemplo, el mapeo puede fijarse o puede ser dinámico de acuerdo con los bloques vecinos decodificados.
En un ejemplo, el símbolo para el modo Non-LM puede insertarse en la lista de mapeo dependiendo del número de bloques de croma vecinos codificados en modos de LM, indicado como K. En un ejemplo, la lista de mapeo de símbolos puede ser:
Si K==0, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4; Si 0<K<=3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4;
Si K>3, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1, 4: LM-MF2, 5: LM-MF3, 6: LM-MF4, 7: Distinto de LM; En un ejemplo, puede insertarse el símbolo para el modo distinto de LM en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en modos de LM, indicado como K' y la lista de mapeo de símbolos puede ser:
Si K'==5, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4; Si 2<=K'<5, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF37,: LM-MF4;
Si K'<=2, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1, 4: LM-MF2, 5: LM-MF3, 6: LM-MF4, 7: Distinto de LM; En un ejemplo, puede insertarse el símbolo para el modo distinto de LM en la lista de mapeo dependiendo del número de bloques de croma vecinos no codificados en modos de LM, indicado como K' y la lista de mapeo de símbolos puede ser:
Si K'==5, entonces 0: LM, 1: Distinto de LM, 2: LM-MM2, 3: LM-MM3, 4: LM-MF1, 5: LM-MF2, 6: LM-MF3, 7: LM-MF4; Si 2<=K'<5, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: Distinto de LM, 4: LM-MF1, 5: LM-MF2, 6: LM-MF37,: LM-MF4;
Si K'<=2, entonces 0: LM, 1: LM-MM2, 2: LM-MM3, 3: LM-MF1, 4: LM-MF2, 5: LM-MF3, 6: LM-MF4, 7: Distinto de LM; En un ejemplo, el uso de las mejoras de LM propuestas puede depender del tamaño de bloque. En un ejemplo, si el tamaño del bloque de croma actual es MxN, LM-X puede no ser aplicable si MxN<=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. LM-X puede ser cualquier modo de LM, tal como LM-Mm 2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4, por ejemplo. En un ejemplo, LM-X puede no ser aplicable si M+N<=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. LM-X puede ser cualquier modo de LM, tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4, por ejemplo. En un ejemplo, LM-X puede no ser aplicable si Min (M, N) <=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. LM-X puede ser cualquier modo de LM, tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4, por ejemplo. En otro ejemplo, LM-X puede no ser aplicable si Max (M, N) <=T. T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. LM-X puede ser cualquier modo de LM, tal como LM-MM2, LM-MM3, LM-MF1, LM-MF2, LM-MF3 y LM-MF4. En un ejemplo, LAP puede no ser aplicable si MxN <=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. En un ejemplo, LAP puede no ser aplicable si M+N<=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. En otro ejemplo, LAP puede no ser aplicable si Min(M, N)<=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30. En un ejemplo, LAP puede no ser aplicable si Max (M, N)<=T, donde T puede ser un número fijo o puede señalizarse del codificador 20 al decodificador 30.
Ha de reconocerse que, dependiendo del ejemplo, ciertos actos o eventos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia diferente, pueden añadirse, fusionarse o excluirse por completo (por ejemplo, no todos los actos o eventos descritos son necesarios para la puesta en práctica de las técnicas). Además, en ciertos ejemplos, los actos o eventos pueden realizare de manera concurrente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento de interrupción o múltiples procesadores en lugar de secuencialmente.
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 como limitación, tal medio de almacenamiento legible por ordenador puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y que puede accederse por un ordenador. También, cualquier conexión se denomina apropiadamente como 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 este 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 medio legible 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), campos de matrices de puertas programables (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 hardware especializado y/o módulos de software configurados para codificar y decodificar o incorporarse en un códec combinado. También, las técnicas podrían implementarse completamente 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, que incluye 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 mediante una recopilación de unidades de hardware inter operativas, que incluyen uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. La invención se expone en las reivindicaciones adjuntas.

Claims (12)

REIVINDICACIONES
1. Un método de decodificación de datos de vídeo, comprendiendo el método:
recibir un bloque codificado de muestras de luma de un primer bloque de datos de vídeo;
recibir bloques codificados de muestras de luma y muestras de croma de bloques vecinos de datos de vídeo; decodificar el primer bloque codificado de muestras de luma para crear muestras de luma reconstruidas del primer bloque;
decodificar los bloques vecinos codificados de muestras de luma para crear muestras de luma reconstruidas de bloques vecinos y decodificar los bloques vecinos codificados de muestras de croma para crear muestras de croma reconstruidas de bloques vecinos;
seleccionar un conjunto de muestras de luma reconstruidas de los bloques vecinos para usar al predecir las muestras de croma del primer bloque;
clasificar las muestras de luma reconstruidas del conjunto que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras de muestras vecinas;
clasificar las muestras de luma reconstruidas del conjunto que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras de muestras vecinas; determinar un primer modelo de predicción lineal basándose en las muestras de luma reconstruidas del primer grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; determinar un segundo modelo de predicción lineal basándose en las muestras de luma reconstruidas del segundo grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; clasificar las muestras de luma reconstruidas del primer bloque que son mayores que el primer umbral como si estuvieran en un primer grupo de muestras del primer bloque;
clasificar las muestras de luma reconstruidas del primer bloque que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras del primer bloque;
determinar si el número de muestras clasificadas en un grupo de muestras es menor que un número mínimo predefinido y cambiar al menos una muestra entre grupos de muestras cuando el número de muestras clasificadas en el grupo es menor que el número mínimo predefinido;
aplicar el primer modelo de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras del primer bloque;
aplicar el segundo modelo de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras del primer bloque; y
determinar muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado.
2. Un método de codificación de datos de vídeo, comprendiendo el método:
codificar un bloque de muestras de luma de un primer bloque de datos de vídeo;
codificar bloques de muestras de luma y muestras de croma vecinas al primer bloque;
reconstruir el bloque codificado de muestras de luma para crear muestras de luma reconstruidas del primer bloque; reconstruir los bloques vecinos codificados de muestras de luma para crear muestras de luma reconstruidas de bloques vecinos y reconstruir los bloques vecinos codificados de muestras de croma para crear muestras de croma reconstruidas de bloques vecinos;
seleccionar un conjunto de muestras de luma reconstruidas de los bloques vecinos para usar al predecir las muestras de croma del primer bloque;
clasificar las muestras de luma reconstruidas del conjunto que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras de muestras vecinas;
clasificar las muestras de luma reconstruidas del conjunto que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras de muestras vecinas; determinar un primer modelo de predicción lineal basándose en las muestras de luma reconstruidas del primer grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; determinar un segundo modelo de predicción lineal basándose en las muestras de luma reconstruidas del segundo grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; clasificar las muestras de luma reconstruidas del primer bloque que son mayores que el primer umbral como si estuvieran en un primer grupo de muestras del primer bloque;
clasificar las muestras de luma reconstruidas del primer bloque que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras del primer bloque;
determinar si el número de muestras clasificadas en un grupo de muestras es menor que un número mínimo predefinido y cambiar al menos una muestra entre grupos de muestras cuando el número de muestras clasificadas en el grupo es menor que el número mínimo predefinido;
aplicar el primer modelo de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras del primer bloque;
aplicar el segundo modelo de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras del primer bloque; y
determinar las muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado.
3. El método de la reivindicación 1 o 2, en donde el primer umbral depende de muestras de luma y de croma codificadas vecinas.
4. El método de la reivindicación 1 o 2, que comprende adicionalmente:
submuestrear las muestras de luma reconstruidas.
5. El método de la reivindicación 1 o 2, que comprende adicionalmente:
determinar uno de una pluralidad de filtros de submuestreo para usar para submuestrear las muestras de luma reconstruidas;
submuestrear las muestras de luma reconstruidas usando el filtro de submuestreo determinado para producir muestras de luma submuestreadas; y
predecir muestras de croma del primer bloque de datos de vídeo usando las muestras de luma submuestreadas y los dos o más modelos de predicción lineal.
6. El método de la reivindicación 1 o 2, que comprende adicionalmente:
determinar si se codifican muestras de croma de un segundo bloque de datos de vídeo usando un modelo de predicción lineal de los dos o más modelos de predicción lineal;
en el caso de que las muestras de croma del segundo bloque de datos de vídeo no se codifiquen usando el modelo de predicción lineal, el método comprende adicionalmente:
determinar que se posibilita un modo de predicción angular de modo lineal;
aplicar un patrón de predicción de modo angular a las muestras de croma del segundo bloque de datos de vídeo para producir primeros valores de croma previstos;
aplicar un patrón de predicción de modelo lineal a correspondientes muestras de luma del segundo bloque de datos de vídeo para producir segundos valores de croma previstos; y
determinar un bloque final de valores de croma previstos para el segundo bloque de datos de vídeo determinando una media ponderada de los primeros valores de croma previstos y los segundos valores de croma previstos.
7. El método de la reivindicación 1 o 2, que comprende adicionalmente:
determinar un número de bloques de croma vecinos, con relación al primer bloque de datos de vídeo, que se codifican usando un modo de codificación de modelo de predicción lineal; y
cambiar dinámicamente una palabra de código usada para indicar un tipo particular del modo de codificación de modelo de predicción lineal basándose en el número determinado de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal.
8. El método de la reivindicación 1 o 2, en donde cambiar dinámicamente la palabra de código comprende: usar una primera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es cero;
usar una segunda lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es menor que un umbral; y usar una tercera lista de mapeo de símbolos basándose en el número de bloques de croma vecinos de los datos de vídeo codificados usando el modo de codificación de modelo de predicción lineal que es mayor que el umbral.
9. Un aparato configurado para decodificar datos de vídeo, comprendiendo el aparato:
una memoria configurada para recibir un primer bloque de datos de vídeo; y
uno o más procesadores configurados para:
recibir un bloque codificado de muestras de luma del primer bloque de datos de vídeo;
recibir bloques codificados de muestras de luma y muestras de croma de bloques vecinos de datos de vídeo; decodificar el primer bloque codificado de muestras de luma para crear muestras de luma reconstruidas; decodificar los bloques vecinos codificados de muestras de luma para crear muestras de luma reconstruidas de bloques vecinos y decodificar los bloques vecinos codificados de muestras de croma para crear muestras de croma reconstruidas de bloques vecinos;
seleccionar un conjunto de muestras de luma reconstruidas de los bloques vecinos para usar al predecir las muestras de croma del primer bloque;
clasificar las muestras de luma reconstruidas del conjunto que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras de muestras vecinas;
clasificar las muestras de luma reconstruidas del conjunto que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras de muestras vecinas; determinar un primer modelo de predicción lineal basándose en las muestras de luma reconstruidas del primer grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; determinar un segundo modelo de predicción lineal basándose en las muestras de luma reconstruidas del segundo grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; clasificar las muestras de luma reconstruidas del primer bloque que son mayores que el primer umbral como si estuvieran en un primer grupo de muestras del primer bloque;
clasificar las muestras de luma reconstruidas del primer bloque que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras del primer bloque;
determinar si el número de muestras clasificadas en un grupo de muestras es menor que un número mínimo predefinido y cambiar al menos una muestra entre grupos de muestras cuando el número de muestras clasificadas en el grupo es menor que el número mínimo predefinido;
aplicar el primer modelo de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras del primer bloque;
aplicar el segundo modelo de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras del primer bloque; y
determinar las muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado.
10. Un aparato configurado para codificar datos de vídeo, comprendiendo el aparato:
una memoria configurada para recibir un primer bloque de datos de vídeo; y
uno o más procesadores configurados para:
codificar un bloque de muestras de luma de un primer bloque de datos de vídeo;
codificar bloques de muestras de luma y muestras de croma vecinas al primer bloque;
reconstruir el bloque codificado de muestras de luma para crear muestras de luma reconstruidas del primer bloque; reconstruir los bloques vecinos codificados de muestras de luma para crear muestras de luma reconstruidas de bloques vecinos y reconstruir los bloques vecinos codificados de muestras de croma para crear muestras de croma reconstruidas de bloques vecinos;
seleccionar un conjunto de muestras de luma reconstruidas de los bloques vecinos para usar al predecir las muestras de croma del primer bloque;
clasificar las muestras de luma reconstruidas del conjunto que son mayores que un primer umbral como si estuvieran en un primer grupo de muestras de una pluralidad de grupos de muestras de muestras vecinas;
clasificar las muestras de luma reconstruidas del conjunto que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras de la pluralidad de grupos de muestras de muestras vecinas; determinar un primer modelo de predicción lineal basándose en las muestras de luma reconstruidas del primer grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; determinar un segundo modelo de predicción lineal basándose en las muestras de luma reconstruidas del segundo grupo de muestras de muestras vecinas y las correspondientes muestras de croma vecinas reconstruidas; clasificar las muestras de luma reconstruidas del primer bloque que son mayores que el primer umbral como si estuvieran en un primer grupo de muestras del primer bloque;
clasificar las muestras de luma reconstruidas del primer bloque que son menores o iguales que el primer umbral como si estuvieran en un segundo grupo de muestras del primer bloque;
determinar si el número de muestras clasificadas en un grupo de muestras es menor que un número mínimo predefinido y cambiar al menos una muestra entre grupos de muestras cuando el número de muestras clasificadas en el grupo es menor que el número mínimo predefinido;
aplicar el primer modelo de predicción lineal a las muestras de luma reconstruidas en el primer grupo de muestras del primer bloque;
aplicar el segundo modelo de predicción lineal a las muestras de luma reconstruidas en el segundo grupo de muestras del primer bloque; y
determinar las muestras de croma previstas en el primer bloque de datos de vídeo basándose en el primer modelo de predicción lineal aplicado y el segundo modelo de predicción lineal aplicado.
11. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores configurados para decodificar datos de vídeo lleven a cabo el método de cualquiera de las reivindicaciones 1 o 3 a 8.
12. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores configurados para decodificar datos de vídeo lleven a cabo el método de cualquiera de las reivindicaciones 2 a 8.
ES17772283T 2016-09-15 2017-09-15 Intra predicción de croma de modelo lineal para codificación de vídeo Active ES2884375T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662395145P 2016-09-15 2016-09-15
US15/705,029 US10652575B2 (en) 2016-09-15 2017-09-14 Linear model chroma intra prediction for video coding
PCT/US2017/051821 WO2018053293A1 (en) 2016-09-15 2017-09-15 Linear model chroma intra prediction for video coding

Publications (1)

Publication Number Publication Date
ES2884375T3 true ES2884375T3 (es) 2021-12-10

Family

ID=61560710

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17772283T Active ES2884375T3 (es) 2016-09-15 2017-09-15 Intra predicción de croma de modelo lineal para codificación de vídeo

Country Status (10)

Country Link
US (1) US10652575B2 (es)
EP (1) EP3513559B1 (es)
JP (1) JP7044765B2 (es)
KR (1) KR102534901B1 (es)
CN (1) CN109716771B (es)
BR (1) BR112019004544A2 (es)
ES (1) ES2884375T3 (es)
SG (1) SG11201900967XA (es)
TW (1) TWI776818B (es)
WO (1) WO2018053293A1 (es)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018056603A1 (ko) * 2016-09-22 2018-03-29 엘지전자 주식회사 영상 코딩 시스템에서 조도 보상 기반 인터 예측 방법 및 장치
EP3451663A1 (en) * 2017-08-31 2019-03-06 Thomson Licensing Pools of transforms for local selection of a set of transforms in video coding
JP2021005741A (ja) 2017-09-14 2021-01-14 シャープ株式会社 画像符号化装置及び画像復号装置
WO2019131349A1 (ja) * 2017-12-25 2019-07-04 シャープ株式会社 画像復号装置、画像符号化装置
GB2591379B (en) * 2018-01-03 2023-02-15 Beijing Bytedance Network Tech Co Ltd Single-line cross component linear model prediction mode
EP3741124A1 (en) * 2018-01-16 2020-11-25 VID SCALE, Inc. Adaptive frame packing for 360-degree video coding
GB2571314A (en) * 2018-02-23 2019-08-28 Canon Kk Methods and devices for linear component sample prediction using a double classification
GB2571313B (en) * 2018-02-23 2022-09-21 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
CN118158403A (zh) * 2018-03-25 2024-06-07 有限公司B1影像技术研究所 图像编码/解码方法、记录介质和传输比特流的方法
WO2019194496A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 비디오 신호의 컬러 컴포넌트에 대한 병렬 처리 방법 및 이를 위한 장치
US11418803B2 (en) * 2018-04-01 2022-08-16 Lg Electronics Inc. Intra-prediction-based image coding method and device therefor
KR102481051B1 (ko) * 2018-04-24 2022-12-23 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 제한된 선형 모델 파라미터 도출을 위한 방법 및 장치
US10609402B2 (en) 2018-05-02 2020-03-31 Tencent America LLC Method and apparatus for prediction and transform for small blocks
JP2019213096A (ja) * 2018-06-06 2019-12-12 Kddi株式会社 画像復号装置、画像符号化装置、画像処理システム、画像復号方法及びプログラム
EP3588962A1 (en) * 2018-06-29 2020-01-01 Industrial Technology Research Institute Video decoding method, video decoder, video encoding method and video encoder
JP2020005258A (ja) * 2018-06-29 2020-01-09 財團法人工業技術研究院Industrial Technology Research Institute ビデオ復号化方法、ビデオデコーダー、ビデオ符号化方法及びビデオエンコーダー
CN110662065A (zh) * 2018-06-29 2020-01-07 财团法人工业技术研究院 图像数据解码方法及解码器、图像数据编码方法及编码器
CN116405688A (zh) 2018-07-12 2023-07-07 华为技术有限公司 视频译码中使用交叉分量线性模型进行帧内预测
WO2020015648A1 (en) * 2018-07-16 2020-01-23 Huawei Technologies Co., Ltd. Video encoder, video decoder, and corresponding encoding and decoding methods
CN113132722B (zh) * 2018-08-09 2023-02-17 Oppo广东移动通信有限公司 视频图像分量的预测方法和装置、及计算机存储介质
CN113068028B (zh) * 2018-08-09 2023-05-26 Oppo广东移动通信有限公司 视频图像分量的预测方法、装置及计算机存储介质
CN116347109A (zh) * 2018-08-17 2023-06-27 北京字节跳动网络技术有限公司 一种处理视频数据的方法和装置
CN110858903B (zh) * 2018-08-22 2022-07-12 华为技术有限公司 色度块预测方法及装置
CN110876061B (zh) * 2018-09-03 2022-10-11 华为技术有限公司 色度块预测方法及装置
CN118018746A (zh) 2018-09-05 2024-05-10 华为技术有限公司 色度块预测方法以及设备
CN117478883A (zh) 2018-09-12 2024-01-30 北京字节跳动网络技术有限公司 交叉分量线性模型中的尺寸相关的下采样
CN117834862A (zh) * 2018-09-20 2024-04-05 Lg电子株式会社 图像解码、编码方法和数据的发送方法及存储介质
CN112313950B (zh) * 2018-09-21 2023-06-02 Oppo广东移动通信有限公司 视频图像分量的预测方法、装置及计算机存储介质
WO2020060256A1 (ko) 2018-09-22 2020-03-26 엘지전자 주식회사 영상 코딩 시스템에서 cclm 예측을 사용하는 영상 디코딩 방법 및 그 장치
GB2577338A (en) * 2018-09-24 2020-03-25 Sony Corp Data encoding and decoding
CA3115177C (en) * 2018-10-05 2024-06-04 Huawei Technologies Co., Ltd. Intra prediction method and device
CN112889291A (zh) * 2018-10-08 2021-06-01 北京达佳互联信息技术有限公司 对跨分量线性模型的简化
KR20210070368A (ko) 2018-10-12 2021-06-14 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 비디오 이미지 요소 예측 방법 및 장치, 컴퓨터 저장 매체
US10939118B2 (en) * 2018-10-26 2021-03-02 Mediatek Inc. Luma-based chroma intra-prediction method that utilizes down-sampled luma samples derived from weighting and associated luma-based chroma intra-prediction apparatus
EP3878183A1 (en) * 2018-11-05 2021-09-15 InterDigital VC Holdings, Inc. Simplifications of coding modes based on neighboring samples dependent parametric models
KR20210089131A (ko) * 2018-11-06 2021-07-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 위치 기반 인트라 예측
US11197005B2 (en) 2018-11-08 2021-12-07 Qualcomm Incorporated Cross-component prediction for video coding
CA3085391C (en) * 2018-11-23 2023-10-24 Lg Electronics Inc. Method for decoding image on basis of cclm prediction in image coding system, and device therefor
EP4319164A3 (en) * 2018-11-23 2024-03-27 Intellectual Discovery Co., Ltd. Inter-component prediction
WO2020108591A1 (en) 2018-12-01 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Parameter derivation for intra prediction
CN113810689A (zh) * 2018-12-07 2021-12-17 北京达佳互联信息技术有限公司 使用多分辨率参考图片管理的视频编解码
CN113396584A (zh) * 2018-12-07 2021-09-14 弗劳恩霍夫应用研究促进协会 用于增强交叉分量线性模型参数的计算的稳健性的编码器、解码器和方法
AU2019391197B2 (en) 2018-12-07 2023-05-25 Beijing Bytedance Network Technology Co., Ltd. Context-based intra prediction
US11095921B2 (en) 2018-12-18 2021-08-17 Tencent America LLC Method and apparatus for video encoding or decoding
GB2580192A (en) * 2018-12-20 2020-07-15 Canon Kk Piecewise modeling for linear component sample prediction
GB2580078A (en) * 2018-12-20 2020-07-15 Canon Kk Piecewise modeling for linear component sample prediction
EP3900347A2 (en) * 2018-12-21 2021-10-27 Vid Scale, Inc. Methods, architectures, apparatuses and systems directed to improved linear model estimation for template based video coding
CN113273203B (zh) 2018-12-22 2024-03-12 北京字节跳动网络技术有限公司 两步交叉分量预测模式
CN118200553A (zh) * 2018-12-27 2024-06-14 英迪股份有限公司 图像编码/解码方法和装置
WO2020137904A1 (ja) * 2018-12-28 2020-07-02 ソニー株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN113287301A (zh) 2018-12-31 2021-08-20 华为技术有限公司 用于帧内预测的分量间线性建模方法和装置
EP3890323A4 (en) * 2019-01-02 2022-06-08 Guangdong Oppo Mobile Telecommunications Corp., Ltd. PREDICTION DECODING METHOD, DEVICE AND COMPUTER STORAGE MEDIA
KR102632259B1 (ko) 2019-01-09 2024-02-01 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 교차-성분 선형 모델을 사용하는 비디오 코딩
WO2020143825A1 (en) * 2019-01-11 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Size dependent cross-component linear model
CN109451306B (zh) * 2019-01-16 2020-08-11 北京数码视讯软件技术发展有限公司 色度分量的最佳预测模式的选择方法、装置及电子设备
WO2020150535A1 (en) * 2019-01-17 2020-07-23 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of linear model derivation for video coding
CN113170152B (zh) * 2019-01-18 2023-07-07 华为技术有限公司 用于预测译码的局部亮度补偿的方法和装置
WO2020156533A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Interactions between in-loop reshaping and palette mode
SG11202107760PA (en) 2019-02-01 2021-08-30 Beijing Bytedance Network Technology Co Ltd Signaling of in-loop reshaping information using parameter sets
KR102628086B1 (ko) * 2019-02-22 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인트라 예측을 위한 이웃 샘플 선택
BR112021015017B1 (pt) 2019-02-24 2022-07-26 Bytedance Inc. Método e aparelho para codificar dados de vídeo, e, mídia de armazenamento
US20200288159A1 (en) 2019-03-08 2020-09-10 Qualcomm Incorporated Combined residual coding in video coding
WO2020181471A1 (zh) * 2019-03-11 2020-09-17 Oppo广东移动通信有限公司 帧内预测方法、装置及计算机存储介质
WO2020185888A1 (en) 2019-03-12 2020-09-17 Beijing Dajia Internet Information Technology Co., Ltd. Video coding using multi-model linear model
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
CN113273194A (zh) 2019-03-18 2021-08-17 Oppo广东移动通信有限公司 图像分量预测方法、编码器、解码器以及存储介质
JP7417624B2 (ja) 2019-03-23 2024-01-18 北京字節跳動網絡技術有限公司 適応ループフィルタリングパラメータセットに対する制限
WO2020192642A1 (en) * 2019-03-24 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Conditions in parameter derivation for intra prediction
CN113412621A (zh) * 2019-03-25 2021-09-17 Oppo广东移动通信有限公司 图像分量的预测方法、编码器、解码器及计算机存储介质
CN115720268A (zh) * 2019-03-26 2023-02-28 北京字节跳动网络技术有限公司 用于帧间预测的参数推导
EP3949424A4 (en) * 2019-04-25 2022-12-21 HFI Innovation Inc. METHOD AND APPARATUS FOR CODING OR DECODING WITH MODE-DEPENDENT INTRA SMOOTHING FILTER IN INTRA PREDICTION
CN113632464B (zh) * 2019-05-21 2023-04-28 华为技术有限公司 分量间预测的方法和设备
EP3973709A4 (en) * 2019-05-22 2023-02-01 Nokia Technologies Oy METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR VIDEO CODING AND DECODING
CN113875244A (zh) * 2019-05-22 2021-12-31 北京字节跳动网络技术有限公司 利用多行的线性模型模式参数推导
WO2020246790A1 (ko) * 2019-06-03 2020-12-10 엘지전자 주식회사 맵핑된 루마 성분 및 스케일링된 크로마 성분 기반 비디오 또는 영상 코딩
WO2020256399A1 (ko) * 2019-06-17 2020-12-24 엘지전자 주식회사 루마 샘플들의 맵핑 및 크로마 샘플들의 스케일링 기반 비디오 또는 영상 코딩
CN113412616B (zh) 2019-06-17 2024-06-11 Lg电子株式会社 基于亮度映射与色度缩放的视频或图像编译
US11949872B2 (en) 2019-06-17 2024-04-02 Lg Electronics Inc. Luma mapping-based video or image coding
CN117294845A (zh) 2019-06-20 2023-12-26 Lg电子株式会社 图像解码和编码方法、数据的发送方法及存储介质
CN114175651A (zh) 2019-06-20 2022-03-11 Lg电子株式会社 基于亮度映射和色度缩放的视频或图像编码
CN114128272B (zh) 2019-06-20 2024-03-26 Lg电子株式会社 基于亮度样本的映射和色度样本的缩放的视频或图像编码
CN116582684A (zh) * 2019-06-24 2023-08-11 Lg电子株式会社 图像编解码设备、计算机可读存储介质和数据发送设备
JP7305810B2 (ja) 2019-06-24 2023-07-10 エルジー エレクトロニクス インコーポレイティド ルーママッピング及びクロマスケーリングに基づくビデオまたは画像コーディング
WO2020262921A1 (ko) * 2019-06-24 2020-12-30 엘지전자 주식회사 루마 맵핑 기반 비디오 또는 영상 코딩
US11330298B2 (en) * 2019-06-25 2022-05-10 Qualcomm Incorporated Simplified intra chroma mode coding in video coding
CN113396587A (zh) * 2019-06-25 2021-09-14 Oppo广东移动通信有限公司 图像分量预测方法、装置及计算机存储介质
CN114827610B (zh) 2019-06-25 2023-04-11 北京大学 视频图像编码和解码方法、设备及介质
CN114073094B (zh) * 2019-06-27 2023-05-23 寰发股份有限公司 视频编解码的方法和装置
CN114303368A (zh) 2019-07-05 2022-04-08 Lg电子株式会社 基于亮度映射和色度缩放的视频或图像编码
CN116668697A (zh) * 2019-07-05 2023-08-29 Lg电子株式会社 图像编码/解码设备和图像数据的发送设备
CN117278748A (zh) 2019-07-05 2023-12-22 Lg电子株式会社 图像解码和编码方法、存储介质及数据的发送方法
CN117395396A (zh) 2019-07-07 2024-01-12 北京字节跳动网络技术有限公司 色度残差缩放的信令通知
US11528504B2 (en) * 2019-07-11 2022-12-13 Qualcomm Incorporated Motion vector prediction with motion information collecting buffer
US11399199B2 (en) * 2019-08-05 2022-07-26 Qualcomm Incorporated Chroma intra prediction units for video coding
CN112437298A (zh) * 2019-08-26 2021-03-02 北京三星通信技术研究有限公司 编解码方法及装置
CN117499625A (zh) 2019-09-01 2024-02-02 北京字节跳动网络技术有限公司 视频编解码中预测权重的对准
KR20220061108A (ko) 2019-09-19 2022-05-12 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 레퍼런스 샘플 위치 유도
EP4018659A4 (en) 2019-09-19 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SCALE WINDOW IN VIDEO CODING
JP7479456B2 (ja) 2019-09-20 2024-05-08 北京字節跳動網絡技術有限公司 ビデオ・データ処理方法及び装置並びに記憶媒体及び方法
EP4026336A4 (en) 2019-10-05 2022-12-07 Beijing Bytedance Network Technology Co., Ltd. LEVEL-BASED SIGNALING OF VIDEO CODING TOOLS
CN114556926A (zh) 2019-10-10 2022-05-27 北京字节跳动网络技术有限公司 几何分割模式中的运动矢量处理
KR102637881B1 (ko) 2019-10-12 2024-02-19 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 정제 비디오 코딩 툴의 사용 및 시그널링
MX2022004200A (es) 2019-10-13 2022-05-02 Beijing Bytedance Network Tech Co Ltd Interaccion entre remuestreo de imagen de referencia y herramientas de codificacion de video.
CN115004697A (zh) * 2019-12-04 2022-09-02 抖音视界(北京)有限公司 来自多个跨分量的预测
KR20220104059A (ko) * 2019-12-30 2022-07-25 후아웨이 테크놀러지 컴퍼니 리미티드 교차-컴포넌트 선형 모델 예측을 위한 필터링의 방법 및 장치
CN114830663A (zh) * 2019-12-31 2022-07-29 Oppo广东移动通信有限公司 变换方法、编码器、解码器以及存储介质
WO2021177735A1 (ko) * 2020-03-04 2021-09-10 인텔렉추얼디스커버리 주식회사 비디오 코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2021086237A2 (en) * 2020-04-01 2021-05-06 Huawei Technologies Co., Ltd. Method and apparatus of sample fetching and padding for downsampling filtering for cross-component linear model prediction
US11146801B1 (en) * 2020-06-30 2021-10-12 Tencent America LLC Cross component intra prediction mode
US11638019B2 (en) * 2020-07-29 2023-04-25 Alibaba Group Holding Limited Methods and systems for prediction from multiple cross-components
CN117256149A (zh) * 2021-04-16 2023-12-19 北京达佳互联信息技术有限公司 使用多模型线性模型的视频编解码
CN113329228B (zh) * 2021-05-27 2024-04-26 杭州网易智企科技有限公司 视频编码方法、解码方法、装置、电子设备及存储介质
JP2024520116A (ja) * 2021-06-07 2024-05-21 ヒョンダイ モーター カンパニー イントラ予測方法及び記録媒体
EP4364417A1 (en) * 2021-06-28 2024-05-08 Nokia Technologies Oy An apparatus and a method for video coding and decoding
WO2023084155A1 (en) * 2021-11-15 2023-05-19 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
WO2023089230A2 (en) * 2021-11-16 2023-05-25 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
WO2023116706A1 (en) * 2021-12-21 2023-06-29 Mediatek Inc. Method and apparatus for cross component linear model with multiple hypotheses intra modes in video coding system
WO2023116704A1 (en) * 2021-12-21 2023-06-29 Mediatek Inc. Multi-model cross-component linear model prediction
WO2023133312A1 (en) * 2022-01-10 2023-07-13 Beijing Dajia Internet Information Technology Co., Ltd Method and apparatus for cross-component prediction for video coding
WO2023195708A1 (ko) * 2022-04-03 2023-10-12 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2023200933A1 (en) * 2022-04-13 2023-10-19 Innopeak Technology, Inc. Cross-component model adjustment for video coding
US20230388540A1 (en) * 2022-05-27 2023-11-30 Tencent America LLC Signaling of downsampling filters for chroma from luma intra prediction mode
US20240015279A1 (en) * 2022-07-11 2024-01-11 Tencent America LLC Mixed-model cross-component prediction mode
WO2024071523A1 (ko) * 2022-09-26 2024-04-04 현대자동차주식회사 개선된 크로스 컴포넌트 선형 모델 예측을 이용하는 비디오 코딩을 위한 방법 및 장치
WO2024074752A1 (en) * 2022-10-06 2024-04-11 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
WO2024074129A1 (en) * 2022-10-07 2024-04-11 Mediatek Inc. Method and apparatus of inheriting temporal neighbouring model parameters in video coding system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3208101B2 (ja) * 1996-11-07 2001-09-10 松下電器産業株式会社 画像符号化方法および画像符号化装置並びに画像符号化プログラムを記録した記録媒体
US8483285B2 (en) * 2008-10-03 2013-07-09 Qualcomm Incorporated Video coding using transforms bigger than 4×4 and 8×8
WO2011083573A1 (ja) 2010-01-07 2011-07-14 株式会社 東芝 動画像符号化装置及び動画像復号化装置
KR20120012385A (ko) * 2010-07-31 2012-02-09 오수미 인트라 예측 부호화 장치
US9008175B2 (en) * 2010-10-01 2015-04-14 Qualcomm Incorporated Intra smoothing filter for video coding
US8724711B2 (en) * 2011-07-12 2014-05-13 Intel Corporation Luma-based chroma intra prediction
WO2013102293A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
WO2013155662A1 (en) * 2012-04-16 2013-10-24 Mediatek Singapore Pte. Ltd. Methods and apparatuses of simplification for intra chroma lm mode
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
CN104871537B (zh) * 2013-03-26 2018-03-16 联发科技股份有限公司 色彩间帧内预测的方法
US9451254B2 (en) * 2013-07-19 2016-09-20 Qualcomm Incorporated Disabling intra prediction filtering
US10397607B2 (en) * 2013-11-01 2019-08-27 Qualcomm Incorporated Color residual prediction for video coding
US9967592B2 (en) * 2014-01-11 2018-05-08 Qualcomm Incorporated Block-based advanced residual prediction for 3D video coding
KR101683175B1 (ko) * 2014-03-06 2016-12-06 삼성전자주식회사 영상 복호화 방법 및 그 장치, 영상 부호화 방법 및 그 장치
US10321140B2 (en) * 2015-01-22 2019-06-11 Mediatek Singapore Pte. Ltd. Method of video coding for chroma components

Also Published As

Publication number Publication date
WO2018053293A1 (en) 2018-03-22
CN109716771A (zh) 2019-05-03
KR20190046852A (ko) 2019-05-07
TWI776818B (zh) 2022-09-11
US10652575B2 (en) 2020-05-12
TW201817236A (zh) 2018-05-01
US20180077426A1 (en) 2018-03-15
SG11201900967XA (en) 2019-04-29
JP7044765B2 (ja) 2022-03-30
BR112019004544A2 (pt) 2019-05-28
EP3513559A1 (en) 2019-07-24
KR102534901B1 (ko) 2023-05-19
EP3513559B1 (en) 2021-08-04
JP2019530330A (ja) 2019-10-17
CN109716771B (zh) 2022-06-28

Similar Documents

Publication Publication Date Title
ES2884375T3 (es) Intra predicción de croma de modelo lineal para codificación de vídeo
ES2901503T3 (es) Decodificación de datos de vídeo usando una estructura de árbol de múltiples tipos de dos niveles
KR102515487B1 (ko) 비디오 코딩을 위한 트리-타입 코딩
AU2016271140B2 (en) Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
EP3357247B1 (en) Improved video intra-prediction using position-dependent prediction combination for video coding
ES2854699T3 (es) Intrapredicción y codificación intramodo
ES2867624T3 (es) Extracción de subflujos de bits de MCTS para codificación de vídeo
KR102094588B1 (ko) 공간적 및/또는 시간적 모션 정보를 사용하는 서브-예측 유닛 모션 벡터 예측
ES2892479T3 (es) Modo de predicción ponderada para codificación de video escalable
ES2699725B2 (es) Metodo y aparato para procesar senal de video
DK2622858T3 (en) VIDEO Coding GLASS FILTER
CN113853784B (zh) 用于视频译码的多个自适应环路滤波器集合的方法和装置
CA2853798C (en) Adaptive center band offset filter for video coding
US20130163664A1 (en) Unified partition mode table for intra-mode coding
ES2886344T3 (es) Predicción residual generalizada para codificación de vídeo escalable y codificación de vídeo 3D
EP2837179A1 (en) Lcu-based adaptive loop filtering for video coding
EP2891310A2 (en) Intra prediction improvements for scalable video coding