ES2949023T3 - Simplificaciones de un modelo lineal de componentes cruzados - Google Patents

Simplificaciones de un modelo lineal de componentes cruzados Download PDF

Info

Publication number
ES2949023T3
ES2949023T3 ES19872076T ES19872076T ES2949023T3 ES 2949023 T3 ES2949023 T3 ES 2949023T3 ES 19872076 T ES19872076 T ES 19872076T ES 19872076 T ES19872076 T ES 19872076T ES 2949023 T3 ES2949023 T3 ES 2949023T3
Authority
ES
Spain
Prior art keywords
luma
chroma
samples
block
reconstructed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19872076T
Other languages
English (en)
Inventor
Yi-Wen Chen
Xianglin Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Application granted granted Critical
Publication of ES2949023T3 publication Critical patent/ES2949023T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)
  • Prostheses (AREA)
  • Vehicle Interior And Exterior Ornaments, Soundproofing, And Insulation (AREA)

Abstract

Un dispositivo informático realiza un método para decodificar datos de vídeo reconstruyendo un bloque de luma correspondiente a un bloque de croma; buscar un subgrupo de una pluralidad de muestras de luma vecinas reconstruidas en un orden predefinido para identificar una muestra de luma máxima y una muestra de luma mínima; calcular una muestra de luma máxima reducida de muestreo correspondiente a la muestra de luma máxima; calcular una muestra de luma mínima muestreada de forma reducida correspondiente a la muestra de luma mínima; generar un modelo lineal utilizando la muestra de luma máxima de muestreo reducido, la muestra de luma mínimo de muestreo reducido, la primera muestra de croma reconstruida y la segunda muestra de croma reconstruida; calcular muestras de luma muestreadas a partir de muestras de luma del bloque de luma reconstruido, en el que cada muestra de luma muestreada hacia abajo corresponde a una muestra de croma del bloque de croma; y predecir muestras de croma del bloque de croma aplicando el modelo de revestimiento a las muestras de luma muestreadas correspondientemente. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Simplificaciones de un modelo lineal de componentes cruzados
CAMPO TÉCNICO
La presente solicitud se refiere en general a codificación y decodificación de datos de video y, en particular, a un método para decodificar una señal de video, a un dispositivo informático y a un medio no transitorio de almacenamiento legible por ordenador.
ANTECEDENTES
El video digital está soportado por una variedad de dispositivos electrónicos, como televisores digitales, ordenadores portátiles o de escritorio, tabletas, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, consolas de videojuegos, teléfonos inteligentes, dispositivos de videoconferencia, dispositivos de transmisión continua de video, etc. Los dispositivos electrónicos transmiten, reciben, codifican, decodifican y/o almacenan datos de video digital implementando estándares de compresión/descompresión de video como los definidos por MPEG-4, ITU-T H.263, ITU-T H.264/MPEG- 4, parte 10, codificación de video avanzada (AVC), codificación de video de alta eficiencia (HEVC) y el estándar de codificación de video versátil (VVC). La compresión de video normalmente incluye la realización de predicciones espaciales (intracuadro) y/o predicciones temporales (intercuadros) para reducir o eliminar la redundancia inherente a los datos de video. Para codificación de video basada en bloques, un cuadro de video se divide en uno o más segmentos, cada uno de los cuales tiene múltiples bloques de video, que también pueden denominarse unidades de árbol de codificación (CTU). Cada CTU puede contener una unidad de codificación (CU) o dividirse recursivamente en CU menores hasta alcanzar el tamaño de CU mínimo predefinido. Cada CU (también denominada hoja CU) contiene una o varias unidades de transformada (TU) y cada CU también contiene una o varias unidades de predicción (PU). Cada CU se puede codificar en modos intra, inter o IBC. Los bloques de video en un segmento intracodificado (I) de un cuadro de video se codifican utilizando predicción espacial con respecto a muestras de referencia en bloques contiguos dentro del mismo cuadro de video. Los bloques de video en un segmento intercodificado (P o B) de un cuadro de video pueden usar predicción espacial con respecto a muestras de referencia en bloques contiguos dentro del mismo cuadro de video o predicción temporal con respecto a muestras de referencia en otros cuadros de video de referencia anteriores o futuros.
La predicción espacial o temporal basada en un bloque de referencia que se ha codificado previamente, por ejemplo, un bloque contiguo, tiene como resultado un bloque predictivo para un bloque de video actual a codificar. El proceso de encontrar el bloque de referencia puede conseguirse mediante un algoritmo de coincidencia de bloques. Los datos residuales que representan diferencias de píxeles entre el bloque actual a codificar y el bloque predictivo se denominan bloque residual o errores de predicción. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de referencia en un cuadro de referencia que forma el bloque predictivo, y el bloque residual. El proceso de determinar el vector de movimiento normalmente se denomina estimación de movimiento. Un bloque intracodificado se codifica de acuerdo con un modo de intrapredicción y el bloque residual. Para una mayor compresión, el bloque residual se transforma del dominio de píxeles a un dominio de transformada, por ejemplo, el dominio de frecuencia, lo que tiene como resultado coeficientes de transformada residuales, que después pueden cuantificarse. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden escanearse para producir un vector unidimensional de coeficientes de transformada y después codificarse por entropía en un flujo de bits de video para conseguir una compresión aún mayor.
El flujo de bits de video codificado se guarda después en un medio de almacenamiento legible por ordenador (por ejemplo, memoria flash) para su acceso por otro dispositivo electrónico con capacidad de video digital o para ser transmitida directamente al dispositivo electrónico por cable o de forma inalámbrica. A continuación, el dispositivo electrónico realiza descompresión de video (que es un proceso opuesto a la compresión de video descrita anteriormente), por ejemplo, analizando sintácticamente el flujo de bits de video codificado para obtener elementos de sintaxis del flujo de bits y reconstruyendo los datos de video digital a su formato original a partir del flujo de bits de video codificado en base al menos en parte en los elementos de sintaxis obtenidos del flujo de bits, y presenta los datos de video digital reconstruidos en una pantalla del dispositivo electrónico.
Con la calidad de video digital pasando de alta definición a 4Kx2K o incluso 8Kx4K, la cantidad de datos de video que se codifican/decodifican crece exponencialmente. Esto es un desafío constante en términos de cómo los datos de video pueden codificarse/decodificarse de manera más eficiente mientras se mantiene la calidad de imagen de los datos de video decodificados.
c o m p e n d io
El documento no de patente "CE3;CCLM/MDLM using simplified coefficients derivation method(Test 5.6.1, 5.6.2 and 5.6.3)" propuso un método máx-mín para los coeficientes de modelo del modelo CCLM. Además, el documento no de patente "Algorithm Description of Joint Exploration Test Model 5" propuso un método de mínimos cuadrados para los coeficientes de modelo del modelo CCLM. Además, el documento de patente "US2016/0277762A1" propuso un método de decodificación o codificación de predicción de modelo lineal (LM).
COMPENDIO
La presente solicitud describe implementaciones relacionadas con la codificación y decodificación de datos de video y, más particularmente, con un sistema y un método para reconstruir un bloque de croma usando un modelo lineal de componentes cruzados durante la codificación y decodificación de datos de video. El alcance de la presente solicitud está definido por las reivindicaciones. La descripción habilitante para la invención protegida se da a conocer con las realizaciones descritas en relación con la figura 7E. Las otras figuras, aspectos y realizaciones se proporcionan con fines ilustrativos y no representan realizaciones de la invención a menos que se combinen con todas las características definidas respectivamente en las reivindicaciones independientes.
Los dibujos adjuntos, que se incluyen para proporcionar una mayor comprensión de las implementaciones y se incorporan al presente documento y constituyen una parte de la memoria, ilustran las implementaciones descritas y, junto con la descripción, sirven para explicar los principios subyacentes. Los números de referencia similares se refieren a partes correspondientes.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de video ejemplar de acuerdo con algunas implementaciones de la presente descripción.
La figura 2 es un diagrama de bloques que ilustra un codificador de video ejemplar de acuerdo con algunas implementaciones de la presente descripción.
La figura 3 es un diagrama de bloques que ilustra un decodificador de video ejemplar de acuerdo con algunas implementaciones de la presente descripción.
Las figuras 4A-4D son diagramas de bloques que ilustran cómo un cuadro se divide recursivamente mediante un árbol cuaternario en múltiples bloques de video de diferentes tamaños de acuerdo con algunas implementaciones de la presente descripción.
La figura 5A es un diagrama de bloques que ilustra posiciones de bloque colocalizadas temporalmente y contiguas espacialmente de una CU actual que se codificará de acuerdo con algunas implementaciones de la presente descripción.
La figura 5B es un diagrama de bloques que ilustra la codificación multihilo de múltiples filas de CTU de una imagen usando procesamiento paralelo de frente de onda de acuerdo con algunas implementaciones de la presente descripción.
Las figuras 6A y 6B son diagramas de bloques que ilustran un bloque de luma reconstruido de ejemplo y un bloque de croma asociado de ejemplo, respectivamente, de acuerdo con algunas implementaciones de la presente descripción.
Las figuras 7A-7E ilustran varias formas de usar el modelo lineal de componentes cruzados para obtener un modelo lineal entre valores de luma y valores de croma de acuerdo con algunas implementaciones de la presente descripción.
La figura 8 es un diagrama de flujo que ilustra un proceso ejemplar mediante el que un códec de video implementa las técnicas de utilización de un modelo lineal de componentes cruzados para reconstruir muestras de croma para un bloque de croma basado en muestras de luma reconstruidas de un bloque de luma de acuerdo con algunas implementaciones de la presente descripción.
d es c r ip c ió n DETALLADA
A continuación se hará referencia en detalle a implementaciones específicas, cuyos ejemplos se ilustran en los dibujos adjuntos. En la siguiente descripción detallada, se exponen numerosos detalles específicos no limitativos para ayudar a comprender el tema presentado en este documento. Será evidente para un experto en la materia que el tema presentado en este documento se puede implementar en muchos tipos de dispositivos electrónicos con capacidades de video digital.
La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar 10 para codificar y decodificar bloques de video en paralelo de acuerdo con algunas implementaciones de la presente descripción. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que genera y codifica datos de video para ser decodificados en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia variedad de dispositivos electrónicos, incluyendo ordenadores de escritorio o portátiles, tabletas, teléfonos inteligentes, decodificadores, televisores digitales, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de video o similares. En algunas implementaciones, el dispositivo de origen 12 y el dispositivo de destino 14 están equipados con capacidades de comunicación inalámbrica.
En algunas implementaciones, el dispositivo de destino 14 puede recibir los datos de video codificados para ser decodificados a través de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo de comunicación capaz de mover los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita los datos de video codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de video codificados pueden modularse de acuerdo con un estándar de comunicación, como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrico o por cable, como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet, El medio de comunicación puede Incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14,
En algunas otras implementaciones, los datos de video codificados pueden transmitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento 32, Posteriormente, el dispositivo de destino 14 puede acceder a los datos de video codificados en el dispositivo de almacenamiento 32 por medio de la interfaz de entrada 28, El dispositivo de almacenamiento 32 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificados , En otro ejemplo, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener los datos de video codificados generados por el dispositivo de origen 12, El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 32 mediante transmisión continua o descarga, El servidor de archivos puede ser cualquier tipo de ordenador capaz de almacenar datos de video codificados y transmitir los datos de video codificados al dispositivo de destino 14, Los servidores de archivos ejemplares incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado en red (ÑAS) o una unidad de disco local, El dispositivo de destino 14 puede acceder a los datos de video codificados a través de cualquier conexión de datos estándar, incluido un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión por cable (por ejemplo, DSL, módem por cable, etc,), o una combinación de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos, La transmisión de datos de video codificados desde el dispositivo de almacenamiento 32 puede ser una transmisión de flujo continuo, una transmisión de descarga o una combinación de ambas,
Como se muestra en la figura 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22, La fuente de video 18 puede incluir una fuente como un dispositivo de captura de video, por ejemplo, una cámara de video, un archivo de video que contiene video capturado previamente, una interfaz de transmisión de video para recibir video de un proveedor de contenido de video y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el video de origen, o una combinación de dichas fuentes, Como ejemplo, si la fuente de video 18 es una cámara de video de un sistema de vigilancia de seguridad, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar teléfonos con cámara o videoteléfonos, Sin embargo, las implementaciones descritas en la presente solicitud pueden ser aplicables a codificación de video en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas,
El video capturado, precapturado o generado por ordenador puede ser codificado por el codificador de video 20, Los datos de video codificados pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12, Los datos de video codificados pueden también (o alternativamente) almacenarse en el dispositivo de almacenamiento 32 para su posterior acceso por el dispositivo de destino 14 u otros dispositivos, para decodificación y/o reproducción, La interfaz de salida 22 puede incluir además un módem y/o un transmisor,
El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualización 34, La interfaz de entrada 28 puede incluir un receptor y/o un módem y recibir los datos de video codificados sobre el enlace 16, Los datos de video codificados comunicados sobre el enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una variedad de elementos de sintaxis generados por el codificador de video 20 para uso del decodificador de video 30 al decodificar los datos de video, Dichos elementos de sintaxis pueden estar incluidos dentro de los datos de video codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos,
En algunas implementaciones, el dispositivo de destino 14 puede incluir un dispositivo de visualización 34, que puede ser un dispositivo de visualización integrado y un dispositivo de visualización externo que está configurado para comunicarse con el dispositivo de destino 14, El dispositivo de visualización 34 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización, como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo orgánico emisor de luz (OLED) u otro tipo de dispositivo de visualización,
El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con estándares patentados o de la industria, tales como VVC, HEVC, MPEG-4, parte 10, codificación de video avanzada (AVC) o extensiones de dichos estándares, Debe entenderse que la presente solicitud no se limita a un estándar de codificación/decodificación de video específico y puede ser aplicable a otros estándares de codificación/decodificación de video, En general, se contempla que el codificador de video 20 del dispositivo de origen 12 puede configurarse para codificar datos de video de acuerdo con cualquiera de estos estándares actuales o futuros, De manera similar, también se contempla, en general, que el decodificador de video 30 del dispositivo de destino 14 puede configurarse para decodificar datos de video de acuerdo con cualquiera de estos estándares actuales o futuros,
El codificador de video 20 y el decodificador de video 30 pueden implemenfarse cada uno como cualquiera de una variedad de circuifos codificadores adecuados, como uno o más microprocesadores, procesadores de señales digifales (DSP), circuifos infegrados específicos de la aplicación (ASIC), mafrices de puertas programables en campo (FPGA), lógica discrefa, soffware, hardware, soffware inalferable o cualquier combinación de los mismos. Cuando se implemenfa parcialmenfe en soffware, un disposifivo elecfrónico puede almacenar insfrucciones para el soffware en un medio no fransiforio legible por ordenador adecuado y ejecufar las insfrucciones en hardware ufilizando uno o más procesadores para realizar las operaciones de codificación/decodificación de video dadas a conocer en la presenfe descripción. Cada uno del codificador de video 20 y el decodificador de video 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede infegrarse como parte de un codificador/decodificador combinado (CÓDEC) en un disposifivo respectivo.
La figura 2 es un diagrama de bloques que ilustra un codificador de video 20 de ejemplo de acuerdo con algunas implemenfaciones descritas en la presente solicitud. El codificador de video 20 puede realizar codificación infra e inferpredicfiva de bloques de video dentro de cuadros de video. La codificación infrapredicfiva se basa en predicción espacial para reducir o eliminar redundancia espacial en datos de video dentro de una imagen o cuadro de video determinado. La codificación inferpredicfiva se basa en predicción temporal para reducir o eliminar redundancia temporal en datos de video dentro de cuadros de video adyacentes o imágenes de una secuencia de video.
Como se muestra en la figura 2, el codificador de video 20 incluye memoria de datos de video 40, unidad de procesamiento de predicción 41, búfer de imágenes decodificadas (DpB) 64, sumador 50, unidad de procesamiento de transformada 52, unidad de cuanfificación 54 y unidad de codificación enfrópica 56. La unidad de procesamiento de predicción 41 incluye además una unidad de esfimación de movimienfo 42, una unidad de compensación de movimiento 44, una unidad de división 45, una unidad de procesamiento de infrapredicción 46 y una unidad de copia de bloque infra (BC) 48. En algunas implemenfaciones, el codificador de video 20 también incluye una unidad de cuanfificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62 para la reconstrucción de bloques de video. Se puede colocar un filtro de desbloqueo (no mostrado) entre el sumador 62 y el DPB 64 para filtrar los límites de tipo bloque y eliminar los artefactos de bloqueo del video reconstruido. También se puede usar un filtro en bucle (no mostrado) además del filtro de desbloqueo para filtrar la salida del sumador 62. El codificador de video 20 puede adoptar la forma de una unidad de hardware fija o programable o puede dividirse entre una o más de las unidades de hardware fijas o programables ilustradas.
La memoria de datos de video 40 puede almacenar datos de video para ser codificados por los componentes del codificador de video 20. Los datos de video en la memoria de datos de video 40 pueden obtenerse, por ejemplo, de la fuente de video 18. DPB 64 es un búfer que almacena datos de video de referencia para uso en la codificación de datos de video por el codificador de video 20 (por ejemplo, en modos de codificación infra o inferpredicfiva). La memoria de datos de video 40 y el DPB 64 pueden estar formados por cualquiera de una variedad de dispositivos de memoria. En varios ejemplos, la memoria de datos de video 40 puede estar en el chip con otros componentes del codificador de video 20, o fuera del chip en relación con esos componentes.
Como se muestra en la figura 2, después de recibir datos de video, la unidad de división 45 dentro de la unidad de procesamiento de predicción 41 divide los datos de video en bloques de video. Esta división también puede incluir la división de un cuadro de video en segmentos, teselas u otras unidades de codificación mayores (CU) de acuerdo con estructuras de división predefinidas, como una estructura de árbol cuaternario asociada con los datos de video. El cuadro de video se puede dividir en múltiples bloques de video (o conjuntos de bloques de video denominados teselas). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de posibles modos de codificación predicfiva, tal como uno de una pluralidad de modos de codificación infrapredicfiva o uno de una pluralidad de modos de codificación inferpredicfiva, para el bloque de video actual en función de resultados de error (por ejemplo, tasa de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque codificado de infra o inferpredicción resultante, al sumador 50 para generar un bloque residual y al sumador 62 para reconstruir el bloque codificado para su uso como parte de un cuadro de referencia posteriormente. La unidad de procesamiento de predicción 41 también proporciona elementos de sintaxis, como vectores de movimiento, indicadores de modo infra, información de división y otra información de sintaxis similar, a la unidad de codificación entrópica 56.
Para seleccionar un modo de codificación infrapredicfiva apropiado para el bloque de video actual, la unidad de procesamiento de infrapredicción 46 dentro de la unidad de procesamiento de predicción 41 puede realizar la codificación intrapredictiva del bloque de video actual en relación con uno o más bloques contiguos en el mismo cuadro que el bloque actual a codificar para proporcionar predicción espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan codificación inferpredicfiva del bloque de video actual en relación con uno o más bloques predicfivos en uno o más cuadros de referencia para proporcionar predicción temporal. El codificador de video 20 puede realizar múltiples pases de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de video.
En algunas implemenfaciones, la unidad de estimación de movimiento 42 determina el modo de inferpredicción para un cuadro de video actual generando un vector de movimiento, que indica el desplazamiento de una unidad de predicción (PU) de un bloque de video dentro del cuadro de video actual en relación con un bloque prediotivo dentro de un cuadro de video de referencia, de acuerdo con un patrón predeterminado dentro de una secuencia de cuadros de video. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de un cuadro de video o imagen actual en relación con un bloque predictivo dentro de un cuadro de referencia (u otra unidad codificada) en relación con el bloque actual que se está codificando dentro del cuadro actual (u otra unidad codificada). El patrón predeterminado puede designar cuadros de video en la secuencia como cuadros P o cuadros B. La unidad de BC intra 48 puede determinar vectores, por ejemplo, vectores de bloque, para codificación intra BC de manera similar a la determinación de vectores de movimiento por la unidad de estimación de movimiento 42 para interpredicción, o puede utilizar la unidad de estimación de movimiento 42 para determinar el vector de bloque.
Un bloque predictivo es un bloque de un cuadro de referencia que se considera que coincide estrechamente con la PU del bloque de video a codificar, en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD), u otras métricas de diferencia. En algunas implementaciones, el codificador de video 20 puede calcular valores para posiciones de píxeles subenteros de cuadros de referencia almacenados en DPB 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel del cuadro de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completos y posiciones de píxeles fraccionarios y entregar un vector de movimiento con precisión de píxeles fraccionarios.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en un cuadro codificado con interpredicción comparando la posición de la PU con la posición de un bloque predictivo de un cuadro de referencia seleccionado de una primera lista de cuadros de referencia (lista 0) o una segunda lista de cuadros de referencia (lista 1), cada una de los cuales identifica uno o más cuadros de referencia almacenados en DPB 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de compensación de movimiento 44 y después a la unidad de codificación entrópica 56.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo basado en el vector de movimiento determinado por la unidad de estimación de movimiento 42. Al recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensación de movimiento 44 puede localizar un bloque predictivo al que apunta el vector de movimiento en una de las listas de cuadros de referencia, recuperar el bloque predictivo de DPB 64 y enviar el bloque predictivo al sumador 50. El sumador 50 después forma un bloque de video residual de valores de diferencia de píxeles restando valores de píxeles del bloque predictivo proporcionado por la unidad de compensación de movimiento 44 de los valores de píxel del bloque de video actual que se está codificando. Los valores de diferencia de píxeles que forman el bloque de video residual pueden incluir componentes de diferencia de luma o croma, o ambos. La unidad de compensación de movimiento 44 también puede generar elementos de sintaxis asociados con los bloques de video de un cuadro de video para uso del decodificador de video 30 al decodificar los bloques de video del cuadro de video. Los elementos de sintaxis pueden incluir, por ejemplo, elementos de sintaxis que definen el vector de movimiento utilizado para identificar el bloque predictivo, cualesquiera indicadores que indiquen el modo de predicción o cualquier otra información de sintaxis descrita en este documento. Cabe señalar que la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar muy integradas, pero se ilustran por separado con fines conceptuales.
En algunas implementaciones, la unidad de BC intra 48 puede generar vectores y extraer bloques predictivos de manera similar a la descrita anteriormente en relación con la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, pero estando los bloques predictivos en el mismo cuadro que el bloque actual que se está codificando, y los vectores denominándose vectores de bloque en lugar de vectores de movimiento. En particular, la unidad de BC intra 48 puede determinar un modo de intrapredicción a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad de BC intra 48 puede codificar un bloque actual usando varios modos de intrapredicción , por ejemplo, durante pasadas de codificación separadas, y probar su rendimiento a través de un análisis de distorsión de velocidad. A continuación, la unidad de BC intra 48 puede seleccionar, entre los diversos modos de intrapredicción probados, un modo de intrapredicción apropiado para usar y generar un indicador de modo intra en consecuencia. Por ejemplo, la unidad de BC intra 48 puede calcular valores de distorsión de la velocidad utilizando un análisis de distorsión de la velocidad para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de distorsión de la velocidad entre los modos probados como el modo de intrapredicción adecuado a utilizar. El análisis de distorsión de velocidad generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, una cantidad de bits) utilizada para producir el bloque codificado. La unidad de BC intra 48 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción exhibe el mejor valor de distorsión de velocidad para el bloque.
En otros ejemplos, la unidad de BC intra 48 puede usar la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, en su totalidad o en parte, para realizar tales funciones para predicción intra BC según las implementaciones descritas en este documento. En cualquier caso, para copia de bloque intra, un bloque predictivo puede ser un bloque que se considera coincide estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD), u otras métricas de diferencia, y la identificación del bloque predictivo puede incluir el cálculo de valores para posiciones de píxeles subenteros.
Sea el bloque predictivo sea del mismo cuadro según intrapredicción o de un cuadro diferente según interpredicción, el codificador de video 20 puede formar un bloque de video residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de video actual que se está codificando, formando valores de diferencia de píxeles. Los valores de diferencia de píxeles que forman el bloque de video residual pueden incluir diferencias de componentes de luma y croma.
La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque de video actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, o la predicción de copia intra bloque realizada por la unidad de BC intra 48, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción a utilizar para codificar un bloque actual. Para ello, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando varios modos de intrapredicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de procesamiento de intrapredicción 46 (o una unidad de selección de modo, en algunos ejemplos) puede seleccionar un modo de intrapredicción adecuado a utilizar de los modos de intrapredicción probados. La unidad de procesamiento de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación entrópica 56. La unidad de codificación entrópica 56 puede codificar la información que indica el modo de intrapredicción seleccionado en el flujo de bits.
Después de que la unidad de procesamiento de predicción 41 determine el bloque predictivo para el bloque de video actual ya sea mediante interpredicción o intrapredicción , el sumador 50 forma un bloque de video residual restando el bloque predictivo del bloque de video actual. Los datos de video residuales en el bloque residual pueden incluirse en una o más unidades de transformada (TU) y se proporcionan a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de video residuales en coeficientes de transformada residuales utilizando una transformada, como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir aún más la tasa de bits. El proceso de cuantificación también puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar entonces una exploración de una matriz que incluye los coeficientes de transformada cuantificados. Alternativamente, la unidad de codificación entrópica 56 puede realizar la exploración.
Después de la cuantificación, la unidad de codificación entrópica 56 codifica por entropía los coeficientes de transformada cuantificados en un flujo de bits de video usando, por ejemplo, codificación de longitud variable adaptable al contexto (CAVLC), codificación aritmética binaria adaptable al contexto (CABAC), codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), codificación entrópica de división de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación entrópica. El flujo de bits codificado puede después transmitirse al decodificador de video 30, o archivarse en el dispositivo de almacenamiento 32 para su posterior transmisión o recuperación por el decodificador de video 30. La unidad de codificación entrópica 56 también puede codificar por entropía los vectores de movimiento y los otros elementos de sintaxis para el cuadro de video actual que está siendo codificado.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican cuantificación inversa y transformada inversa, respectivamente, para reconstruir el bloque de video residual en el dominio de píxeles para generar un bloque de referencia para la predicción de otros bloques de video. Como se señaló anteriormente, la unidad de compensación de movimiento 44 puede generar un bloque predictivo compensado por movimiento a partir de uno o más bloques de referencia de los cuadros almacenados en DPB 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque predictivo para calcular valores de píxel subenteros para su uso en la estimación de movimiento.
El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque de referencia para almacenar en DPB 64. El bloque de referencia puede, a continuación, ser utilizado por la unidad de BC intra 48, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque predictivo para interpredecir otro bloque de video en un cuadro de video subsiguiente.
La figura 3 es un diagrama de bloques que ilustra un decodificador de video 30 ejemplar de acuerdo con algunas ¡mplemenfaciones de la presente solicitud. El decodificador de video 30 incluye una memoria de datos de video 79, una unidad de decodificación entrópica 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformada inversa 88, un sumador 90 y un DPB 92. La unidad de procesamiento de predicción 81 incluye además una unidad de compensación de movimiento 82, una unidad de intrapredicción 84, y una unidad de BC intra 85. El decodificador de video 30 puede realizar un proceso de decodificación generalmente recíproco al proceso de codificación descrito anteriormente con respecto al codificador de video 20, en relación con la figura 2. Por ejemplo, la unidad de compensación de movimiento 82 puede generar datos de predicción en base a vectores de movimiento recibidos de la unidad de decodificación entrópica 80, mientras que la unidad de intrapredicción 84 puede generar datos de predicción en base a indicadores de modo de intrapredicción recibidos de la unidad de decodificación entrópica 80.
En algunos ejemplos, una unidad de decodificador de video 30 puede encargarse de realizar las implementaciones de la presente solicitud. Además, en algunos ejemplos, las implementaciones de la presente descripción pueden dividirse entre una o más de las unidades del decodificador de video 30. Por ejemplo, la unidad de BC intra 85 puede realizar las implementaciones de la presente solicitud, sola o en combinación con otras unidades del decodificador de video 30, como la unidad de compensación de movimiento 82, la unidad de intrapredicción 84 y la unidad de decodificación entrópica 80. En algunos ejemplos, el decodificador de video 30 puede no incluir la unidad de BC intra 85 y la funcionalidad de la unidad de BC intra 85 puede ser realizada por otros componentes de la unidad de procesamiento de predicción 81, como la unidad de compensación de movimiento 82.
La memoria de datos de video 79 puede almacenar datos de video, como un flujo de bits de video codificado, para ser decodificados por los otros componentes del decodificador de video 30. Los datos de video almacenados en la memoria de datos de video 79 pueden obtenerse, por ejemplo, del dispositivo de almacenamiento 32, de una fuente de video local, como una cámara, a través de una red de comunicación por cable o inalámbrica de datos de video, o accediendo a medios físicos de almacenamiento de datos (por ejemplo, una unidad flash o un disco duro). La memoria de datos de video 79 puede incluir un búfer de imágenes codificadas (CPB) que almacena datos de video codificados de un flujo de bits de video codificado. El búfer de imágenes decodificadas (DPB) 92 del decodificador de video 30 almacena datos de video de referencia para usar en la decodificación de datos de video por el decodificador de video 30 (por ejemplo, en modos de codificación intra o interpredictiva). La memoria de datos de video 79 y el DPB 92 pueden estar formados por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. Con fines ilustrativos, la memoria de datos de video 79 y el DPB 92 se representan como dos componentes distintos del decodificador de video 30 en la figura 3. Pero será evidente para un experto en la técnica que la memoria de datos de video 79 y el DPB 92 pueden ser proporcionados por el mismo dispositivo de memoria o por dispositivos de memoria separados. En algunos ejemplos, la memoria de datos de video 79 puede estar en el chip con otros componentes del decodificador de video 30, o fuera del chip en relación con esos componentes.
Durante el proceso de decodificación, el decodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un cuadro de video codificado y elementos de sintaxis asociados. El decodificador de video 30 puede recibir los elementos de sintaxis a nivel de cuadro de video y/o a nivel de bloque de video. La unidad de decodificación entrópica 80 del decodificador de video 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción, y otros elementos de sintaxis. La unidad de decodificación entrópica 80 después envía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 81.
Cuando el cuadro de video se codifica como un cuadro intracodificado predictivo (I) o para bloques predictivos intracodificados en otros tipos de cuadros, la unidad de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de video del cuadro de video actual en base a un modo de intrapredicción señalizado y datos de referencia de bloques previamente decodificados del cuadro actual.
Cuando el cuadro de video se codifica como un cuadro codificado interpredictivo (es decir, B o P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce uno o más bloques predictivos para un bloque de video del cuadro de video actual en función de los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación entrópica 80. Cada uno de los bloques predictivos puede generarse a partir de un cuadro de referencia dentro de una de las listas de cuadros de referencia. El decodificador de video 30 puede construir las listas de cuadros de referencia, lista 0 y lista 1, utilizando técnicas de construcción por defecto basadas en cuadros de referencia almacenados en DPB 92.
En algunos ejemplos, cuando el bloque de video se codifica de acuerdo con el modo intra BC descrito en este documento, la unidad de BC intra 85 de la unidad de procesamiento de predicción 81 produce bloques predictivos para el bloque de video actual en función de vectores de bloque y otros elementos de sintaxis recibidos de la unidad de decodificación entrópica 80. Los bloques predictivos pueden estar dentro de una región reconstruida de la misma imagen que el bloque de video actual definido por el codificador de video 20.
La unidad de compensación de movimiento 82 y/o la unidad de BC intra 85 determina información de predicción para un bloque de video del cuadro de video actual mediante analizar sintácticamente los vectores de movimiento y otros elementos de sintaxis, y después usa la información de predicción para producir los bloques predictivos para el bloque de video actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 82 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar bloques de video del cuadro de video, un tipo de cuadro de interpredicción (por ejemplo, B o P), información de construcción para una o más de las listas de cuadros de referencia para el cuadro, vectores de movimiento para cada bloque de video codificado interpredictivo del cuadro, estado de interpredicción para cada bloque de video codificado interpredictivo del cuadro y otra información para decodificar los bloques de video en el cuadro de video actual.
De manera similar, la unidad de BC intra 85 puede usar algunos de los elementos de sintaxis recibidos, por ejemplo, un indicador, para determinar que el bloque de video actual se predijo usando el modo intra BC, información de construcción de qué bloques de video del cuadro están dentro de la región reconstruida y deben almacenarse en DPB 92, vectores de bloque para cada bloque de video predicho intra BC del cuadro, estado de intrapredicción BC para cada bloque de video predicho intra BC del cuadro y otra información para decodificar los bloques de video en el cuadro de video actual.
La unidad de compensación de movimiento 82 también puede realizar interpolación usando los filtros de interpolación que usa el codificador de video 20 durante la codificación de los bloques de video para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de video 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica inversamente los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por entropía por la unidad de decodificación entrópica 80 usando el mismo parámetro de cuantificación calculado por el codificador de video 20 para cada bloque de video en el cuadro de video para determinar un grado de cuantificación. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para reconstruir los bloques residuales en el dominio de píxeles.
Después de que la unidad de compensación de movimiento 82 o la unidad de BC intra 85 genere el bloque predictivo para el bloque de video actual en base a los vectores y a otros elementos de sintaxis, el sumador 90 reconstruye el bloque de video decodificado para el bloque de video actual sumando el bloque residual de la unidad de procesamiento de transformada inversa 88 y un bloque predictivo correspondiente generado por la unidad de compensación de movimiento 82 y la unidad de BC intra 85. Se puede colocar un filtro en bucle (no ilustrado) entre el sumador 90 y el DPB 92 para procesar adicionalmente el bloque de video decodificado. Los bloques de video decodificados en un cuadro dado se almacenan después en DPB 92, que almacena cuadros de referencia utilizados para la compensación de movimiento posterior de los siguientes bloques de video. El DPB 92, o un dispositivo de memoria separado del DPB 92, también puede almacenar video decodificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 34 de la figura 1.
En un proceso típico de codificación de video, una secuencia de video generalmente incluye un conjunto ordenado de cuadros o imágenes. Cada cuadro puede incluir tres conjuntos de muestras, denominados SL, SCb y SCr. SL es una matriz bidimensional de muestras de luma. SCb es una matriz bidimensional de muestras de croma Cb. SCr es una matriz bidimensional de muestras de croma de Cr. En otros casos, un cuadro puede ser monocromático y, por lo tanto, incluye solo una matriz bidimensional de muestras de luma.
Como se muestra en la figura 4A, el codificador de video 20 (o más específicamente la unidad de división 45) genera una representación codificada de un cuadro dividiendo primero el cuadro en un conjunto de unidades de árbol de codificación (CTU). Un cuadro de video puede incluir un número entero de CTU ordenadas consecutivamente en un orden de exploración de tramas de izquierda a derecha y de arriba a abajo. Cada CTU es una unidad de codificación lógica más grande y la anchura y la altura de la CTU son señalizadas por el codificador de video 20 en un conjunto de parámetros de secuencia, de modo que todas las CTU en una secuencia de video tienen el mismo tamaño siendo uno de 128 x 128, 64 x64, 32x32 y 16x16. Pero se debe observar que la presente solicitud no se limita necesariamente a un tamaño particular. Como se muestra en la figura 4B, cada CTU puede comprender un bloque de árbol de codificación (CTB) de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma y elementos de sintaxis utilizados para codificar las muestras de los bloques de árbol de codificación. Los elementos de sintaxis describen propiedades de diferentes tipos de unidades de un bloque codificado de píxeles y cómo se puede reconstruir la secuencia de video en el decodificador de video 30, incluyendo inter o intrapredicción, modo de intrapredicción, vectores de movimiento y otros parámetros. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede comprender un solo bloque de árbol de codificación y elementos de sintaxis utilizados para codificar las muestras del bloque de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque de muestras NxN.
Para conseguir un mejor rendimiento, el codificador de video 20 puede realizar recursivamente una división en árbol, tal como una división en árbol binario, una división en árbol cuaternario o una combinación de ambas en los bloques de árbol de codificación de la CTU y dividir la CTU en unidades de codificación (CU) menores. Como se representa en la figura 4C, la CTU 400 de 64x64 se divide primero en cuatro CU menores, cada una con un tamaño de bloque de 32x32. Entre las cuatro CU menores, CU 4 l0 y CU 420 se dividen cada una en cuatro CU de 16x16 por tamaño de bloque. Las dos CU de 16x16430 y 440 se dividen cada una en cuatro CU de 8x8 por tamaño de bloque. La figura 4D representa una estructura de datos de árbol cuaternario que ilustra el resultado final del proceso de división de la CTU 400 como se representa en la figura 4C, cada nodo hoja del árbol cuaternario corresponde a una CU de un tamaño respectivo que oscila entre 32x32 y 8x8. Como la CTU representada en la figura 4B, cada CU puede comprender un bloque de codificación (CB) de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de un cuadro del mismo tamaño, y elementos de sintaxis utilizados para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una Cu puede comprender un solo bloque de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque de codificación.
En algunas implementaciones, el codificador de video 20 puede además dividir un bloque de codificación de una CU en uno o más bloques de predicción (PB) MxN. Un bloque de predicción es un bloque rectangular (cuadrado o no cuadrado) de muestras en el que se aplica la misma predicción, inter o intra. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y elementos de sintaxis usados para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis utilizadas para predecir el bloque de predicción. El codificador de video 20 puede generar bloques predictivos luma, Cb y Cr para bloques de predicción luma, Cb y Cr de cada PU de la CU.
El codificador de video 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de video 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de video 20 puede generar los bloques predictivos de la PU en base a muestras decodificadas del cuadro asociado con la PU. Si el codificador de video 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de video 20 puede generar los bloques predictivos de la PU en base a muestras decodificadas de uno o más cuadros distintos del cuadro asociado con la PU.
Después de que el codificador de video 20 genere bloques predictivos de luma, Cb y Cr, para una o más PU de una CU, el codificador de video 20 puede generar un bloque residual de luma para la CU restando los bloques de luma predictivos de la CU de su bloque de codificación de luma original de tal manera que cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. De manera similar, el codificador de video 20 puede generar un bloque residual Cb y un bloque residual Cr para la CU, respectivamente, de modo que cada muestra en el bloque residual Cb de la CU indique una diferencia entre una muestra Cb en uno de los bloques Cb predictivos de la CU y una muestra correspondiente en el bloque de codificación Cb original de la CU y cada muestra en el bloque residual Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques Cr predictivos de la CU y una muestra correspondiente en el bloque de codificación Cr original de la CU.
Además, como se ilustra en la figura 4C, el codificador de video 20 puede usar división de árbol cuaternario para descomponer los bloques residuales luma, Cb y Cr de una CU en uno o más bloques de transformada luma, Cb y Cr. Un bloque de transformada es un bloque rectangular (cuadrado o no cuadrado) de muestras en el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y elementos de sintaxis utilizados para transformar las muestras del bloque de transformada. Así, cada TU de una CU puede estar asociada con un bloque de transformada luma, un bloque de transformada Cb y un bloque de transformada Cr. En algunos ejemplos, el bloque de transformada luma asociado con la TU puede ser un subbloque del bloque residual luma de la CU. El bloque de transformada Cb puede ser un subbloque del bloque residual Cb de la CU. El bloque de transformada Cr puede ser un subbloque del bloque residual Cr de la CU. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una TU puede comprender un solo bloque de transformada y estructuras sintácticas utilizadas para transformar las muestras del bloque de transformada.
El codificador de video 20 puede aplicar una o más transformadas a un bloque de transformada luma de una TU para generar un bloque de coeficientes luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de video 20 puede aplicar una o más transformadas a un bloque de transformadas Cb de una TU para generar un bloque de coeficientes Cb para la TU. El codificador de video 20 puede aplicar una o más transformaciones a un bloque de transformada Cr de una TU para generar un bloque de coeficientes Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes luma, un bloque de coeficientes Cb o un bloque de coeficientes Cr), el codificador de video 20 puede cuantificar el bloque de coeficientes. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformada se ouantifioan para reducir posiblemente la cantidad de datos utilizados para representar Ios coeficientes de transformada, proporcionando una mayor compresión. Después de que el codificador de video 20 cuantifique un bloque de coeficientes, el codificador de video 20 puede codificar por entropía elementos de sintaxis que indiquen los coeficientes de transformada cuantificados. Por ejemplo, el codificador de video 20 puede realizar codificación aritmética binaria adaptable al contexto (CABAC) sobre los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Finalmente, el codificador de video 20 puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de cuadros codificados y datos asociados, que se guardan en el dispositivo de almacenamiento 32 o se transmiten al dispositivo de destino 14.
Después de recibir un flujo de bits generado por el codificador de video 20, el decodificador de video 30 puede analizar sintácticamente el flujo de bits para obtener elementos de sintaxis del flujo de bits. El decodificador de video 30 puede reconstruir los cuadros de los datos de video basándose al menos en parte en los elementos de sintaxis obtenidos del flujo de bits. El proceso de reconstrucción de los datos de video es generalmente recíproco al proceso de codificación realizado por el codificador de video 20. Por ejemplo, el decodificador de video 30 puede realizar transformadas inversas sobre los bloques de coeficientes asociados con las TU de una CU actual para reconstruir bloques residuales asociados con las TU de la CU actual. El decodificador de video 30 también reconstruye los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Después de reconstruir los bloques de codificación para cada CU de un cuadro, el decodificador de video 30 puede reconstruir el cuadro.
Como se indicó anteriormente, la codificación de video consigue compresión de video usando principalmente dos modos, es decir, predicción intracuadro (o intrapredicción) y predicción intercuadro (o interpredicción). Cabe señalar que IBC podría considerarse como una predicción intracuadro o como un tercer modo. Entre los dos modos, la predicción intercuadros contribuye más a la eficiencia de codificación que la predicción intra-cuadros debido al uso de vectores de movimiento para predecir un bloque de video actual a partir de un bloque de video de referencia.
Pero con la tecnología de captura de datos de video en constante mejora y el tamaño de bloque de video más refinado para preservar los detalles en los datos de video, la cantidad de datos necesarios para representar vectores de movimiento para un cuadro actual también aumenta sustancialmente. Una forma de superar este desafío es beneficiarse del hecho de que no solo un grupo de CU contiguas en los dominios espacial y temporal tienen datos de video similares para fines de predicción, sino que los vectores de movimiento entre estas CU contiguas también son similares. Por lo tanto, es posible usar la información de movimiento de CU espacialmente contiguas y/o CU colocalizadas temporalmente como una aproximación de la información de movimiento (por ejemplo, vector de movimiento) de una CU actual explorando su correlación espacial y temporal, que también se conoce como "predictor de vector de movimiento" (MVP) de la CU actual.
En lugar de codificar, en el flujo de bits de video, un vector de movimiento real de la CU actual determinado por la unidad de estimación de movimiento 42 como se ha descrito anteriormente en relación con la figura 2, el predictor de vector de movimiento de la CU actual se resta del vector de movimiento real de la CU actual para producir una diferencia de vectores de movimiento (MVD) para la CU actual. Al hacerlo, no hay necesidad de codificar el vector de movimiento determinado por la unidad de estimación de movimiento 42 para cada CU de un cuadro en el flujo de bits de video y la cantidad de datos utilizados para representar información de movimiento en el flujo de bits de video puede reducirse significativamente.
Al igual que el proceso de elegir un bloque predictivo en un cuadro de referencia durante la predicción intercuadros de un bloque de código, tanto el codificador de video 20 como el decodificador de video 30 tienen que adoptar un conjunto de reglas para construir una lista de candidatos de vectores de movimiento (también conocida como una "lista de fusión") para una CU actual utilizando esos vectores de movimiento candidatos potenciales asociados con CU espacialmente contiguas y/o CU colocalizadas temporalmente de la CU actual y después seleccionando un miembro de la lista de candidatos de vectores de movimiento como predictor de vectores de movimiento para la CU actual. Al hacerlo, no hay necesidad de transmitir la propia lista de candidatos de vectores de movimiento entre el codificador de video 20 y el decodificador de video 30, y un índice del predictor de vectores de movimiento seleccionado, dentro de la lista de candidatos de vectores de movimiento es suficiente para que el codificador de video 20 y el decodificador de video 30 usen el mismo predictor de vector de movimiento dentro de la lista de candidatos de vector de movimiento para codificar y decodificar la CU actual.
En algunas implementaciones, cada CU de interpredicción tiene tres modos de predicción de vectores de movimiento, que incluyen inter (que también se conoce como "predicción avanzada de vectores de movimiento" (AMVP)), saltar y fusionar para construir la lista de candidatos de vectores de movimiento. En cada modo, se pueden añadir uno o más candidatos de vectores de movimiento a la lista de candidatos de vectores de movimiento de acuerdo con los algoritmos que se describen a continuación. En última instancia, uno de estos en la lista de candidatos se usa como el mejor predictor de vector de movimiento de la CU de interpredicción para ser codificado en el flujo de bits de video por el codificador de video 20 o decodificado del flujo de bits de video por el decodificador de video 30. Para encontrar el mejor predictor de vector de movimiento de la lista de candidatos, se introduce un esquema de competencia de vectores de movimiento (MVC) para seleccionar un vector de movimiento de un conjunto de vectores de movimiento de candidatos dado, es decir, la lista de candidatos de vectores de movimiento, que incluye candidatos de vectores de movimiento espaciales y temporales.
Además de obtener candidatos de predictor de vector de movimiento de CU espacialmente contiguas o temporalmente colocalizadas, los candidatos de predictor de vector de movimiento también pueden obtenerse de la denominada tabla de "predicción de vector de movimiento basada en historial" (HMVP). La tabla HMVP alberga un número predefinido de predictores de vectores de movimiento, cada uno de los cuales se ha utilizado para codificar/decodificar una CU particular de la misma fila de CTU (o, a veces, la misma CTU). Debido a la proximidad espacial/temporal de estas CU, existe una alta probabilidad de que uno de los predictores de vector de movimiento en la tabla HMVP pueda reutilizarse para codificar/decodificar diferentes CU dentro de la misma fila de CTU. Por lo tanto, es posible conseguir una mayor eficiencia de código al incluir la tabla HMVP en el proceso de construcción de la lista de candidatos de vectores de movimiento.
En algunas implementaciones, la tabla HMVP tiene una longitud fija (por ejemplo, 5) y se administra de forma cuasi primera en entrar, primera en salir (FIFO). Por ejemplo, se reconstruye un vector de movimiento para una CU cuando se decodifica un bloque intercodificado de la CU. La tabla HMVP se actualiza sobre la marcha con el vector de movimiento reconstruido porque dicho vector de movimiento podría ser el predictor de vector de movimiento de una CU posterior. Cuando se actualiza la tabla HMVP, hay dos escenarios: (i) el vector de movimiento reconstruido es diferente de otros vectores de movimiento existentes en la tabla HMVP o (ii) el vector de movimiento reconstruido es el mismo que uno de los vectores de movimiento existentes en la tabla HMVP. Para el primer escenario, el vector de movimiento reconstruido se añade a la tabla HMVP como el más nuevo si la tabla HMVP no está llena. Si la tabla HMVP ya está llena, el vector de movimiento más antiguo de la tabla HMVP tiene que ser eliminado primero de la tabla HMVP antes de que el vector de movimiento reconstruido se añada como el más nuevo. En otras palabras, la tabla HMVP en este caso es similar a un búfer FIFO, de modo que la información de movimiento ubicada en la cabecera del búfer FIFO y asociada con otro bloque intercodificado previamente se saca del búfer para que el vector de movimiento reconstruido se añada a la cola del búfer FIFO como el miembro más nuevo en la tabla HMVP. Para el segundo escenario, el vector de movimiento existente en la tabla HMVP que es sustancialmente idéntico al vector de movimiento reconstruido se elimina de la tabla HMVP antes de que el vector de movimiento reconstruido se añada a la tabla HMVP como el más nuevo. Si la tabla HMVP también se mantiene en forma de búfer FIFO, los predictores de vector de movimiento después del vector de movimiento idéntico en la tabla HMVP se desplazan un elemento hacia adelante para ocupar el espacio dejado por el vector de movimiento eliminado, y el vector de movimiento reconstruido se añade después a la cola del búfer FIFO como el miembro más nuevo en la tabla HMVP.
Los vectores de movimiento en la tabla HMVP podrían añadirse a las listas de candidatos de vectores de movimiento en diferentes modos de predicción, tales como AMVP, fusionar, saltar, etc. Se ha encontrado que la información de movimiento de bloques intercodificados previamente, almacenados en la tabla HMVP incluso no adyacente al bloque actual, se puede utilizar para una predicción de vector de movimiento más eficiente.
Después de que se seleccione un candidato de MVP dentro del conjunto de vectores de movimiento de candidatos dados para una CU actual, el codificador de video 20 puede generar uno o más elementos de sintaxis para el candidato de MVP correspondiente y codificarlos en el flujo de bits de video de modo que el decodificador de video 30 puede recuperar el candidato MVP del flujo de bits de video usando los elementos de sintaxis. Dependiendo del modo específico utilizado para construir el conjunto de candidatos de vectores de movimiento, diferentes modos (por ejemplo, AMVP, fusionar, saltar, etc.) tienen diferentes conjuntos de elementos de sintaxis. Para el modo AMVP, los elementos de sintaxis incluyen indicadores de interpredicción (lista 0, lista 1 o predicción bidireccional), índices de referencia, índices de candidatos de vector de movimiento, señal residual de predicción de vector de movimiento, etc. Para el modo de salto y el modo de fusión, solo los índices de fusión se codifican en el flujo de bits porque la CU actual hereda los otros elementos de sintaxis, incluidos los indicadores de interpredicción, los índices de referencia y los vectores de movimiento de una CU contigua a la que hace referencia el índice de fusión codificado. En el caso de una CU codificada por salto, también se omite la señal residual de predicción del vector de movimiento.
La figura 5A es un diagrama de bloques que ilustra posiciones de bloque colocalizadas temporalmente y contiguas espacialmente de una CU actual que se va a codificar/decodificar de acuerdo con algunas implementaciones de la presente descripción. Para un modo dado, se construye una lista de candidatos de predicción de vector de movimiento (MVP) verificando primero la disponibilidad de vectores de movimiento asociados con las posiciones de bloque contiguas espacialmente izquierdas y superiores, y la disponibilidad de vectores de movimiento asociados con posiciones de bloque colocalizadas temporalmente y después los vectores de movimiento en la tabla HMVP. Durante el proceso de construcción de la lista de candidatos de MVP, algunos candidatos de MVP redundantes se eliminan de la lista de candidatos y, si es necesario, se añade un vector de movimiento de valor cero para que la lista de candidatos tenga una longitud fija (cabe señalar que los diferentes modos pueden tener diferentes longitudes fijas). Después de la construcción de la lista de candidatos de MVP, el codificador de video 20 puede seleccionar el mejor predictor de vector de movimiento de la lista de candidatos y codificar el índice correspondiente que indica el candidato elegido en el flujo de bits de video.
Usando la figura 5A como ejemplo y suponiendo que la lista de candidatos tiene una longitud fija de dos, la lista de candidatos del predictor de vector de movimiento (MVP) para la CU actual se puede construir realizando las siguientes etapas en orden en el modo AMVP:
1) Selección de candidatos de MVP a partir de CU espacialmente contiguas
a) Obtener hasta un candidato MVP no escalado de una de las dos CU contiguas espaciales izquierdas comenzando con A0 y terminando con A1;
b) Si no hay ningún candidato MVP no escalado de la izquierda disponible en la etapa anterior, obtener hasta un candidato MVP escalado de una de las dos CU contiguas espaciales izquierdas comenzando con A0 y terminando con A1;
c) Obtener hasta un candidato MVP no escalado de una de las tres CU contiguas espaciales anteriores, comenzando con B0, después B1 y terminando con B2;
d) Si ni A0 ni A1 están disponibles o si están codificados en modos intra, obtener hasta un candidato de MVP escalado de una de las tres CU contiguas espaciales anteriores, comenzando con B0, después B1 y terminando con B2;
2) Si se encuentran dos candidatos de MVP en las etapas anteriores y son idénticos, eliminar uno de los dos candidatos de la lista de candidatos de MVP;
3) Selección de candidatos de MVP a partir de CU ubicadas temporalmente
a) Si la lista de candidatos de MVP después de la etapa anterior no incluye dos candidatos de MVP, obtener hasta un candidato a MVP de las CU colocalizadas temporalmente (por ejemplo, T0) 4) Selección de candidatos de MVP de la tabla HMVP
a) Si la lista de candidatos de MVP después de la etapa anterior no incluye dos candidatos de MVP, obtener hasta dos MVP basados en el historial de la tabla HMVP; y
5) Si la lista de candidatos de MVP después de la etapa anterior no incluye dos candidatos de MVP, añadir hasta dos MVP de valor cero a la lista de candidatos de MVP.
Dado que solo hay dos candidatos en la lista de candidatos de MVP en modo AMVP construida anteriormente, un elemento de sintaxis asociado, como un indicador binario, se codifica en el flujo de bits para indicar cuál de los dos candidatos de MVP dentro de la lista de candidatos se usa para decodificar la Cu actual.
En algunas implementaciones, la lista de candidatos de MVP para la CU actual en el modo de salto o fusión se puede construir realizando un conjunto similar de etapas en orden como las anteriores. Se observa que un tipo especial de candidato de fusión denominado "candidato de fusión por pares" también se incluye en la lista de candidatos de MVP para el modo de salto o fusión. El candidato de fusión por pares se genera promediando los MV de los dos candidatos de vector de movimiento de modo de fusión obtenidos previamente. El tamaño de la lista de candidatos de MVP de fusión (por ejemplo, de 1 a 6) se señaliza en un encabezado de segmento de la CU actual. Para cada CU en el modo de fusión, se codifica un índice del mejor candidato de fusión utilizando binarización unaria truncada (TU). El primer contenedor del índice de fusión está codificado con contexto y se usa codificación por omisión para otros contenedores.
Como se mencionó anteriormente, los MVP basados en el historial se pueden añadir a la lista de candidatos de MVP en modo AMVP o a la lista de candidatos de MVP de fusión después del MVP espacial y el MVP temporal. La información de movimiento de una CU intercodificada previamente se almacena en la tabla HMVP y se utiliza como candidato a MVP para la CU actual. La tabla HMVP se mantiene durante el proceso de codificación/decodificación. Siempre que haya una CU intercodificada que no sea un subbloque, la información del vector de movimiento asociado se añade a la última entrada de la tabla HMVP como un nuevo candidato, mientras que la información del vector de movimiento almacenada en la primera entrada de la tabla HMVP se elimina de allí (si la tabla HMVP ya está llena y no hay un duplicado idéntico de la información del vector de movimiento asociado en la tabla). Alternativamente, el duplicado idéntico de la información del vector de movimiento asociado se elimina de la tabla antes de que la información del vector de movimiento asociado se añada a la última entrada de la tabla HMVP. Como se indicó anteriormente, la copia intrabloque (IBC) puede mejorar significativamente la eficiencia de codificación de los materiales de contenido de pantalla. Dado que el modo IBC se implementa como un modo de codificación a nivel de bloques, la coincidencia de bloques (BM) se realiza en el codificador de video 20 para encontrar un vector de bloques óptimo para cada CU. Aquí, se usa un vector de bloque para indicar el desplazamiento del bloque actual a un bloque de referencia, que ya ha sido reconstruido dentro de la imagen actual. Un modo IBC se trata como el tercer modo de predicción distinto de los modos de intra o interpredicción.
A nivel de CU, el modo IBC se puede señalizar como modo AMVP de IBC o modo de salto/fusión de IBC, de la siguiente manera:
- Modo AMVP de IBC: una diferencia de vectores de bloque (BVD) entre el vector de bloque real de una CU y un predictor de vector de bloque de la CU seleccionado de los candidatos de vector de bloque de la CU se codifica de la misma manera que una diferencia de vectores de movimiento se codifica bajo el modo AMVP descrito anteriormente. El método de predicción de vector de bloque utiliza dos candidatos de vector de bloque como predictores, uno del vecino izquierdo y el otro del vecino superior (si está codificado como IBC). Cuando ninguno de los vecinos está disponible, se utilizará un vector de bloque por defecto como predictor de vector de bloque. Se señala un indicador binario para indicar el índice del predictor de vector de bloque. La lista de candidatos de AMVP de IBC consta de candidatos espaciales y HMVP.
- Modo de salto/fusión de IBC: se utiliza un índice de candidato de fusión para indicar cuál de los candidatos de vector de bloque en la lista de candidatos de fusión (también conocida como "lista de fusión") de los bloques codificados IBC contiguos se usa para predecir el vector de bloque para el bloque actual. La lista de candidatos de fusión de IBC consta de candidatos espaciales, HMVP y por pares.
Otro enfoque para mejorar la eficiencia de codificación adoptado por el estándar de codificación de última generación es introducir el procesamiento paralelo al proceso de codificación/decodificación de video usando, por ejemplo, un procesador multinúcleo. Por ejemplo, el procesamiento paralelo de frente de onda (WPP) ya se ha introducido en HEVC como una función de codificación o decodificación de CTU de múltiples filas en paralelo utilizando múltiples hilos.
La figura 5B es un diagrama de bloques que ilustra la codificación multihilo de múltiples filas de CTU de una imagen usando procesamiento paralelo de frente de onda (WPP) de acuerdo con algunas implementaciones de la presente descripción. Cuando WPP está habilitado, es posible procesar múltiples filas de CTU en paralelo en forma de frente de onda, donde puede haber un retraso de dos CTU entre el inicio de dos frentes de onda contiguos. Por ejemplo, para codificar la imagen 500 utilizando WPP, un codificador de video, como el codificador de video 20 y el decodificador de video 30, puede dividir las unidades de árbol de codificación (CTU) de la imagen 500 en una pluralidad de frentes de onda, correspondiendo cada frente de onda a un respectivo fila de CTU en la imagen. El codificador de video puede comenzar a codificar un frente de onda superior, por ejemplo, utilizando un primer hilo o núcleo codificador. Después de que el codificador de video haya codificado dos o más CTU del frente de onda superior, el codificador de video puede comenzar a codificar un frente de onda siguiente al superior en paralelo con la codificación del frente de onda superior, por ejemplo, utilizando un segundo hilo o núcleo de codificador paralelo. Después de que el codificador de video haya codificado dos o más CTU del frente de onda siguiente al superior, el codificador de video puede comenzar a codificar un tercer frente de onda desde el superior en paralelo con la codificación de los frentes de onda superiores, por ejemplo, utilizando un tercer núcleo de codificador paralelo o hilo. Este patrón puede continuar a lo largo de los frentes de onda en la imagen 500. En la presente descripción, un conjunto de CTU que un codificador de video está codificando simultáneamente, utilizando WPP, se denomina "grupo CTU". Por lo tanto, cuando el codificador de video usa WPP para codificar una imagen, cada CTU del grupo de CTU puede pertenecer a un frente de onda único de la imagen y la CTU puede estar desplazada de una CTU en un frente de onda anterior respectivo por al menos dos columnas de CTU de la imagen
El codificador de video puede inicializar un contexto para un frente de onda actual para realizar la codificación aritmética binaria adaptable al contexto (CABAC) del frente de onda actual en función de los datos de los dos primeros bloques del frente de onda anterior, así como uno o más elementos de un encabezado de segmento para un segmento que incluye el primer bloque de código del frente de onda actual. El codificador de video puede realizar la inicialización CABAC de un frente de onda posterior (o fila de CTU) utilizando los estados de contexto después de codificar dos CTU de una fila de CTU por encima de la fila de CTU posterior. En otras palabras, antes de comenzar la codificación de un frente de onda actual, un codificador de video (o más específicamente, un hilo del codificador de video) puede codificar al menos dos bloques de un frente de onda por encima del frente de onda actual, asumiendo que el frente de onda actual no es la fila de CTU superior de una imagen. El codificador de video puede entonces inicializar un contexto CABAC para el frente de onda actual después de codificar al menos dos bloques de un frente de onda por encima del frente de onda actual. En este ejemplo, cada fila de CTU de la imagen 500 es una división separada y tiene un hilo asociado (hilo WPP 1, hilo WPP 2, ...) de modo que el número de filas de CTU en la imagen 500 se puede codificar en paralelo.
Debido a que la implementación actual de la tabla HMVP utiliza un búfer de vector de movimiento (MV) global para almacenar vectores de movimiento previamente reconstruidos, esta tabla HMVP no se puede implementar en el esquema de codificación paralelo habilitado para WPP descrito anteriormente en relación con la figura 5B. En particular, el hecho de que el búfer de MV global sea compartido por todos los hilos del proceso de codificación/decodificación de un codificador de video evita que se inicien los hilos WPP después del primer hilo WPP (es decir, hilo WPP 1) ya que estos hilos WPP tienen que esperar a que se complete la actualización de la tabla HMVP desde la última CTU (es decir, la CTU más a la derecha) del primer hilo WPP (es decir, la primera fila de CTU).
Para solucionar el problema, se propone que el búfer de MV global compartido por los hilos WPP se reemplace con múltiples búferes dedicados a filas de CTU, de modo que cada frente de onda de la fila de CTU tenga su propio búfer para almacenar una tabla HMVP correspondiente a la fila de CTU que se está procesando por un hilo WPP correspondiente cuando WPP está habilitado en el codificador de video. Se observa que cada fila de CTU que tiene su propia tabla HMVP es equivalente a restablecer la tabla HMVP antes de codificar una primera CU de la fila de CTU. El restablecimiento de la tabla HMVP consiste en eliminar todos los vectores de movimiento de la tabla HMVP resultantes de la codificación de otra fila de CTU. En una implementación, la operación de restablecimiento es establecer a cero el tamaño de los predictores de vector de movimiento disponibles en la tabla HMVP. En otra implementación más, las operaciones de restablecimiento podrían ser establecer el índice de referencia de todas las entradas en la tabla HMVP a un valor no válido, tal como -1. Al hacerlo, la construcción de la lista de candidatos de MVP para una CTU actual dentro de un frente de onda particular, independientemente de cuál de los tres modos, AMVP, fusionar y saltar, depende de una tabla HMVP asociada con un hilo WPP que procesa el frente de onda particular. No hay interdependencia entre diferentes frentes de onda que no sea el retardo de dos CTU descrito anteriormente y la construcción de listas de candidatos de vectores de movimiento asociadas con diferentes frentes de onda puede proceder en paralelo como el proceso WPP representado en la figura 5B. En otras palabras, al comienzo del procesamiento de un frente de onda en particular, la tabla HMVP se restablece para estar vacía sin afectar la codificación de otro frente de onda de CTU por otro hilo WPP. En algunos casos, la tabla HMVP se puede restablecer para que esté vacía antes de la codificación de cada CTU individual. En este caso, los vectores de movimiento en la tabla HMVP están limitados a una CTU particular y probablemente haya una mayor probabilidad de que un vector de movimiento dentro de la tabla HMVP sea seleccionado como vector de movimiento de una CU actual dentro de la CTU particular.
Las figuras 6A y 6B son diagramas de bloques que ilustran un bloque de luma reconstruido 602 de ejemplo y un bloque de croma 620 asociado de ejemplo, respectivamente, de acuerdo con algunas implementaciones de la presente descripción. En este ejemplo, las muestras de luma del bloque de luma reconstruido 602 (por ejemplo, la muestra de luma 604), el grupo de luma contiguo superior 606 (por ejemplo, la muestra de luma 608) y el grupo de luma contiguo izquierdo 610 (por ejemplo, la muestra de luma 613) se han predicho durante un proceso de codificación de video. Las muestras de croma del bloque de croma 620 han de predecirse, mientras que las muestras de croma del grupo de croma contiguo superior 624 (por ejemplo, la muestra de croma 626) y el grupo de croma contiguo izquierdo 628 (por ejemplo, la muestra de croma 630) se han predicho durante el proceso de codificación de video. En algunas realizaciones, las muestras de croma del bloque de croma 620 se pueden predecir aplicando un modelo lineal de componentes cruzados (CCLM) a las correspondientes muestras de luma submuestreadas del bloque de luma reconstruido 602. La obtención y aplicación del CCLM se dan a conocer a continuación en relación con las figuras 7A-7E.
En algunas realizaciones, el bloque de luma 602 y el bloque de croma 620 reconstruidos representan cada uno un componente diferente de una parte de un cuadro de video reconstruido. Por ejemplo, en el espacio de color YCbCr, una imagen se representa mediante un componente de luma (Y), un componente de croma de diferencia de azul (Cb) y un componente de croma de diferencia de rojo (Cr). El bloque de luma reconstruido 602 representa el componente de luma (es decir, el brillo) de una parte del cuadro de video, y el bloque de croma 620 representa un componente de croma (es decir, el color) de la misma parte del cuadro de video. Una muestra de luma (por ejemplo, la muestra de luma 604) del bloque de luma reconstruido 602 tiene un valor de luma que representa el brillo en un píxel particular del cuadro de video, y una muestra de croma (por ejemplo, la muestra de croma 622) tiene un valor de croma que representa el color en un píxel particular del cuadro de video.
En algunas realizaciones, el bloque de luma reconstruido 602 es un bloque de 2M x 2N con 2M muestras de luma a través de la anchura del bloque y 2N muestras de luma a través de la altura del bloque. M y N pueden tener el mismo valor (por ejemplo, el bloque de luma reconstruido 602 es un bloque cuadrado) o valores diferentes (por ejemplo, el bloque de luma reconstruido 602 es un bloque no cuadrado).
El submuestreo de croma es una técnica de compresión común dado que el sistema visual humano es menos sensible a la diferencia de color que a la diferencia de brillo. Como resultado, el bloque de luma 602 y el bloque de croma 620 reconstruidos pueden representar la misma parte de un cuadro de video pero están codificados con diferentes resoluciones. Por ejemplo, el cuadro de video puede haber sido codificado usando un esquema de submuestreo de croma (por ejemplo, 4:2:0 o 4:2:2) para codificar la información de croma, más que la información de luma con menos resolución. Como se ilustra en las figuras 6A y 6B, el bloque de luma reconstruido 602 está codificado con una resolución de 2M x 2N, mientras que el bloque de croma 620 está codificado con una menor resolución de M x N. En la práctica, el bloque de croma 620 puede tener otra resolución como 2M x 2N (por ejemplo, muestreo completo 4:4:4), 2M x N (por ejemplo, submuestreo 4:4:0), M x 2N (por ejemplo, submuestreo 4:2:2) y / M x 2N (por ejemplo, submuestreo 4:1:1).
El bloque de luma reconstruido 602 está al lado del grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610. El tamaño del grupo de luma contiguo superior y el grupo de luma contiguo izquierdo pueden señalizarse explícitamente o depender del tamaño del bloque de luma reconstruido 602. Por ejemplo, el grupo de luma contiguo superior 606 puede tener una anchura de 2M muestras (por ejemplo, igual que la anchura del bloque de luma reconstruido 602) o 4M muestras (por ejemplo, el doble de la anchura del bloque de luma reconstruido 602), y una altura de 2 muestras. El grupo de luma contiguo izquierdo 610 puede tener una anchura de 2 muestras, con una altura de 2N o 4N muestras. En algunas realizaciones, el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610 son cada uno una porción de otro bloque o bloques de luma del mismo cuadro de video que han sido reconstruidos.
El bloque de croma 620 está al lado del grupo de croma contiguo superior 624 y del grupo contiguo izquierdo 628. El tamaño del grupo de croma contiguo superior 624 y del grupo contiguo izquierdo 628 puede señalizarse explícitamente o depender del tamaño del bloque de croma 620. Por ejemplo, el grupo de croma contiguo superior 624 puede tener un tamaño de 1 x M, y el grupo de croma contiguo izquierdo 628 puede tener un tamaño de N x 1.
En algunas realizaciones, los valores de croma (por ejemplo, los valores de croma para el bloque de croma 620) se pueden predecir en base a los valores de luma de las muestras de luma reconstruidas (por ejemplo, la muestra de luma 604). Por ejemplo, bajo el supuesto de que existe una relación lineal o casi lineal entre valores de luma y valores de croma correspondientes de un cuadro de video, un códec de video puede predecir valores de croma en función de valores de luma reconstruidos correspondientes utilizando el CCLM. Al hacerlo, el códec de video puede ahorrar una cantidad significativa de tiempo y ancho de banda para codificar los valores de croma, transmitir los valores de croma codificados y decodificar los valores de croma codificados. Para usar el CCLM para predecir muestras de croma a partir de muestras de luma, el códec de video (1) obtiene un modelo lineal entre las muestras de croma y las muestras de luma, y (2) aplica el modelo lineal a muestras de luma reconstruidas que corresponden a las muestras de croma a predecir.
En algunas realizaciones, dado que los bloques de luma y los bloques de croma tienen resoluciones diferentes (por ejemplo, los bloques de croma se han submuestreado), el códec de video primero realiza un submuestreo sobre las muestras de luma para generar muestras de luma submuestreadas (por ejemplo, muestras de luma submuestreadas 605, 609 y 612) que corresponden únicamente a muestras de croma respectivas. En algunas realizaciones, se utilizan seis muestras de luma reconstruidas contiguas, tanto en la dirección de la altura como de la anchura del cuadro de video para generar una muestra de luma submuestreada (por ejemplo, esquemas de promedio ponderado conocidos en la técnica que incluyen submuestreo de seis parámetros o similar) . Por ejemplo, las seis muestras de luma reconstruidas dentro de la región 611 (cada una representada por una pequeña caja en la figura) dentro del grupo de luma contiguo superior se utilizan para generar una muestra de luma submuestreada 609 mediante promediar sus valores de luma correspondientes, y las seis muestras de luma reconstruidas dentro de la región 607 (cada una representada por una pequeña caja en la figura) dentro del bloque de luma reconstruido 602 se utilizan para generar una muestra de luma submuestreada 605. Alternativamente, una muestra de luma submuestreada se genera identificando una muestra de luma reconstruida en una región de interés, o usando un número diferente de muestras de luma reconstruidas en una región de una forma diferente.
En algunas realizaciones, para conducir el modelo lineal, el códec de video usa un método Máx-Mín mediante identificar el máximo y el mínimo de muestras de luma submuestreadas (por ejemplo, las muestras de luma submuestreadas que tienen los valores de luma máximo y mínimo, respectivamente) y las muestras de croma reconstruidas correspondientes, y ajustar un modelo lineal (por ejemplo, Y = a X p) a través de los puntos de datos máximo y mínimo (por ejemplo, el punto de datos máximo incluye la muestra de luma submuestreada que tiene el valor de luma máximo y la muestra de croma reconstruida correspondiente, y el punto de datos mínimo incluye la muestra de luma submuestreada que tiene el valor de luma mínimo y la muestra de croma reconstruida correspondiente). Después de obtener el modelo lineal, el códec de video aplica el modelo lineal a muestras de luma submuestreadas en el bloque de luma reconstruido 602 para generar las muestras de croma correspondientes del bloque de croma 620. El códec de video puede obtener los puntos de datos máximo y mínimo de la siguiente manera:
1. En algunas realizaciones, el códec de video busca en un grupo de muestras de luma submuestreadas (por ejemplo, un grupo seleccionado de muestras de luma submuestreadas en el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610) para identificar la muestra de luma submuestreada máxima y la muestra de luma submuestreada mínima. A continuación, el códec de video identifica muestras de croma reconstruidas previamente (por ejemplo, muestras de croma reconstruidas en el grupo de croma contiguo superior 624 y el grupo de croma contiguo izquierdo 628) correspondientes a las muestras de luma submuestreadas máxima y mínima, como se describe a continuación en relación con la figura 7A y la descripción relacionada para obtener detalles sobre esta implementación.
2. En algunas realizaciones, el códec de video busca en un grupo de muestras de luma reconstruidas (por ejemplo, un grupo seleccionado de muestras de luma reconstruidas en el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610) para identificar (i) una muestra de luma reconstruida que tenga el valor de luma máximo y (ii) una muestra de luma reconstruida que tenga el valor de luma mínimo en el grupo seleccionado de muestras de luma reconstruidas sin realizar submuestreo sobre el grupo seleccionado de muestras de luma reconstruidas para identificar las muestras de luma reconstruidas máxima y mínima. A continuación, el códec de video realiza un submuestreo en una región (por ejemplo, una región con seis muestras que utilizan esquemas de promedio ponderado conocidos en la técnica que incluyen submuestreo de seis parámetros o similar) asociada con las muestras de luma reconstruidas máxima y mínima para generar una muestra de luma submuestreada como la muestra de luma reconstruida máxima (que puede o no ser exactamente la muestra de luma submuestreada máxima) y una muestra de luma submuestreada como la muestra de luma reconstruida mínima (que puede o no ser exactamente la muestra de luma submuestreada mínima). A continuación, el códec de video identifica una muestra de croma reconstruida (por ejemplo, en el grupo de croma contiguo superior 624 y en el grupo de croma contiguo izquierdo 628) correspondiente a la muestra de luma submuestreada identificada como la muestra de luma reconstruida máxima, y una muestra de croma reconstruida correspondiente a la muestra de luma submuestreada identificada como la muestra de luma reconstruida mínima, como se describe a continuación en relación con la figura 7B y la descripción relacionada para obtener detalles sobre esta implementación.
3. En algunas realizaciones, el códec de video busca en un grupo de muestras de croma reconstruidas (por ejemplo, muestras de croma seleccionadas en el grupo de croma contiguo superior 624 y en el grupo de croma contiguo izquierdo 628) para identificar las muestras de croma reconstruidas máxima y mínima (por ejemplo, las muestras de croma que tienen los valores de croma máximo y mínimo, respectivamente). El códec de video después identifica las muestras de luma submuestreadas (por ejemplo, muestras de luma submuestreadas en el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610) correspondientes a las muestras de croma reconstruidas máxima y mínima, como se describe a continuación en relación con la figura 7C y la descripción relacionada para obtener detalles sobre esta implementación.
4. En algunas realizaciones, el códec de video busca en un grupo de muestras de luma submuestreadas (por ejemplo, un grupo seleccionado de muestras de luma submuestreadas en el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610) para identificar un número predefinido (por ejemplo, dos) de muestras de luma submuestreadas que tienen los valores de luma mayores) y un número predefinido (por ejemplo, dos) de muestras de luma submuestreadas que tienen los menores valores de luma. A continuación, el códec de video identifica las muestras de croma reconstruidas en el grupo de croma contiguo superior 624 y el grupo de croma contiguo izquierdo 628, respectivamente, cada uno correspondiente a uno respectivo del grupo de muestras de luma submuestreadas máximas y el grupo de muestras de luma submuestreadas mínimas, respectivamente. A continuación, el códec de video realiza un promedio ponderado de valores (por ejemplo, valores de croma o de luma) dentro de cada uno de los grupos identificados de croma reconstruida y muestras de luma submuestreadas para generar un valor de croma promediado máximo, un valor de croma promediado mínimo, un valor de luma submuestreado promediado máximo (por ejemplo, del grupo de muestras de luma submuestreadas máximas) y un valor de luma submuestreado mínimo promediado (por ejemplo, del grupo de muestras de luma submuestreadas mínimas), como se describe a continuación en relación con las figuras 7D y 7E y la descripción relacionada para obtener detalles sobre esta implementación.
Las figuras 7A-7E ilustran varios enfoques de uso de CCMI, para obtener un modelo lineal entre valores de luma y valores de croma de acuerdo con algunas implementaciones de la presente descripción. En particular, cada punto de datos circular (por ejemplo, el punto 702a) en un gráfico representa un par de muestras de croma reconstruidas en el eje horizontal y una muestra de luma reconstruida correspondiente en el eje vertical. Por ejemplo, una muestra de croma reconstruida corresponde a una muestra de luma reconstruida si una muestra de luma submuestreada se generó en parte utilizando la muestra de luma reconstruida (por ejemplo, usando esquemas de promedio ponderado conocidos en la técnica incluyendo submuestreo de seis parámetros o similar) corresponde a la muestra de croma reconstruida. Cada punto de datos cuadrado (por ejemplo, el punto 702b) en el gráfico representa un par de muestras de croma reconstruidas en el eje horizontal y una muestra de luma submuestreada correspondiente en el eje vertical. En algunas realizaciones, dado que se utilizan múltiples muestras de luma reconstruidas para generar una muestra de luma submuestreada (por ejemplo, usando los esquemas de promedio ponderado conocidos en la técnica que incluyen submuestreo de seis parámetros o similar), un punto de datos cuadrado está asociado con múltiples puntos de datos circulares. El rectángulo punteado (por ejemplo, el rectángulo punteado 703) indica que el punto de datos cuadrado abarcado y los puntos de datos circulares están asociados (por ejemplo, la muestra de luma submuestreada correspondiente al punto de datos cuadrado se genera a partir de las muestras de luma reconstruidas correspondientes a los puntos de datos circulares). Con fines ilustrativos, solo se muestran un punto de datos cuadrado y un punto de datos circular dentro de un rectángulo punteado, aunque en la práctica real, cada rectángulo punteado puede incluir múltiples puntos de datos circulares y un punto de datos cuadrado.
En algunas realizaciones, el códec de video busca en las muestras de luma submuestreadas (por ejemplo, muestras de luma submuestreadas 609 y 612 de la figura 6A) para identificar muestras de luma submuestreadas que tengan los valores de luma máximo y mínimo y las correspondientes muestras de croma reconstruidas para obtener el modelo lineal. Por ejemplo, en la figura 7A, el punto de datos cuadrado 702b representa una muestra de luma submuestreada que tiene el valor de luma mínimo del grupo seleccionado de muestras de luma submuestreadas y una muestra de croma reconstruida correspondiente, y el punto de datos cuadrado 704b representa una muestra de luma submuestreada que tiene el valor de luma máximo y una muestra de croma reconstruida correspondiente. Como resultado, un ajuste lineal a través del punto 702b y el punto 704b representa el modelo lineal para predecir muestras de croma (por ejemplo, la muestra de croma 622 del bloque de croma 620 en la figura 6B) a partir de muestras de luma submuestreadas (por ejemplo, muestras de luma submuestreadas 605 del bloque de luma 602 en la figura 6A).
La generación de muestras de luma submuestreadas es una tarea intensiva desde el punto de vista oomputacional, dado que la mayor parte de las muestras de luma submuestreadas se utilizan muy poco en el método Máx-Mfn, En algunas realizaciones, en lugar de realizar un submuestreo de todas las muestras de luma, el códec de video busca directamente muestras de luma reconstruidas (por ejemplo, las muestras de luma reconstruidas 608 y 613 de la figura 6A) para identificar muestras de luma reconstruidas que tienen los valores de luma máximo y mínimo. Como se ilustra en la figura 7B, el punto de datos circular 702a representa una muestra de luma reconstruida que tiene el valor de luma mínimo y una muestra de croma reconstruida correspondiente, y el punto de datos circular 706a representa una muestra de luma reconstruida que tiene el valor de luma máximo y una muestra de croma reconstruida correspondiente. Después de identificar las muestras de luma reconstruidas mínima y máxima (punto de datos circular 702a y 706a), el códec de video realiza, a continuación, un submuestreo en una región que incluye las muestras de luma reconstruidas mínima y máxima (por ejemplo, utilizando esquemas de promedio ponderado conocidos en la técnica que incluyen submuestreo de seis parámetros o similar) para generar muestras de luma submuestreadas casi mínimas y máximas correspondientes (representadas por los puntos de datos cuadrados 702b y 706b en la figura 7B, que pueden o no ser iguales que los puntos de datos cuadrados 702b y 704b en la figura 7A). El ajuste lineal que pasa por los puntos de datos cuadrados 702b y 706b en la figura 7B representa el modelo lineal para predecir muestras de croma a partir de muestras de luma reconstruidas. En comparación con el método utilizado en la figura 7A, solo se realizan dos operaciones de submuestreo. La muestra de luma submuestreada mínima identificada es la misma que la utilizada en la figura 7A, mientras que la muestra de luma submuestreada máxima es diferente de la utilizada en la figura 7A.
En algunas realizaciones, el códec de video genera el modelo lineal usando las muestras de luma reconstruidas con los valores de luma máximo y mínimo, y renuncia a realizar un submuestreo. En la figura 7C, no se realiza submuestreo en muestras de luma reconstruidas, y se genera un modelo lineal ajustando una línea a través de los puntos de datos circulares 702a y 706a directamente.
En algunas realizaciones, en lugar de buscar muestras de luma submuestreadas (o muestras de luma reconstruidas) con valores de luma máximo y mínimo, el códec de video primero busca muestras de croma reconstruidas que tengan los valores de croma máximo y mínimo. Una vez se identifican las muestras de croma reconstruidas máxima y mínima, el códec de video calcula, a continuación, las muestras de luma submuestreadas correspondientes para generar el modelo lineal. En la figura 7D, el punto de datos circular 708a representa la muestra de croma reconstruida que tiene el valor de croma mínimo, y el punto de datos circular 704a representa la muestra de croma reconstruida que tiene el valor de croma máximo. A continuación, el códec de video genera un ajuste de modelo lineal a través del punto de datos cuadrado 708b (que representa una muestra de luma submuestreada generada en parte usando la muestra de luma reconstruida del punto de datos circular 708a) y el punto de datos cuadrado 704b (que representa una muestra de luma submuestreada generada en parte utilizando la muestra de luma reconstruida del punto de datos circular 704a).
De acuerdo con la presente invención, el códec de video selecciona dos muestras de luma submuestreadas que tienen los mayores valores de luma, y dos muestras de luma submuestreadas que tienen los menores valores de luma. A continuación, el códec de video busca los grupos máximo y mínimo correspondientes de muestras de croma reconstruidas. El códec de video realiza una operación de promedio dentro de cada grupo y utiliza los valores de luma y de croma promediados para generar un modelo lineal. En la figura 7E, las dos mayores muestras de luma submuestreadas (puntos de datos cuadrados 710b y 704b) y las dos menores muestras de luma submuestreadas (puntos de datos cuadrados 708b y puntos de datos cuadrados 702b) se usan para generar el modelo lineal.
La figura 8 es un diagrama de flujo que ilustra un proceso ejemplar 700 mediante el cual un códec de video implementa las técnicas de usar un modelo lineal de componentes cruzados para reconstruir muestras de croma para un bloque de croma basado en muestras de luma reconstruidas de un bloque de luma. El proceso 700 puede implementarse durante un proceso de decodificación o un proceso de codificación.
Como primera etapa, el códec de video reconstruye un bloque de luma correspondiente a un bloque de croma (810). El bloque de croma (por ejemplo, el bloque de croma 620 de la figura 6B) se reconstruirá posteriormente a partir del bloque de luma reconstruido y puede tener una resolución diferente a la del bloque de luma reconstruido (por ejemplo, el bloque de luma reconstruido 602 de la figura 6A). El bloque de luma corresponde al bloque de croma, dado que estos representan diferentes componentes (por ejemplo, componente de brillo y componente de color, respectivamente) de la misma parte de un cuadro de video. En algunas realizaciones, el bloque de luma es adyacente a una pluralidad de muestras de luma contiguas previamente reconstruidas (por ejemplo, muestras de luma reconstruidas en el grupo de luma contiguo superior 606 y el grupo de luma contiguo izquierdo 610 de la figura 6A), y el bloque de croma es adyacente a una pluralidad de muestras de croma contiguas previamente reconstruidas (por ejemplo, muestras de croma reconstruidas en el grupo de croma contiguo superior 624 y el grupo de croma contiguo izquierdo 628 de la figura 6A). Cabe señalar que el término "adyacente a" en esta solicitud no se limita a "inmediatamente al lado" y también cubre la situación en la que el bloque de codificación no está inmediatamente al lado de las muestras de luma/croma. En algunas realizaciones, el códec de video predice muestras de croma en el bloque de croma obteniendo un modelo lineal de componentes cruzados y aplica el modelo a muestras de luma reconstruidas (o muestras de luma reconstruidas submuestreadas en el bloque de luma).
A continuación, el codee de video busca un subgrupo de la pluralidad de muestras de luma contiguas reconstruidas en un orden predefinido para identificar al menos una muestra de luma máxima o casi máxima y al menos una muestra de luma mínima o casi mínima (820). En algunas realizaciones, el subgrupo de la pluralidad de muestras de luma contiguas reconstruidas cubre toda la pluralidad de muestras de luma contiguas reconstruidas. Por ejemplo, el códec de video puede buscar todas las muestras de luma en las muestras de luma contiguas o hasta un número predefinido de muestras de luma contiguas. En algunas realizaciones, el códec de video busca las muestras de luma contiguas según el orden de exploración de la tramas, de izquierda a derecha, de arriba abajo, o en cualquier combinación de estos órdenes. En algunas realizaciones, las muestras de luma contiguas incluyen aquellas muestras espacialmente en la parte superior del bloque de luma (por ejemplo, el grupo de croma contiguo superior 624) y aquellas muestras a la izquierda del bloque de luma (por ejemplo, el grupo de croma contiguo izquierdo 610). El códec de video puede buscar solo las muestras de croma contiguas superiores o las muestras de croma contiguas izquierdas.
Después de identificar las muestras de luma máxima y mínima, el códec de video calcula al menos una muestra de luma máxima submuestreada y al menos una muestra de luma mínima submuestreada correspondiente a las muestras de luma máxima y mínima identificadas, respectivamente (830 y 840). Por ejemplo, el códec de video puede utilizar la técnica de submuestreo de seis parámetros para generar una muestra de luma submuestreada (por ejemplo, mediante promedio ponderado) a partir de seis muestras de luma reconstruidas contiguas (por ejemplo, dispuestas de forma 3x2 o 2x3). La muestra de luma máxima submuestreada y la muestra de luma mínima submuestreada corresponden cada una a una muestra de croma reconstruida respectiva (por ejemplo, la primera muestra de croma contigua reconstruida y la segunda muestra de croma contigua reconstruida, respectivamente). Por ejemplo, la primera muestra de croma contigua reconstruida y la segunda muestra de croma contigua reconstruida pueden ser de la pluralidad de muestras de croma contiguas reconstruidas.
En algunas implementaciones, las operaciones 820, 830 y 840 descritas anteriormente se reorganizan en un orden diferente. Por ejemplo, el códec de video primero calcula una o más muestras de luma submuestreadas, a partir de la pluralidad de muestras de luma contiguas reconstruidas y después busca, entre un subgrupo de las una o más muestras de luma submuestreadas calculadas, para identificar al menos una muestra de luma máxima submuestreada y al menos una muestra de luma mínima submuestreada, respectivamente. La muestra de luma máxima submuestreada se elige para que corresponda a la primera muestra de croma reconstruida y la muestra de luma mínima submuestreada se elige para que corresponda a la segunda muestra de croma reconstruida.
A continuación, el códec de video genera un modelo lineal usando un primer par de la muestra de luma máxima submuestreada y la primera muestra de croma contigua reconstruida y un segundo par de la muestra de luma mínima submuestreada y la segunda muestra de croma contigua reconstruida (850) . En algunas realizaciones, el códec de video genera el modelo lineal utilizando el método máx-mín mediante identificar dos puntos de datos (por ejemplo, (primera muestra de croma contigua reconstruida, muestra de luma máxima submuestreada) y (segunda muestra de croma contigua reconstruida, muestra de luma mínima submuestreada)) y ajusta una ecuación lineal a través de los dos puntos de datos.
Después de obtener el modelo lineal, el códec de video calcula muestras de luma submuestreadas a partir de muestras de luma del bloque de luma reconstruido (860). Cada muestra de luma submuestreada corresponde a una muestra de croma del bloque de croma. Por ejemplo, el códec de video puede calcular muestras de luma submuestreadas utilizando la misma técnica de submuestreo utilizada para calcular las muestras de luma mínima y máxima submuestreadas.
Finalmente, el códec de video predice muestras de croma en el bloque de croma aplicando el modelo lineal a las muestras de luma submuestreadas correspondientes (870).
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, software inalterable o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o código, en un medio legible por ordenador y ser ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible como medios de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación . De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) un medio de almacenamiento tangible legible por ordenador que no es transitorio o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualesquiera medios disponibles a los que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las implementaciones descritas en la presente solicitud. Un producto de programa informático puede incluir un medio legible por ordenador.
La terminología utilizada en la descripción de las implementaciones en este documento tiene el propósito de describir implementaciones particulares únicamente y no pretende limitar el alcance de las reivindicaciones. Tal como se utilizan en la descripción de las implementaciones y las reivindicaciones adjuntas, las formas singulares "un", "una", "el" y “la” están destinadas a Incluir también las formas plurales, a menos que el contexto Indique claramente lo contrario. También se entenderá que la expresión "y/o", tal como se usa en el presente documento, se refiere a, y abarca todas y cada una de las posibles combinaciones de uno o más de los elementos enumerados asociados. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria, especifican la presencia de características, elementos y/o componentes establecidos, pero no excluyen la presencia o la adición de otra u otras características, elementos, componentes y/o grupos de los mismos.
También se entenderá que, aunque los términos primero, segundo, etc. pueden usarse en el presente documento para describir varios elementos, estos elementos no deben estar limitados por estos términos. Estos términos solo se utilizan para distinguir un elemento de otro. Por ejemplo, un primer electrodo podría denominarse segundo electrodo y, de manera similar, un segundo electrodo podría denominarse primer electrodo, sin apartarse del alcance de las implementaciones. El primer electrodo y el segundo electrodo son ambos electrodos, pero no son el mismo electrodo.

