ES3040589T3 - Method and apparatus for video coding - Google Patents
Method and apparatus for video codingInfo
- Publication number
- ES3040589T3 ES3040589T3 ES20773402T ES20773402T ES3040589T3 ES 3040589 T3 ES3040589 T3 ES 3040589T3 ES 20773402 T ES20773402 T ES 20773402T ES 20773402 T ES20773402 T ES 20773402T ES 3040589 T3 ES3040589 T3 ES 3040589T3
- Authority
- ES
- Spain
- Prior art keywords
- mpm
- intra
- luma
- current block
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Se proporciona un método de decodificación de vídeo implementado en un decodificador. En este método, se recibe información codificada de los bloques vecinos a partir de un flujo de bits de vídeo codificado. Dicha información incluye información de predicción intra de los bloques vecinos. La información de predicción intra del bloque actual se determina a partir de la información codificada de los bloques vecinos. Se determina un modo de dirección de predicción intra basado en la información de predicción intra del bloque actual. Se reconstruye al menos una muestra del bloque actual según el modo de dirección de predicción intra del mismo. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y aparato para codificación de video
Campo técnico
La presente descripción describe realizaciones generalmente relacionadas con la codificación de vídeo, específicamente, relacionadas con un método, aparato y medio de almacenamiento para la decodificación de vídeo.
Antecedentes
La descripción de antecedentes proporcionada en la presente memoria tiene el propósito de presentar generalmente el contexto de la descripción. El trabajo de los inventores actualmente mencionados, en la medida en que se describe el trabajo en esta sección de antecedentes, así como también aspectos de la descripción que de otro modo no califican como técnica anterior en el momento de la presentación, no se admiten expresa ni implícitamente como técnica anterior frente a la presente descripción.
La codificación y decodificación de vídeo se puede realizar utilizando predicción interimagen con compensación de movimiento. El vídeo digital no comprimido puede incluir una serie de imágenes, teniendo cada imagen una dimensión espacial de, por ejemplo, 1920 x 1080 muestras de luminancia y muestras de crominancia asociadas. La serie de imágenes puede tener una velocidad de imagen fija o variable (también conocida como velocidad de fotogramas), de, por ejemplo, 60 imágenes por segundo o 60 Hz. El vídeo no comprimido tiene requisitos de velocidad de bits significativa. Por ejemplo, el vídeo 1080p604:2:0 en 8 bits por muestra (resolución de muestra de luminancia 1920x1080 a una velocidad de fotogramas de 60 Hz) requiere un ancho de banda cercano a 1,5 Gbit/s. Una hora de tal vídeo requiere más de 600 gigabytes (GB) de espacio de almacenamiento.
Un propósito de la codificación y decodificación de vídeo puede ser la reducción de redundancia en la señal de vídeo de entrada, mediante compresión. La compresión puede ayudar a reducir los requisitos de ancho de banda o espacio de almacenamiento mencionados anteriormente, en algunos casos en dos órdenes de magnitud o más. Se pueden emplear tanto la compresión sin pérdidas como con pérdidas, así como una combinación de las mismas. La compresión sin pérdidas se refiere a técnicas donde se puede reconstruir una copia exacta de la señal original a partir de la señal original comprimida. Cuando se utiliza compresión con pérdidas, la señal reconstruida puede no ser idéntica a la señal original, pero la distorsión entre las señales original y reconstruida es lo suficientemente pequeña como para hacer la señal reconstruida útil para la aplicación prevista. En el caso de vídeos, la compresión con pérdidas se emplea ampliamente. La cantidad de distorsión tolerada depende de la aplicación; por ejemplo, los usuarios de ciertas aplicaciones de transmisión para consumidor pueden tolerar una mayor distorsión que los usuarios de aplicaciones para distribución de televisión. La relación de compresión alcanzable puede reflejar que: una distorsión permisible/tolerable más alta puede producir relaciones de compresión más altas.
Un codificador y decodificador de vídeo puede utilizar técnicas de varias categorías amplias, que incluyen, por ejemplo, compensación de movimiento, transformación, cuantificación y codificación por entropía.
Las tecnologías de códec de vídeo pueden incluir técnicas conocidas como intracodificación. En la intracodificación, los valores de muestra se representan sin referencia a muestras u otros datos de imágenes de referencia previamente reconstruidas. En algunos códecs de vídeo, la imagen se subdivide espacialmente en bloques de muestras. Cuando todos los bloques de muestras se codifican en intramodo, esa imagen puede ser una intraimagen. Pueden utilizarse intraimágenes y sus derivaciones tales como imágenes de actualización de decodificadores independientes, para restablecer el estado del decodificador y, por lo tanto, pueden utilizarse como la primera imagen en un flujo de bits de vídeo codificado y una sesión de vídeo, o como una imagen fija. Las muestras de un intrabloque pueden exponerse a una transformación, y los coeficientes de transformación pueden cuantificarse antes de la codificación por entropía. La intrapredicción puede ser una técnica que minimiza los valores de muestra en el dominio de pre-transformación. En algunos casos, cuanto menor es el valor de CC después de una transformación, y cuanto más pequeños son los coeficientes de CA, menos bits se requieren en un tamaño del paso de cuantificación dada para representar el bloque después de la codificación por entropía.
La intracodificación tradicional tal como se conoce a partir de, por ejemplo, tecnologías de codificación de generación de MPEG-2 no utiliza intrapredicción. Sin embargo, algunas tecnologías de compresión de vídeo más recientes incluyen técnicas que intentan, por ejemplo, datos de muestra circundantes y/o metadatos obtenidos durante la codificación/decodificación de bloques de datos espacialmente vecinos y anteriores en el orden de decodificación. Tales técnicas se denominan en adelante técnicas de “ intrapredicción” . Obsérvese que, en al menos algunos casos, la intrapredicción solo utiliza datos de referencia de la imagen actual bajo reconstrucción y no a partir de imágenes de referencia.
Puede haber muchas formas diferentes de intrapredicción. Cuando más de una de tales técnicas se puede usar en una tecnología de codificación de vídeo dada, la técnica en uso se puede codificar en un modo de intrapredicción. En ciertos casos, los modos pueden tener submodos y/o parámetros, y aquellos pueden codificarse individualmente o incluirse en la palabra de código de modo. Qué palabra de código utilizar para una determinada combinación de modo/submodo/parámetro puede tener un impacto en la ganancia de eficiencia de codificación a través de la intrapredicción, y también puede hacerlo la tecnología de codificación de entropía utilizada para traducir las palabras de código en un flujo de bits.
Se introdujo un cierto modo de intrapredicción con H.264, se refinó en H.265, y se refinó adicionalmente en tecnologías de codificación más recientes tales como modelo de exploración conjunta (JEM, por sus siglas en inglés), codificación de vídeo versátil (VVC, por sus siglas en inglés), y conjunto de referencia (b Ms , por sus siglas en inglés). Se puede formar un bloque predictor utilizando valores de muestras vecinas que pertenecen a muestras ya disponibles. Valores de muestra de las muestras vecinas se copian en el bloque predictor según una dirección. Una referencia a la dirección en uso se puede codificar en el flujo de bits o puede predecirse.
Con referencia a la figura 1, se representa en la derecha inferior un subconjunto de nueve direcciones de predictor conocidas de las 33 direcciones de predictor posibles de H.265 (correspondientes a los 33 modos angulares de los 35 intramodos). El punto donde convergen las flechas (101) representa la muestra que está siendo predicha. Las flechas representan la dirección a partir de la cual se prevé la muestra. Por ejemplo, la flecha (102) indica que la muestra (101) se predice desde una muestra o muestras hasta la derecha superior, en un ángulo de 45 grados desde la horizontal. De manera similar, la flecha (103) indica que la muestra (101) se predice desde una muestra o muestras a la izquierda inferior de la muestra (101), en un ángulo de 22,5 grados desde la horizontal.
Todavía con referencia a la Figura 1, en la parte superior izquierda se representa un bloque cuadrado (104) de 4 x 4 muestras (indicado por una línea discontinua, en negrita). El bloque cuadrado (104) incluye 16 muestras, cada una marcada con una “ S” , su posición en la dimensión Y (p. ej., índice de fila) y su posición en la dimensión X (p. ej., índice de columna). Por ejemplo, la muestra S21 es la segunda muestra en la dimensión Y (desde la parte superior) y la primera (de la izquierda) muestra en dimensión X. Similarmente, la muestra S44 es la cuarta muestra en el bloque (104) en las dimensiones Y y X. Como el bloque es de 4 x 4 muestras en tamaño, S44 está en la parte inferior derecha. Se muestran además muestras de referencia que siguen un esquema de numeración similar. Una muestra de referencia está marcada con una R, su posición Y (por ejemplo, índice de fila) y posición X (índice de columna) en relación con el bloque (104). En ambas H.264 y H.265, las muestras de predicción son vecinas al bloque bajo reconstrucción; por lo tanto no es necesario usar ningún valor negativo.
La intrapredicción de imagen puede funcionar copiando los valores de muestra de referencia de las muestras vecinas según lo apropiado por la dirección de predicción señalizada. Por ejemplo, suponer que el flujo de bits de vídeo codificado incluye señalización que, para este bloque, indica una dirección de predicción consistente con la flecha (102), es decir, las muestras se predicen a partir de una muestra o muestras de predicción a la derecha superior, en un ángulo de 45 grados desde la horizontal. En ese caso, las muestras S41, S32, S23 y S14 se predicen a partir de la misma muestra de referencia R05. Después se predice la muestra S44 a partir de la muestra de referencia R08.
En ciertos casos, los valores de múltiples muestras de referencia pueden combinarse, por ejemplo, a través de interpolación, para calcular una muestra de referencia; especialmente cuando las direcciones no son uniformemente divisibles por 45 grados.
El número de direcciones posibles ha aumentado a medida que se ha desarrollado la tecnología de codificación de vídeo. En H.264 (año 2003), podrían representarse nueve direcciones diferentes. Esto aumentó a 33 en H.265 (año 2013), y JEM/VVC/BMS, en el momento de la descripción, puede soportar hasta 65 direcciones. Se han realizado experimentos para identificar las direcciones más probables, y ciertas técnicas en la codificación por entropía se usan para representar esas direcciones probables en un pequeño número de bits, aceptando una cierta penalización para direcciones menos probables. Además, las propias direcciones a veces se pueden predecir a partir de direcciones vecinas utilizadas en bloques vecinos, ya decodificados.
La figura 2 muestra un esquema (201) que representa 65 direcciones de intrapredicción según JEM para ilustrar el número creciente de direcciones de predicción a lo largo del tiempo.
El mapeo de bits de direcciones de intrapredicción en el flujo de bits de vídeo codificado que representa la dirección puede ser distinto de una tecnología de codificación de vídeo a otra tecnología de codificación de vídeo; y puede variar, por ejemplo, a partir de mapeos directos simples de dirección de predicción al modo de intrapredicción a palabras de código, a esquemas adaptativos complejos que implican modos más probables y técnicas similares. Sin embargo, en todos los casos puede haber ciertas direcciones que son estadísticamente menos propensas a ocurrir en contenido de vídeo que ciertas otras direcciones. Como el objetivo de la compresión de vídeo es la reducción de redundancia, esas direcciones menos probables, en una tecnología de codificación de vídeo que trabaje bien, se representan por un mayor número de bits que direcciones más probables.
Un documento (“ No CE3: Un proceso de construcción de listas intramodos de luma unificado” ) describe la modificación del VVC WD, que incluye: el proceso de derivación para el modo de intrapredicción de luma, y el proceso de derivación de ctxlnc utilizando elementos de sintaxis de izquierda, izquierda inferior, superior y derecha superior.
Un documento (“Algorithm description of Joint Exploration Test Model 7 (JEM7)” ) describe el algoritmo del modelo 7 de prueba de exploración conjunta. Describe las características de codificación que están bajo estudio coordinado del modelo de prueba por parte de JVET como tecnología de codificación de vídeo potencialmente mejorada.
También se proporciona la descripción de las estrategias de codificación utilizadas en los experimentos para el estudio de la nueva tecnología en el JEM.
Un documento (“ CE3-related: Modifications on MPM list generation” ) propuso dos modificaciones en la generación de listas de MPM. En primer lugar, para las líneas de referencia distintas de cero, se eliminan tres ramas para la derivación de MPM del borrador de trabajo cuando los modos vecinos izquierdo y superior son modos angulares diferentes. En segundo lugar, para una línea de referencia cero, si un modo vecino es el modo planar o DC, y el otro modo vecino es el modo angular, se propone insertar primero el modo planar en la lista de MPM.
Un documento (“WD3: Working Draft 3 of High- Efficiency Video Coding” ) especifica la codificación de vídeo de alta eficiencia, que incluye los formatos de datos de origen, codificados, decodificados y de salida, los procesos de escaneo, y las relaciones de vecindad, la sintaxis y la semántica, el proceso de decodificación y el proceso de análisis. BOSSEN (BOSSENTECH) F y col.: “ Non-CE3: A unified luma intra mode list construction process” , 13. JVET MEETING; 20190109 - 20190118; MARRAKECH; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16), n.° JVET-M0528 11 de enero de 2019 (11-01-2019), XP030201604, recuperado de la Internet: La URL:http://phenix.int-evry.fr/jvet/doc_end_user/documents/13_Marrakech/wg11/JVET-M0528-v2.zip JVET-M0528-VVC-WD-Changes.docx [recuperado el 11 de enero de 2019] describe la señalización de un intra_luma_angular mode_flag y de un intra_luma_planar_flag, antes de la señalización de intra_luma_mpm_flag, indicando el intra_luma_angular mode_flag si el modo de intrapredicción es angular o no, e indicando el intra_luma_planar_flag si el modo de intrapredicción es planar o DC.
La patente EP 3905674 A1 describe un método de decodificación de imágenes, comprende los pasos de: configurar una lista de MPM que incluye modos de intrapredicción candidatos para un bloque actual; derivar un modo de intrapredicción del bloque actual a partir de la lista de MPM sobre la base de la información del índice de MPM que indica un modo de intrapredicción, entre los modos de intrapredicción candidatos incluidos en la lista de MPM, para el bloque actual; generar muestras de predicción para el bloque actual sobre la base del modo de intrapredicción; y generar una imagen reconstruida para el bloque actual sobre la base de las muestras de predicción.
La patente US 2011/317757 A1 describe un codificador de vídeo, configurado para codificar la selección del modo de predicción del bloque de vídeo actual basándose en los modos de predicción de uno o más bloques de vídeo previamente codificados de la serie de bloques de vídeo. La selección de un modo no principal se puede codificar como una combinación de un modo principal y un refinamiento de ese modo principal. Un descodificador de vídeo también puede configurarse para realizar la función de descodificación recíproca de la codificación realizada por el codificador de vídeo. La patente US 2014/064359 A1 describe una mejora de orden del modo más probable de intrapredicción para la codificación de vídeo escalable, en donde la unidad de memoria almacena información de vídeo asociada con una capa de referencia y a una capa de mejora correspondiente. El procesador recibe una lista de modos asociada con la capa de mejora, comprendiendo la lista de modos tres entidades, identificando cada entidad un modo diferente para determinar un valor de una unidad de vídeo ubicada en una posición dentro de la capa de mejora.
Resumen
La invención se establece en las reivindicaciones adjuntas a la presente memoria. Puede encontrarse la descripción de la invención en los pasajes relacionados con la tabla 2.
Breve descripción de los dibujos
Características adicionales, la naturaleza y diversas ventajas del objeto descrito serán más evidentes a partir de la siguiente descripción detallada y los dibujos adjuntos en los que:
La figura 1 es una ilustración esquemática de un subconjunto ilustrativo de modos de intrapredicción.
La figura 2 es una ilustración de direcciones de intrapredicción ilustrativas.
La figura 3 es una ilustración esquemática de un diagrama de bloques simplificado de un sistema de comunicación según una realización.
La figura 4 es una ilustración esquemática de un diagrama de bloques simplificado de otro sistema de comunicación según una realización.
La figura 5 es una ilustración esquemática de un diagrama de bloques simplificado de un decodificador según una realización.
La figura 6 es una ilustración esquemática de un diagrama de bloques simplificado de un codificador según una realización.
La figura 7 muestra un diagrama de bloques de un codificador según otra realización.
La figura 8 muestra un diagrama de bloques de un decodificador según otra realización.
La figura 9 muestra 35 modos de intrapredicción según una realización.
La figura 10 muestra 87 modos de intrapredicción según una realización.
La figura 11 muestra las posiciones de las unidades de bloque de codificación vecinas de una unidad de bloque de codificación actual según una realización.
La figura 12 muestra cuatro líneas de referencia adyacentes a una unidad de bloque de codificación según una realización.
La figura 13 muestra una primera división de bloques ilustrativa.
La figura 14 muestra una segunda de división de bloques ilustrativa.
La figura 15 muestra un diagrama de flujo que describe un ejemplo de proceso según algunas realizaciones de la descripción.
La figura 16 es una ilustración esquemática de un sistema informático según una realización.
Descripción detallada de las realizaciones
La figura 3 ilustra un diagrama de bloques simplificado de un sistema (300) de comunicación según una realización de la presente descripción. El sistema (300) de comunicación incluye una pluralidad de dispositivos terminales que pueden comunicarse entre sí, a través de, por ejemplo, una red (350). Por ejemplo, el sistema (300) de comunicación incluye un primer par de dispositivos terminales (310) y (320) interconectados a través de la red (350). En el ejemplo de la figura 3, el primer par de dispositivos terminales (310) y (320) realiza una transmisión unidireccional de datos. Por ejemplo, el dispositivo terminal (310) puede codificar datos de vídeo (p. ej., un flujo de imágenes de vídeo que son capturadas por el dispositivo terminal (310)) para transmisión al otro dispositivo terminal (320) a través de la red (350). Los datos de vídeo codificados pueden transmitirse en forma de uno o más flujos de bits de vídeo codificados. El dispositivo terminal (320) puede recibir los datos de vídeo codificados de la red (350), decodificar los datos de vídeo codificados para recuperar las imágenes de vídeo y mostrar imágenes de vídeo según los datos de vídeo recuperados. La transmisión de datos unidireccional puede ser común en aplicaciones de servicio de medios y similares.
En otro ejemplo, el sistema (300) de comunicación incluye un segundo par de dispositivos terminales (330) y (340) que realiza la transmisión bidireccional de datos de vídeo codificados que pueden producirse, por ejemplo, durante videoconferencias. Para la transmisión bidireccional de datos, en un ejemplo, cada dispositivo terminal de los dispositivos terminales (330) y (340) puede codificar datos de vídeo (p. ej., un flujo de imágenes de vídeo que son capturadas por el dispositivo terminal) para su transmisión al otro dispositivo terminal de los dispositivos terminales (330) y (340) a través de la red (350). Cada dispositivo terminal de los dispositivos terminales (330) y (340) también puede recibir los datos de vídeo codificados transmitidos por el otro dispositivo terminal de los dispositivos terminales (330) y (340), y puede decodificar los datos de vídeo codificados para recuperar las imágenes de vídeo y puede mostrar imágenes de vídeo en un dispositivo de visualización accesible según los datos de vídeo recuperados.
En el ejemplo de la Figura 3, los dispositivos terminales (310), (320), (330) y (340) pueden ilustrarse como servidores, ordenadores personales y teléfonos inteligentes, pero los principios de la presente descripción pueden no estar tan limitados. Las realizaciones de la presente descripción encuentran aplicación en computadoras portátiles, tabletas, reproductores multimedia y/o equipos de videoconferencia dedicados. La red (350) representa cualquier número de redes que transmiten datos de vídeo codificados entre los dispositivos terminales (310), (320), (330) y (340), incluidas, por ejemplo, redes de comunicación alámbricas (cableadas) y/o inalámbricas. La red (350) de comunicación puede intercambiar datos en canales conmutados por circuitos y/o conmutados por paquetes. Las redes representativas incluyen redes de telecomunicaciones, redes de área local, redes de área amplia y/o Internet. Para los fines del presente análisis, la arquitectura y topología de la red (350) pueden ser irrelevantes para el funcionamiento de la presente descripción salvo que se explique en la presente memoria a continuación.
La figura 4 ilustra, como un ejemplo para una aplicación para la materia descrita, la colocación de un codificador de vídeo y un decodificador de vídeo en un entorno de transmisión. La materia objeto descrita puede ser igualmente aplicable a otras aplicaciones habilitadas para vídeo, incluyendo, por ejemplo, videoconferencias, TV digital, almacenamiento de vídeo comprimido en medios digitales que incluyen CD, DVD, tarjeta de memoria y similares, etc.
Un sistema de transmisión puede incluir un subsistema (413) de captura, que puede incluir una fuente (401) de vídeo, por ejemplo una cámara digital, creando, por ejemplo, un flujo de imágenes (402) de vídeo que no están comprimidas. En un ejemplo, el flujo de imágenes (402) de vídeo incluye muestras que son tomadas por la cámara digital. El flujo de imágenes (402) de vídeo, representado como una línea en negrita para enfatizar un volumen de datos alto en comparación con los datos (404) de vídeo codificados (o flujos de bits de vídeo codificados), puede ser procesado por un dispositivo electrónico (420) que incluye un codificador (403) de vídeo acoplado a la fuente (401) de vídeo. El codificador (403) de vídeo puede incluir hardware, software o una combinación de los mismos para habilitar o implementar aspectos del objeto descrito como se describe con más detalle a continuación. Los datos (404) de vídeo codificados (o flujo (404) de bits de vídeo codificado), representados como una línea delgada para enfatizar el menor volumen de datos cuando se compara con el flujo de imágenes (402) de vídeo, pueden almacenarse en un servidor (405) de transmisión para utilización futura. Uno o más subsistemas de cliente de transmisión, tal como los subsistemas (406) y (408) de cliente en la figura 4 pueden acceder al servidor (405) de transmisión para recuperar copias (407) y (409) de los datos (404) de vídeo codificados. Un subsistema (406) de cliente puede incluir un decodificador (410) de vídeo, por ejemplo, en un dispositivo electrónico (430). El decodificador (410) de vídeo decodifica la copia entrante (407) de los datos de vídeo codificados y crea un flujo saliente de imágenes (411) de vídeo que pueden reproducirse en una pantalla (412) (p. ej., pantalla de visualización) u otro dispositivo de reproducción (no representado). En algunos sistemas de transmisión, los datos (404), (407) y (409) de vídeo codificados (p. ej., flujos de bits de vídeo) pueden codificarse según ciertos estándares de codificación/compresión de vídeo. Ejemplos de esas normas incluyen la Recomendación ITU-T H.265. En un ejemplo, una norma de codificación de vídeo en desarrollo es informalmente conocida como codificación de vídeo versátil (VVC, por sus siglas en inglés). El objeto descrito puede utilizarse en el contexto de VVC.
Se observa que los dispositivos electrónicos (420) y (430) pueden incluir otros componentes (no mostrados). Por ejemplo, el dispositivo electrónico (420) puede incluir un decodificador de vídeo (no mostrado) y el dispositivo electrónico (430) puede incluir también un codificador de vídeo (no mostrado).
La figura 5 muestra un diagrama de bloques de un decodificador (510) de vídeo según una realización de la presente descripción. El decodificador (510) de vídeo puede incluirse en un dispositivo electrónico (530). El dispositivo electrónico (530) puede incluir un receptor (531) (p. ej., un sistema de circuitos de recepción). El decodificador (510) de vídeo puede utilizarse en el lugar del decodificador (410) de vídeo en el ejemplo de la figura 4.
Un receptor (531) puede recibir una o más secuencias de vídeo e codificadas para ser decodificadas por el decodificador (510) de vídeo; en la misma o una realización, una secuencia de vídeo codificada en un momento, donde la decodificación de cada secuencia de vídeo codificada es independiente de otras secuencias de vídeo codificadas. La secuencia de vídeo codificada puede recibirse desde un canal (501), que puede ser un enlace de hardware/software a un dispositivo de almacenamiento que almacena los datos de vídeo codificados. El receptor (531) puede recibir los datos de vídeo codificados con otros datos, por ejemplo, datos de audio codificados y/o flujos de datos auxiliares, que pueden enviarse a sus respectivas entidades de uso (no representadas). El receptor (531) puede separar la secuencia de vídeo codificada de los otros datos. Para combatir la fluctuación de fase de la red, una memoria intermedia (515) puede acoplarse entre el receptor (531) y el decodificador/analizador por entropía (520) (“ analizador (520)” en adelante). En ciertas aplicaciones, la memoria intermedia (515) es parte del decodificador (510) de vídeo. En otras, puede estar fuera del decodificador (510) de vídeo (no representado). En aún otras, puede haber una memoria intermedia (no representada) fuera del decodificador (510) de vídeo, por ejemplo para combatir la fluctuación de fase de la red y, además otra memoria intermedia (515) dentro del decodificador (510) de vídeo, por ejemplo para manejar la temporización de la reproducción. Cuando el receptor (531) recibe datos desde un dispositivo de almacenamiento/reenvío con suficiente ancho de banda y controlabilidad, o desde una red isosincrónica, la memoria intermedia (515) puede no ser necesaria, o puede ser pequeña. Para su utilización en las redes de paquetes de mejor esfuerzo tal como la Internet, puede requerirse la memoria intermedia (515), puede ser comparativamente grande y puede ser ventajosamente de tamaño adaptativo, y puede implementarse al menos parcialmente en un sistema operativo o elementos similares (no representados) fuera del decodificador (510) de vídeo.
El decodificador (510) de vídeo puede incluir un analizador (520) para reconstruir símbolos (521) a partir de la secuencia de vídeo codificada. Las categorías de esos símbolos incluyen información utilizada para gestionar el funcionamiento del decodificador (510) de vídeo, y potencialmente información para controlar un dispositivo de reproducción tal como un dispositivo (512) de reproducción (p. ej., una pantalla de visualización) que no es una parte integral del dispositivo electrónico (530) pero puede acoplarse al dispositivo electrónico (530), como se mostró en la figura 5. La información de control para el (los) dispositivo(s) de representación puede estar en forma de los fragmentos de conjunto de parámetros de información de mejora suplementaria (mensajes SEI) o de información de usabilidad de vídeo (VUI) (no representados). El analizador (520) puede analizar/decodificar por entropía la secuencia de vídeo codificada que es recibida. La codificación de la secuencia de vídeo codificada puede realizarse según una tecnología o estándar de codificación de vídeo, y puede seguir varios principios, incluyendo codificación de longitud variable, codificación Huffman, codificación aritmética con o sin sensibilidad al contexto, etc. El analizador (520) puede extraer de la secuencia de vídeo codificada un conjunto de parámetros de subgrupo para al menos uno de los subgrupos de píxeles en el decodificador de vídeo, basándose en al menos un parámetro correspondiente al grupo. Los subgrupos pueden incluir grupos de imágenes (GOP), imágenes, mosaicos, cortes, macrobloques, unidades de codificación (CU), bloques, unidades de transformada (TU), unidades de predicción (PU) y así sucesivamente. El analizador (520) también puede extraer de la secuencia de vídeo codificada información tal como coeficientes de transformada, valores de parámetros del cuantificador, vectores de movimiento, y así sucesivamente.
El analizador (520) puede realizar una operación de decodificación por entropía/análisis en la secuencia de vídeo recibida de la memoria intermedia (515), para crear símbolos (521).
La reconstrucción de los símbolos (521) puede implicar múltiples unidades diferentes dependiendo del tipo de imagen de vídeo codificada o partes de la misma (tales como: inter- e intraimagen, inter- e intrabloque) y otros factores. Qué unidades están involucradas, y cómo, puede controlarse mediante la información de control de subgrupo que se analizó a partir de la secuencia de vídeo codificada por el analizador (520). El flujo de tal información de control de subgrupo entre el analizador (520) y las múltiples unidades a continuación no se representa para mayor claridad.
Más allá de los bloques funcionales ya mencionados, el decodificador (510) de vídeo puede subdividirse conceptualmente en un número de unidades funcionales como se describe a continuación. En una implementación práctica que funciona bajo restricciones comerciales, muchas de estas unidades interactúan estrechamente entre sí y pueden, al menos parcialmente, integrarse entre sí. Sin embargo, con el fin de describir el objeto descrito, la subdivisión conceptual en las unidades funcionales a continuación es apropiada.
Una primera unidad es la unidad (551) de escalador/transformada inversa. La unidad (551) de escalador/transformada inversa recibe un coeficiente de transformada cuantificado así como la información de control, que incluye cuál transformada utilizar, el tamaño de bloque, el factor de cuantificación, las matrices de escala de cuantificación, etc., como símbolo(s) (521) del analizador (520). La unidad (551) de escalador/transformada inversa puede emitir bloques que comprenden valores de muestra, que pueden introducirse en el agregador (555).
En algunos casos, las muestras de salida del escalador/transformada inversa (551) pueden pertenecer a un bloque intracodificado; esto es: un bloque que no utiliza información predictiva a partir de imágenes previamente reconstruidas, pero puede utilizar información predictiva a partir de partes previamente reconstruidas de la imagen actual. Tal información predictiva puede ser proporcionada por una unidad (552) de predicción intraimagen. En algunos casos, la unidad (552) de predicción intraimagen genera un bloque del mismo tamaño y forma del bloque bajo reconstrucción, utilizando información circundante ya reconstruida extraída de la memoria intermedia (558) de imagen actual. La memoria intermedia (558) de imagen actual almacena, por ejemplo, una imagen actual reconstruida parcialmente y/o una imagen actual totalmente reconstruida. El agregador (555), en algunos casos, añade, por cada muestra, la información de predicción que la unidad (552) de intrapredicción ha generado a la información de la muestra de salida proporcionada por la unidad (551) de escalador/transformada inversa.
En otros casos, las muestras de salida de la unidad (551) de escalador/transformada inversa pueden pertenecer a un bloque intercodificado y potencialmente compensado en movimiento. En tal caso, una unidad (553) de predicción de compensación de movimiento puede acceder a la memoria (557) de imágenes de referencia para extraer muestras utilizadas para la predicción. Después de compensar el movimiento de las muestras extraídas según los símbolos (521) pertenecientes al bloque, estas muestras pueden añadirse por el agregador (555) a la salida de la unidad (551) de escalador/transformada inversa (en este caso llamadas muestras residuales o señal residual) para generar información de muestra de salida. Las direcciones dentro de la memoria (557) de imágenes de referencia desde donde la unidad (553) de predicción de compensación de movimiento extrae muestras de predicción pueden controlarse mediante vectores de movimiento, disponibles para la unidad (553) de predicción de compensación de movimiento en forma de símbolos (521) que pueden tener, por ejemplo, componentes X, Y, y de imagen de referencia. La compensación de movimiento también puede incluir interpolación de valores de muestra como extraídos de la memoria (557) de imágenes de referencia cuando los vectores de movimiento exactos de submuestra están en utilización, mecanismos de predicción de vectores de movimiento, y así sucesivamente.
Las muestras de salida del agregador (555) pueden someterse a diversas técnicas de filtrado en bucle en la unidad (556) de filtro en bucle. Las tecnologías de compresión de vídeo pueden incluir tecnologías de filtro en bucle que están controladas mediante parámetros incluidos en la secuencia de vídeo codificada (también denominada flujo de bits de vídeo codificado) y puestos a disposición de la unidad (556) de filtro en bucle como símbolos (521) del analizador (520), pero también puede responder a la metainformación obtenida durante la decodificación de partes anteriores (en orden de decodificación) de la imagen codificada o secuencia de vídeo codificada, así como responder a valores de muestras previamente reconstruidos y filtrados en bucle.
La salida de la unidad (556) de filtro en bucle puede ser un flujo de muestra que puede emitirse al dispositivo (512) de reproducción así como almacenarse en la memoria (557) de imágenes de referencia para su utilización en futuras predicciones entre imágenes.
Ciertas imágenes codificadas, una vez completamente reconstruidas, pueden utilizarse como imágenes de referencia para la predicción futura. Por ejemplo, una vez que una imagen codificada correspondiente a una imagen actual se reconstruye totalmente y la imagen codificada ha sido identificada como una imagen de referencia (mediante, por ejemplo, el analizador (520)), la memoria intermedia (558) de imagen actual puede convertirse en parte de la memoria (557) de imágenes de referencia, y una memoria intermedia de imágenes actual nueva puede reasignarse antes de comenzar la reconstrucción de la siguiente imagen codificada.
El decodificador (510) de vídeo puede realizar operaciones de decodificación según una tecnología de compresión de vídeo predeterminada en un estándar, tal como ITU-T Rec. H.265. La secuencia de vídeo codificada puede ajustarse a una sintaxis especificada por la tecnología de compresión de vídeo o estándar que se utiliza, en el sentido de que la secuencia de vídeo codificada se adhiere tanto a la sintaxis de la tecnología o estándar de compresión de vídeo como a los perfiles según lo documentado en la tecnología o estándar de compresión de vídeo. Específicamente, un perfil puede seleccionar ciertas herramientas como las únicas herramientas disponibles para utilizarse bajo ese perfil de todas las herramientas disponibles en la tecnología o estándar de compresión de vídeo. También es necesario para el cumplimiento que la complejidad de la secuencia de vídeo codificada esté dentro de límites como se define por el nivel de la tecnología o estándar de compresión de vídeo. En algunos casos, los niveles restringen el tamaño máximo de la imagen, la tasa máxima de tramas, la tasa máxima de la muestra de reconstrucción (medida, por ejemplo, en megamuestras por segundo), el tamaño máximo de la imagen de referencia, y así sucesivamente. Los límites establecidos por los niveles pueden, en algunos casos, restringirse adicionalmente a través de especificaciones de Decodificador de Referencia Hipotética (HRD) y metadatos para la gestión de memoria intermedia HRD señaladas en la secuencia de vídeo codificada.
En una realización, el receptor (531) puede recibir datos adicionales (redundantes) con el vídeo codificado. Los datos adicionales pueden incluirse como parte de la(s) secuencia(s) de vídeo codificada(s). El decodificador (510) de vídeo puede utilizar los datos adicionales para decodificar apropiadamente los datos y/o para reconstruir con mayor precisión los datos de vídeo originales. Los datos adicionales pueden estar en forma de, por ejemplo, capas de mejora temporal, espacial o relación ruido señal (SNR), segmentos redundantes, imágenes redundantes, códigos de corrección de errores directos, etc.
La figura 6 muestra un diagrama de bloques de un codificador (603) de vídeo según una realización de la presente descripción. El codificador (603) de vídeo se incluye en un dispositivo electrónico (620). El dispositivo electrónico (620) incluye un transmisor (640) (p. ej., un sistema de circuitos de transmisión). El codificador (603) de vídeo puede utilizarse en el lugar del codificador (403) de vídeo en el ejemplo de la figura 4.
El codificador (603) de vídeo puede recibir muestras de vídeo de una fuente (601) de vídeo (que no es parte del dispositivo electrónico (620) en el ejemplo de la figura 6) que puede capturar imagen (imágenes) de vídeo para ser codificada(s) por el codificador (603) de vídeo. En otro ejemplo, la fuente (601) de vídeo es una parte del dispositivo electrónico (620).
La fuente (601) de vídeo puede proporcionar la secuencia de vídeo fuente para ser codificada por el codificador (603) de vídeo en forma de un flujo de muestras de vídeo digital que puede ser de cualquier profundidad de bits adecuada (por ejemplo: 8 bit, 10 bit, 12 bit, ...), cualquier espacio de color (por ejemplo, BT.601 Y CrCb, RGB, ...), y cualquier estructura de muestreo adecuada (por ejemplo, Y CrCb 4:2:0, Y CrCb 4:4:4). En un sistema de servicio de medios, la fuente (601) de vídeo puede ser un dispositivo de almacenamiento que almacena un vídeo previamente preparado. En un sistema de videoconferencias, la fuente (601) de vídeo puede ser una cámara que captura información de imagen local como una secuencia de vídeo. Los datos de vídeo pueden proporcionarse como una pluralidad de imágenes individuales que imparten movimiento cuando se ven en secuencia. Las propias imágenes pueden organizarse como una matriz espacial de píxeles, en donde cada píxel puede comprender una o más muestras dependiendo de la estructura de muestreo, espacio de color, etc., en uso. Un experto en la técnica puede comprender fácilmente la relación entre píxeles y muestras. La siguiente descripción se centra en las muestras.
Según una realización, el codificador (603) de vídeo puede codificar y comprimir las imágenes de la secuencia de vídeo fuente en una secuencia (643) de vídeo codificada en tiempo real o en cualquier otra limitación de tiempo según lo requiera la aplicación. Hacer cumplir la velocidad de codificación adecuada es una función de un controlador (650). En algunas realizaciones, el controlador (650) controla otras unidades funcionales como se describe a continuación y se acopla funcionalmente a las otras unidades funcionales. El acoplamiento no se representa para mayor claridad. Los parámetros establecidos mediante el controlador (650) pueden incluir parámetros relacionados con el control de velocidad (salto de imagen, cuantificador, valor lambda de técnicas de optimización de distorsión de velocidad,...), tamaño de imagen, diseño de grupo de imágenes (GOP, inglés), rango máximo de búsqueda de vector de movimiento, y así sucesivamente. El controlador (650) puede configurarse para tener otras funciones adecuadas que pertenecen al codificador de vídeo (603) optimizado para un cierto diseño del sistema.
En algunas realizaciones, el codificador (603) de vídeo está configurado para operar en un bucle de codificación. Como una descripción sobresimplificada, en un ejemplo, el bucle de codificación puede incluir un codificador fuente (630) (p. ej., responsable de crear símbolos, tal como un flujo de símbolos, basándose en una imagen de entrada que se codificará, y una(s) imagen(es) de referencia) y un decodificador (local) (633) integrado en el codificador (603) de vídeo. El decodificador (633) reconstruye los símbolos para crear los datos de muestra de un modo similar a cómo un decodificador (remoto) también crearía (ya que cualquier compresión entre símbolos y flujo de bits de vídeo codificado es sin pérdidas en las tecnologías de compresión de vídeo consideradas en la materia descrita). El flujo de muestra reconstruido (datos de muestra) se introduce en la memoria (634) de imágenes de referencia. Como la decodificación de un flujo de símbolos conduce a resultados exactos en bits independientemente de la ubicación del decodificador (local o remoto), el contenido en la memoria (634) de imágenes de referencia también es exacto en bits entre el codificador local y el codificador remoto. En otras palabras, la parte de predicción de un codificador “ve” como muestras de imagen de referencia exactamente los mismos valores de muestra que un decodificador “ve” cuando se utiliza predicción durante la decodificación. Este principio fundamental de sincronicidad de la imagen de referencia (y la deriva resultante, si no se puede mantener la sincronicidad, por ejemplo debido a errores de canal) también se utiliza en algunas técnicas relacionadas.
La operación del decodificador “ local” (633) puede ser la misma que la de un decodificador “ remoto” , tal como el decodificador (510) de vídeo, que ya se ha descrito en detalle anteriormente junto con la figura 5. Haciendo referencia brevemente también a la figura 5, sin embargo, como los símbolos están disponibles y la codificación/decodificación de símbolos en una secuencia de vídeo codificada mediante un codificador (645) por entropía y el analizador (520) puede realizarse sin pérdidas, las partes de decodificación por entropía del decodificador (510) de vídeo, que incluyen la memoria intermedia (515), y el analizador (520) pueden no estar totalmente implementadas en el decodificador local (633).
Una observación que puede realizarse en este punto es que cualquier tecnología de decodificador excepto la decodificación de análisis/entropía que está presente en un decodificador también necesariamente necesita estar presente, en forma funcional sustancialmente idéntica, en un codificador correspondiente. Por esta razón, la materia objeto divulgada se enfoca en la operación del descodificador. La descripción de las tecnologías de codificador puede abreviarse como la inversa de las tecnologías de decodificador descritas ampliamente. Solo en ciertas áreas se requiere una descripción más detallada y se proporciona a continuación.
Durante la operación, en algunos ejemplos, el codificador fuente (630) puede realizar la codificación predictiva compensada por movimiento, que codifica una imagen de entrada de forma predictiva con referencia a una o más imágenes previamente codificadas de la secuencia de vídeo que fueron designadas como “ imágenes de referencia” . De este modo, el motor (632) de codificación codifica diferencias entre bloques de píxeles de una imagen de entrada y bloques de píxeles de imagen (imágenes) de referencia que pueden seleccionarse como referencia(s) de predicción para la imagen de entrada.
El decodificador (633) de vídeo local puede decodificar datos de vídeo codificados de imágenes que pueden designarse como imágenes de referencia, basándose en símbolos creados por el codificador fuente (630). Las operaciones del motor (632) de codificación pueden ser ventajosamente procesos con pérdidas. Cuando los datos de vídeo codificados pueden decodificarse en un decodificador de vídeo (no mostrado en la Figura 6), la secuencia de vídeo reconstruida típicamente puede ser una réplica de la secuencia de vídeo de origen con algunos errores. El decodificador (633) de vídeo local replica procesos de decodificación que puede realizar el decodificador de vídeo en imágenes de referencia y puede hacer que las imágenes de referencia reconstruidas se almacenen en la memoria caché (634) de imágenes de referencia. De este modo, el codificador (603) de vídeo puede almacenar copias de imágenes de referencia reconstruidas localmente que tienen contenido común como las imágenes de referencia reconstruidas que serán obtenidas por un decodificador de vídeo del extremo lejano (sin errores de transmisión).
El predictor (635) puede realizar búsquedas de predicción para el motor (632) de codificación. Es decir, para codificar una nueva imagen, el predictor (635) puede buscar en la memoria (634) de imágenes de referencia datos de muestras (como bloques de píxeles de referencia candidatos) o ciertos metadatos tales como vectores de movimiento de imágenes de referencia, formas de bloques, y así sucesivamente, que pueden servir como una referencia de predicción apropiada para las nuevas imágenes. El predictor (635) puede operar sobre una base de bloque de muestra por bloque de píxeles para encontrar referencias de predicción apropiadas. En algunos casos, según lo determinado por los resultados de búsqueda obtenidos por el predictor (635), una imagen de entrada puede tener referencias de predicción extraídas de múltiples imágenes de referencia almacenadas en la memoria (634) de imágenes de referencia.
El controlador (650) puede gestionar operaciones de codificación del codificador fuente (630), que incluyen, por ejemplo, la configuración de parámetros y parámetros de subgrupo utilizados para codificar los datos de vídeo.
La salida de todas las unidades funcionales mencionadas anteriormente puede someterse a la codificación por entropía en el codificador (645) por entropía. El codificador (645) por entropía traslada los símbolos según son generados por las diversas unidades funcionales a una secuencia de vídeo codificada, comprimiendo sin pérdidas los símbolos según tecnologías conocidas tales como codificación de Huffman, codificación de longitud variable, codificación aritmética, y así sucesivamente.
El transmisor (640) puede almacenar en memoria intermedia la(s) secuencia(s) de vídeo codificada(s) creada(s) por el codificador (645) por entropía para preparar la transmisión a través de un canal (660) de comunicación, que puede ser un enlace de hardware/software a un dispositivo de almacenamiento que almacenaría los datos de vídeo codificados. El transmisor (640) puede fusionar datos de vídeo codificados del codificador (603) de vídeo con otros datos que se transmitirán, por ejemplo, datos de audio codificados y/o flujos de datos auxiliares (fuentes no mostradas).
El controlador (650) puede gestionar el funcionamiento del codificador de vídeo (603). Durante la codificación, el controlador (650) puede asignar a cada imagen codificada un cierto tipo de imagen codificada, lo que puede afectar a las técnicas de codificación que pueden aplicarse a la imagen respectiva. Por ejemplo, las imágenes a menudo pueden asignarse como uno de los siguientes tipos de imagen:
Una intraimagen (imagen I) puede ser una que pueda codificarse y decodificarse sin utilizar ninguna otra imagen en la secuencia como una fuente de predicción. Algunos códecs de vídeo permiten diferentes tipos de intraimágenes, que incluyen, por ejemplo imágenes de actualización de decodificador independiente (“ IDR” , por sus siglas en inglés). Un experto en la técnica conoce esas variantes de imágenes I y sus respectivas aplicaciones y características.
Una imagen predictiva (imagen P) puede ser una que puede codificarse y decodificarse utilizando intrapredicción o interpredicción utilizando como máximo un vector de movimiento e índice de referencia para predecir los valores de muestra de cada bloque.
Una imagen predictiva bidireccional (imagen B) puede ser una que puede codificarse y decodificarse utilizando intrapredicción o interpredicción utilizando como máximo dos vectores de movimiento e índices de referencia para predecir los valores de muestra de cada bloque. De manera similar, las imágenes multipredictivas pueden utilizar más de dos imágenes de referencia y metadatos asociados para la reconstrucción de un solo bloque.
Las imágenes fuente comúnmente pueden subdividirse espacialmente en una pluralidad de bloques de muestra (por ejemplo, bloques de 4x4, 8x8, 4x8 o 16x16 muestras cada uno) y codificarse bloque por bloque. Los bloques pueden codificarse de manera predictiva con referencia a otros bloques (ya codificados) según lo determinado por la asignación de codificación aplicada a las imágenes respectivas de los bloques. Por ejemplo, los bloques de imágenes I pueden codificarse de forma no predictiva o pueden codificarse de manera predictiva con referencia a bloques ya codificados de la misma imagen (predicción espacial o intrapredicción). Los bloques de píxeles de imágenes P pueden codificarse de forma predictiva, mediante predicción espacial o predicción temporal con respecto a una imagen de referencia previamente codificada. Los bloques de imágenes B pueden codificarse de forma predictiva, mediante predicción espacial o mediante predicción temporal con referencia a una o dos imágenes de referencia previamente codificadas.
El codificador de vídeo (603) puede realizar operaciones de codificación según una tecnología o estándar de codificación de vídeo predeterminado, tal como ITU-T Rec. H.265. En su funcionamiento, el codificador (603) de vídeo puede realizar varias operaciones de compresión, incluidas operaciones de codificación predictiva que explotan redundancias temporales y espaciales en la secuencia de vídeo de entrada. Los datos de vídeo codificados, por lo tanto, pueden ajustarse a una sintaxis especificada por la tecnología de codificación de vídeo o estándar que se utiliza.
En una realización, el transmisor (640) puede transmitir datos adicionales con el vídeo codificado. El codificador fuente (630) puede incluir dichos datos como parte de la secuencia de vídeo codificada. Los datos adicionales pueden comprender capas de mejora temporal/espaciales/SNR, otras formas de datos redundantes tales como imágenes redundantes y segmentos, SEI, fragmentos de conjunto de parámetros de VUI, etc.
Un vídeo puede capturarse como una pluralidad de imágenes fuente (imágenes de vídeo) en una secuencia temporal. La predicción intraimagen (frecuentemente abreviada como intrapredicción) utiliza correlación espacial en una imagen dada, y la predicción entre imágenes utiliza correlación (temporal u otra) entre las imágenes. En un ejemplo, una imagen específica bajo codificación/decodificación, que se denomina imagen actual, se divide en bloques. Cuando un bloque en la imagen actual es similar a un bloque de referencia en una imagen de referencia previamente codificada y aún almacenada en el vídeo, el bloque en la imagen actual puede codificarse mediante un vector al que se hace referencia como vector de movimiento. El vector de movimiento apunta al bloque de referencia en la imagen de referencia, y puede tener una tercera dimensión que identifica la imagen de referencia, en caso de que se usen múltiples imágenes de referencia.
En algunas realizaciones, se puede utilizar una técnica de bipredicción en la predicción entre imágenes. Según la técnica de bipredicción, se utilizan dos imágenes de referencia, tales como una primera imagen de referencia y una segunda imagen de referencia que son ambas antes en orden de decodificación a la imagen actual en el vídeo (pero pueden estar en el pasado y en el futuro, respectivamente, en orden de visualización). Un bloque en la imagen actual puede codificarse mediante un primer vector de movimiento que apunta a un primer bloque de referencia en la primera imagen de referencia, y un segundo vector de movimiento que apunta a un segundo bloque de referencia en la segunda imagen de referencia. El bloque puede predecirse mediante una combinación del primer bloque de referencia y el segundo bloque de referencia.
Además, se puede utilizar una técnica de modo de fusión en la predicción entre imágenes para mejorar la eficiencia de codificación.
Según algunas realizaciones de la descripción, las predicciones, tales como predicciones interimagen e predicciones intraimagen se realizan en la unidad de bloques. Por ejemplo, según el estándar HEVC, una imagen en una secuencia de imágenes de vídeo se divide en unidades de árbol de codificación (CTU) para compresión, las CTU en una imagen tienen el mismo tamaño, tal como 64 x 64 píxeles, 32 x 32 píxeles, o 16 x 16 píxeles. En general, una CTU incluye tres bloques de árbol de codificación (CTB), que son un CTB de luma y dos CTB de croma. Cada CTU se puede dividir de forma recursiva en cuatro árboles en una o varias unidades de codificación (CU). Por ejemplo, una CTU de 64 x 64 píxeles se puede dividir en una CU de 64 x 64 píxeles, o 4 CU de 32 x 32 píxeles, o 16 CU de 16 x 16 píxeles. En un ejemplo, cada CU se analiza para determinar un tipo de predicción para la CU, tal como un tipo de interpredicción o un tipo de intrapredicción. La CU se divide en una o más unidades de predicción (PU) dependiendo de la previsibilidad temporal y/o espacial. En general, cada PU incluye un bloque de predicción de luma (PB), y dos PBs de croma. En una realización, una operación de predicción en codificación (codificación/decodificación) se realiza en la unidad de un bloque de predicción. Usando un bloque de predicción de luma como un ejemplo de un bloque de predicción, el bloque de predicción incluye una matriz de valores (por ejemplo, valores de luma) para píxeles, tales como 8*8 píxeles, 16*16 píxeles, 8*16 píxeles, 16*8 píxeles y similares.
La figura 7 muestra un diagrama de un codificador (703) de vídeo según otra realización de la descripción. El codificador (703) de vídeo está configurado para recibir un bloque de procesamiento (p. ej., un bloque de predicción) de valores de muestra dentro de una imagen de vídeo actual en una secuencia de imágenes de vídeo, y codificar el bloque de procesamiento en una imagen codificada que es parte de una secuencia de vídeo codificada. En un ejemplo, el codificador (703) de vídeo se utiliza en el lugar del codificador (403) de vídeo en el ejemplo de la figura 4.
En un ejemplo de HEVC, el codificador (703) de vídeo recibe una matriz de valores de muestra para un bloque de procesamiento, tal como un bloque de predicción de 8x8 muestras, y similares. El codificador (703) de vídeo determina si el bloque de procesamiento se codifica mejor utilizando intramodo, intermodo, o modo de bipredicción utilizando, por ejemplo, la optimización de velocidad-distorsión. Cuando el bloque de procesamiento debe codificarse en intramodo, el codificador (703) de vídeo puede utilizar una técnica de intrapredicción para codificar el bloque de procesamiento en la imagen codificada; y cuando el bloque de procesamiento deba codificarse en intermodo o modo de bipredicción, el codificador (703) de vídeo puede utilizar una técnica de interpredicción o bipredicción, respectivamente, para codificar el bloque de procesamiento en la imagen codificada. En ciertas tecnologías de codificación de vídeo, el modo de fusión puede ser un submodo de predicción entre imágenes donde el vector de movimiento se deriva de uno o más predictores del vector de movimiento sin el beneficio de un componente de vector de movimiento codificado fuera de los predictores. En ciertas otras tecnologías de codificación de vídeo, puede estar presente un componente de vector de movimiento aplicable al bloque de objeto. En un ejemplo, el codificador (703) de vídeo incluye otros componentes, tales como un módulo de decisión de modo (no mostrado) para determinar el modo de los bloques de procesamiento.
En el ejemplo de la figura 7, el codificador (703) de vídeo incluye el intercodificador (730), un intracodificador (722), un calculador (723) de residuos, un conmutador (726), un codificador (724) de residuos, un controlador general (721), y un codificador (725) por entropía acoplados juntos como se muestra en la figura 7.
El intercodificador (730) está configurado para recibir las muestras del bloque actual (p. ej., un bloque de procesamiento), comparar el bloque con uno o más bloques de referencia en imágenes de referencia (p. ej., bloques en imágenes anteriores e imágenes posteriores), generar información de interpredicción (p. ej., descripción de información redundante según la técnica de intercodificación, vectores de movimiento, información de modo de fusión), y calcular resultados de interpredicción (p. ej., bloque predicho) basándose en la información de interpredicción utilizando cualquier técnica adecuada. En algunos ejemplos, las imágenes de referencia son imágenes de referencia decodificadas que se descodifican basándose en la información de vídeo codificada.
El intracodificador (722) está configurado para recibir las muestras del bloque actual (p. ej., un bloque de procesamiento), en algunos casos comparar el bloque con bloques ya codificados en la misma imagen, generar coeficientes cuantificados después de la transformada, y en algunos casos también información de intrapredicción (p. ej., una información de dirección de intrapredicción según una o más técnicas de intracodificación). En un ejemplo, el intracodificador (722) también calcula resultados de intrapredicción (p. ej., bloque predicho) basándose en la información de intrapredicción y bloques de referencia en la misma imagen.
El controlador general (721) está configurado para determinar datos de control generales y controlar otros componentes del codificador (703) de vídeo en base a los datos de control generales. En un ejemplo, el controlador general (721) determina el modo del bloque, y proporciona una señal de control al conmutador (726) basándose en el modo. Por ejemplo, cuando el modo es el intramodo, el controlador general (721) controla el conmutador (726) para seleccionar el resultado de intramodo para ser utilizado por el calculador (723) de residuos, y controla el codificador (725) por entropía para seleccionar la información de intrapredicción e incluir la información de intrapredicción en el flujo de bits; y cuando el modo es el intermodo, el controlador general (721) controla el conmutador (726) para seleccionar el resultado de interpredicción para ser utilizado por el calculador (723) de residuos, y controla el codificador (725) por entropía para seleccionar la información de interpredicción e incluir la información de interpredicción en el flujo de bits.
El calculador (723) de residuos está configurado para calcular una diferencia (datos de residuos) entre el bloque recibido y los resultados de predicción seleccionados del intracodificador (722) o del intercodificador (730). El codificador (724) de residuos está configurado para funcionar basándose en los datos de residuos para codificar los datos de residuos para generar los coeficientes de transformada. En un ejemplo, el codificador (724) de residuos está configurado para convertir los datos de residuos desde un dominio espacial a un dominio de frecuencia, y generar los coeficientes de transformada. Los coeficientes de transformada se someten entonces a un procesamiento de cuantificación para obtener coeficientes de transformada cuantificados. En diversas realizaciones, el codificador (703) de vídeo también incluye un decodificador (728) de residuos. El decodificador (728) de residuos está configurado para realizar la transformada inversa, y generar los datos de residuos decodificados. Los datos de residuos decodificados pueden utilizarse adecuadamente por el intracodificador (722) y el intercodificador (730). Por ejemplo, el intercodificador (730) puede generar bloques decodificados basándose en los datos de residuos decodificados e información de interpredicción, y el intracodificador (722) puede generar bloques decodificados basándose en los datos de residuos decodificados y la información de intrapredicción. Los bloques decodificados se procesan adecuadamente para generar imágenes decodificadas y las imágenes decodificadas pueden almacenarse temporalmente en un circuito de memoria (no mostrado) y utilizarse como imágenes de referencia en algunos ejemplos.
El codificador (725) por entropía está configurado para formatear el flujo de bits para incluir el bloque codificado. El codificador (725) por entropía está configurado para incluir diversa información según un estándar adecuado, tal como el estándar HEVC. En un ejemplo, el codificador (725) por entropía está configurado para incluir los datos de control generales, la información de predicción seleccionada (p. ej., información de intrapredicción o información de interpredicción), la información de residuos, y otra información adecuada en el flujo de bits. Obsérvese que, según el objeto descrito, cuando se codifica un bloque en el submodo de fusión de intermodo o modo de bipredicción, no hay información de residuos.
La figura 8 muestra un diagrama de un decodificador (810) de vídeo según otra realización de la descripción. El decodificador (810) de vídeo está configurado para recibir imágenes codificadas que forman parte de una secuencia de vídeo codificada, y decodificar las imágenes codificadas para generar imágenes reconstruidas. En un ejemplo, el decodificador (810) de vídeo se utiliza en el lugar del decodificador (410) de vídeo en el ejemplo de la figura 4.
En el ejemplo de la figura 8, el decodificador (810) de vídeo incluye un decodificador (871) por entropía, un interdecodificador (880), un decodificador (873) de residuos, un módulo (874) de reconstrucción, y un intradecodificador (872) acoplados juntos como se muestra en la figura 8.
El decodificador (871) por entropía puede configurarse para reconstruir, a partir de la imagen codificada, ciertos símbolos que representan los elementos de sintaxis de los cuales la imagen codificada está formada. Tales símbolos pueden incluir, por ejemplo, el modo en que se codifica un bloque (tal como, por ejemplo, intramodo, intermodo, modo bipredicho, estos dos últimos en el submodo de fusión u otro submodo), información de predicción (tal como, por ejemplo, información de intrapredicción o información de interpredicción) que puede identificar ciertas muestras o metadatos que son utilizados para la predicción por el intradecodificador (872) o el interdecodificador (880), respectivamente, información residual en forma de, por ejemplo, coeficientes de transformada cuantificados, y similares. En un ejemplo, cuando el modo de predicción es modo inter- o bipredicho, la información de interpredicción se proporciona al interdecodificador (880); y cuando el tipo de predicción es el tipo de intrapredicción, la información de intrapredicción se proporciona al intradecodificador (872). La información residual puede someterse a cuantificación inversa y se proporciona al decodificador (873) de residuos.
El interdecodificador (880) está configurado para recibir la información de interpredicción, y generar resultados de interpredicción basándose en la información de interpredicción.
El intradecodificador (872) está configurado para recibir la información de intrapredicción, y generar resultados de predicción basándose en la información de intrapredicción.
El decodificador (873) de residuos está configurado para realizar una cuantificación inversa para extraer coeficientes de transformada descuantificados, y procesar los coeficientes de transformada descuantificados para convertir el residuo del dominio de frecuencia al dominio espacial. El decodificador (873) de residuos también puede requerir cierta información de control (para incluir el parámetro de cuantificación [QP, por sus siglas en inglés]), y esa información puede ser proporcionada por el decodificador (871) por entropía (la trayectoria de datos no representada ya que esta puede ser solo información de control de volumen bajo).
El módulo (874) de reconstrucción está configurado para combinar, en el dominio espacial, el residuo como salida por el decodificador (873) de residuos y los resultados de predicción (como salida por los módulos de interpredicción o intrapredicción según sea el caso) para formar un bloque reconstruido, que puede ser parte de la imagen reconstruida, que a su vez puede ser parte del vídeo reconstruido. Se observa que otras operaciones adecuadas, tales como una operación de desbloqueo y similares, pueden realizarse para mejorar la calidad visual.
Se observa que los codificadores (403), (603) y (703) de vídeo, y los decodificadores (410), (510) y (810) de vídeo pueden implementarse utilizando cualquier técnica adecuada. En una realización, los codificadores (403), (603) y (703) de vídeo, y los decodificadores (410), (510) y (810) de vídeo pueden implementarse utilizando uno o más circuitos integrados. En otra realización, los codificadores (403), (603) y (603) de vídeo, y los decodificadores (410), (510) y (810) de vídeo pueden implementarse utilizando uno o más procesadores que ejecutan instrucciones de software.
La presente descripción se dirige a un conjunto de tecnologías avanzadas de codificación de vídeo, que incluyen un esquema de codificación intramodo mejorado.
En la figura 9 se ilustrauntotal de 35 modos de intrapredicción, por ejemplo como se utilizan en HEVC. Entre los 35 modos de intrapredicción, el modo 10 es un modo horizontal y el modo 26 es un modo vertical. Los modos 2, 18 y 34 son modos diagonales. Los 35 modos de intrapredicción pueden señalizarse mediante tres modos más probables (MPM, por sus siglas en inglés) y 32 modos restantes.
En la figura 10 se ilustrauntotal de 95 modos de intrapredicción, por ejemplo como se utilizan en VVC. El modo 18 es un modo horizontal y el modo 50 es un modo vertical. Los modos 2, 34 y 66 son modos diagonales. Los modos -1 a -14 y los modos 67 a 80 se denominan modos de intrapredicción de gran ángulo (WAIP, por sus siglas en inglés).
Puede generarse una lista de MPM de tamaño 3 basándose en los modos de intrapredicción de los bloques vecinos del bloque actual, por ejemplo en HEVC. La lista de MPM también se puede denominar lista de MPM principal. Si un modo de intrapredicción del bloque actual no es de la lista de MPM, puede señalizarse un indicador, por ejemplo un indicador de MPM, para indicar si el modo de intrapredicción del bloque actual pertenece a los modos seleccionados, por ejemplo otros modos de intrapredicción candidatos diferentes de los modos de intrapredicción de la lista de MPM.
En los siguientes elementos sintácticos se muestra un ejemplo del proceso de generación de listas de MPM: Si (leftIntraDir == aboveIntraDir && leftIntraDir > DC_IDX)
MPM [0] = leftIntraDir;
MPM [1] = ((leftIntraDir offset) % mod) 2;
MPM [2] = ((leftIntraDir -1 ) % mod) 2;
De lo contrario si (leftIntraDir == aboveIntraDir)
MPM [0] = PLANAR_IDX;
MPM [1] = DC_IDX;
MPM [2] = VER_IDX;
De lo contrario si (leftIntraDir!= aboveIntraDir)
MPM [0] = leftIntraDir;
MPM [1] = aboveIntraDir;
Si (leftIntraDir > 0 && aboveIntraDir > 0)
MPM [2] = PLANAR_IDX;
De lo contrario
MPM [2] = (leftIntraDir aboveIntraDir) < 2? VER_IDX: DC_IDX;
En los elementos de sintaxis ilustrativos, leftIntraDir se utiliza para indicar el modo en un bloque adyacente a la izquierda del bloque actual (“ bloque izquierdo” ); y aboveIntraDir se utiliza para indicar el modo en un bloque adyacente por encima del bloque actual (“ por encima del bloque” ). Si el bloque izquierdo o el bloque anterior no están disponibles actualmente, leftIntraDir o aboveIntraDir pueden establecerse en un índice para el modo intra DC (p. ej., DC_IDX). Además, las variables “ offset” y “ mod” son valores constantes, que pueden establecerse en 29 y 32, respectivamente, en un ejemplo. El tamaño de una lista de MPM puede establecerse para que sea igual a 6 para una línea de referencia adyacente (también denominada línea de referencia cero) y para las líneas de referencia no adyacentes (también denominadas líneas de referencia distintas a cero), por ejemplo, en el modelo 3 de prueba VVC (VTM3). Las posiciones de los modos vecinos utilizados para derivar los 6 candidatos de MPM también pueden ser las mismas para las líneas de referencia adyacentes y no adyacentes, como se ilustra en la figura 11 por ejemplo. Como se muestra en la figura 11, el bloque A y el bloque B indican unidades de codificación vecinas superiores e izquierdas ilustrativas de una unidad 1100 de codificación actual. Las variables candIntraPredModeA y candIntraPredModeB indican los modos de intrapredicción asociados de los bloques A y B, respectivamente. Además, candIntraPredModeA y candIntraPredModeB pueden establecerse inicialmente para que sean iguales a INTRA_PLANAR. Si el bloque A (o B) está marcado como disponible, candIntraPredModeA (o candIntraPredModeB) se establece para que sea igual al modo de intrapredicción real del bloque A (o B).
Un proceso de derivación de candidatos de MPM (o proceso de derivación de listas de MPM) de la unidad 1100 de codificación actual puede ser diferente entre una línea de referencia adyacente (o línea de referencia cero) y líneas de referencia no adyacentes (o líneas de referencia distintas de cero) de la unidad 1100 de codificación actual. Para la línea de referencia cero, cuando los dos modos vecinos son el modo planar o DC, los modos predeterminados pueden utilizarse para crear la lista de MPM. Dos de los modos predeterminados pueden ser modos planar y DC, y los 4 modos restantes pueden ser modos angulares (también denominados modos angulares predeterminados). Para las líneas de referencia distintas de cero, cuando los dos modos vecinos son el modo planar o DC, pueden utilizarse 6 modos angulares predeterminados para crear la lista de MPM. Un proceso de derivación de listas de MPM ilustrativo se muestra en los elementos de sintaxis a continuación. En los elementos de sintaxis a continuación, candModeList[x] con x = 0..5 indica los 6 candidatos de MPM, IntraLumaRefLineIdx[xCb][yCb] indica el índice de línea de referencia del bloque (o unidad de codificación actual) que se predecirá, e IntraLumaRefLineIdx[xCb][yCb] puede ser 0, 1, o 3. - Si candIntraPredModeB es igual a candIntraPredModeA y candIntraPredModeA es mayor que INTRA_DC, candModeList[x] con x = 0..5 se obtiene de la siguiente forma:
- Si IntraLumaRefLineIdx[xCb][yCb] es igual a 0, se aplica lo siguiente:
candModeList[0] = candIntraPredModeA
candModeList[1] = INTRA_PLANAR
candModeList[2] = INTRA_DC
candModeList[3] = 2 ((candIntraPredModeA 61) %64)
candModeList[4] = 2 ((candIntraPredModeA - 1) % 64)
candModeList[5] = 2 ((candIntraPredModeA 60) % 64)
- De lo contrario (IntraLumaRefLineIdx[xCb][yCb] no es igual a 0), se aplica lo siguiente:
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 ((candIntraPredModeA 61) % 64)
candModeList[2] = 2 ((candIntraPredModeA - 1) % 64)
candModeList[3] = 2 ((candIntraPredModeA 60) % 64)
candModeList[4] = 2 (candIntraPredModeA % 64)
candModeList[5] = 2 ((candIntraPredModeA 59) % 64)
- De lo contrario, si candIntraPredModeB no es igual a candIntraPredModeA y candIntraPredModeA o candIntraPredModeB es mayor que INTRA_DC, se aplica lo siguiente:
- Las variables minAB y maxAB se derivan de la siguiente forma:
minAB =candModeList[(candModeList[0] > candModeList[1])? 1 : 0]
maxAB=candModeList[(candModeList[0] > candModeList[1])? 0 : 1]
- Si candIntraPredModeA y candIntraPredModeB son mayores que INTRA_DC, candModeList[x] con x = 0..5 se deriva de la siguiente forma:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
- Si IntraLumaRefLineIdx[xCb][yCb] es igual a 0, se aplica lo siguiente:
candModeList[2] = INTRA_PLANAR
candModeList[3] = INTRA_DC
- Si maxAB - minAB está en el intervalo de 2 a 62, inclusive, se aplica lo siguiente:
candModeList[4] = 2 ((maxAB 61) % 64)
candModeList[5] = 2 ((maxAB - 1) % 64)
- De lo contrario, se aplica lo siguiente:
candModeList[4] = 2 ((maxAB 60) % 64)
candModeList[5] = 2 ((maxAB) % 64)
- De lo contrario (IntraLumaRefLineIdx[xCb][yCb] no es igual a 0), se aplica lo siguiente:
- Si maxAB - minAB es igual a 1, se aplica lo siguiente:
candModeList[2] = 2 ((minAB 61) % 64)
candModeList[3] = 2 ((maxAB - 1) % 64)
candModeList[4] = 2 ((minAB 60) % 64)
candModeList[5] = 2 (maxAB % 64)
- De lo contrario, si maxAB - minAB es igual a 2, se aplica lo siguiente:
candModeList[2] = 2 ((minAB - 1) % 64)
candModeList[3] = 2 ((minAB 61) % 64)
candModeList[4] = 2 ((maxAB - 1) % 64)
candModeList[5] = 2 ((minAB 60) % 64)
- De lo contrario, si maxAB - minAB es mayor que 61, se aplica lo siguiente:
candModeList[2] = 2 ((minAB - 1) % 64)
candModeList[3] = 2 ((maxAB 61) % 64)
candModeList[4] = 2 (minAB % 64)
candModeList[5] = 2 ((maxAB 60) % 64)
- De lo contrario, se aplica lo siguiente:
candModeList[2] = 2 ((minAB 61) % 64)
candModeList[3] = 2 ((minAB - 1) % 64)
candModeList[4] = 2 ((maxAB 61) % 64)
candModeList[5] = 2 ((maxAB - 1) % 64)
- De lo contrario (candIntraPredModeA o candIntraPredModeB es mayor que INTRA_DC), candModeList[x] con x = 0..5 se deriva de la siguiente forma:
- Si IntraLumaRefLineIdx[xCb][yCb] es igual a 0, se aplica lo siguiente:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
candModeList[2] = 1 - minAB
candModeList[3] = 2 ((maxAB 61) % 64)
candModeList[4] = 2 ((maxAB - 1) % 64)
candModeList[5] = 2 ((maxAB 60) % 64)
- De lo contrario (IntraLumaRefLineIdx[xCb][yCb] no es igual a 0), se aplica lo siguiente:
candModeList[0] = maxAB
candModeList[1] = 2 ((maxAB 61) % 64)
candModeList[2] = 2 ((maxAB - 1) % 64)
candModeList[3] = 2 ((maxAB 60) % 64)
candModeList[4] = 2 (maxAB % 64)
candModeList[5] = 2 ((maxAB 59) % 64)
- De lo contrario, se aplica lo siguiente:
- Si IntraLumaRefLineIdx[xCb][yCb] es igual a 0, se aplica lo siguiente:
candModeList[0] = candIntraPredModeA
candModeList[1] = candModeList[0] = = INTRA_PLANAR)? INTRA_DC: INTRA_PLANAR
candModeList[2] = INTRA_ANGULAR50
candModeList[3] = INTRA_ANGULAR18
candModeList[4] = INTRA_ANGULAR46
candModeList[5] = INTRA_ANGULAR54
- De lo contrario (IntraLumaRefLineIdx[xCb][yCb] no es igual a 0), se aplica lo siguiente:
candModeList[0] = INTRA_ANGULAR50
candModeList[1] = INTRA_ANGULAR18
candModeList[2] = INTRA_ANGULAR2
candModeList[3] = INTRA_ANGULAR34
candModeList[4] = INTRA_ANGULAR66
candModeList[5] = INTRA_ANGULAR26
En la intrapredicción multilínea, pueden utilizarse líneas de referencia adicionales para la intrapredicción. Un codificador puede determinar y señalizar qué línea de referencia se utiliza para generar el intrapredictor. El índice de línea de referencia puede señalizarse antes de los modos de intrapredicción, y solo pueden permitirse los modos más probables en caso de que se señalice un índice de línea de referencia distinto de cero. En la figura 12, se representa un ejemplo de 4 líneas de referencia (p. ej., las líneas de referencia 0-3), donde cada una de las cuatro líneas de referencia comprende seis segmentos, es decir, segmentos A a F, junto con la muestra de referencia superior izquierda. Además, los segmentos A y F se pueden rellenar con las muestras más cercanas de los segmentos B y E, respectivamente.
En un modo de codificación de intrasubparticiones (ISP, por sus siglas en inglés), los bloques de luma intrapredichos pueden dividirse vertical u horizontalmente en subparticiones (p. ej., 2 o 4) según las dimensiones del tamaño del bloque, como se muestra en la tabla 1, por ejemplo. Las figuras 13 y 14 muestran ejemplos de dos posibilidades de división de un bloque de luma intrapredicho basándose en el modo de codificación de ISP. La figura 13 ilustra una división ilustrativa de un bloque de 4x8 o un bloque de 8x4. La figura 14 ilustra una división ilustrativa de un bloque que no es uno de un bloque de 4x8, un bloque de 8x4, o un bloque de 4x4. Todas las subparticiones cumplen la condición de tener al menos 16 muestras en un ejemplo.
Tabla 1: Número de subparticiones dependiendo del tamaño del bloque
Para cada una de las subparticiones, puede generarse una señal residual mediante la decodificación por entropía de los coeficientes enviados por un codificador y después la cuantificación inversa y la transformación inversa de los coeficientes. Además, la subpartición se intrapredice y las muestras reconstruidas correspondientes pueden obtenerse añadiendo la señal residual a una señal de predicción. Por lo tanto, los valores reconstruidos de cada subpartición pueden estar disponibles para generar la predicción de la siguiente, que puede repetir el proceso y así sucesivamente. Todas las subparticiones pueden compartir el mismo modo de intrapredicción.
Basándose en el modo de intrapredicción y la división que se utiliza, pueden utilizarse dos clases diferentes de órdenes de procesamiento, que pueden denominarse orden normal y orden invertido. En el orden normal, la primera subpartición a procesar contiene la muestra superior izquierda de la CU. El procesamiento continúa después hacia abajo (p. ej., para una división horizontal) o hacia la derecha (p. ej., para una división vertical). Como resultado, las muestras de referencia utilizadas para generar las señales de predicción de las subparticiones solo se ubican en los lados izquierdo y superior de las líneas. Por otro lado, el orden de procesamiento inverso (u orden inverso) bien (i) comienza con una subpartición que contiene la muestra inferior izquierda de la CU y continúa hacia arriba o (ii) comienza con una subpartición que contiene la muestra superior derecha de la CU y continúa hacia la izquierda.
En algunas realizaciones, el algoritmo ISP solo se prueba con modos de intrapredicción que forman parte de la lista de MPM. Por esta razón, si un bloque utiliza el modo de ISP, entonces puede deducirse que el indicador de MPM es uno. Si el modo de ISP se utiliza para un bloque determinado, entonces la lista de MPM puede modificarse para excluir el modo de DC y priorizar los modos de intrapredicción horizontal para la división horizontal de ISP y los modos de intrapredicción vertical de ISP.
Cuando los modos planar y DC siempre se incluyen en la lista de MPM, por ejemplo en el VTM4, y ambos modos vecinos son modos planar/DC, un modo actual puede tener una alta probabilidad de ser un modo planar o DC. Las realizaciones de la presente descripción incluyen utilizar esta correlación en el diseño de la codificación actual en modo de intrapredicción. Como se describe más adelante, en algunas realizaciones, un contexto utilizado para codificar por entropía la información de intrapredicción de un bloque actual depende de la información codificada de los bloques vecinos. Además, en algunas realizaciones, se proporcionan elementos de sintaxis para señalizar si un MPM seleccionado es un modo angular y/o si se selecciona el modo planar o DC.
Como se describió anteriormente, el índice de línea de una línea de referencia adyacente o más cercana es 0 (línea de referencia cero), y otras líneas se denominan líneas de referencia distintas de cero. Además, candModeList indica la lista de MPM, RefLineIdx indica el índice de línea de referencia de un bloque actual, y candIntraPredModeA y candIntraPredModeB indican los modos de intrapredicción vecinos a la izquierda y por encima. Cada modo de intrapredicción está asociado con un número de modo (también denominado índice de modo de intrapredicción). Por ejemplo, en VVC, los modos planar, DC, y de intrapredicción horizontal y vertical pueden asociarse con los números de modo 0, 1, 18 y 50, respectivamente. El índice de MPM del primer candidato de la lista de MPM puede indicarse como 0, y el índice de MPM del segundo candidato puede indicarse como 1, y así sucesivamente.
Si un modo de intrapredicción vecino no es el modo planar o DC, o si el modo de intrapredicción vecino genera muestras de predicción según una dirección de predicción dada, tal como un modo de intrapredicción del modo 2 al modo 66, por ejemplo tal como se define en el borrador 2 de VVC, el modo de intrapredicción vecino es un modo angular. Si el modo de intrapredicción vecino no indica una intrapredicción direccional, tal como el modo planar o DC, el modo de intrapredicción vecino es un modo no angular.
En algunas realizaciones, un contexto (o modelo de contexto) utilizado para la codificación por entropía de un indicador de MPM de un bloque actual puede depender de la información codificada del bloque actual y/o de los bloques vecinos del bloque actual. La información codificada puede incluir, aunque no de forma limitativa, un indicador de MPM, un índice de línea de referencia, un tipo de ISP (p. ej., subpartición vertical, subpartición horizontal, o sin subpartición), un modo de intrapredicción, un índice de MPM, etc.
En una realización, la información de codificación del bloque actual (p. ej., el índice de línea de referencia y/o el tipo de ISP), que puede decodificarse antes que otra información de codificación tal como un indicador de MPM y/o un modo de intrapredicción del bloque actual, puede utilizarse para la codificación por entropía del indicador de MPM y el modo de intrapredicción del bloque actual.
En una realización, el contexto utilizado para la codificación por entropía del indicador de MPM del bloque actual puede depender de un número de modos no angulares (o angulares) de los bloques vecinos. En un primer ejemplo, si ambos modos de intrapredicción de los bloques vecinos son modos no angulares, se utiliza un primer contexto. Si solo uno de los modos de intrapredicción de los bloques vecinos es un modo no angular, se utiliza un segundo contexto. Si ambos modos de intrapredicción de los bloques vecinos son modos angulares, se utiliza un tercer contexto. En un segundo ejemplo, si al menos uno de los modos de intrapredicción de los bloques vecinos es un modo no angular, se utiliza un primer contexto. Si ambos modos de intrapredicción de los bloques vecinos son modos angulares, se utiliza un segundo contexto. En un tercer ejemplo, el contexto utilizado para la codificación por entropía del indicador de MPM depende de cuántos modos de bloques vecinos sean modos planares. En un cuarto ejemplo, el contexto utilizado para la codificación por entropía del indicador de MPM depende de cuántos modos de bloques vecinos sean modos planar o DC.
El número de contextos para la codificación por entropía del indicador de MPM puede depender de cuántos modos vecinos se utilicen. Por ejemplo, si el número de bloques vecinos utilizados es N, el número del contexto utilizado para la codificación por entropía del indicador de<m>P<m>puede ser igual a K*(N+1), donde K puede ser cualquier número entero positivo tal como 1 o 2.
En una realización, el contexto utilizado para la codificación por entropía del indicador de MPM del bloque actual puede depender de los indicadores de MPM de los bloques vecinos. En un primer ejemplo, si ambos indicadores de MPM de los bloques vecinos son verdaderos, se utiliza un primer contexto. Si solo uno de los indicadores de MPM de los bloques vecinos es verdadero, se utiliza un segundo contexto. Si ninguno de los indicadores de MPM de los bloques vecinos es verdadero, se utiliza un tercer contexto. En un segundo ejemplo, si al menos uno de los indicadores de MPM de los bloques vecinos es verdadero, se utiliza el primer contexto. I Si ninguno de los indicadores de MPM de los bloques vecinos es verdadero, se utiliza el segundo contexto. En un tercer ejemplo, el número de contextos para la codificación por entropía del indicador de MPM puede depender de cuántos indicadores de MPM de los modos (o bloques) vecinos son verdaderos. Por ejemplo, si el número de bloques vecinos utilizados es N, el número del contexto utilizado para la codificación por entropía del indicador de MPM puede ser igual a K*(N+1), donde K puede ser cualquier número entero positivo tal como 1 o 2.
En una realización, el contexto utilizado para la codificación por entropía del indicador de MPM del bloque actual depende de los indicadores de MPM del modo vecino y/o del número de MPM no angulares (o angulares) de los bloques vecinos. Por ejemplo, si ambos modos vecinos son MPM no angulares, se usa un primer contexto. Si ambos modos vecinos son MPM que pueden incluir MPM angulares y MPM no angulares, se usa un segundo contexto. Si solo uno de los modos vecinos es MPM, se usa un tercer contexto. De lo contrario, ninguno de los modos vecinos es un MPM, se utiliza un cuarto contexto.
En una realización, el contexto utilizado para la codificación por entropía del indicador de MPM depende de los indicadores de MPM y/o los índices de m Pm de los bloques vecinos. En una realización, el contexto utilizado para la codificación por entropía del indicador de MPM depende de los indicadores de MPM y/o los indicadores de ISP de los bloques vecinos. Además, en ejemplos adicionales, el contexto utilizado para la codificación por entropía del indicador de MPM puede depender de otra información codificada o combinaciones de información codificada.
En algunas realizaciones, el tamaño de una lista de MPM del bloque actual puede depender de la información codificada de un bloque actual, por ejemplo tal como se describe anteriormente, y/o de los bloques vecinos del bloque actual. La información codificada puede incluir, aunque no de forma limitativa, modos de intrapredicción, un indicador de MPM, un indicador de ISP, un índice de MPM, un índice de línea de referencia, etc. En una realización, el tamaño de la lista de MPM depende del número de modos no angulares (o angulares) de los bloques vecinos. En un primer ejemplo, cuando ambos modos vecinos son modos no angulares, el tamaño de la lista de MPM es igual a K1. Cuando uno de los modos vecinos es un modo angular, el tamaño de la lista de MPM es igual a K2. K1 y K2 son números enteros positivos y K1 es menor que K2. Por ejemplo, K1 puede establecerse igual a 2. En un segundo ejemplo, cuando ambos modos vecinos son modos no angulares, el tamaño de la lista de MPM puede ser igual a K1. Cuando solo uno de los modos vecinos es un modo no angular, el tamaño de la lista de MPM puede ser igual a K2. Cuando ninguno de los modos vecinos es un modo no angular, el tamaño de la lista de MPM es igual a K3. K1, K2 y K3 son números enteros positivos. Además, K1 puede ser menor que K2 y K2 puede ser menor que K3. Por ejemplo, K1 puede establecerse igual a 2, y K2 puede establecerse igual a 5.
En algunas realizaciones, en lugar de señalizar un índice de MPM cuando un indicador de MPM del bloque actual es verdadero, un nuevo elemento de sintaxis, por ejemplo, intra_luma_ang_mpm_flag, puede señalizarse para indicar si un MPM seleccionado es un modo angular o no. Si intra_luma_ang_mpm_flag es verdadero, puede señalizarse otro indicador intra_luma_planar_flag para indicar si se ha seleccionado el modo planar o DC. En la tabla 2 se muestran cambios de sintaxis y semántica ilustrativos.
Tabla 2: Cambios de sintaxis y semántica del nuevo elemento de sintaxis intra_luma_ang_mpm_flag
Como se muestra en la tabla 2, cuando el elemento de sintaxis intra_luma_ref_idx [x0][y0] = = 0 (p. ej., la línea de referencia para el bloque actual es la línea de referencia 0) y el elemento de sintaxis intra_subpartitions_mode_flag[x0][y0] = = 0 (p. ej., no se aplica el modo de ISP), intra_luma_mpm_flag[x0][y0] se señaliza. El intra_luma_mpm_flag[x0][y0] indica si el modo de intrapredicción para las muestras de luma del bloque actual pertenece a modos de intrapredicción seleccionados (p. ej., otros modos de intrapredicción candidatos que son diferentes de los modos de intrapredicción de la lista de<m>P<m>). Cuando el intra_luma_mpm_flag [x0] [y0] es verdadero (p. ej., el modo de intrapredicción para las muestras de luma del bloque actual pertenece a los modos de intrapredicción seleccionados), se señaliza el intra_luma_ang_mpm_flag[x0][y0]. El intra_luma_ang_mpm_flag[x0][y0] especifica si el modo de intrapredicción para las muestras de luma del bloque actual es un modo angular o un modo no angular, donde el modo angular es un modo de intrapredicción que no es modo planar o DC. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra de luma superior izquierda del bloque de codificación considerado (o bloque actual) con respecto a la muestra de luma superior izquierda de la imagen. Cuando el intra_luma_ang_mpm_flag[x0][y0] es verdadero (p. ej., el modo de intrapredicción para las muestras de luma del bloque actual es un modo angular),el intra_luma_mpm_idx[x0][y0] se señaliza. El intra_luma_mpm_idx[x0][y0] indica un índice de MPM para las muestras de luma del bloque actual.
Cuando el intra_luma_ang_mpm_flag[x0][y0] no es verdadero (p. ej., el modo de intrapredicción para las muestras de luma del bloque actual es un modo no angular), se señaliza el intra_luma_planar_flag[x0][y0]. El intra_luma_ang_mpm_flag[x0][y0] especifica si el modo de intrapredicción para las muestras de luma del bloque actual es planar o DC. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra de luma superior izquierda del bloque de codificación considerado (o bloque actual) con respecto a la muestra de luma superior izquierda de la imagen.
Cuando el intra_luma_mpm_flag[x0][y0] no es verdadero (p. ej., el modo de intrapredicción para las muestras de luma del bloque actual no pertenece a los modos de intrapredicción seleccionados), se señaliza el intra_luma_mpm_remainder[x0][y0]. El intra_luma_mpm_remainder[x0][y0] indica que el modo de intrapredicción para las muestras de luma del bloque actual pertenece a los candidatos restantes distintos de los modos de intrapredicción seleccionados.
En una realización, el intra_luma_mpm_idx[x0][y0] puede codificarse utilizando una codificación de longitud fijada (p. ej., codificarse utilizando 2 bits). En una realización, el intra_luma_ang_mpm_flag[x0][y0] puede codificarse por entropía, y el contexto utilizado para la codificación por entropía del intra_luma_ang_mpm_flag[x0][y0] puede derivarse de los valores del intra_luma_mpm_flag de bloques vecinos. En una realización, el intra_luma_ang_mpm_flag[x0][y0] está codificado por entropía, y el contexto utilizado para la codificación por entropía del intra_luma_ang_mpm_flag[x0][y0] se deriva de los valores del intra_luma_ang_mpm_flag de los bloques vecinos.
En algunas realizaciones, el contexto de la codificación por entropía de un índice de MPM del bloque actual puede depender de la información codificada de los bloques vecinos del bloque actual, donde la información codificada puede incluir, aunque no de forma limitativa, los modos de intrapredicción, un indicador de MPM, un índice de línea de referencia, un indicador de ISP de bloques vecinos, etc. En una realización, el contexto de la codificación por entropía del índice de MPM puede depender del número de modos angulares de los bloques vecinos. Por ejemplo, el contexto de la codificación por entropía de un primer binario del índice de MPM depende del número de modos angulares de los bloques vecinos. En una realización, el contexto de la codificación por entropía del índice de MPM puede depender del número de modos vecinos que son modos de intrapredicción mayores que un modo planar. Por ejemplo, el contexto de la codificación por entropía del primer intervalo del índice de MPM depende del número de modos vecinos cuyo número de modos de intrapredicción es mayor que el del modo planar.
La Figura 15 muestra un diagrama de flujo que describe un proceso (1500) según una realización de la descripción. El proceso (1500) puede utilizarse en la reconstrucción de un bloque codificado en intramodo, para generar un bloque de predicción para el bloque bajo reconstrucción. En diversas realizaciones, el proceso (1500) se ejecuta mediante un sistema de circuitos de procesamiento, tales como los sistema de circuitos de procesamiento en los dispositivos terminales (310), (320), (330) y (340), el sistema de circuitos de procesamiento que realiza las funciones del codificador (403) de vídeo, el sistema de circuitos de procesamiento que realiza las funciones del decodificador (410) de vídeo, el sistema de circuitos de procesamiento que realiza las funciones del decodificador (510) de vídeo, el sistemas de circuitos de procesamiento que realiza las funciones del codificador (603) de vídeo, y similares. En algunas realizaciones, el proceso (1500) se implementa en instrucciones de software, por lo tanto, cuando el sistema de circuitos de procesamiento ejecuta las instrucciones de software, el sistema de circuitos de procesamiento realiza el proceso (1500). El proceso comienza en (S1501) y procede hasta (S1510).
En (1510), la información codificada de los bloques vecinos de un bloque actual puede recibirse desde un flujo de bits de vídeo codificado. La información codificada puede incluir información de intrapredicción de los bloques vecinos. En algunas realizaciones, la información codificada puede incluir un indicador de MPM, un índice de línea de referencia, un indicador de intra subpartición (IPS, por sus siglas en inglés), un modo de intrapredicción, o un índice de MPM.
En (1520), la información de intrapredicción del bloque actual puede determinarse basándose en la información codificada de los bloques vecinos. En algunas realizaciones, la información de intrapredicción del bloque actual puede incluir un indicador de modo más probable (MPM, por sus siglas en inglés), el tamaño de una lista de MPM o un índice de MPM. En algunas realizaciones, para determinar la información de intrapredicción del bloque actual, puede determinarse un modelo de contexto a partir de un conjunto de modelos de contexto basándose en la información codificada, y la información de intrapredicción del bloque actual puede determinarse basándose en la información codificada de los bloques vecinos del bloque actual según el modelo de contexto determinado.
En algunas realizaciones, el modelo de contexto puede determinarse basándose en al menos uno de un número de modos no angulares de los bloques vecinos, un número de modos angulares de los bloques vecinos, los indicadores de MPM de los bloques vecinos, los índices de MPM de los bloques vecinos, o los indicadores de ISP de los bloques vecinos.
En algunas realizaciones, el tamaño de la lista de MPM del bloque actual puede ser igual a un primer número entero cuando los modos de intrapredicción de los bloques vecinos son modos no angulares, y el tamaño de la lista de MPM del bloque actual puede ser igual a un segundo número entero cuando uno de los modos de intrapredicción de los bloques vecinos es un modo angular, donde el primer número entero es menor que el segundo número entero.
En algunas realizaciones, el tamaño de la lista de MPM del bloque actual puede ser igual a un primer número entero cuando los modos de intrapredicción de los bloques vecinos son modos no angulares, el tamaño de la lista de MPM del bloque actual puede ser igual a un segundo número entero cuando uno de los modos de intrapredicción de los bloques vecinos es un modo no angular, y el tamaño de la lista de MPM del bloque actual puede ser un tercer número entero cuando los modos de intrapredicción. de los bloques vecinos son modos angulares. El primer entero es menor que el segundo entero y el segundo entero es menor que el tercer entero.
En (1530), puede determinarse un modo de dirección de intrapredicción basándose en la información de intrapredicción del bloque actual. En (1540), al menos una muestra del bloque actual puede reconstruirse según el modo de dirección de intrapredicción del bloque actual.
Los métodos divulgados en la presente descripción pueden utilizarse por separado o combinarse en cualquier orden. Además, en cada uno de los métodos (o realizaciones), un codificador, y un decodificador puede implementarse mediante un sistema de circuitos de procesamiento (p. ej., uno o más procesadores o uno o más circuitos integrados). En un ejemplo, el uno o más procesadores ejecutan un programa que se almacena en un medio legible por ordenador no transitorio. Además, el término de un bloque puede interpretarse como un bloque de predicción, un bloque de codificación o una unidad de codificación, es decir, CU.
Las técnicas descritas anteriormente, pueden implementarse como software de ordenador utilizando instrucciones legibles por ordenador y almacenarse físicamente en uno o más medios legibles por ordenador. Por ejemplo, la figura 16 muestra un sistema informático (1600) adecuado para implementar ciertas realizaciones de la materia descrita.
El software informático puede codificarse utilizando cualquier código de máquina o lenguaje informático adecuado, que puede estar sujeto a ensamblaje, compilación, vinculación o mecanismos similares para crear código que comprende instrucciones que pueden ejecutarse directamente, o por interpretación, ejecución de microcódigo y similares, por unidades de procesamiento central (CPU), unidades de procesamiento de gráficos (GPU) y similares.
Las instrucciones pueden ejecutarse en diversos tipos de ordenadores o componentes de los mismos, que incluyen, por ejemplo, ordenadores personales, tabletas, servidores, teléfonos inteligentes, dispositivos de juego, internet de los dispositivos de cosas y similares.
Los componentes mostrados en la figura 16 para el sistema informático (1600) son ilustrativos y no pretenden sugerir ninguna limitación en cuanto a la funcionalidad de las realizaciones de implementación de software informático de la presente descripción. Tampoco debería interpretarse que la configuración de componentes tiene cualquier dependencia o requisito relacionado con uno cualquiera o una combinación de componentes ilustrados en la realización ilustrativa de un sistema informático (1600).
El sistema informático (1600) puede incluir ciertos dispositivos de entrada de interfaz humana. Dicho dispositivo de entrada de la interfaz humana puede ser sensible a la entrada por uno o más usuarios humanos a través de, por ejemplo, entrada táctil (tales como: pulsaciones, deslizamientos, movimientos del guante de datos), entrada de audio (tales como: voz, bloqueo), entrada visual (tales como: gestos), entrada olfativa (no representada). Los dispositivos de interfaz humana también se pueden utilizar para capturar ciertos medios no necesariamente relacionados directamente con la entrada consciente por un ser humano, tal como audio (tales como: voz, música, sonido ambiental), imágenes (tales como: imágenes escaneadas, imágenes fotográficas obtenidas de una cámara de imagen fija), vídeo (tal como vídeo bidimensional, vídeo tridimensional que incluye vídeo estereoscópico).
Los dispositivos de interfaz humana de entrada pueden incluir uno o más de (solo uno de cada uno de los representados): teclado (1601), ratón (1602), panel táctil (1603), pantalla táctil (1610), guante de datos (no mostrado), palanca (1605) de mando, micrófono (1606), escáner (1607), cámara (1608).
El sistema informático (1600) también puede incluir ciertos dispositivos de salida de interfaz humana. Dichos dispositivos de salida de la interfaz humana pueden estimular los sentidos de uno o más usuarios humanos a través de, por ejemplo, salida táctil, sonido, luz y olor/sabor. Tales dispositivos de salida de interfaz humana pueden incluir dispositivos de salida táctiles (por ejemplo, retroalimentación táctil mediante la pantalla táctil (1610), guante de datos [no mostrado], o palanca (1605) de mando, pero también puede haber dispositivos de retroalimentación táctil que no sirven como dispositivos de entrada), dispositivos de salida de audio (tales como: altavoces [1609], auriculares [no representados]), dispositivos de salida visual (tales como pantallas (1610) para incluir pantallas CRT, pantallas LCD, pantallas de plasma, pantallas OLED, cada una con o sin capacidad de entrada de pantalla táctil, cada uno con o sin capacidad de retroalimentación táctil, algunos de los cuales pueden ser capaces de generar una salida visual bidimensional o una salida más de tridimensional a través de medios tales como una salida estereográfica; gafas de realidad virtual (no representadas), pantallas holográficas y tanques de humo (no representados), e impresoras (no representadas).
El sistema informático (1600) también puede incluir dispositivos de almacenamiento accesibles para humanos y sus medios asociados tales como medios ópticos que incluyen CD/DVD ROM/RW (1620) con c D/DVD o medios (1621) similares, memoria USB (1622), disco duro o unidad (1623) de estado sólido extraíble, medios magnéticos heredados tales como cintas y disquetes (no representados), dispositivos especializados basados en ROM/ASIC/PLD tales como dongles de seguridad (no representados), y similares.
Los expertos en la técnica también deben comprender que el término “ medios legibles por ordenador” como se utiliza en relación con la materia descrita actualmente no abarca medios de transmisión, ondas portadoras, u otras señales transitorias.
El sistema informático (1600) también puede incluir una interfaz a una o más redes de comunicación. Las redes pueden ser, por ejemplo, inalámbricas, cableadas, ópticas. Las redes pueden ser, además, locales, de gran área, metropolitana, vehicular e industriales, en tiempo real, tolerante a la demora, etc. Ejemplos de redes incluyen redes de área local como Ethernet, LAN inalámbricas, redes celulares que incluyen GSM, 3G, 4G, 5G, LTE y similares, redes de TV por cable o redes digitales inalámbricas de área amplia que incluyen TV por cable, TV satelital y transmisión terrestre. TV, vehicular e industrial para incluir CANBus, etc. Ciertas redes comúnmente requieren adaptadores de interfaz de red externos que se conectan a ciertos puertos de datos de propósito general o buses periféricos (1649) (tales como, por ejemplo, puertos USB del sistema informático (1600)); otras se integran comúnmente en el núcleo del sistema informático (1600) mediante el acoplamiento a un bus del sistema como se describe a continuación (por ejemplo interfaz Ethernet en un sistema informático PC o interfaz de red celular en un sistema informático inteligente). Utilizando cualquiera de estas redes, el sistema informático (1600) puede comunicarse con otras entidades. Dicha comunicación puede ser unidireccional, recibir solo (por ejemplo, difusión de difusión), solo envío unidireccional (por ejemplo, NANbus a ciertos dispositivos de CANbus), o bidireccional, por ejemplo, a otros sistemas informáticos que utilizan redes digitales de área local o amplia. Se pueden utilizar ciertos protocolos y pilas de protocolos en cada una de esas redes e interfaces de red como se describió anteriormente.
Los dispositivos de interfaz humana anteriormente mencionados, dispositivos de almacenamiento accesibles para humanos, e interfaces de red pueden acoplarse a un núcleo (1640) del sistema informático (1600).
El núcleo (1640) puede incluir una o más unidades (1641) de procesamiento central (CPU, por sus siglas en inglés), unidades (1642) de procesamiento de gráficos (GPU, por sus siglas en inglés), unidades de procesamiento programables especializadas en forma de áreas (1643) de puertas programables en campo (FPGA , por sus siglas en inglés), aceleradores de hardware para determinadas tareas (1644), y así sucesivamente. Estos dispositivos, junto con la memoria (1645) de solo lectura (ROM, por sus siglas en inglés), la memoria (1646) de acceso aleatorio, el almacenamiento masivo interno tal como discos duros internos no accesibles para el usuario, SSD, y similares (1647), pueden conectarse a través de un bus (1648) de sistema. En algunos sistemas informáticos, el bus (1648) de sistema puede ser accesible en forma de uno o más enchufes físicos para habilitar extensiones por CPU adicionales, GPU, y similares. Los dispositivos periféricos pueden acoplarse directamente al bus (1648) de sistema del núcleo, o a través de un bus (1649) periférico. Las arquitecturas para un bus periférico incluyen PCI, USB y similares.
Las CPU (1641), las GPU (1642), las FPGA (1643) y aceleradores (1644) pueden ejecutar ciertas instrucciones que, en combinación, pueden constituir el código informático mencionado anteriormente. Ese código informático puede almacenarse en la ROM (1645) o RAM (1646). Los datos transitorios también pueden almacenarse en la RAM (1646), mientras que los datos permanentes pueden almacenarse, por ejemplo, en el almacenamiento (1647) masivo interno. El almacenamiento rápido y la recuperación a cualquiera de los dispositivos de memoria pueden habilitarse a través de la utilización de memoria caché, que puede asociarse estrechamente con una o más CPU (1641), GPU (1642), almacenamiento masivo (1647), ROM (1645), RAM (1646), y similares.
Los medios legibles por ordenador pueden tener código informático en el mismo para realizar diversas operaciones implementadas por ordenador. Los medios y el código informático pueden ser aquellos especialmente diseñados y construidos para los fines de las realizaciones, o pueden ser del tipo bien conocido y disponible para aquellos que tienen habilidad en las técnicas de software informático.
Como ejemplo y no de forma excluyente, el sistema informático que tiene arquitectura (1600), y específicamente el núcleo (1640) puede proporcionar funcionalidad como resultado del (de los) procesador(es) (que incluye las CPU, GPU, FPGA, aceleradores, y similares) que ejecuta el software integrado en uno o más medios tangibles, legibles por ordenador. Tales medios legibles por ordenador pueden ser medios asociados con el almacenamiento masivo accesible por el usuario como se ha introducido anteriormente, así como un cierto almacenamiento del núcleo (1640) que son de naturaleza no transitoria, tal como el almacenamiento (1647) masivo interno en el núcleo o ROM (1645). El software que implementa diversas realizaciones de la presente descripción puede almacenarse en tales dispositivos y ejecutarse mediante el núcleo (1640). Un medio legible por ordenador puede incluir uno o más dispositivos o chips de memoria, según las necesidades particulares. El software puede hacer que el núcleo (1640) y específicamente los procesadores en el mismo (que incluye las CPU, GPU, FPGA, y similares) ejecuten procesos particulares o partes particulares de procesos particulares descritos en la presente memoria, que incluyen definir estructuras de datos almacenadas en RAM (1646) y modificar tales estructuras de datos según los procesos definidos por el software. Además o alternativamente, el sistema informático puede proporcionar funcionalidad como resultado de una lógica cableada o incorporarse de cualquier otro modo en un circuito (por ejemplo: acelerador (1644)), que puede operar en lugar de o junto con software para ejecutar procesos particulares o partes particulares de procesos particulares descritos en la presente memoria. La referencia al software puede abarcar lógica y viceversa, cuando sea apropiado. La referencia a un medio legible por ordenador puede abarcar un circuito (tal como un circuito integrado (IC)) que almacena software para su ejecución, un circuito que incorpora lógica para su ejecución, o ambos, cuando sea apropiado. La presente descripción abarca cualquier combinación adecuada de hardware y software.
Apéndice A: Acrónimos
JEM: modelo de exploración conjunta
VVC: codificación de vídeo versátil
BS: conjunto de referencia
MV: vector de movimiento
HEVC: codificación de vídeo de alta eficiencia
SEI: información de mejora suplementaria
VUI: información de usabilidad de vídeo
GOP: grupos de imágenes
TU: Unidades de transformación,
PU: Unidades de predicción
CTU: unidades de árbol de codificación
CTB: bloques de árbol de codificación
PB: bloques de predicción
HRD: decodificador de referencia hipotética
SNR: relación ruido señal
CPU: unidades de procesamiento central
GPU: unidades de procesamiento de gráficos
CRT: tubo de rayos catódicos
LCD: pantalla de cristal líquido
OLED: diodo emisor de luz orgánico
CD: disco compacto
DVD: disco de vídeo Digital
ROM: memoria de solo lectura
RAM: memoria de acceso aleatorio
ASIC: circuito integrado específico de aplicación
PLD: dispositivo lógico programable
LAN: Red de área local
GSM: sistema global para comunicaciones móviles
LTE: Evolución a Largo Plazo
CANBus: Bus de red de área de controlador
USB: bus de serie universal
PCI: interconexión de componentes periféricos
FPGA: áreas de puertas programares en campo
SSD: unidad de estado sólido
IC: circuito integrado
CU: unidad de codificación
Claims (1)
- REIVINDICACIONESUn método para la decodificación de vídeo en el modelo de prueba 4 de codificación de vídeo versátil, VVC, que comprende:recibir información codificada de un bloque actual y bloques vecinos del bloque actual desde un flujo de bits de vídeo codificado, comprendiendo la información codificada información de intrapredicción del bloque actual y los bloques vecinos;cuando intra_luma_ref_idx = = 0 e intra_subpartitions_mode_flag= = 0, intra_luma_mpm_flag se señaliza en la información codificada, decodificando intra_luma_mpm_flag asociado con el bloque actual en la información codificada, en donde intra_luma_ref_idx = = 0 indica que un índice de una línea de referencia para el bloque actual es 0, e intra_subpartitions_mode_flag = = 0 indica que no se aplica el modo Intra Sub-Partitions, ISP; y en dondeintra_luma_mpm_flag indica si un modo de intrapredicción para muestras de luma del bloque actual pertenece a una lista del modo más probable, MPM, del bloque actual, y un tamaño de la lista de MPM del bloque actual es dependiente de un número de modos no angulares asociados con los bloques vecinos en la información codificada;decodificar intra_luma_ang_mpm_flag asociado con el bloque actual en la información codificada, en respuesta a intra_luma_mpm_flag que indica que el modo de intrapredicción para las muestras de luma del bloque actual pertenece a la lista de MPM, en dondeintra_luma_ang_mpm_flag indica si un MPM para muestras de luma del bloque actual es un modo angular o un modo no angular, yel contexto utilizado para la decodificación por entropía de intra_luma_ang_mpm_flag se deriva de los valores de intra_luma_ang_mpm_flag asociados con los bloques vecinos en la información codificada;decodificar intra_lu ma_mpm_idx asociado con el bloque actual en la información codificada, en respuesta a intra_luma_ang_mpm_flag que indica que el MPM para las muestras de luma del bloque actual es el modo angular, en dondeintra_luma_mpm_idx indica un índice MPM para las muestras de luma del bloque actual; decodificar intra_luma_planar_flag asociado con el bloque actual en la información codificada, en respuesta a intra_luma_ang_mpm_flag que indica que el MPM para las muestras de luma del bloque actual es el modo no angular, en dondeintra_luma_planar_flag indica si el MPM del bloque actual es un modo plano o un modo DC; y decodificar intra_luma_mpm_remainder asociado con el bloque actual en la información codificada, en respuesta a intra_luma_mpm_flag que indica que el modo de intrapredicción para las muestras de luma del bloque actual no pertenece a la lista de MPM, en donde intra_luma_mpm_remainder indica el modo de intrapredicción para las muestras de luma del bloque actual que pertenecen a los modos de intrapredicción candidatos restantes distintos de los modos de intrapredicción de la lista de MPM.El método de la reivindicación 1, en donde intra_luma_mpm_idx asociado con el bloque actual se decodifica utilizando una codificación de longitud fija.Un aparato para decodificación de vídeo, que comprende:un sistema de circuitos de procesamiento configurado para implementar el método de decodificación de vídeo según la reivindicación 1 o 2.Un medio de almacenamiento legible por ordenador no transitorio, que almacena instrucciones que, cuando son ejecutadas por un ordenador para la decodificación de vídeos, hacen que el ordenador realice el método para decodificar vídeos según la reivindicación 1 o 2.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962819652P | 2019-03-17 | 2019-03-17 | |
| US16/817,131 US11405638B2 (en) | 2019-03-17 | 2020-03-12 | Method and apparatus for video coding by determining intra prediction direction based on coded information of neighboring blocks |
| PCT/US2020/023100 WO2020190916A1 (en) | 2019-03-17 | 2020-03-17 | Method and apparatus for video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3040589T3 true ES3040589T3 (en) | 2025-11-03 |
Family
ID=72423596
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20773402T Active ES3040589T3 (en) | 2019-03-17 | 2020-03-17 | Method and apparatus for video coding |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US11405638B2 (es) |
| EP (1) | EP3942798B1 (es) |
| JP (1) | JP7236558B2 (es) |
| CN (1) | CN113348664B (es) |
| ES (1) | ES3040589T3 (es) |
| WO (1) | WO2020190916A1 (es) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102780036B1 (ko) * | 2019-03-23 | 2025-03-12 | 엘지전자 주식회사 | 영상 코딩 시스템에서의 인트라 예측 기반 영상 코딩 |
| US11943432B2 (en) * | 2021-04-26 | 2024-03-26 | Tencent America LLC | Decoder side intra mode derivation |
| US12166973B2 (en) * | 2021-07-07 | 2024-12-10 | Tencent America LLC | Entropy coding for intra prediction modes |
| US12526421B2 (en) * | 2022-04-06 | 2026-01-13 | Tencent America LLC | CABAC context modeling with information from spatial neighbors |
| WO2024039132A1 (ko) | 2022-08-18 | 2024-02-22 | 삼성전자 주식회사 | 영상 복호화 장치 및 방법, 및 영상 부호화 장치 및 방법 |
| US20260106997A1 (en) * | 2022-10-07 | 2026-04-16 | Mediatek Inc. | Method and Apparatus of Inheriting Temporal Neighbouring Model Parameters in Video Coding System |
| US12506879B2 (en) * | 2022-10-07 | 2025-12-23 | Tencent America LLC | Directional nearest neighbor prediction mode |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110317757A1 (en) | 2010-06-25 | 2011-12-29 | Qualcomm Incorporated | Intra prediction mode signaling for finer spatial prediction directions |
| KR20120070479A (ko) * | 2010-12-21 | 2012-06-29 | 한국전자통신연구원 | 화면 내 예측 방향 정보 부호화/복호화 방법 및 그 장치 |
| US8913662B2 (en) * | 2011-01-06 | 2014-12-16 | Qualcomm Incorporated | Indicating intra-prediction mode selection for video coding using CABAC |
| GB2491391B (en) * | 2011-06-02 | 2014-09-03 | Canon Kk | Encoding mode values representing prediction modes |
| US9654785B2 (en) * | 2011-06-09 | 2017-05-16 | Qualcomm Incorporated | Enhanced intra-prediction mode signaling for video coding using neighboring mode |
| US9628789B2 (en) * | 2011-11-18 | 2017-04-18 | Qualcomm Incorporated | Reference mode selection in intra mode coding |
| CN108174206A (zh) * | 2011-12-05 | 2018-06-15 | Lg 电子株式会社 | 帧内预测的方法和设备 |
| US20140064359A1 (en) | 2012-08-31 | 2014-03-06 | Qualcomm Incorporated | Intra prediction most probable mode order improvement for scalable video coding |
| US11722677B2 (en) | 2016-05-06 | 2023-08-08 | Interdigital Madison Patent Holdings, Sas | Method and system for decoder-side intra mode derivation for block-based video coding |
| US10547854B2 (en) * | 2016-05-13 | 2020-01-28 | Qualcomm Incorporated | Neighbor based signaling of intra prediction modes |
| US10506228B2 (en) * | 2016-10-04 | 2019-12-10 | Qualcomm Incorporated | Variable number of intra modes for video coding |
| US10742975B2 (en) * | 2017-05-09 | 2020-08-11 | Futurewei Technologies, Inc. | Intra-prediction with multiple reference lines |
| CN117201774B (zh) | 2019-01-13 | 2025-09-26 | Oppo广东移动通信有限公司 | 用于执行基于mrl的帧内预测的图像编译方法和装置 |
-
2020
- 2020-03-12 US US16/817,131 patent/US11405638B2/en active Active
- 2020-03-17 JP JP2021553844A patent/JP7236558B2/ja active Active
- 2020-03-17 WO PCT/US2020/023100 patent/WO2020190916A1/en not_active Ceased
- 2020-03-17 EP EP20773402.1A patent/EP3942798B1/en active Active
- 2020-03-17 ES ES20773402T patent/ES3040589T3/es active Active
- 2020-03-17 CN CN202080010512.XA patent/CN113348664B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| EP3942798A4 (en) | 2022-05-04 |
| JP2022524783A (ja) | 2022-05-10 |
| JP7236558B2 (ja) | 2023-03-09 |
| US20200296418A1 (en) | 2020-09-17 |
| EP3942798C0 (en) | 2025-08-13 |
| EP3942798B1 (en) | 2025-08-13 |
| EP3942798A1 (en) | 2022-01-26 |
| CN113348664B (zh) | 2024-05-24 |
| US11405638B2 (en) | 2022-08-02 |
| WO2020190916A1 (en) | 2020-09-24 |
| CN113348664A (zh) | 2021-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102740543B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| ES2969907T3 (es) | Método y aparato para codificación de video | |
| KR102608063B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| KR102506619B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| US11758152B2 (en) | Method and apparatus for video coding using planar intra prediction mode for intra sub-partition coding mode | |
| KR102479076B1 (ko) | 가장 가능성이 높은 모드를 도출하기 위한 방법 및 장치 | |
| KR102899663B1 (ko) | 머신을 위한 비디오 코딩 방법 및 장치 | |
| KR102461780B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| US11405638B2 (en) | Method and apparatus for video coding by determining intra prediction direction based on coded information of neighboring blocks | |
| US11979586B2 (en) | Method and apparatus for video coding | |
| US12495159B1 (en) | Mapping wide angle modes to intra prediction modes for a partition of a coding block | |
| US20250337951A1 (en) | Method and apparatus for signaling skip mode flag | |
| US11595688B2 (en) | Determination of sub-block transform mode based on CU partitions | |
| CN112235573B (zh) | 视频编解码的方法、装置、电子设备、存储介质 | |
| CN115176461A (zh) | 视频编解码的方法和装置 | |
| JP2023522354A (ja) | デカップリング変換パーティション分割 | |
| US20240137538A1 (en) | Aav2 affinity agents | |
| KR20230075499A (ko) | Ibc 병합 후보들에 대한 템플릿 매칭 | |
| HK40075467A (en) | Method and apparatus for video encoding/decoding | |
| HK40052134A (en) | Video decoding method, apparatus and computer-readable medium | |
| HK40051999A (en) | Video decoding method, device and storage medium |