ES3033587T3 - Method and apparatus for video decoding - Google Patents
Method and apparatus for video decodingInfo
- Publication number
- ES3033587T3 ES3033587T3 ES19861977T ES19861977T ES3033587T3 ES 3033587 T3 ES3033587 T3 ES 3033587T3 ES 19861977 T ES19861977 T ES 19861977T ES 19861977 T ES19861977 T ES 19861977T ES 3033587 T3 ES3033587 T3 ES 3033587T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- reconstructed
- current
- sub
- samples
- 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/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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—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 a colour or a chrominance component
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/57—Motion estimation characterised by a search window with variable size or shape
-
- 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)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Aspectos de la divulgación proporcionan métodos y aparatos para la codificación de vídeo. En algunos ejemplos, un aparato incluye circuitos de procesamiento que almacenan muestras reconstruidas de un bloque reconstruido en la memoria. Cuando se debe reconstruir un subbloque actual de un bloque actual mediante copia intrabloque (IBC) a partir de un subbloque de referencia del bloque reconstruido, el circuito de procesamiento determina si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas según la posición del subbloque actual; genera muestras reconstruidas del subbloque actual a partir de las muestras reconstruidas del subbloque de referencia cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria no se indican como sobrescritas; y sobrescribe las muestras reconstruidas de un subbloque coubicado en el bloque reconstruido almacenado en la memoria con las muestras reconstruidas generadas del subbloque actual. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y aparato para decodificación de vídeo
Campo técnico
La presente descripción describe realizaciones relacionadas generalmente con la codificación de vídeos.
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 1080p60 4: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 GByte 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.
La compensación de movimiento puede ser una técnica de compresión con pérdidas y puede referirse a técnicas donde un bloque de datos de muestra a partir de una imagen previamente reconstruida o parte de la misma (imagen de referencia), después de haber sido desplazado espacialmente en una dirección indicada por un vector de movimiento (MV en adelante), se utiliza para la predicción de una imagen o parte de imagen recién reconstruida. En algunos casos, la imagen de referencia puede ser la misma que la imagen actualmente bajo reconstrucción. Los MV pueden tener dos dimensiones X e Y, o tres dimensiones, siendo la tercera una indicación de la imagen de referencia en uso (esta última, indirectamente, puede ser una dimensión temporal).
En algunas técnicas de compresión de vídeo, un MV aplicable a una cierta área de datos de muestra puede predecirse a partir de otros MV, por ejemplo, a partir de los relacionados con otra área de datos de muestra espacialmente adyacente al área bajo reconstrucción, y que precede a ese MV en orden de decodificación. Hacerlo puede reducir sustancialmente la cantidad de datos requerida para codificar el MV, eliminando de este modo la redundancia y aumentando la compresión. La predicción de MV puede funcionar eficazmente, por ejemplo, porque al codificar una señal de vídeo de entrada derivada de una cámara (conocida como vídeo natural) existe una probabilidad estadística de que áreas más grandes que el área a la que se aplica un único MV se muevan en una dirección similar y, por lo tanto, en algunos casos se puedan predecir utilizando un vector de movimiento similar derivado de los MV del área vecina. Esto da como resultado que el MV encontrado para un área dada sea similar o igual al MV previsto a partir de los MV circundantes, y eso, a su vez, puede representarse, después de la codificación por entropía, en un número de bits menor que el que se utilizaría si se codificara el MV directamente. En algunos casos, la predicción de MV puede ser un ejemplo de compresión sin pérdidas de una señal (especialmente: los MV) derivada de la señal original (especialmente: el flujo de muestras). En otros casos, la predicción de MV en sí misma puede tener pérdidas, por ejemplo, debido a errores de redondeo al calcular un predictor a partir de varios MV circundantes.
Se describen varios mecanismos de predicción de MV en H.265/HEVC (ITU-T Rec. H.265, “ High Efficiency Video Coding” , diciembre de 2016). De los muchos mecanismos de predicción de MV que ofrece H.265, en la presente memoria se describe una técnica denominada en adelante “ fusión espacial” .
Haciendo referencia a la figura 1, un bloque actual (101) comprende muestras que el codificador ha descubierto durante el proceso de búsqueda de movimiento que son predecibles a partir de un bloque anterior del mismo tamaño que se ha desplazado espacialmente. En lugar de codificar ese MV directamente, el MV puede derivarse de los metadatos asociados a una o más imágenes de referencia, por ejemplo, de la imagen de referencia más reciente (en orden de decodificación), utilizando el MV asociado a una de las cinco muestras circundantes, denominadas A0, A1 y B0, B1, B2 (102 a 106, respectivamente). En H.265, la predicción de MV puede utilizar predictores de la misma imagen de referencia que está utilizando el bloque vecino.
ALSHINA (SAMSUNG) E Y COL: “AhG5: Intra block copy within one LCU', 15. REUNIÓN DEL JCT-VC, 23 de octubre a 1 de noviembre de 2013; Ginebra; núm. JCTVC-O0074, del 26 de octubre de 2013, describe un método para la copia intrabloque dentro de una LCU en función del vector de intramovimiento. El vector de intramovimiento está restringido a estar dentro de la LCT actual más 4 columnas de la LCU izquierda y 4 filas de la LCU por encima.
Resumen
Los aspectos de la descripción que proporcionan métodos y aparatos para la codificación/decodificación de vídeo se exponen en el conjunto de reivindicaciones adjunto.
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 bloque actual y sus candidatos de fusión espacial circundante en un ejemplo.
La figura 2 es una ilustración esquemática de un diagrama de bloques simplificado de un sistema (200) de comunicación según una realización.
La figura 3 es una ilustración esquemática de un diagrama de bloques simplificado de un sistema (300) de comunicación según una realización.
La figura 4 es una ilustración esquemática de un diagrama de bloques simplificado de un decodificador según una realización.
La figura 5 es una ilustración esquemática de un diagrama de bloques simplificado de un codificador según una realización.
La figura 6 muestra un diagrama de bloques de un codificador según otra realización.
La figura 7 muestra un diagrama de bloques de un decodificador según otra realización.
La figura 8 es una ilustración esquemática de un bloque actual en una imagen actual que se va a codificar utilizando una copia intrabloque (IBC) según una realización.
La figura 9 es una ilustración esquemática de un bloque actual y un bloque vecino en una imagen actual utilizando IBC según una realización.
La figura 10A es una ilustración esquemática de cómo las muestras reconstruidas en un bloque vecino deben indicarse como sobrescritas basándose en una posición de un subbloque actual que se codifica utilizando IBC según una realización.
La figura 10B es una ilustración esquemática de cómo las muestras reconstruidas en un bloque vecino deben indicarse como sobrescritas basándose en una posición de un subbloque actual que se codifica utilizando IBC según otra realización.
La figura 11 es una ilustración esquemática de un bloque actual, un primer bloque de referencia y un segundo bloque de referencia entre el bloque actual y el primer bloque de referencia en una imagen actual utilizando IBC según una realización.
La figura 12 muestra un diagrama de flujo que describe un proceso (1300) de decodificación según una realización de la descripción.
La figura 13 muestra un diagrama de flujo que describe un proceso (1400) de codificación según una realización de la descripción.
La figura 14 es una ilustración esquemática de un sistema informático según una realización.
Descripción detallada de las realizaciones
La figura 2 es un diagrama de bloques simplificado de un sistema (200) de comunicación según una realización de la presente descripción. El sistema (200) de comunicación incluye una pluralidad de dispositivos terminales que pueden comunicarse entre sí, a través de, por ejemplo, una red (250). Por ejemplo, el sistema (200) de comunicación incluye un primer par de dispositivos terminales (210) y (220) interconectados a través de la red (250). En el ejemplo de la figura 2, el primer par de dispositivos terminales (210) y (220) realiza una transmisión unidireccional de datos. Por ejemplo, el dispositivo terminal (210) puede codificar datos de vídeo (por ejemplo, un flujo de imágenes de vídeo que se capturan por el dispositivo terminal (210)) para transmisión al otro dispositivo terminal (220) a través de la red (250). 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 (220) puede recibir los datos de vídeo codificados de la red (250), 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 (200) de comunicación incluye un segundo par de dispositivos terminales (230) y (240) 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 (230) y (240) puede codificar datos de vídeo (por ejemplo, un flujo de imágenes de vídeo que se capturan por el dispositivo terminal) para su transmisión al otro dispositivo terminal de los dispositivos terminales (230) y (240) a través de la red (250). Cada dispositivo terminal de los dispositivos terminales (230) y (240) también puede recibir los datos de vídeo codificados transmitidos por el otro dispositivo terminal de los dispositivos terminales (230) y (240), 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 2, los dispositivos terminales (210), (220), (230) y (240) 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 ordenadores portátiles, tabletas, reproductores multimedia y/o equipos de videoconferencia dedicados. La red (250) representa cualquier número de redes que transmiten datos de vídeo codificados entre los dispositivos terminales (210), (220), (230) y (240), incluidas, por ejemplo, redes de comunicación alámbricas (cableadas) y/o inalámbricas. La red (250) 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 de la presente discusión, la arquitectura y topología de la red (250) pueden ser irrelevantes para el funcionamiento de la presente descripción a menos que se explique en la presente memoria a continuación.
La figura 3 ilustra, como ejemplo para una aplicación para la materia objeto divulgada, 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 (313) de captura, que puede incluir una fuente (301) de vídeo, por ejemplo una cámara digital, creando, por ejemplo, una secuencia de imágenes (302) de vídeo que no están comprimidas. En un ejemplo, el flujo de imágenes (302) de vídeo incluye muestras que son tomadas por la cámara digital. El flujo de imágenes (302) de vídeo, representado como una línea en negrita para enfatizar un volumen de datos alto en comparación con los datos (304) de vídeo codificados (o flujos de bits de vídeo codificados), puede ser procesado por un dispositivo electrónico (320) que incluye un codificador (303) de vídeo acoplado a la fuente (301) de vídeo. El codificador (303) 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 (304) de vídeo codificados (o flujo (304) de bits de vídeo codificado), representados como una línea delgada para enfatizar el menor volumen de datos en comparación con el flujo de imágenes (302) de vídeo, se pueden almacenar en un servidor (305) de transmisión para uso futuro. Uno o más subsistemas de cliente de transmisión por secuencias, tales como los subsistemas (306) y (308) de cliente en la figura 3 pueden acceder al servidor (305) de transmisión por secuencias para recuperar copias (307) y (309) de los datos (304) de vídeo codificados. Un subsistema (306) de cliente puede incluir un decodificador (310) de vídeo, por ejemplo, en un dispositivo electrónico (330). El decodificador (310) de vídeo decodifica la copia entrante (307) de los datos de vídeo codificados y crea un flujo saliente de imágenes (311) de vídeo que puede representarse en una pantalla (312) (por ejemplo, pantalla de visualización) u otro dispositivo de representación (no representado). En algunos sistemas de transmisión por secuencias, los datos (304), (307) y (309) de vídeo codificados (por ejemplo, flujos de bits de vídeo) se pueden codificar 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 (320) y (330) pueden incluir otros componentes (no mostrados). Por ejemplo, el dispositivo electrónico (320) puede incluir un decodificador de vídeo (no mostrado) y el dispositivo electrónico (330) puede incluir también un codificador de vídeo (no mostrado).
La figura 4 muestra un diagrama de bloques de un decodificador (410) de vídeo según una realización de la presente descripción. El decodificador (410) de vídeo puede incluirse en un dispositivo electrónico (430). El dispositivo electrónico (430) puede incluir un receptor (431) (por ejemplo, sistema de circuitos de recepción). El decodificador (410) de vídeo puede utilizarse en el lugar del decodificador (310) de vídeo en el ejemplo de la figura 3.
Un receptor (431) puede recibir una o más secuencias de vídeo de códec que van a decodificarse por el decodificador (410) 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 (401), que puede ser un enlace de hardware/software a un dispositivo de almacenamiento que almacena los datos de vídeo codificados. El receptor (431) 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 (431) 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 (415) se puede acoplar entre el receptor (431) y un decodificador/analizador (420) por entropía (“ analizador (420)” en adelante). En ciertas aplicaciones, la memoria intermedia (415) es parte del decodificador (410) de vídeo. En otras, puede estar fuera del decodificador (410) de vídeo (no representado). En otras palabras, puede haber una memoria intermedia (no representada) fuera del decodificador (410) de vídeo, por ejemplo para combatir la fluctuación de fase de la red y, además, otra memoria intermedia (415) dentro del decodificador (410) de vídeo, por ejemplo, para manejar la temporización de la reproducción. Cuando el receptor (431) 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 (415) puede no ser necesaria o puede ser pequeña. Para su uso en las redes de paquetes de mejor esfuerzo, como Internet, puede requerirse la memoria intermedia (415), 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 (410) de vídeo.
El decodificador (410) de vídeo puede incluir un analizador (420) para reconstruir símbolos (421) 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 (410) de vídeo, y potencialmente información para controlar un dispositivo de representación tal como un dispositivo (412) de representación (p. ej., una pantalla de visualización) que no es una parte integral del dispositivo electrónico (430) pero se puede acoplar al dispositivo electrónico (430), como se muestra en la figura 4. 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 (420) 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 (420) 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 (420) también puede extraer de la secuencia de vídeo codificada información tal como coeficientes de transformación, valores de parámetros del cuantificador, vectores de movimiento, etc.
El analizador (420) puede realizar una operación de decodificación por entropía/análisis en la secuencia de vídeo recibida desde la memoria intermedia (415), para crear símbolos (421).
La reconstrucción de los símbolos (421) 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 por la información de control de subgrupo que se analizó a partir de la secuencia de vídeo codificada por el analizador (420). El flujo de tal información de control de subgrupo entre el analizador (420) 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 (410) de vídeo puede subdividirse conceptualmente en varias 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 (451) de escalador/transformada inversa. La unidad (451) de escalador/transformada inversa recibe un coeficiente de transformada cuantificado, así como la información de control, que incluye la transformada para utilizar, el tamaño de bloque, el factor de cuantificación, las matrices de escala de cuantificación, etc., como símbolo(s) (421) del analizador (420). La unidad (451) de escalador/transformada inversa puede emitir bloques que comprenden valores de muestra, que pueden introducirse en el agregador (455).
En algunos casos, las muestras de salida del escalador/transformada inversa (451) 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 (452) de predicción intraimagen. En algunos casos, la unidad (452) de predicción intraimagen genera un bloque del mismo tamaño y forma que el bloque bajo reconstrucción, utilizando información circundante ya reconstruida extraída de la memoria intermedia (458) de imagen actual. La memoria intermedia (458) de imagen actual almacena, por ejemplo, imagen actual reconstruida parcialmente y/o imagen actual completamente reconstruida. El agregador (455), en algunos casos, añade, por muestra, la información de predicción que la unidad (452) de intrapredicción ha generado a la información de la muestra de salida proporcionada por la unidad (451) de escalador/transformada inversa.
En otros casos, las muestras de salida de la unidad (451) de escalador/transformada inversa pueden pertenecer a un bloque intercodificado y potencialmente compensado en movimiento. En tal caso, una unidad (453) de predicción de compensación de movimiento puede acceder a la memoria (457) de imágenes de referencia para extraer muestras utilizadas para la predicción. Después de compensar el movimiento de las muestras obtenidas según los símbolos (421) pertenecientes al bloque, estas muestras pueden añadirse por el agregador (455) a la salida de la unidad (451) 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 (457) de imágenes de referencia desde donde la unidad (453) de predicción de compensación de movimiento recupera muestras de predicción pueden controlarse mediante vectores de movimiento, disponibles para la unidad (453) de predicción de compensación de movimiento en forma de símbolos (421) 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 recuperados de la memoria (457) de imágenes de referencia cuando los vectores de movimiento exactos de submuestra están en uso, mecanismos de predicción de vectores de movimiento, etc.
Las muestras de salida del agregador (455) pueden someterse a diversas técnicas de filtrado en bucle en la unidad (456) 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 por 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 (456) de filtro en bucle como símbolos (421) del analizador (420), 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 muestra previamente reconstruidos y filtrados en bucle.
La salida de la unidad (456) de filtro en bucle puede ser un flujo de muestra que se puede emitir al dispositivo (412) de representación así como almacenarse en la memoria (457) de imágenes de referencia para su uso 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 completamente y la imagen codificada ha sido identificada como una imagen de referencia (mediante, por ejemplo, el analizador (420)), la memoria intermedia (458) de imagen actual puede convertirse en parte de la memoria (457) de imágenes de referencia, y se puede reasignar una memoria intermedia de imágenes actual nueva antes de comenzar la reconstrucción de la siguiente imagen codificada.
El decodificador (410) 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 (431) 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 (410) de vídeo puede utilizar los datos adicionales para decodificar correctamente 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 5 muestra un diagrama de bloques de un codificador (503) de vídeo según una realización de la presente descripción. El codificador (503) de vídeo se incluye en un dispositivo electrónico (520). El dispositivo electrónico (520) incluye un transmisor (540) (por ejemplo, sistema de circuitos de transmisión). El codificador (503) de vídeo puede utilizarse en el lugar del codificador (303) de vídeo en el ejemplo de la figura 3.
El codificador (503) de vídeo puede recibir muestras de vídeo de una fuente (501) de vídeo (que no es parte del dispositivo electrónico (520) en el ejemplo de la figura 5) que puede capturar imágenes de vídeo para ser codificadas por el codificador (503) de vídeo. En otro ejemplo, la fuente (501) de vídeo es una parte del dispositivo electrónico (520).
La fuente (501) de vídeo puede proporcionar la secuencia de vídeo fuente a codificar por el codificador (503) de vídeo en forma de un flujo de muestra 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 (501) de vídeo puede ser un dispositivo de almacenamiento que almacena un vídeo previamente preparado. En un sistema de videoconferencias, la fuente (501) 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 (503) de vídeo puede codificar y comprimir las imágenes de la secuencia de vídeo fuente en una secuencia (543) 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 (550). En algunas realizaciones, el controlador (550) 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 por el controlador (550) 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), rango máximo de búsqueda de vector de movimiento, etc. El controlador (550) puede configurarse para tener otras funciones adecuadas que pertenecen al codificador de vídeo (503) optimizado para un cierto diseño del sistema.
En algunas realizaciones, el codificador (503) de vídeo está configurado para operar en un bucle de codificación. Como una descripción más simplificada, en un ejemplo, el bucle de codificación puede incluir un codificador fuente (530) (por ejemplo, responsable de crear símbolos, tal como un flujo de símbolos, basándose en una imagen de entrada a codificar, y una(s) imagen(es) de referencia) y un decodificador (local) (533) incorporado en el codificador (503) de vídeo. El decodificador (533) 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 objeto descrita). El flujo de muestra reconstruido (datos de muestra) se introduce en la memoria (534) 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 (534) 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.
El funcionamiento del decodificador “ local” (533) puede ser el mismo que el de un decodificador “ remoto” , tal como el decodificador (410) de vídeo, que ya se ha descrito en detalle anteriormente junto con la figura 4. Haciendo referencia brevemente también a la figura 4, 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 (545) por entropía y el analizador (420) puede realizarse sin pérdidas, las partes de decodificación por entropía del decodificador (410) de vídeo, incluyendo la memoria intermedia (415) y el analizador (420) pueden no estar completamente implementadas en el decodificador local (533).
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 (530) puede realizar codificación predictiva compensada por movimiento, que codifica una imagen de entrada de manera 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 (532) de codificación codifica diferencias entre bloques de píxeles de una imagen de entrada y bloques de píxeles de imágenes de referencia que pueden seleccionarse como referencias de predicción para la imagen de entrada.
El decodificador (533) 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 (530). Las operaciones del motor (532) 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 5), la secuencia de vídeo reconstruida típicamente puede ser una réplica de la secuencia de vídeo fuente con algunos errores. El decodificador (533) 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é (534) de imágenes de referencia. De este modo, el codificador (503) 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 (535) puede realizar búsquedas de predicción para el motor (532) de codificación. Es decir, para codificar una nueva imagen, el predictor (535) puede buscar en la memoria (534) de imágenes de referencia datos de muestra (como bloques de píxeles de referencia candidatos) o ciertos metadatos tales como vectores de movimiento de imágenes de referencia, formas de bloques, etc., que pueden servir como referencia de predicción adecuada para las nuevas imágenes. El predictor (535) 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 (535), una imagen de entrada puede tener referencias de predicción extraídas de múltiples imágenes de referencia almacenadas en la memoria (534) de imágenes de referencia.
El controlador (550) puede gestionar operaciones de codificación del codificador fuente (530), incluyendo, 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 codificación por entropía en el codificador (545) por entropía. El codificador (545) por entropía traduce los símbolos generados por las diversas unidades funcionales en 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, etc.
El transmisor (540) puede almacenar en memoria intermedia las secuencias de vídeo codificadas creadas por el codificador (545) por entropía para preparar la transmisión a través de un canal (560) 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 (540) puede fusionar datos de vídeo codificados del codificador (503) 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 (550) puede gestionar el funcionamiento del codificador de vídeo (503). Durante la codificación, el controlador (550) 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 imágenes intra, incluidas, 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 (503) 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 (503) 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 (540) puede transmitir datos adicionales con el vídeo codificado. El codificador fuente (530) 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*64 píxeles, 32*32 píxeles, o 16*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*64 píxeles se puede dividir en una CU de 64*64 píxeles, o 4 CU de 32*32 píxeles, o 16 CU de 16*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>C<u 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. utilizando 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 6 muestra un diagrama de un codificador (603) de vídeo según otra realización de la descripción. El codificador (603) de vídeo está configurado para recibir un bloque de procesamiento (por ejemplo, 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 (603) de vídeo se utiliza en el lugar del codificador (303) de vídeo en el ejemplo de la figura 3.
En un ejemplo de HEVC, el codificador (603) 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 (603) de vídeo determina si el bloque de procesamiento se codifica mejor utilizando intramodo, intermodo o modo de bipredicción utilizando, por ejemplo, optimización de tasa-distorsión. Cuando el bloque de procesamiento debe codificarse en intramodo, el codificador (603) 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 se va a codificar en intermodo o de bipredicción, el codificador (603) 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 (603) 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 6, el codificador (603) de vídeo incluye el intercodificador (630), un intracodificador (622), un calculador (623) de residuos, un conmutador (626), un codificador (624) de residuos, un controlador general (621), y un codificador (625) por entropía acoplados juntos como se muestra en la figura 6.
El intercodificador (630) está configurado para recibir las muestras del bloque actual (por ejemplo, un bloque de procesamiento), comparar el bloque con uno o más bloques de referencia en imágenes de referencia (por ejemplo, bloques en imágenes anteriores e imágenes posteriores), generar información de interpredicción (por ejemplo, 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 (por ejemplo, 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 (622) 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 transformación 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 (622) también calcula resultados de intrapredicción (por ejemplo, bloque predicho) basándose en la información de intrapredicción y bloques de referencia en la misma imagen.
El controlador general (621) está configurado para determinar datos de control generales y controlar otros componentes del codificador (603) de vídeo en base a los datos de control generales. En un ejemplo, el controlador general (621) determina el modo del bloque y proporciona una señal de control al conmutador (626) basándose en el modo. Por ejemplo, cuando el modo es el intramodo, el controlador general (621) controla el conmutador (626) para seleccionar el resultado de intramodo para ser utilizado por el calculador (623) de residuos, y controla el codificador (625) 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 (621) controla el conmutador (626) para seleccionar el resultado de interpredicción para su uso por el calculador (623) de residuos, y controla el codificador (625) 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 (623) de residuos está configurado para calcular una diferencia (datos de residuos) entre el bloque recibido y los resultados de predicción seleccionados del intracodificador (622) o del intercodificador (630). El codificador (624) de residuos está configurado para operar basándose en los datos de residuos para codificar los datos de residuos para generar los coeficientes de transformada. En un ejemplo, el codificador (624) 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 (603) de vídeo también incluye un decodificador (628) de residuos. El decodificador (628) 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 (622) y el intercodificador (630). Por ejemplo, el intercodificador (630) puede generar bloques decodificados basándose en los datos de residuos decodificados e información de interpredicción, y el intracodificador (622) 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 (625) por entropía está configurado para formatear el flujo de bits para incluir el bloque codificado. El codificador (625) 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 (625) por entropía está configurado para incluir los datos de control generales, la información de predicción seleccionada (por ejemplo, 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 7 muestra un diagrama de un decodificador (710) de vídeo según otra realización de la descripción. El decodificador (710) 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 (710) de vídeo se utiliza en el lugar del decodificador (310) de vídeo en el ejemplo de la figura 3.
En el ejemplo de la figura 7, el decodificador (710) de vídeo incluye un decodificador (771) por entropía, un interdecodificador (780), un decodificador (773) de residuos, un módulo (774) de reconstrucción y un intradecodificador (772) acoplado como se muestra en la figura 7.
El decodificador (771) 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 se utilizan para la predicción por el intradecodificador (772) o el interdecodificador (780), 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 inter o modo bipredicho, la información de interpredicción se proporciona al interdecodificador (780); y cuando el tipo de predicción es el tipo de intrapredicción, la información de intrapredicción se proporciona al intradecodificador (772). La información residual puede someterse a cuantificación inversa y se proporciona al decodificador (773) de residuos.
El interdecodificador (780) 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 (772) 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 (773) 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 (773) de residuos también puede requerir cierta información de control (para incluir el parámetro de cuantificación (QP, inglés)), y esa información puede ser proporcionada por el decodificador (771) por entropía (la trayectoria de datos no representada ya que esta puede ser únicamente información de control de volumen bajo).
El módulo (774) de reconstrucción está configurado para combinar, en el dominio espacial, el residuo como salida por el decodificador (773) de residuos y los resultados de predicción (como salida por los módulos inter o intrapredicción como el caso puede ser) 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 (303), (503) y (603) de vídeo, y los decodificadores (310), (410) y (710) de vídeo pueden implementarse utilizando cualquier técnica adecuada. En una realización, los codificadores (303), (503) y (603) de vídeo, y los decodificadores (310), (410) y (710) de vídeo pueden implementarse utilizando uno o más circuitos integrados. En otra realización, los codificadores (303), (503) y (503) de vídeo, y los decodificadores (310), (410) y (710) de vídeo pueden implementarse utilizando uno o más procesadores que ejecutan instrucciones de software.
La figura 8 es una ilustración esquemática de un bloque actual (810) en una imagen actual (800) que se va a codificar utilizando una copia intrabloque (IBC) según una realización.
En algunos ejemplos, un bloque puede codificarse utilizando un bloque de referencia de una imagen diferente, lo que también se denomina compensación de movimiento. En algunos ejemplos, un bloque puede codificarse utilizando un bloque de referencia de un área previamente reconstruida dentro de la misma imagen, lo que también se denomina compensación de bloques intraimágenes, referencia de imagen actual (CPR) o copia intrabloque (IBC). Un vector de desplazamiento que indica el desplazamiento entre el bloque actual y el bloque de referencia se denomina vector de bloque (o BV para abreviar). A diferencia de un vector de movimiento en la compensación de movimiento, que puede estar en cualquier valor (positivo o negativo, en dirección x o y), un vector de bloque se somete a restricciones para asegurar que el bloque de referencia ya se ha reconstruido y sus muestras reconstruidas están disponibles. En algunas realizaciones, a la vista de restricciones de procesamiento paralelo, también se excluye un área de referencia que está más allá de un límite de mosaico o un límite de forma de escalera de frente de onda.
La codificación de un vector de bloque puede ser explícita o implícita. En el modo explícito, la diferencia entre un vector de bloque y su predictor se puede señalizar de un modo similar a un modo AMVP en la intercodificación. En el modo implícito, el vector de bloque se puede recuperar de un predictor, de manera similar a un vector de movimiento en el modo de fusión. La resolución de un vector de bloque, en algunas implementaciones, se establece en posiciones enteras o, en algunos ejemplos, en posiciones fraccionarias.
El uso de IBC a nivel de bloque se puede señalizar utilizando un indicador a nivel de bloque. En algunos ejemplos, este indicador se puede señalizar cuando el bloque actual no está codificado en modo de fusión. En algunos ejemplos, este indicador puede señalizarse mediante un enfoque de índice de referencia. Esto se hace tratando la imagen descodificada actual como una imagen de referencia. En la codificación de contenido de pantalla HEVC (HEVC SCC), dicha imagen de referencia se coloca en la última posición de la lista. Esta imagen de referencia especial también se gestiona junto con otras imágenes de referencia temporales en la memoria intermedia de imágenes decodificadas (DPB).
También hay algunas variaciones para implementar IBC, tal como la copia intrabloque invertida (donde el bloque de referencia se invierte horizontal o verticalmente antes de utilizarse para predecir el bloque actual), o la copia intrabloque basada en líneas (donde cada unidad de compensación dentro de un bloque de codificación de MxN es una línea Mx1 o 1xN).
Un ejemplo de uso de IBC se muestra en la figura 8, donde la imagen actual (800) incluye 15 bloques dispuestos en 3 filas y 5 columnas. En algunos ejemplos, cada bloque corresponde a una unidad de árbol de codificación (CTU). El bloque actual (810) incluye un subbloque (812) (por ejemplo, un bloque de codificación en la CTU) que tiene un vector (822) de bloque que apunta a un subbloque (832) de referencia en la imagen actual (800).
Las muestras reconstruidas de la imagen actual se pueden almacenar en una memoria dedicada. Teniendo en cuenta el coste de implementación, el área de referencia donde las muestras reconstruidas para los bloques de referencia permanecen disponibles puede no ser tan grande como una trama completa, dependiendo del tamaño de memoria de la memoria dedicada. Por lo tanto, para un subbloque actual que utiliza IBC, en algunos ejemplos, un subbloque de referencia de IBC puede limitarse solo a ciertas áreas vecinas, pero no a toda la imagen.
En algunas realizaciones, la memoria dedicada para almacenar muestras de referencia de CU previamente codificadas para futuras referencias de copias intrabloque se denomina memoria de muestras de referencia. En un ejemplo, el tamaño de memoria es de una CTU, tal como para almacenar hasta una CTU previamente codificada o una CTU izquierda. En otro ejemplo, el tamaño de memoria es de dos CTU, tal como dos CTU previamente codificadas o dos CTU izquierdas, o una CTU actual junto con una CTU izquierda. En algunas realizaciones, cada CTU requiere un tamaño de memoria para almacenar 128*128 muestras de luma, junto con las muestras de croma correspondientes. Cuando un bloque de referencia está fuera de las áreas almacenadas y reconstruidas, el bloque de referencia no se puede utilizar para IBC.
En algunas realizaciones, al iniciar una nueva CTU (es decir, una CTU actual), la memoria de muestras de referencia asigna espacio para almacenar la muestra reconstruida de toda la CTU actual. En algunos ejemplos, el tamaño de memoria es de una CTU, y el espacio asignado para la CTU actual todavía se puede utilizar parcialmente para almacenar las muestras reconstruidas de una CTU previamente codificada, por lo que la asignación de espacio para la CTU actual no se completa al comienzo de la CTU actual. Por lo tanto, una porción (o ubicación) de la memoria de muestras de referencia que almacena las muestras reconstruidas de la CTU previamente codificada puede utilizarse en modo IBC para predecir un bloque de codificación actual en la CTU actual hasta que esta porción sea actualizada por las muestras reconstruidas del bloque de codificación actual en la CTU actual. Después de eso, los datos de esta porción aún se pueden utilizar como referencia de IBC para proporcionar muestras reconstruidas de la CTU actual, pero ya no para proporcionar las muestras reconstruidas de la CTU previamente codificada que se acaban de sobrescribir.
En algunas realizaciones, la CTU actual se divide en varias particiones basándose en uno o más patrones de cuadrícula predefinidos. Por ejemplo, en particiones de 64*64, en particiones de 32*32, etc. Si la ubicación del bloque de codificación actual en la CTU actual cae en una de las particiones predefinidas, esto indicará que las muestras reconstruidas para toda la partición correspondiente almacenada en la memoria de muestras de referencia se actualizarán con muestras reconstruidas de la CTU actual, y las muestras reconstruidas antiguas de una CTU previamente codificada en esa partición en la memoria de muestras de referencia no se pueden utilizar con fines de referencia de IBC. En algunos ejemplos, el tamaño de la partición es al menos tan grande como el tamaño de bloque de código IBC más grande posible. Por ejemplo, si el tamaño máximo del bloque de referencia para IBC es de 64*64, entonces la CTU se puede dividir en particiones tan pequeñas como 64*64.
En algunas realizaciones alternativas, cuando un bloque de referencia en una CTU previamente codificada y su bloque colocado en la CTU actual comparten la misma ubicación en la memoria de muestras de referencia, la ubicación de la memoria se actualizará con los datos de la CTU actual cuando se codifique este bloque colocado en la CTU actual. Durante el proceso de codificación de la CTU actual, para un bloque de codificación en modo IBC, se encuentra su bloque de referencia en una CTU previamente codificada, cuyas muestras de referencia se almacenan en la memoria de muestras de referencia. Para este bloque de referencia, si no se ha codificado ninguna de las muestras de su bloque colocado en la CTU actual, la ubicación en la memoria de muestras de referencia no se ha actualizado con los datos de la CTU actual, y este bloque de referencia, que contiene muestras de referencia de la CTU previamente codificada, todavía se puede utilizar para IBC. De cualquier otra manera, según una realización, si se ha reconstruido al menos una muestra del bloque colocado en la CTU actual, este bloque de referencia en la CTU previamente codificada puede indicarse como sobrescrito y no puede utilizarse como referencia de IBC.
En algunos casos, el tamaño de la memoria es de dos CTU. Al iniciar una nueva CTU (es decir, una CTU actual), las muestras reconstruidas de una CTU codificada más recientemente pueden dejarse como están, y el espacio asignado para la CTU actual puede utilizarse parcialmente para almacenar las muestras reconstruidas de una CTU previamente codificada que se codifica antes de la CTU codificada más recientemente. Por lo tanto, dependiendo del orden de codificación, la estructura de partición de bloques y la disponibilidad de las muestras reconstruidas en la memoria, el área permitida para las muestras de referencia utilizadas en el modo IBC se puede extender a la parte reconstruida de la CTU actual, toda la CTU codificada más recientemente y/o a una porción de la CTU previamente codificada que puede indicarse como no sobrescrita por las muestras reconstruidas del bloque actual.
En una realización diferente, el tamaño de la memoria es de dos CTU. Al iniciar una nueva CTU (es decir, una CTU actual), las muestras reconstruidas de una CTU codificada más recientemente pueden dejarse como están. Por lo tanto, dependiendo del orden de codificación, la estructura de partición de bloques y la disponibilidad de las muestras reconstruidas en la memoria, el área permitida para las muestras de referencia utilizadas en el modo IBC se puede extender a la parte reconstruida de la CTU actual y a toda la CTU codificada más recientemente.
En algunos ejemplos, el tamaño de un subbloque de referencia de IBC puede ser tan grande como el de un bloque intercodificado normal. Para utilizar la memoria de muestras de referencia de manera más eficiente, el tamaño de un subbloque de referencia de IBC puede limitarse a no más de 64 muestras de luma en el borde ancho o alto, donde las restricciones de tamaño correspondientes se aplican a las muestras de croma, según el formato de color. Por ejemplo, en el formato 4:2:0, el tamaño de un bloque de croma en modo IBC se puede limitar a no más de 32 muestras en cada lado. En algunas realizaciones, se pueden utilizar límites inferiores, tales como 32 muestras de luma en cada lado.
En los siguientes ejemplos no limitativos, con el fin de ilustrar diversas realizaciones, el tamaño máximo del subbloque de referencia de IBC se establece en 64*64 muestras de luma. Por lo tanto, en un tamaño de CTU de 128*128 muestras de luma, para las muestras de luma, los subbloques de 128*128, 128*64, 64*128, 128*32, 32*128, etc., no pueden utilizar el modo de copia intrabloque. Para las muestras de croma, según el formato de color, de forma similar a las restricciones de las muestras de luma, se aplican los tamaños correspondientes a las muestras de croma.
La figura 9 es una ilustración esquemática de un bloque actual (CTU, 910) y un bloque vecino (CTU, 960) en una imagen actual utilizando IBC según una realización.
En algunas realizaciones, dos subbloques de diferentes CTU se denominan subbloques colocados cuando estos dos subbloques tienen el mismo tamaño y tienen un mismo valor de desplazamiento de ubicación con respecto a una esquina superior izquierda de la CTU respectiva. La figura 9 muestra un subbloque actual (912) en el bloque actual (es decir, CTU) (910) y tres de sus posibles subbloques (962, 964 y 966) de referencia en un bloque izquierdo (960) previamente codificado que son identificables por los respectivos vectores (922, 924 y 926) de bloques. En este ejemplo, si el tamaño de la memoria de muestra de referencia es una CTU, el subbloque (966) de referencia se puede encontrar en la memoria porque su subbloque colocado (936) en el bloque actual (910) aún no se ha reconstruido (área blanca). Por lo tanto, la ubicación de la memoria de muestras de referencia todavía almacena las muestras de referencia del bloque previamente codificado (960). Por el contrario, el subbloque (962) de referencia no se puede utilizar, ya que su subbloque colocado (932) en el bloque actual (910) se ha reconstruido por completo (área gris). La ubicación de la memoria de muestras de referencia para el subbloque (962) de referencia se ha sobrescrito con las muestras reconstruidas del subbloque (932) en el bloque actual (910). De manera similar, el subbloque (964) de referencia no puede ser un subbloque de referencia válido, porque parte de su subbloque colocado (934) en el bloque actual (910) se ha reconstruido y, por lo tanto, esa parte de la memoria se ha sobrescrito parcialmente con los datos del bloque actual (910).
Para utilizar de manera eficiente las muestras reconstruidas almacenadas mientras se comparte un espacio de memoria entre las CTU, un codificador o un decodificador puede determinar si un subbloque de referencia de un bloque previamente codificado se sobrescribe (o se considera sobrescrito de cualquier otra manera) basándose en una estructura de partición, un orden de codificación y/o una posición de un subbloque actual en un bloque actual.
Por ejemplo, cuando un subbloque de referencia en un bloque previamente codificado y su subbloque colocado en el bloque actual comparten la misma ubicación en la memoria de muestras de referencia, la ubicación de la memoria puede indicarse como actualizada (por ejemplo, sobrescrita o considerada de cualquier otra manera como sobrescrita) con los datos del bloque actual cuando se codifica cualquier parte de este subbloque colocado en el bloque actual. Durante el proceso de codificación del bloque actual, para un subbloque en modo IBC, se encuentra su subbloque de referencia en un bloque previamente codificado, cuyas muestras de referencia se almacenan en la memoria de muestras de referencia. Para este subbloque de referencia, si no se ha codificado ninguna de las muestras de su subbloque colocado en el bloque actual, la ubicación en la memoria de muestras de referencia no se ha actualizado con los datos del bloque actual, este subbloque de referencia, que contiene muestras de referencia de un bloque previamente codificado, puede utilizarse como referencia de IBC. De cualquier otra manera, cuando se codifica al menos una muestra del subbloque colocado en el bloque actual, la ubicación correspondiente en la memoria de muestras de referencia se ha actualizado mediante los datos del bloque actual, y este subbloque de referencia no se puede utilizar como referencia de IBC.
La solución general anterior se basa en comprobar la disponibilidad de diferentes ubicaciones durante el proceso de codificación y/o decodificación de un bloque actual. Tal proceso de verificación de disponibilidad, en algunos ejemplos, se puede simplificar para verificar solo la disponibilidad en unas pocas ubicaciones preestablecidas. En algunos ejemplos, la determinación de la disponibilidad de un bloque de luma 64*64 del bloque codificado anterior puede basarse en si alguna parte de su bloque 64*64 colocado del bloque actual se ha codificado o no. En este caso, es posible que solo sea necesario comprobar la posición superior izquierda de cada bloque de 64*64 del bloque actual. Se pueden comprobar otras posiciones en otras realizaciones. Los métodos/soluciones propuestos se pueden extender a tamaños de bloque más pequeños, como la evaluación basada en bloques de 32 * 32.
Los diferentes factores de determinación para diferentes estructuras de partición se describirán con más detalle basándose en los dos escenarios de partición siguientes. Basándose en diferentes estructuras de partición, dicha determinación de disponibilidad se puede realizar sin verificación o con una verificación limitada de las muestras individuales con el fin de mejorar el rendimiento de IBC al aumentar el rango de referencia disponible sin utilizar una memoria de muestras de referencia adicional.
En un primer escenario, cada una de las cuatro particiones de luma 64*64 (partición de croma 32*32 en formato 4:2:0) en la CTU actual estará contenida completamente en un bloque de codificación (también denominado subbloque); o bien, cada bloque de codificación de la CTU actual estará contenido completamente en una de las cuatro particiones de luma 64*64 (partición de croma 32*32 en formato 4:2:0).
Según el primer escenario, a un nivel de 128*128 CTU, este bloque puede codificarse tal cual (128*128), o dividirse en cuatro bloques de 64*64 y con una posible división adicional, o dividirse en dos bloques de 128*64 y con una posible división adicional, o dividirse en dos bloques de 64*128 y con una posible división adicional.
En algunas variantes, no se permite la división en árbol ternario para un bloque con un borde (ancho o alto) superior a 64 muestras de luma; de cualquier otra manera, el bloque resultante no estará contenido en una de las cuatro particiones de 64*64, o contendrá una de las cuatro particiones de 64*64 por completo.
En un ejemplo, si el bloque de codificación tiene un tamaño de 128*128 y el tamaño máximo del bloque de IBC es de 64*64, entonces este bloque de 128*128 no se codificará en modo IBC.
En un ejemplo, si los bloques de codificación son cuatro bloques de 64*64, la disponibilidad de muestras de referencia se puede ilustrar con referencia a la figura 10A.
La figura 10A es una ilustración esquemática de cómo las muestras reconstruidas en un bloque vecino deben indicarse como sobrescritas basándose en una posición de un subbloque actual que se codifica utilizando IBC según una realización.
En la figura 10A, un bloque actual (1010) corresponde a una CTU actual que incluye cuatro particiones (1012, 1014, 1016 y 1018) de 64*64. Un bloque (1060) previamente codificado corresponde a una CTU izquierda que incluye cuatro particiones (1062, 1064, 1066 y 1068) de 64*64. El orden de codificación para procesar los bloques de codificación en el bloque actual (1010) comienza desde la partición superior izquierda (1012), después la partición superior derecha (1014), después la partición inferior izquierda (1016) y finalmente la partición inferior derecha (1018). La partición de 64*64 con franjas verticales es donde se encuentra el bloque de codificación actual (el bloque de codificación actual puede tener un tamaño inferior a 64*64). Los bloques grises sombreados son los bloques reconstruidos. Los marcados con una “X” no están disponibles como referencia de IBC, ya que deberían sobrescribirse o haberse sobrescrito con las muestras reconstruidas del bloque actual en las ubicaciones correspondientes.
Por lo tanto, si el bloque de codificación actual cae en la partición (1012) superior izquierda 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras reconstruidas en las particiones (1064, 1066 y 1068) superior derecha, inferior izquierda e inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC. La partición (1062) se indica como sobrescrita y, por lo tanto, no disponible.
Si el bloque actual cae en la partición (1014) superior derecha 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras reconstruidas en las particiones (1066 y 1068) inferior izquierda e inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC en una realización. Las particiones (1062 y 1064) se indican como sobrescritas y, por lo tanto, no están disponibles.
Si el bloque actual cae en la partición (1016) inferior izquierda 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras de referencia de la partición inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC en una realización. Las particiones (1062, 1064 y 1066) se indican como sobrescritas y, por lo tanto, no están disponibles.
Si el bloque actual cae en la partición (1018) inferior derecha 64*64 del bloque actual (1010), solo se puede hacer referencia a las muestras ya reconstruidas en la CTU actual utilizando el modo IBC en una realización. Las particiones (1062, 1064, 1066 y 1068) se indican como sobrescritas y, por lo tanto, no están disponibles.
La suposición anterior funciona en el caso en que la CTU se divida en un árbol cuádruple en un primer nivel (si hay alguna división en el nivel de 128*128), como cuando se utiliza un árbol de codificación de luma/croma separado (árbol dual).
En un ejemplo, si los bloques de codificación son dos bloques de 128*64, no está permitido aplicar la división horizontal en árbol binario en el siguiente nivel. De cualquier otra manera, el bloque de 128*32 resultante estará contenido en dos particiones de 64*64, lo que infringe la suposición del primer escenario. Por lo tanto, cada bloque de 128*64 se codificará tal cual, o se dividirá en dos bloques de 64*64, o se puede dividir mediante un árbol cuádruple en cuatro bloques de 64*16.
En un ejemplo, si los bloques de codificación son dos bloques de 64*128, no está permitido aplicar la división vertical en árbol binario en el siguiente nivel. De cualquier otra manera, el bloque de 32*128 resultante estará contenido en dos particiones de 64*64, lo que infringe la suposición del primer escenario. Por lo tanto, cada bloque de 64*128 se codificará tal cual, o se dividirá en dos bloques de 64*64, o se puede dividir mediante un árbol cuádruple en cuatro bloques de 16*64.
En algunos ejemplos, el estándar VVC permite estrategias flexibles de partición de bloques con árbol cuádruple, árbol binario y árbol ternario. Si la división de primer nivel no es de árbol cuádruple, puede seguir siendo una división de árbol binario (no una división ternaria), como cuando no se utiliza un árbol doble. Si la división vertical en árbol binario se aplica en el primer nivel desde la CTU, por ejemplo teniendo dos bloques de 128*64 o dos bloques de 64*128, después el orden de codificación de la 2a y la 3a de las cuatro particiones de 64*64 de la figura 10A puede ser diferente.
La figura 10B es una ilustración esquemática de cómo las muestras reconstruidas en un bloque vecino deben indicarse como sobrescritas basándose en una posición de un subbloque actual que se codifica utilizando IBC según otra realización. En la figura 10B, se muestra la disponibilidad de muestras de referencia para una partición superior derecha 64*64 y una partición inferior izquierda 64*64, cuando la división vertical de árbol binario se aplica a un nivel de 128*128 desde la CTU. Cuando la división horizontal en árbol binario se aplica a un nivel de 128*128 desde la CTU, el orden de codificación y la disponibilidad de las muestras de referencia para un bloque superior derecho 64*64 y un bloque inferior izquierdo 64*64 son los mismos que en la figura 10A.
Por lo tanto, si el bloque de codificación actual cae en la partición (1012) superior izquierda 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras reconstruidas en las particiones (1064, 1066 y 1068) superior derecha, inferior izquierda e inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC según una realización. La partición (1062) se indica como sobrescrita y, por lo tanto, no disponible.
Si el bloque actual cae en la partición (1016) inferior izquierda 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras reconstruidas en las particiones (1064 y 1068) superior derecha e inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC según una realización. Las particiones (1062 y 1066) se indican como sobrescritas y, por lo tanto, no están disponibles.
Si el bloque actual cae en la partición (1016) superior derecha 64*64 del bloque actual (1010), además de las muestras ya reconstruidas en la CTU actual, se puede hacer referencia a las muestras de referencia de la partición inferior derecha 64*64 de la CTU izquierda (bloque 1060) utilizando el modo IBC. Las particiones (1062, 1064 y 1066) se indican como sobrescritas y, por lo tanto, no están disponibles.
Si el bloque actual cae en la partición (1018) inferior derecha 64*64 del bloque actual (1010), solo se puede hacer referencia a las muestras ya reconstruidas en la CTU actual utilizando el modo IBC según una realización. Las particiones (1062, 1064, 1066 y 1068) se indican como sobrescritas y, por lo tanto, no están disponibles.
Para las discusiones con referencia a la figura 10A y la figura 10B, dos soluciones ilustrativas se resumen a continuación.
Una primera solución ilustrativa es reutilizar completamente la memoria de muestras de referencia cuando sea posible. Más específicamente, dependiendo de la ubicación de un subbloque actual (por ejemplo, un bloque de codificación) con respecto a un bloque actual (por ejemplo, una CTU), se puede aplicar lo siguiente:
• Si un subbloque actual cae en la partición superior izquierda 64*64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en las particiones superior derecha, inferior izquierda e inferior derecha 64*64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición superior derecha 64^64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC. Además, si la ubicación de luma (0, 64) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición inferior izquierda 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición inferior izquierda 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC. Si la ubicación de luma (64, 0) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición superior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el bloque actual cae en la partición inferior derecha de 64x64 del bloque actual, solo puede hacer referencia a las muestras ya reconstruidas del bloque actual, utilizando el modo IBC.
La tabla I siguiente resume la disponibilidad de muestras reconstruidas desde un bloque izquierdo para una primera solución ilustrativa. UL, UR, LL y LR se refieren a la parte superior izquierda, superior derecha, inferior izquierda e inferior derecha, respectivamente. La marca “X” significa que no está disponible, la marca “Y” significa que está disponible.
Tabla I: disponibilidad de muestras reconstruidas para la primera solución ilustrativa
Una segunda solución ilustrativa es para un proceso simplificado independientemente de la estrategia de partición de bloques adoptada. Más específicamente, dependiendo de la ubicación de un subbloque actual (por ejemplo, un bloque de codificación) con respecto a un bloque actual (por ejemplo, una CTU), se puede aplicar lo siguiente:
• Si un subbloque actual cae en la partición superior izquierda 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en las particiones superior derecha, inferior izquierda e inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición superior derecha 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición inferior izquierda 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC. •
• Si el bloque actual cae en la partición inferior derecha de 64x64 del bloque actual, solo puede hacer referencia a las muestras ya reconstruidas del bloque actual, utilizando el modo IBC.
La tabla II siguiente resume la disponibilidad de muestras reconstruidas desde un bloque izquierdo para una segunda solución ilustrativa. UL, UR, LL y LR se refieren a la parte superior izquierda, superior derecha, inferior izquierda e inferior derecha, respectivamente. La marca “X” significa que no está disponible, la marca “Y” significa que está disponible.
Tabla II: disponibilidad de muestras reconstruidas para una segunda solución ilustrativa
En un segundo escenario, en la raíz de la CTU (muestras de luma 128^128), solo se permite una división de árbol cuádruple y de árbol binario. Después de eso, se puede aplicar una división binaria o una división ternaria a cada lado de cada bloque de 64x128, 128x64 o 64x64.
Según el segundo escenario, solo se garantiza que si el subbloque actual en modo CPR cae en la partición superior izquierda 64x64, después todas las unidades de codificación en la partición superior izquierda 64x64 se codificarán antes de codificar los bloques en la partición inferior derecha 64x64. En este caso, la partición inferior derecha 64x64 del bloque izquierdo aún no se ha actualizado mientras se procesan las unidades de codificación en la partición superior izquierda 64x64 del bloque actual. Las muestras reconstruidas en esta área de referencia (la partición inferior derecha 64x64 del bloque izquierdo) se pueden utilizar para la referencia CPR.
Para codificar bloques en las otras tres particiones 64x64 del bloque actual, no hay garantía de que una partición completa 64x64 que contenga muestras de referencia del bloque izquierdo no se actualice durante el procesamiento de las unidades de codificación en las particiones 64x64 correspondientes. En algunos ejemplos, no se propone ninguna operación especial.
En el segundo escenario, dos soluciones ilustrativas se resumen a continuación.
Una tercera solución ilustrativa permite utilizar la partición inferior derecha 64x64 del bloque izquierdo como referencia para el modo CPR, si el subbloque actual está dentro de la partición superior izquierda 64x64 del bloque actual. Para los subbloques dentro de otras tres particiones 64x64 del bloque actual, solo pueden hacer referencia a muestras reconstruidas dentro del bloque actual.
La tabla III siguiente resume la disponibilidad de muestras reconstruidas desde un bloque izquierdo para una tercera solución ilustrativa. UL, UR, LL y LR se refieren a la parte superior izquierda, superior derecha, inferior izquierda e inferior derecha, respectivamente. La marca “X” significa que no está disponible, la marca “Y” significa que está disponible.
Tabla III: disponibilidad de muestras reconstruidas para una tercera solución ilustrativa
Para mejorar aún más la tercera solución ilustrativa, para cada subbloque del bloque actual, la disponibilidad de cada partición 64^64 en el bloque izquierdo puede evaluarse comprobando la disponibilidad en la esquina superior izquierda de cada partición 64x64 en el bloque actual. Por ejemplo, cuando un subbloque actual está en una partición superior derecha 64x64 del bloque actual, si la esquina superior izquierda de la partición inferior izquierda 64x64 del bloque actual aún no se ha reconstruido, eso significa que las particiones superior izquierda y superior derecha 64x64 del bloque actual se procesarán antes que las particiones inferior izquierda e inferior derecha 64x64 del bloque actual. Por lo tanto, las ubicaciones de memoria de muestras de referencia que almacenan muestras de referencia en la partición inferior izquierda e inferior derecha 64x64 del bloque izquierdo aún no se han actualizado. Se pueden utilizar como referencias para el subbloque actual en modo CPR. Se aplicarán comprobaciones similares para la esquina superior izquierda de la partición superior derecha 64x64.
En consecuencia, la cuarta solución ilustrativa permite reutilizar más completamente la memoria de muestras de referencia cuando sea posible. Más específicamente, dependiendo de la ubicación del subbloque actual en relación con el bloque actual, se puede aplicar lo siguiente:
• Si un subbloque actual cae en la partición superior izquierda 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, también puede hacer referencia a las muestras reconstruidas en la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC. Además, si la ubicación de luma (0, 64) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición inferior izquierda 64x64 del bloque izquierdo, utilizando el modo IBC. Si la ubicación de luma (64, 0) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición superior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición superior derecha 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, si la ubicación de luma (0, 64) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición inferior izquierda 64x64 y la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el subbloque actual cae en la partición inferior izquierda 64x64 del bloque actual, además de las muestras ya reconstruidas en el bloque actual, si la ubicación de luma (64, 0) con respecto al bloque actual aún no se ha reconstruido, el subbloque actual también puede hacer referencia a las muestras reconstruidas en la partición superior izquierda 64x64 y la partición inferior derecha 64x64 del bloque izquierdo, utilizando el modo IBC.
• Si el bloque actual cae en la partición inferior derecha de 64x64 del bloque actual, solo puede hacer referencia a las muestras ya reconstruidas del bloque actual, utilizando el modo IBC.
La tabla IV siguiente resume la disponibilidad de muestras reconstruidas desde un bloque izquierdo para una cuarta solución ilustrativa. UL, UR, LL y L<r>se refieren a la parte superior izquierda, superior derecha, inferior izquierda e inferior derecha, respectivamente. La marca “X” significa que no está disponible, la marca “Y” significa que está disponible.
Tabla IV: disponibilidad de muestras reconstruidas para una cuarta solución ilustrativa
En las soluciones descritas anteriormente, las muestras reconstruidas en el bloque de izquierdo se dividen en cuatro particiones 64^64. Cada una de las particiones 64x64 se considera como una unidad completa para determinar si las muestras reconstruidas en esta partición se pueden utilizar para codificar un subbloque actual en modo CPR. Las soluciones propuestas, tal como se discutió anteriormente, también pueden aplicarse a configuraciones de partición más precisas, tales como para evaluar cada partición 32x32 en la memoria de muestra de referencia.
Además, la evaluación de si un subbloque de referencia para el subbloque actual en modo IBC está en el bloque izquierdo se puede realizar determinando si (a) todas las muestras del subbloque de referencia provienen del bloque izquierdo; o (b) cualquier muestra reconstruida en el subbloque de referencia proviene del bloque izquierdo.
Un ejemplo de las restricciones de vector de bloque basadas en la cuarta solución discutida anteriormente se utiliza como un ejemplo no limitativo que se ilustra a continuación. Además, en el ejemplo ilustrado a continuación, una CTU tiene un tamaño de 128x128 y la memoria de muestras de referencia tiene un tamaño para almacenar una CTU. En el siguiente ejemplo, no hay interpolación de croma para el modo IBC.
En este ejemplo no limitativo, supongamos lo siguiente:
- una ubicación de luma (xCb, yCb) de la muestra superior izquierda del bloque de codificación de luma actual (por ejemplo, el subbloque actual) en relación con la muestra de luma superior izquierda de la imagen actual,
- una variable cbWidth que especifica el ancho del bloque de codificación actual en muestras de luma,
- una variable cbHeight que especifica la altura del bloque de codificación actual en muestras de luma,
- una variable ctuSize que especifica el tamaño (ancho o alto) del bloque del árbol de codificación (por ejemplo, el bloque actual) en muestras de luma, y
- un vector de bloque de luma (bvX, bVy) para el bloque de codificación de luma actual con precisión entera.
Por lo tanto, la ubicación superior izquierda del subbloque actual es (xCb, yCb), la ubicación inferior derecha del subbloque actual es (xCb cbWidth - 1, yCb cbHeight - 1). Además, la ubicación superior izquierda del subbloque de referencia es (xCb bVx, yCb bVy), y la ubicación inferior derecha del subbloque de referencia es (xCb bVx cbWidth - 1, yCb bVy cbHeight - 1).
En este ejemplo no limitativo, un vector de bloque válido cumple las siguientes condiciones:
- todo el subbloque de referencia se reconstruye antes del subbloque actual,
- todo el subbloque de referencia está en el mismo mosaico/sector que el subbloque actual,
bVx cbWidth xCb <= 0 o bVy cbHeight yCb <= 0,
(yCb bVy) / ctuSize = yCb / ctuSize,
(yCb bVy cbHeight = 1) / ctuSize = yCb / ctuSize,
(xCb bVx) / ctuSize >= (xCb / ctuSize) - 1,
y
(xCb bVx cbWidth - 1) / ctuSize <= xCb / ctuSize.
Si (xCb bvX)/ctuSize es igual a (xCb/ctuSize) - 1, lo que significa que al menos una parte del subbloque de referencia está en el bloque izquierdo, se aplica lo siguiente:
- la condición (xCb%ctuSize >= 64 && yCb%ctuSize >= 64) no es verdadera,
- si xCb % ctuSize < 64 && yCb % ctuSize < 64,
• si la ubicación ((xCb/ctuSize) 64, (yCb/ctuSize)) no está disponible (significa que la muestra de esta ubicación no se ha reconstruido) y la ubicación ((xCb/ctuSize), (yCb/ctuSize) 64) no está disponible, después (xCb bVx)% ctuSize > 64 o (yCb+ bVy) % ctuSize > 64 es verdadera,
• de lo contrario, si la ubicación ((xCb/ctuSize) 64, (yCb/ctuSize)) no está disponible, después (xCb bvX) % ctuSize > 64 es verdadera, y
• de lo contrario (esto significa que la ubicación ((xCb/ctuSize), (yCb/ctuSize) 64) no está disponible), (yCb bVy) % ctuSize > 64 es verdadera,
- si xCb % ctuSize >= 64 && xCb % ctuSize < 64,
• la ubicación ((xCb/ctuSize), (yCb/ctuSize) 64) no está disponible y (yCb bVy) % ctuSize > 64 es verdadera, y
- si xCb % ctuSize < 64 && xCb % ctuSize >= 64,
• la ubicación ((xCb/ctuSize) 64, (yCb/ctuSize)) no está disponible y (xCb bvX) % ctuSize > 64 es verdadera.
Las soluciones propuestas, tal como se han descrito anteriormente, pueden extenderse también a otras configuraciones de la memoria de muestras de referencia. Además, aunque la determinación de qué muestras reconstruidas están disponibles se describió anteriormente con respecto a ciertos órdenes de procesamiento y tamaño de partición (por ejemplo, de izquierda a derecha o de arriba a abajo), se observa que la determinación puede modificarse según otros órdenes de procesamiento y/o tamaños de partición en otras realizaciones.
La figura 11 es una ilustración esquemática de un bloque actual (CTU, 1110), un primer bloque de referencia (CTU, 1160) y un segundo bloque de referencia (CTU, 1140) entre el bloque actual (CTU, 1110) y el primer bloque de referencia (CTU, 1160) en una imagen actual que utiliza IBC según una realización. La figura 11 muestra un subbloque actual (1112) en el bloque actual (es decir, CTU) (1110), un primer posible subbloque (1166) de referencia en el primer bloque (1160) de referencia que es identificable mediante un vector (1126) de bloque, y un segundo posible subbloque (1142) de referencia en el segundo bloque (1140) de referencia que es identificable mediante un vector (1122) de bloque. Debido a que el espacio de memoria para almacenar las muestras reconstruidas del bloque (1140) permanece intacto cuando se generan las muestras reconstruidas del bloque actual (1110), todas las muestras reconstruidas del segundo bloque (1140) de referencia pueden estar disponibles para determinar un subbloque de referencia para el subbloque actual (1112) en el modo IBC. Sin embargo, el espacio de memoria para almacenar las muestras reconstruidas del primer bloque (1160) de referencia se asigna para almacenar las muestras reconstruidas del bloque actual (1110), la disponibilidad del subbloque de referencia dentro del primer bloque (1160) de referencia dependería de si el bloque colocado en el bloque actual (1110) se ha reconstruido, de un modo similar a las descritas anteriormente con referencia a las figuras 9-11.
La figura 12 muestra un diagrama de flujo que describe un proceso (1200) de decodificación según una realización de la descripción. El proceso (1200) se puede utilizar en la reconstrucción de un bloque (es decir, un bloque actual) de una imagen codificada utilizando el modo IBC. En algunas realizaciones, se realizan una o más operaciones antes o después del proceso (1200), y algunas de las operaciones ilustradas en la figura 12 pueden reordenarse u omitirse.
En diversas realizaciones, el proceso (1200) se ejecuta mediante sistemas de circuitos de procesamiento, tales como los sistemas de circuitos de procesamiento en los dispositivos terminales (210), (220), (230) y (240), los sistemas de circuitos de procesamiento que realizan las funciones del decodificador (310), (410) o (710) de vídeo, y similares. En algunas realizaciones, el proceso (1200) se implementa por 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 (1200). El proceso comienza en (S1201) y procede a (S1210).
En (S1210), las muestras reconstruidas de un bloque reconstruido de una imagen se almacenan en una memoria. Las muestras reconstruidas del bloque reconstruido se reconstruyen según un flujo de bits de vídeo codificado. En algunos ejemplos, el bloque reconstruido corresponde al bloque (960) de la figura 9 o al bloque (1160) de la figura 11. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los decodificadores ilustrados en las figuras 3, 4 y 7.
En (S1220), se determina si un subbloque actual en un bloque actual de la imagen se va a reconstruir utilizando una copia intrabloque (IBC) basándose en un subbloque de referencia en el bloque reconstruido. Si se determina que el subbloque actual se va a reconstruir utilizando IBC, el proceso pasa a (S1230). De cualquier otra manera, el subbloque actual puede reconstruirse utilizando otro proceso, y el proceso pasa a (S1299) y termina con el fin de codificar utilizando el modo IBC.
En (S1230), se determina si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria no se sobrescriben (o se indican de cualquier otra manera como sobrescritas) basándose en la posición del subbloque actual. En algunos ejemplos, las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se determinan como sobrescritas como se describió anteriormente, por ejemplo, con referencia a las figuras 9-11. Cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas, el proceso pasa a (S1240). De cualquier otra manera, el subbloque actual se reconstruirá sin utilizar las muestras reconstruidas del subbloque de referencia o mediante otro proceso, y el proceso pasa a (S1299) y termina con el fin de codificar utilizando el modo IBC. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los decodificadores ilustrados en las figuras 3, 4 y 7.
En (S1240), las muestras reconstruidas del subbloque actual se generan para su salida basándose en las muestras reconstruidas del subbloque de referencia cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas. En (S1250), las muestras reconstruidas de un subbloque colocado en el bloque reconstruido almacenadas en la memoria se sobrescriben con las muestras reconstruidas generadas del subbloque actual. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los decodificadores ilustrados en las figuras 3, 4 y 7.
Tras (S1250), el proceso pasa a (S1299) y termina.
La figura 13 muestra un diagrama de flujo que describe un proceso (1300) de codificación según una realización de la descripción. El proceso (1300) se puede utilizar para codificar un bloque (es decir, un bloque actual) de una imagen que utiliza el modo IBC. En algunas realizaciones, se realizan una o más operaciones antes o después del proceso (1300), y algunas de las operaciones ilustradas en la figura 13 pueden reordenarse u omitirse.
En diversas realizaciones, el proceso (1300) se ejecuta mediante sistemas de circuitos de procesamiento, tales como los sistemas de circuitos de procesamiento en los dispositivos terminales (210), (220), (230) y (240), los sistemas de circuitos de procesamiento que realizan las funciones del codificador (303), (503) o (603) de vídeo, y similares. En algunas realizaciones, el proceso (1300) se implementa por 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 (1300). El proceso comienza en (S1301) y procede a (S1310).
En (S1310), las muestras reconstruidas de un bloque reconstruido de una imagen se almacenan en una memoria. Las muestras reconstruidas del bloque reconstruido se reconstruyen según la información de predicción codificada. En algunos ejemplos, el bloque reconstruido corresponde al bloque (960) de la figura 9 o al bloque (1160) de la figura 11. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los codificadores ilustrados en las figuras 3, 5 y 6.
En (S1320), se determina si un subbloque actual en un bloque actual de la imagen se va a codificar utilizando una copia intrabloque (IBC) basándose en un subbloque de referencia en el bloque reconstruido. Si se determina que el subbloque actual se va a codificar utilizando IBC, el proceso pasa a (S1330). De cualquier otra manera, el subbloque actual puede codificarse utilizando un proceso no descrito completamente en esta descripción, y el proceso procede a (S1399) y termina con el fin de codificar utilizando el modo IBC.
En (S1330), se determina un rango de muestras reconstruidas almacenadas en la memoria que no se sobrescriben (o se indican de cualquier otra manera como sobrescritas) basándose en al menos una posición del subbloque actual. En algunos ejemplos, el rango de muestras reconstruidas almacenadas en la memoria puede determinarse como sobrescrito o no como se ha ilustrado anteriormente, por ejemplo, con referencia a las figuras 9-11. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los codificadores ilustrados en las figuras 3, 5 y 6.
En (S1340), se determina un subbloque de referencia dentro del rango de muestras reconstruidas que no se indican como sobrescritas. En (S1350), las muestras reconstruidas del subbloque actual se generan basándose en las muestras reconstruidas del subbloque de referencia. En (S1360), las muestras reconstruidas de un subbloque colocado en el bloque reconstruido almacenadas en la memoria se sobrescriben con las muestras reconstruidas generadas del subbloque actual. En algunos ejemplos, las muestras reconstruidas del bloque reconstruido se pueden generar utilizando el sistema o los codificadores ilustrados en las figuras 3, 5 y 6.
Tras (S1360), el proceso pasa a (S1399) y termina.
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 14 muestra un sistema informático (1400) adecuado para implementar ciertas realizaciones de la materia objeto divulgada.
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 14 para el sistema informático (1400) son de naturaleza ilustrativa y no pretenden sugerir ninguna limitación en cuanto al alcance de uso o funcionalidad de las realizaciones de implementación de software informático. Tampoco debe 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 (1400).
El sistema informático (1400) 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 (1401), ratón (1402), panel táctil (1403), pantalla táctil (1410), guante de datos (no mostrado), palanca (1405) de mando, micrófono (1406), escáner (1407), cámara (1408).
El sistema informático (1400) 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 (1410), guante de datos (no mostrado) o palanca (1405) 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 (1409), auriculares (no representados)), dispositivos de salida visual (tales como pantallas (1410) 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 (1400) también puede incluir dispositivos de almacenamiento accesibles para humanos y sus medios asociados tales como medios ópticos que incluyen CD/DVD ROM/RW (1420) con CD/DVD o medios (1421) similares, memoria USB (1422), disco duro o unidad (1423) 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 objeto actualmente descrita no abarca medios de transmisión, ondas portadoras u otras señales transitorias.
El sistema informático (1400) 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. Algunas redes suelen requerir adaptadores de interfaz de red externos que se conecten a ciertos puertos de datos de uso general o buses periféricos
(1449) (como, por ejemplo, los puertos USB del sistema informático (1400)); otras se integran comúnmente en el núcleo del sistema informático (1400) mediante la unión 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 (1400) 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 unirse a un núcleo (1440) del sistema informático (1400).
El núcleo (1440) puede incluir una o más Unidades (1441) de procesamiento central (CPU), Unidades (1442) de Procesamiento de Gráficos (GPU), unidades de procesamiento programables especializadas en forma de Áreas (1443) de Puertas Programables en Campo (FPGA), hardware aceleradores para determinadas tareas (1444), etc. Estos dispositivos, junto con la memoria (1445) de solo lectura (ROM), la memoria (1446) de acceso aleatorio, el almacenamiento masivo interno tal como discos duros internos no accesibles para el usuario, SSD, y similares (1447), pueden conectarse a través de un bus (1448) de sistema. En algunos sistemas informáticos, el bus (1448) de sistema puede ser accesible en forma de uno o más tapones físicos para habilitar extensiones por CPU adicionales, GPU y similares. Los dispositivos periféricos se pueden unir directamente al bus (1448) de sistema del núcleo, o a través de un bus periférico (1449). Las arquitecturas para un bus periférico incluyen PCI, USB y similares.
Las CPU (1441), las GPU (1442), las FPGA (1443) y aceleradores (1444) 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 (1445) o RAM (1446). Los datos transitorios también pueden almacenarse en la RAM (1446), mientras que los datos permanentes pueden almacenarse, por ejemplo, en el almacenamiento (1447) masivo interno. El almacenamiento rápido y la recuperación a cualquiera de los dispositivos de memoria pueden habilitarse a través del uso de memoria caché, que puede asociarse estrechamente con una o más CPU (1441), GPU (1442), almacenamiento masivo (1447), ROM (1445), RAM (1446) 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 (1400) y, específicamente, el núcleo (1440) puede proporcionar funcionalidad como resultado del (de los) procesador(es) (incluidas CPU, GPU, FPGA, aceleradores, y similares) que ejecuta software incorporado 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 (1440) que son de naturaleza no transitoria, tal como el almacenamiento masivo interno
(1447) o ROM (1445). El software que implementa diversas realizaciones de la presente descripción puede almacenarse en dichos dispositivos y ejecutarse mediante el núcleo (1440). 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 (1440) y específicamente los procesadores en el mismo (incluidas CPU, GPU, FPGA y similares) ejecuten procesos particulares o partes particulares de procesos particulares descritos en la presente memoria, incluyendo definir estructuras de datos almacenadas en rAm (1446) 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 otra manera en un circuito (por ejemplo: acelerador (1444)), 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: USB: Bus de serie universal
PCI: Interconexión de componentes periféricos
FPGA: Áreas de puertas programables en campo
SSD: Unidad de estado sólido
IC: Circuito integrado
CU: Unidad de codificación
IBC: Copia intrabloque
CPR: Referencia de imagen actual
BV: Vector de bloque
AMVP: Predicción avanzada de vectores de movimiento
HEVC SCC: Codificación de contenido de pantalla HEVC
DPB: Memoria intermedia de imágenes decodificadas
Si bien esta descripción ha descrito varias realizaciones ilustrativas, el alcance de la protección no se limita a dichas realizaciones, sino que, en cambio, se define mediante las reivindicaciones adjuntas.
Claims (7)
- REIVINDICACIONESi.Un método para la decodificación de vídeo en un decodificador, que comprende:almacenar (S1210) muestras reconstruidas de un bloque reconstruido de una imagen en una memoria, reconstruyéndose las muestras reconstruidas del bloque reconstruido según un flujo de bits de vídeo codificado con codificación de vídeo versátil, VVC; ycuando un subbloque actual de un bloque actual de la imagen va a reconstruirse utilizando (S1220) la copia intrabloque, IBC, basándose en un subbloque de referencia del bloque reconstruido, en donde el bloque actual que tiene un tamaño de 128 x 128 muestras de luma incluye al menos cuatro particiones no superpuestas, incluida una partición actual en que se encuentra el subbloque actual, y las al menos cuatro particiones no superpuestas que tienen cada una un tamaño máximo de 64 x 64 muestras de luma, el bloque reconstruido que tiene un tamaño de 128 x 128 muestras de luma incluye al menos cuatro particiones no superpuestas que se colocan junto con las al menos cuatro particiones del bloque actual, respectivamente,determinar (S1230) si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual, generar (S1240) muestras reconstruidas del subbloque actual para su salida basándose en las muestras reconstruidas del subbloque de referencia cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas, ysobrescribir (S1250) las muestras reconstruidas de un subbloque colocado en el bloque reconstruido almacenadas en la memoria con las muestras reconstruidas generadas del subbloque actual, generar las muestras reconstruidas del subbloque actual sin utilizar el subbloque de referencia, cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas.
- 2. El método de la reivindicación 1, en dondela determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual incluye determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas, cuando la partición del bloque reconstruido que incluye el subbloque de referencia se coloca con una de las particiones del bloque actual que no se ha reconstruido.
- 3. El método de la reivindicación 2, en dondela determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual se realiza basándose en un orden de decodificación de la al menos una partición no superpuesta del bloque actual.
- 4. El método de la reivindicación 2, en donde cada una de las al menos cuatro particiones del bloque actual tiene un tamaño que es igual o mayor que el tamaño máximo de subbloque de referencia utilizado en la IBC.
- 5. El método de la reivindicación 1, en dondeel bloque actual incluye particiones superior izquierda, superior derecha, inferior izquierda e inferior derecha,el bloque reconstruido actual incluye particiones superior izquierda, superior derecha, inferior izquierda e inferior derecha, yla determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual incluye determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas cuando el subbloque actual está ubicado en la partición superior izquierda del bloque actual, y el subbloque de referencia está ubicado en una de las particiones superior derecha, inferior izquierda e inferior derecha del bloque reconstruido.
- 6. El método de la reivindicación 5, en donde la determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual incluye además determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas cuando el subbloque actual está ubicado en una de las particiones superior izquierda, superior derecha e inferior izquierda del bloque actual, y el subbloque de referencia está ubicado en la partición inferior derecha del bloque reconstruido.
- 7. El método de la reivindicación1, en dondeel bloque actual incluye particiones superior izquierda, superior derecha, inferior izquierda e inferior derecha,el bloque reconstruido actual incluye particiones superior izquierda, superior derecha, inferior izquierda e inferior derecha, yla determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual incluye además:determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas cuando el subbloque actual está ubicado en la partición superior derecha del bloque actual, el subbloque de referencia está ubicado en la partición inferior izquierda del bloque reconstruido y no se ha generado ninguna muestra reconstruida en la partición inferior izquierda del bloque actual; odeterminar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas cuando el subbloque actual está ubicado en la partición inferior izquierda del bloque actual, el subbloque de referencia está ubicado en la partición superior derecha del bloque reconstruido y no se ha generado ninguna muestra reconstruida en la partición superior derecha del bloque actual.El método de la reivindicación 5, en donde la determinación de si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en una posición del subbloque actual incluye además:determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas solo cuando el subbloque actual está ubicado en la partición superior izquierda del bloque actual, y el subbloque de referencia está ubicado en la partición inferior derecha del bloque reconstruido.Un aparato para decodificación de vídeo, que comprende:circuitos de procesamiento configurados para:almacenar (S1210) muestras reconstruidas de un bloque reconstruido de una imagen en una memoria, reconstruyéndose las muestras reconstruidas del bloque reconstruido según un flujo de bits de vídeo codificado con codificación de vídeo versátil, VVC; ycuando un subbloque actual de un bloque actual de la imagen va a reconstruirse utilizando la copia intrabloque, IBC, basándose en un subbloque de referencia del bloque reconstruido, en donde el bloque actual que tiene un tamaño de 128 x 128 muestras de luma incluye cuatro particiones no superpuestas, incluida una partición actual en que se encuentra el subbloque actual, y las cuatro particiones no superpuestas que tienen cada una un tamaño máximo de 64 x 64 muestras de luma, el bloque reconstruido que tiene un tamaño de 128 x 128 muestras de luma incluye cuatro particiones no superpuestas que se colocan junto con las cuatro particiones del bloque actual, respectivamente, determinar (S1230) si las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas basándose en la posición del subbloque actual, generar (S1240) muestras reconstruidas del subbloque actual para su salida basándose en las muestras reconstruidas del subbloque de referencia cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas, ysobrescribir (S1250) las muestras reconstruidas de un subbloque colocado en el bloque reconstruido almacenadas en la memoria con las muestras reconstruidas generadas del subbloque actual, generar las muestras reconstruidas del subbloque actual sin utilizar el subbloque de referencia, cuando se determina que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como sobrescritas.El aparato de la reivindicación 9, en dondeel sistema de circuitos de procesamiento está configurado además para determinar que las muestras reconstruidas del subbloque de referencia almacenadas en la memoria se indican como no sobrescritas, cuando la partición del bloque reconstruido que incluye el subbloque de referencia se coloca con una de las particiones del bloque actual que no se ha reconstruido.Un medio no transitorio legible por ordenador que almacena instrucciones que, cuando las ejecuta un ordenador para decodificar vídeo, hacen que el ordenador realice el método para decodificar vídeo en un decodificador según una cualquiera de las reivindicaciones 1 a 8.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862735002P | 2018-09-21 | 2018-09-21 | |
| US16/419,235 US10848782B2 (en) | 2018-09-21 | 2019-05-22 | Method and apparatus for video coding |
| PCT/US2019/050564 WO2020060820A1 (en) | 2018-09-21 | 2019-09-11 | Method and apparatus for video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3033587T3 true ES3033587T3 (en) | 2025-08-05 |
Family
ID=69884807
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19861977T Active ES3033587T3 (en) | 2018-09-21 | 2019-09-11 | Method and apparatus for video decoding |
Country Status (7)
| Country | Link |
|---|---|
| US (4) | US10848782B2 (es) |
| EP (2) | EP4554221A3 (es) |
| JP (3) | JP7152516B2 (es) |
| KR (2) | KR102465419B1 (es) |
| CN (4) | CN114710676B (es) |
| ES (1) | ES3033587T3 (es) |
| WO (1) | WO2020060820A1 (es) |
Families Citing this family (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110582001B (zh) | 2014-09-30 | 2022-10-14 | 微软技术许可有限责任公司 | 用于视频编码的基于散列的编码器判定 |
| US10848782B2 (en) | 2018-09-21 | 2020-11-24 | Tencent America LLC | Method and apparatus for video coding |
| US11146805B2 (en) * | 2018-11-30 | 2021-10-12 | Tencent America LLC | Method and apparatus for video coding |
| CN111355951B (zh) * | 2018-12-24 | 2023-11-10 | 华为技术有限公司 | 视频解码方法、装置及解码设备 |
| US10701385B1 (en) * | 2019-01-13 | 2020-06-30 | Tencent America LLC | Method and apparatus for reference sample memory reuse for intra picture block compensation |
| US10771799B2 (en) * | 2019-01-15 | 2020-09-08 | Tencent America LLC | Method and apparatus for video coding |
| WO2020156547A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Buffer resetting for intra block copy in video coding |
| JP7384911B2 (ja) | 2019-02-02 | 2023-11-21 | 北京字節跳動網絡技術有限公司 | 映像符号化におけるイントラブロックコピーのためのバッファ初期化 |
| WO2020177659A1 (en) * | 2019-03-01 | 2020-09-10 | Beijing Bytedance Network Technology Co., Ltd. | Direction-based prediction for intra block copy in video coding |
| EP3915265A4 (en) | 2019-03-01 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING |
| CN113508581B (zh) | 2019-03-04 | 2023-11-14 | 北京字节跳动网络技术有限公司 | 视频编解码中的帧内块复制中的实施方式方面 |
| US11252442B2 (en) * | 2019-04-08 | 2022-02-15 | Tencent America LLC | Method and apparatus for video coding |
| EP3967040A4 (en) | 2019-06-06 | 2022-11-30 | Beijing Bytedance Network Technology Co., Ltd. | BUILDING LIST OF MOVEMENT CANDIDATES FOR VIDEO CODING |
| WO2020244659A1 (en) * | 2019-06-06 | 2020-12-10 | Beijing Bytedance Network Technology Co., Ltd. | Interactions between sub-block based intra block copy and different coding tools |
| WO2020259426A1 (en) | 2019-06-22 | 2020-12-30 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate list construction for intra block copy mode |
| CN117294841A (zh) | 2019-07-06 | 2023-12-26 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的虚拟预测缓冲 |
| KR102635519B1 (ko) * | 2019-07-10 | 2024-02-07 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 카피를 위한 샘플 식별 |
| CN114097221B (zh) | 2019-07-11 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的比特流一致性约束 |
| US11202085B1 (en) * | 2020-06-12 | 2021-12-14 | Microsoft Technology Licensing, Llc | Low-cost hash table construction and hash-based block matching for variable-size blocks |
| WO2022114742A1 (ko) * | 2020-11-24 | 2022-06-02 | 현대자동차주식회사 | 비디오 부호화 및 복호화를 위한 장치 및 방법 |
| JP2024512785A (ja) * | 2021-04-02 | 2024-03-19 | ヒョンダイ モーター カンパニー | 適応的空間解像度を有するブロックベクトルを用いるビデオコーディング方法及び装置 |
| WO2024186783A1 (en) * | 2023-03-03 | 2024-09-12 | Beijing Dajia Internet Information Technology Co., Ltd | Methods and devices for intra block copy and intra template matching |
Family Cites Families (50)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7925120B2 (en) * | 2005-11-14 | 2011-04-12 | Mediatek Inc. | Methods of image processing with reduced memory requirements for video encoder and decoder |
| US8254455B2 (en) * | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
| GB2495467B (en) * | 2011-09-02 | 2017-12-13 | Skype | Video coding |
| US9838692B2 (en) | 2011-10-18 | 2017-12-05 | Qualcomm Incorporated | Detecting availabilities of neighboring video units for video coding |
| US9503715B2 (en) | 2013-08-30 | 2016-11-22 | Qualcomm Incorporated | Constrained intra prediction in video coding |
| AU2013228045A1 (en) * | 2013-09-13 | 2015-04-02 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
| US10009629B2 (en) | 2013-10-11 | 2018-06-26 | Sony Corporation | Video coding system with search range and method of operation thereof |
| AU2013403224B2 (en) | 2013-10-14 | 2018-10-18 | Microsoft Technology Licensing, Llc | Features of intra block copy prediction mode for video and image coding and decoding |
| EP3058736B1 (en) | 2013-10-14 | 2019-02-27 | Microsoft Technology Licensing, LLC | Encoder-side options for intra block copy prediction mode for video and image coding |
| AU2013270596A1 (en) | 2013-12-13 | 2015-07-02 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
| US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
| CN106416243B (zh) * | 2014-02-21 | 2019-05-03 | 联发科技(新加坡)私人有限公司 | 利用基于帧内图像区块复制预测的视频编码方法 |
| WO2015138008A1 (en) | 2014-03-10 | 2015-09-17 | Euclid Discoveries, Llc | Continuous block tracking for temporal prediction in video encoding |
| US10477232B2 (en) * | 2014-03-21 | 2019-11-12 | Qualcomm Incorporated | Search region determination for intra block copy in video coding |
| US9877034B2 (en) * | 2014-04-14 | 2018-01-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Pipelined video decoder system |
| JP6345805B2 (ja) | 2014-05-06 | 2018-06-20 | 寰發股▲ふん▼有限公司HFI Innovation Inc. | Intraブロックコピーモード符号化のブロックベクトル予測の方法 |
| AU2014202682A1 (en) | 2014-05-16 | 2015-12-03 | Canon Kabushiki Kaisha | Method, apparatus and system for copying a block of video samples |
| WO2015176678A1 (en) | 2014-05-22 | 2015-11-26 | Mediatek Inc. | Method of intra block copy with flipping for image and video coding |
| CN106576178B (zh) | 2014-06-19 | 2020-03-13 | Vid拓展公司 | 采用块向量导出的帧内块复制编码的方法 |
| US10327002B2 (en) | 2014-06-19 | 2019-06-18 | Qualcomm Incorporated | Systems and methods for intra-block copy |
| US10869031B2 (en) | 2014-07-07 | 2020-12-15 | Hfi Innovation Inc. | Method of intra block copy search and compensation range |
| US10412387B2 (en) * | 2014-08-22 | 2019-09-10 | Qualcomm Incorporated | Unified intra-block copy and inter-prediction |
| US10027981B2 (en) | 2014-09-01 | 2018-07-17 | Hfi Innovation Inc. | Method of intra picture block copy for screen content and video coding |
| CA2959682C (en) | 2014-09-30 | 2022-12-06 | Microsoft Technology Licensing, Llc | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
| KR102068828B1 (ko) | 2014-09-30 | 2020-01-22 | 에이치에프아이 이노베이션 인크. | 비디오 코딩을 위한 적응적 모션 벡터 레졸루션 방법 |
| US9832467B2 (en) * | 2014-10-07 | 2017-11-28 | Qualcomm Incorporated | Deblock filtering for intra block copying |
| US10075712B2 (en) | 2014-11-20 | 2018-09-11 | Hfi Innovation Inc. | Method of motion vector and block vector resolution control |
| US9591325B2 (en) | 2015-01-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Special case handling for merged chroma blocks in intra block copy prediction mode |
| US9955185B2 (en) | 2015-02-12 | 2018-04-24 | Mediatek Inc. | Method and apparatus of constrained intra block copy for coding video |
| WO2016138513A1 (en) * | 2015-02-27 | 2016-09-01 | Arris Enterprises, Inc. | Modification of unification of intra block copy and inter signaling related syntax and semantics |
| US10362331B2 (en) | 2015-03-02 | 2019-07-23 | Hfi Innovation Inc. | Method and apparatus for intraBC mode with fractional-pel block vector resolution in video coding |
| KR102272971B1 (ko) | 2015-04-13 | 2021-07-05 | 미디어텍 인크. | 비디오 코딩에서 최악의 경우의 대역폭을 줄이기 위한 제약된 인트라 블록 카피 방법 |
| US10638140B2 (en) * | 2015-05-29 | 2020-04-28 | Qualcomm Incorporated | Slice level intra block copy and other video coding improvements |
| US10390028B2 (en) * | 2015-06-03 | 2019-08-20 | Mediatek Inc. | Methods for palette coding of image and video data |
| TWI816224B (zh) * | 2015-06-08 | 2023-09-21 | 美商Vid衡器股份有限公司 | 視訊解碼或編碼方法及裝置 |
| US10178403B2 (en) * | 2015-06-23 | 2019-01-08 | Qualcomm Incorporated | Reference picture list construction in intra block copy mode |
| US20170099490A1 (en) * | 2015-10-02 | 2017-04-06 | Qualcomm Incorporated | Constrained intra-prediction for block copy mode |
| US20170188033A1 (en) * | 2015-12-23 | 2017-06-29 | Mediatek Inc. | Method and Apparatus of Bandwidth Estimation and Reduction for Video Coding |
| US10834419B2 (en) | 2016-04-13 | 2020-11-10 | Qualcomm Incorporated | Conformance constraint for collocated reference index in video coding |
| CN116962721A (zh) | 2016-05-04 | 2023-10-27 | 微软技术许可有限责任公司 | 利用样本值的非相邻参考线进行帧内图片预测的方法 |
| US20200322599A1 (en) | 2016-05-28 | 2020-10-08 | Mediatek Inc. | Method and apparatus of current picture referencing for video coding using affine motion compensation |
| US10582209B2 (en) | 2017-03-30 | 2020-03-03 | Mediatek Inc. | Sub-prediction unit temporal motion vector prediction (sub-PU TMVP) for video coding |
| US11019331B2 (en) | 2018-07-16 | 2021-05-25 | Tencent America LLC | Method and apparatus for video coding with prediction information |
| US10798376B2 (en) | 2018-07-17 | 2020-10-06 | Tencent America LLC | Method and apparatus for video coding |
| US10848782B2 (en) * | 2018-09-21 | 2020-11-24 | Tencent America LLC | Method and apparatus for video coding |
| US11146805B2 (en) * | 2018-11-30 | 2021-10-12 | Tencent America LLC | Method and apparatus for video coding |
| US10701385B1 (en) | 2019-01-13 | 2020-06-30 | Tencent America LLC | Method and apparatus for reference sample memory reuse for intra picture block compensation |
| JP7384910B2 (ja) | 2019-02-02 | 2023-11-21 | 北京字節跳動網絡技術有限公司 | 映像符号化におけるイントラブロックコピーのためのバッファ管理 |
| CN112913250B (zh) * | 2019-03-04 | 2023-10-20 | 华为技术有限公司 | 编码器、解码器及对任意ctu尺寸使用ibc搜索范围优化的对应方法 |
| KR20250038829A (ko) | 2019-06-20 | 2025-03-19 | 가부시키가이샤 제이브이씨 켄우드 | 화상 부호화 장치, 화상 부호화 방법, 컴퓨터 판독가능 기록 매체, 화상 복호 장치, 화상 복호 방법, 격납 방법 및 전송 방법 |
-
2019
- 2019-05-22 US US16/419,235 patent/US10848782B2/en active Active
- 2019-09-11 KR KR1020207031460A patent/KR102465419B1/ko active Active
- 2019-09-11 CN CN202210406737.8A patent/CN114710676B/zh active Active
- 2019-09-11 EP EP25166239.1A patent/EP4554221A3/en active Pending
- 2019-09-11 CN CN202210389660.8A patent/CN114666604B/zh active Active
- 2019-09-11 CN CN202210406719.XA patent/CN114710675B/zh active Active
- 2019-09-11 CN CN201980026549.9A patent/CN112272949B/zh active Active
- 2019-09-11 ES ES19861977T patent/ES3033587T3/es active Active
- 2019-09-11 KR KR1020227038862A patent/KR102652412B1/ko active Active
- 2019-09-11 EP EP19861977.7A patent/EP3785434B1/en active Active
- 2019-09-11 WO PCT/US2019/050564 patent/WO2020060820A1/en not_active Ceased
- 2019-09-11 JP JP2020563419A patent/JP7152516B2/ja active Active
-
2020
- 2020-10-21 US US17/076,741 patent/US11516504B2/en active Active
-
2022
- 2022-09-29 JP JP2022155791A patent/JP7498751B2/ja active Active
- 2022-10-07 US US17/962,347 patent/US12010340B2/en active Active
-
2024
- 2024-04-26 US US18/648,079 patent/US12418678B2/en active Active
- 2024-05-31 JP JP2024088490A patent/JP7761189B2/ja active Active
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES3033587T3 (en) | Method and apparatus for video decoding | |
| ES2969907T3 (es) | Método y aparato para codificación de video | |
| KR102608710B1 (ko) | 아핀 선형 가중 인트라 예측 모드를 위한 단순화된 시그널링 방법 | |
| KR102878993B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| US11748729B2 (en) | Method and apparatus for video coding | |
| KR102630792B1 (ko) | 비디오 코딩에서 이웃 블록 가용성을 위한 방법 및 장치 | |
| ES3035918T3 (en) | Method and apparatus for further improved context design for prediction mode and coded block flag (cbf) | |
| KR102506619B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| ES3040589T3 (en) | Method and apparatus for video coding | |
| KR102781109B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
| KR20230051287A (ko) | 기하학적 파티션 기반 인트라 예측 |