Claims (14)

REIVINDICACIONES
1. Un método para decodificar una señal de video, que comprende:
reconstruir un bloque de luma correspondiente a un bloque de croma, donde el bloque de luma es adyacente a una pluralidad de muestras de luma contiguas reconstruidas, y donde el bloque de croma es adyacente a una pluralidad de muestras de croma contiguas reconstruidas;
calcular una pluralidad de muestras de luma submuestreadas, a partir de la pluralidad de muestras de luma contiguas reconstruidas;
identificar, a partir de la pluralidad de muestras de luma submuestreadas calculadas, dos muestras de luma máxima submuestreadas, donde las dos muestras de luma máxima submuestreadas corresponden a dos primeras muestras de croma reconstruidas de la pluralidad de muestras de croma contiguas reconstruidas, respectivamente;
identificar, a partir de la pluralidad de muestras de luma submuestreadas calculadas, dos muestras de luma mínimas submuestreadas, donde las dos muestras de luma mínimas submuestreadas corresponden a dos segundas muestras de croma reconstruidas de la pluralidad de muestras de croma contiguas reconstruidas, respectivamente;
promediar las dos muestras de luma máxima submuestreadas, las dos muestras de luma mínima submuestreadas, las dos primeras muestras de croma reconstruidas y las dos segundas muestras de croma reconstruidas, respectivamente, para obtener una muestra de luma máxima submuestreada promediada, una muestra de luma mínima submuestreada promediada, una primera muestra de croma reconstruida promediada y una segunda muestra de croma reconstruida promediada;
generar un modelo lineal basado en la muestra de luma máxima submuestreada promediada, la muestra de luma mínima submuestreada promediada, la primera muestra de croma reconstruida promediada y la segunda muestra de croma reconstruida promediada;
calcular muestras de luma submuestreadas a partir de muestras de luma del bloque de luma reconstruido, donde cada muestra de luma submuestreada corresponde a una muestra de croma del bloque de croma; y predecir muestras de croma del bloque de croma aplicando el modelo lineal a las muestras de luma submuestreadas calculadas correspondientes.
2. El método según la reivindicación 1, en el que el bloque de croma y el bloque de luma se codifican utilizando un esquema de submuestreo de croma 4:2:0 o 4:2:2, y en el que el bloque de croma y el bloque de luma tienen resoluciones diferentes.
3. El método según la reivindicación 1 ó 2, en el que la pluralidad de muestras de luma contiguas reconstruidas incluye muestras de luma ubicadas encima del bloque de luma reconstruido y/o muestras de luma a la izquierda del bloque de luma reconstruido.
4. El método según cualquiera de las reivindicaciones 1 a 3, en el que el cálculo de muestras de luma submuestreadas a partir de muestras de luma del bloque de luma reconstruido comprende realizar un promedio ponderado de seis muestras de luma contiguas a la muestra de luma.
5. El método según cualquiera de las reivindicaciones 1 a 4, en el que la generación del modelo lineal comprende ajustar una ecuación lineal a través de un punto de datos asociado con la muestra de luma máxima submuestreada promediada y la primera muestra de croma reconstruida promediada y un punto de datos asociado con la muestra de luma mínima submuestreada promediada y la segunda muestra de croma reconstruida promediada.
6. El método según cualquiera de las reivindicaciones 1 a 5, en el que la identificación comprende buscar la pluralidad de muestras de luma submuestreadas en un orden predefinido para identificar las dos muestras de luma máxima submuestreadas y las dos muestras de luma mínima submuestreadas, respectivamente.
7. Un dispositivo informático que comprende:
uno o más procesadores;
memoria acoplada a los uno o más procesadores; y
una pluralidad de programas almacenados en la memoria que, cuando son ejecutados por los uno o más procesadores, hacen que el dispositivo informático realice operaciones que incluyen:
reconstruir un bloque de luma correspondiente a un bloque de croma, donde el bloque de luma es adyacente a una pluralidad de muestras de luma contiguas reconstruidas, y donde el bloque de croma es adyacente a una pluralidad de muestras de croma contiguas reconstruidas;
calcular una pluralidad de muestras de luma submuestreadas, a partir de la pluralidad de muestras de luma contiguas reconstruidas;
identificar, a partir de la pluralidad de muestras de luma submuestreadas calculadas, dos muestras de luma máxima submuestreadas, donde las dos muestras de luma máxima submuestreadas corresponden a dos primeras muestras de croma reconstruidas de la pluralidad de muestras de croma contiguas reconstruidas, respectivamente;
identificar, a partir de la pluralidad de muestras de luma submuestreadas calculadas, dos muestras de luma mínimas submuestreadas, donde las dos muestras de luma mínimas submuestreadas corresponden a dos segundas muestras de croma reconstruidas de la pluralidad de muestras de croma contiguas reconstruidas, respectivamente;
promediar las dos muestras de luma máxima submuestreadas, las dos muestras de luma mínima submuestreadas, las dos primeras muestras de croma reconstruidas y las dos segundas muestras de croma reconstruidas, respectivamente, para obtener una muestra de luma máxima submuestreada promediada, una muestra de luma mínima submuestreada promediada, una primera muestra de croma reconstruida promediada y una segunda muestra de croma reconstruida promediada; generar un modelo lineal basado en la muestra de luma máxima submuestreada promediada, la muestra de luma mínima submuestreada promediada, la primera muestra de croma reconstruida promediada y la segunda muestra de croma reconstruida promediada;
calcular muestras de luma submuestreadas a partir de muestras de luma del bloque de luma reconstruido, donde cada muestra de luma submuestreada corresponde a una muestra de croma del bloque de croma; y
predecir muestras de croma del bloque de croma aplicando el modelo lineal a las muestras de luma submuestreadas calculadas correspondientes.
8. El dispositivo informático según la reivindicación 7, en el que el bloque de croma y el bloque de luma se codifican usando un esquema de submuestreo de croma 4:2:0 o 4:2:2, y en el que el bloque de croma y el bloque de luma tienen resoluciones diferentes.
9. El dispositivo informático según la reivindicación 7 u 8, en el que la pluralidad de muestras de luma contiguas reconstruidas incluye muestras de luma situadas encima del bloque de luma reconstruido y/o muestras de luma a la izquierda del bloque de luma reconstruido.
10. El dispositivo informático según cualquiera de las reivindicaciones 7 a 9, en el que calcular muestras de luma submuestreadas a partir de muestras de luma del bloque de luma reconstruido comprende realizar un promedio ponderado de seis muestras de luma contiguas a la muestra de luma.
11. El dispositivo informático según cualquiera de las reivindicaciones 7 a 10, en el que generar el modelo lineal comprende ajustar una ecuación lineal a través de un punto de datos asociado con la muestra de luma máxima submuestreada promediada y la primera muestra de croma reconstruida promediada y un punto de datos asociado con la muestra de luma mínima submuestreada promediada y la segunda muestra de croma reconstruida promediada.
12. El dispositivo informático según cualquiera de las reivindicaciones 7 a 11, en el que la identificación comprende buscar la pluralidad de muestras de luma submuestreadas en un orden predefinido para identificar las dos muestras de luma máxima submuestreadas y las dos muestras de luma mínima submuestreadas, respectivamente.
13. Un medio no transitorio de almacenamiento legible por ordenador que almacena una pluralidad de programas para su ejecución por un dispositivo informático que tiene uno o más procesadores, donde la pluralidad de programas, cuando son ejecutados por los uno o más procesadores, hacen que el dispositivo informático realice el método de decodificación de una señal de video según cualquiera de las reivindicaciones 1 a 6.
14. Un producto de programa informático que comprende un medio no transitorio de almacenamiento legible por ordenador que almacena una pluralidad de programas para su ejecución por un dispositivo informático que tiene uno o más procesadores, donde la pluralidad de programas, cuando son ejecutados por los uno o más procesadores, hacen que el dispositivo informático realice el método para decodificar una señal de video según cualquiera de las reivindicaciones 1 a 6.
ES19872076T 2018-10-08 2019-10-08 Simplificaciones de un modelo lineal de componentes cruzados Active ES2949023T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862742806P 2018-10-08 2018-10-08
PCT/US2019/055208 WO2020076835A1 (en) 2018-10-08 2019-10-08 Simplifications of cross-component linear model

Publications (1)

Publication Number Publication Date
ES2949023T3 true ES2949023T3 (es) 2023-09-25

Family

ID=70165126

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19872076T Active ES2949023T3 (es) 2018-10-08 2019-10-08 Simplificaciones de un modelo lineal de componentes cruzados

Country Status (13)

Country Link
US (5) US20210227235A1 (es)
EP (4) EP3847816B1 (es)
JP (3) JP7053954B2 (es)
KR (2) KR102398217B1 (es)
CN (6) CN114449266B (es)
DK (1) DK3847816T3 (es)
ES (1) ES2949023T3 (es)
FI (1) FI3847816T3 (es)
HU (1) HUE062341T2 (es)
MX (4) MX2021004028A (es)
PL (1) PL3847816T3 (es)
PT (1) PT3847816T (es)
WO (1) WO2020076835A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3213840A1 (en) * 2018-07-16 2020-01-23 Huawei Technologies Co., Ltd. Video encoder, video decoder, and corresponding encoding and decoding methods
WO2020076036A1 (ko) 2018-10-07 2020-04-16 주식회사 윌러스표준기술연구소 복수개의 참조 라인을 위한 mpm 구성 방법을 이용한 비디오 신호 처리 방법 및 장치
HUE062341T2 (hu) 2018-10-08 2023-10-28 Beijing Dajia Internet Information Tech Co Ltd Kereszt-komponenses lineáris model egyszerûsítése
JP2022503990A (ja) 2018-10-12 2022-01-12 オッポ広東移動通信有限公司 ビデオ画像成分予測方法および装置、コンピュータ記憶媒体
CN117061742A (zh) * 2018-10-12 2023-11-14 三星电子株式会社 通过使用交叉分量线性模型来处理视频信号的方法和设备
JP2021513795A (ja) * 2019-01-01 2021-05-27 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
US11190800B2 (en) 2019-02-07 2021-11-30 Qualcomm Incorporated Motion vector predictor list generation for intra block copy mode in video coding
TWI747339B (zh) * 2019-06-27 2021-11-21 聯發科技股份有限公司 視訊編解碼之方法和裝置
JP2022553444A (ja) * 2019-12-30 2022-12-22 ベイジン ダジア インターネット インフォメーション テクノロジー カンパニー リミテッド 映像データをデコードするための方法、電子デバイス、非一時的なコンピュータ可読記憶媒体およびコンピュータプログラム
US20220353547A1 (en) * 2021-04-16 2022-11-03 Tencent America LLC Entropy coding of sign map for transform coefficients
WO2023200933A1 (en) * 2022-04-13 2023-10-19 Innopeak Technology, Inc. Cross-component model adjustment for video coding
WO2023242466A1 (en) * 2022-06-17 2023-12-21 Nokia Technologies Oy A method, an apparatus and a computer program product for video coding

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101312529B (zh) * 2007-05-24 2010-07-21 华为技术有限公司 生成上下采样滤波器及实现编码的方法、系统和装置
KR20120140366A (ko) * 2011-06-21 2012-12-31 광운대학교 산학협력단 휘도 성분의 문맥을 이용하는 적응적 색차 성분 스캐닝 순서 결정 방법 및 장치
US9693070B2 (en) * 2011-06-24 2017-06-27 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
KR20130058524A (ko) * 2011-11-25 2013-06-04 오수미 색차 인트라 예측 블록 생성 방법
CN103918269B (zh) 2012-01-04 2017-08-01 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
EP2805496B1 (en) * 2012-01-19 2016-12-21 Huawei Technologies Co., Ltd. Reference pixel reduction for intra lm prediction
CN104471940B (zh) 2012-04-16 2017-12-15 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
US9025867B2 (en) * 2012-05-31 2015-05-05 Apple Inc. Systems and methods for YCC image processing
US10397607B2 (en) * 2013-11-01 2019-08-27 Qualcomm Incorporated Color residual prediction for video coding
EP3219099B1 (en) * 2014-12-19 2021-04-28 HFI Innovation Inc. Methods of palette based prediction for non-444 color format in video and image coding
CN107211121B (zh) * 2015-01-22 2020-10-23 联发科技(新加坡)私人有限公司 视频编码方法与视频解码方法
US10455249B2 (en) 2015-03-20 2019-10-22 Qualcomm Incorporated Downsampling process for linear model prediction mode
EP3272120B1 (en) * 2015-04-21 2022-06-15 ARRIS Enterprises LLC Adaptive perceptual mapping and signaling for video coding
US20170150186A1 (en) * 2015-11-25 2017-05-25 Qualcomm Incorporated Flexible transform tree structure in video coding
WO2017139937A1 (en) 2016-02-18 2017-08-24 Mediatek Singapore Pte. Ltd. Advanced linear model prediction for chroma coding
US11039175B2 (en) * 2016-05-27 2021-06-15 Sharp Kabushiki Kaisha Systems and methods for varying quantization parameters
CN108604391B (zh) * 2016-05-29 2022-06-14 谷歌有限责任公司 基于虚拟/增强现实系统中的深度信息的时间扭曲调整
US10484712B2 (en) * 2016-06-08 2019-11-19 Qualcomm Incorporated Implicit coding of reference line index used in intra prediction
US10326986B2 (en) * 2016-08-15 2019-06-18 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10419757B2 (en) * 2016-08-31 2019-09-17 Qualcomm Incorporated Cross-component filter
US10334277B2 (en) * 2016-09-02 2019-06-25 Qualcomm Incorporated Signaling target display parameters of color remapping information supplemental enhancement information messages
US10652575B2 (en) * 2016-09-15 2020-05-12 Qualcomm Incorporated Linear model chroma intra prediction for video coding
US10812820B2 (en) * 2016-11-30 2020-10-20 Qualcomm Incorporated Systems and methods for signaling and constraining a high dynamic range (HDR) video system with dynamic metadata
US10477240B2 (en) * 2016-12-19 2019-11-12 Qualcomm Incorporated Linear model prediction mode with sample accessing for video coding
US11025903B2 (en) * 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
CN107371040B (zh) * 2017-08-28 2020-05-15 荆门程远电子科技有限公司 一种无人机影像高效处理系统
GB2567249A (en) * 2017-10-09 2019-04-10 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
CN118075473A (zh) * 2017-11-28 2024-05-24 Lx 半导体科技有限公司 图像编码/解码方法、图像数据的传输方法和存储介质
GB2571313B (en) * 2018-02-23 2022-09-21 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
WO2020009357A1 (ko) * 2018-07-02 2020-01-09 엘지전자 주식회사 Cclm에 기반한 인트라 예측 방법 및 그 장치
EP3815370A4 (en) * 2018-07-12 2021-08-11 Huawei Technologies Co., Ltd. INTRAPREDICTION USING COMPONENT LINEAR MODEL IN VIDEO ENCODING
CA3213840A1 (en) * 2018-07-16 2020-01-23 Huawei Technologies Co., Ltd. Video encoder, video decoder, and corresponding encoding and decoding methods
HUE062341T2 (hu) 2018-10-08 2023-10-28 Beijing Dajia Internet Information Tech Co Ltd Kereszt-komponenses lineáris model egyszerûsítése
US11330298B2 (en) 2019-06-25 2022-05-10 Qualcomm Incorporated Simplified intra chroma mode coding in video coding

Also Published As

Publication number Publication date
MX2023007880A (es) 2023-07-10
MX2023007879A (es) 2023-07-10
KR102398217B1 (ko) 2022-05-16
US20210227235A1 (en) 2021-07-22
KR20210045497A (ko) 2021-04-26
US11962789B2 (en) 2024-04-16
MX2023007878A (es) 2023-07-10
CN114449266B (zh) 2023-02-17
JP7053954B2 (ja) 2022-04-12
CN116847098A (zh) 2023-10-03
US20230336749A1 (en) 2023-10-19
WO2020076835A1 (en) 2020-04-16
CN112889291A (zh) 2021-06-01
CN116170586A (zh) 2023-05-26
CN116847097B (zh) 2024-05-14
EP3847816B1 (en) 2023-04-19
JP2022500967A (ja) 2022-01-04
PT3847816T (pt) 2023-06-30
CN116847098B (zh) 2024-03-26
EP3847816A1 (en) 2021-07-14
CN114449266A (zh) 2022-05-06
JP2022095783A (ja) 2022-06-28
KR20220051426A (ko) 2022-04-26
JP7416993B2 (ja) 2024-01-17
US20210227240A1 (en) 2021-07-22
EP3847816A4 (en) 2021-11-03
CN116847097A (zh) 2023-10-03
CN116708770A (zh) 2023-09-05
JP7247398B2 (ja) 2023-03-28
CN116170586B (zh) 2024-03-26
EP4228262A1 (en) 2023-08-16
FI3847816T3 (fi) 2023-06-30
MX2021004028A (es) 2021-06-30
CN116708770B (zh) 2024-03-26
PL3847816T3 (pl) 2023-08-14
JP2023078281A (ja) 2023-06-06
US20230239482A1 (en) 2023-07-27
EP4221220A1 (en) 2023-08-02
US20220217368A1 (en) 2022-07-07
US11632559B2 (en) 2023-04-18
CN116847096A (zh) 2023-10-03
US11323726B2 (en) 2022-05-03
HUE062341T2 (hu) 2023-10-28
EP4228263A1 (en) 2023-08-16
DK3847816T3 (da) 2023-07-24

Similar Documents

Publication Publication Date Title
ES2949023T3 (es) Simplificaciones de un modelo lineal de componentes cruzados
US11575929B2 (en) Methods and apparatus of video coding using history-based motion vector prediction
ES2966115T3 (es) Métodos de codificación de imagen basados en historial
JP2018530249A (ja) イントラブロックコピーマージモードおよび利用できないibc参照領域のパディング
US20220360799A1 (en) Video coding using multi-model linear model
WO2020076838A1 (en) Motion vector storage for video coding
CN116156199B (zh) 用于视频解码、视频编码的方法、计算设备和存储介质
CN116847096B (zh) 视频编码方法、计算装置、存储介质和计算机程序产品